EMHASS: An Energy Management for Home Assistant

This is a detailed AI guide on how to configure EMHASS Model Predictive Control (MPC) to handle both the rigid List Format and the flexible Timestamped Dictionary Format for forecast data, specifically tailored for 15-minute resolution systems like those using Nord Pool tariffs.

:dart: EMHASS MPC Input Formats: List vs. Dictionary

EMHASS requires input data for the MPC API call (/action/mpc-optim) to be structured in one of two ways. Understanding this distinction is crucial for correctly implementing the “shrinking” prediction window that MPC requires.


1. List Format: Fixed 96-Step Array with Padding (For PV/Load)

The List Format maintains a fixed length corresponding to the total steps in the initial day-ahead forecast (e.g., 96 elements for a 24-hour forecast with 15-minute steps). This format is typically used for data that is generated once per day, such as self-calculated PV Power and Load Power forecasts.

:gear: Requirements for List Format

  • Fixed Length: Input arrays for pv_power_forecast and load_power_forecast must be 96 elements long.
  • Slicing: The array is “shrunk” at the start by slicing off the past_steps (the steps that have already occurred).
  • Padding: The remainder of the array must be padded with placeholder values (999) at the end to bring the total length back to 96.
  • prediction_horizon: This parameter tells EMHASS to only optimize over the first $N$ elements of the 96-element array, while still using the remaining elements as a look-ahead frame for constraints (like soc_final).

:computer: Jinja Code Example (List Format)

This template assumes you have calculated the current index position (past_steps) and you are performing an MPC optimization for the next 16 steps (4 hours).

{# Define the target horizon for the optimization (e.g., 4 hours = 16 steps) #}
{% set horizon = 16 %}

{# Assume 'past_steps' (the current 15-min index, 0-95) is calculated elsewhere #}
{% set past_steps = states('sensor.current_emhass_step') | int(0) %}

{# 1. Get the full 96-step forecast list #}
{% set full_pv_forecast = states('sensor.emhass_pv_power_forecast') | from_json %}

{# 2. Slice the list to remove past steps #}
{% set sliced_pv_forecast = full_pv_forecast[past_steps:] %}

{# 3. Calculate necessary padding (total length must be 96) #}
{% set padding_length = 96 - sliced_pv_forecast | length %}
{% set padding = [999] * padding_length %}

{# 4. Combine slice and padding to get the final 96-element array #}
{% set pv_forecast_window = sliced_pv_forecast + padding %}

{
  "pv_power_forecast": {{ pv_forecast_window | tojson }},
  "prediction_horizon": {{ horizon }},
  ...
}

2. Dictionary/Timestamped Format: Flexible Length (For Prices)

The Timestamped Dictionary Format is the recommended method for price data (load_cost_forecast, prod_price_forecast), as it removes the rigid 96-step length requirement. This format is ideal for dynamic Nord Pool tariffs or any shrinking forecast array.

:gear: Requirements for Dictionary Format

  • Data Structure: Input data must be a dictionary mapping exact timestamps to values: {"YYYY-MM-DDTHH:MM:SS+TZ": value, ...}.
  • Time-Based Slicing: Instead of slicing by index, you filter the source data by time, including only the values that fall within the current MPC prediction window (from now() up to now() + prediction_horizon).
  • Flexibility: EMHASS uses the embedded timestamps to align the data, allowing the input array to be any length.
  • No Padding: Padding with 999 is not required or used with this format.

:computer: Jinja Code Example (Timestamped Dictionary Format)

This code filters a typical Nord Pool sensor attribute (a list of forecast data) to create the required dictionary format for the MPC call.

{% set horizon = 16 %}  {# 4-hour MPC window (16 steps) #}
{% set now_time = now() %}
{% set end_time = now_time + timedelta(minutes = horizon * 15) %}

{# Get the full forecast, which is often a LIST of dictionaries from the sensor attribute #}
{% set full_nordpool_forecast = state_attr('sensor.nordpool_price_sensor', 'forecasts') or [] %}

{# 1. Filter/Slice the list to keep only items within the time horizon #}
{% set relevant_forecasts = full_nordpool_forecast 
  | selectattr('start', '>=', now_time.isoformat()) 
  | selectattr('start', '<', end_time.isoformat()) 
  | list %}

{# 2. Convert the filtered list into the required dictionary format #}
{% set load_cost_window = {} %}
{% set prod_price_window = {} %}

{% for item in relevant_forecasts %}
  {# Assuming the timestamp key is 'start' and the price key is 'price_per_kwh' #}
  {% set load_cost_window = load_cost_window | combine({ item.start: item.price_per_kwh }) %}
  {% set prod_price_window = prod_price_window | combine({ item.start: item.price_per_kwh }) %}
{% endfor %}

{
  "load_cost_forecast": {{ load_cost_window | tojson }},
  "prod_price_forecast": {{ prod_price_window | tojson }},
  "prediction_horizon": {{ horizon }},
  ...
}

Summary of Data Handling

Input Field Required Format Slicing Method Padding Required? Typical Data Source
pv_power_forecast List (96 elements) Slice by Index (past_steps) Yes (with 999) ML-Fit, Solcast
load_power_forecast List (96 elements) Slice by Index (past_steps) Yes (with 999) ML-Fit, Static
load_cost_forecast Timestamped Dictionary Slice by Time (now() to end_time) No Nord Pool API
prod_price_forecast Timestamped Dictionary Slice by Time (now() to end_time) No Nord Pool API

To successfully run MPC, you must ensure that all required arrays (PV, load, and costs/prices) are generated using the appropriate format and filtering logic for each call.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

To accurately calculate the past_steps variable, which represents the number of 15-minute intervals that have elapsed since your fixed day-ahead optimization run, you need to use the difference between the current time and the start time of the 24-hour forecast.

This is best handled in Home Assistant by using a dedicated Input Datetime Helper to store the fixed start time.


:date: Step 1: Set Up the Day-Ahead Start Time Helper

You must create an Input Datetime Helper in Home Assistant to reliably track the moment your 24-hour EMHASS forecast was generated.

  1. Create the Helper: Go to Settings > Devices & Services > Helpers > Create Helper > Date and/or Time.
  • Name: EMHASS Last Dayahead Run
  • Entity ID: input_datetime.emhass_last_dayahead_run
  • Options: Select “Date and time”.
  1. Update the Helper in Automation: When your automation runs the /action/dayahead-optim REST command (usually once a day, e.g., 11:30 PM), add a second action to update this helper:`YAML# Action in your Dayahead Automation
    service: input_datetime.set_datetime
    target:
    entity_id: input_datetime.emhass_last_dayahead_run
    data:

Sets the helper to the exact moment the automation runs

datetime: “{{ now().strftime(‘%Y-%m-%d %H:%M:%S’) }}”`This helper now serves as the fixed starting point of your 96-step forecast.


:stopwatch: Step 2: Jinja Code for past_steps Calculation

Use the following Jinja template code inside your MPC REST command payload. This logic calculates the time difference in seconds and converts it into the number of elapsed 15-minute steps.

{# --- Variables for the MPC Call --- #}
{% set prediction_horizon_steps = 16 %}  {# Example: 4-hour MPC window #}

{# --- 1. Define the fixed start time of the 24-hour forecast (from the helper) --- #}
{% set start_datetime = states('input_datetime.emhass_last_dayahead_run') 
                         | as_datetime | as_local %}

{# --- 2. Define the current time --- #}
{% set current_datetime = now() %}

{# --- 3. Calculate the time difference (timedelta) --- #}
{% set elapsed_time = current_datetime - start_datetime %}

{# --- 4. Convert the timedelta to total seconds --- #}
{% set total_seconds_elapsed = elapsed_time.total_seconds() %}

{# --- 5. Define the time step duration in seconds (15 minutes = 900 seconds) --- #}
{% set step_duration_seconds = 900 %}

{# --- 6. Calculate the number of elapsed steps (past_steps) --- #}
{# Divides elapsed seconds by 900 and rounds down to the nearest integer index. #}
{% set past_steps = (total_seconds_elapsed / step_duration_seconds) | int(0) %}

{# --- Use this index to slice your full 96-step PV/Load lists --- #}
{% set full_load_forecast = states('sensor.emhass_load_power_forecast') | from_json %}
{% set current_load_slice = full_load_forecast[past_steps : past_steps + prediction_horizon_steps] %}

{# --- Use past_steps and prediction_horizon in the payload --- #}
{
  "load_power_forecast": {{ current_load_slice | tojson }},
  "prediction_horizon": {{ prediction_horizon_steps }},
  "soc_init": {{ states('sensor.battery_soc') | float(0) / 100 }},
  ...
}

Key Logic Breakdown

Jinja Variable Purpose Value Calculation
start_datetime The fixed beginning of the 24-hour forecast. Fetched from input_datetime.emhass_last_dayahead_run.
elapsed_time The duration between the start time and now(). current_datetime - start_datetime
total_seconds_elapsed Total time elapsed since the forecast began. elapsed_time.total_seconds()
past_steps The index of the current 15-minute time slot (0-95). $\frac{\text{total_seconds_elapsed}}{900}$ (rounded down to integer)
slice_start_index The index used to slice the 96-step forecast arrays. Equals past_steps.

This method is highly robust as it relies entirely on time difference rather than potentially error-prone manual calculations using hour and minute components.

2 Likes

Hi Robert and thnx again for extensive and friendly reply and help!
In Europe there hasbeen a change for Nordpool to 15min slots during the last year. Different countries at different dates. In Sweden we have the 15 min from 1/10 2025. Earlier it was 1hour for all Europe. Thats why most people/older posts are dealing with that.

Your calculated prediction horizon from shortest list seem simple and valid. Will try a modifcation!

I guess the AI guide hits the spot? (If its correct) that when providing a list ( Array?), it has to be 96 elements, but a timestamped dictionary can vary in length (and shorten with time window/prediction horizon). My script did create a list (Array). Will try to modify it to send a timestamped dict instead!

1 Like

@davidusb I think there is something that doesn’t make sense following the update to 0.14.1

I’m seeing this, which doesn’t make sense as I’m buying electricity from grid instead of charging at night / postponing to the lowest tariff when the price is not the least.


Also, despite of my setup, it seems the maximum charge power is 1kW.

So I tried to roll back to v.0.14.0 and the results of the elaboration, performed with just a few minutes later, are completely different and this time make much more sense to me.
Indeed I’m charging my battery at higher rate and I follow the tariffs, and I only buy electricity during off-peak hours.

I also upload the tables with the results:
v.0.14.0

index P_PV P_Load P_deferrable0 P_grid_pos P_grid_neg P_grid P_batt SOC_opt unit_load_cost unit_prod_price cost_profit cost_fun_selfcons
2025-12-05 00:00:00+01:00 0 207 0 5000 0 5000 -4793 0.076 0.128 0.109 -0.160 -0.160
2025-12-05 00:15:00+01:00 0 116 0 5000 0 5000 -4883 0.119 0.128 0.107 -0.160 -0.160
2025-12-05 00:30:00+01:00 0 95 0 5000 0 5000 -4904 0.162 0.128 0.103 -0.160 -0.160
2025-12-05 00:45:00+01:00 0 207 0 5000 0 5000 -4792 0.204 0.128 0.101 -0.160 -0.160
2025-12-05 01:00:00+01:00 0 121 0 5000 0 5000 -4878 0.247 0.128 0.104 -0.160 -0.160
2025-12-05 01:15:00+01:00 0 122 0 5000 0 5000 -4877 0.290 0.128 0.101 -0.160 -0.160
2025-12-05 01:30:00+01:00 0 172 0 5000 0 5000 -4827 0.333 0.128 0.101 -0.160 -0.160
2025-12-05 01:45:00+01:00 0 164 0 5000 0 5000 -4835 0.375 0.128 0.101 -0.160 -0.160
2025-12-05 02:00:00+01:00 0 115 0 5000 0 5000 -4884 0.418 0.128 0.103 -0.160 -0.160
2025-12-05 02:15:00+01:00 0 109 0 5000 0 5000 -4890 0.461 0.128 0.103 -0.160 -0.160
2025-12-05 02:30:00+01:00 0 123 0 5000 0 5000 -4876 0.504 0.128 0.103 -0.160 -0.160
2025-12-05 02:45:00+01:00 0 76 0 5000 0 5000 -4923 0.547 0.128 0.103 -0.160 -0.160
2025-12-05 03:00:00+01:00 0 77 0 5000 0 5000 -4922 0.591 0.128 0.105 -0.160 -0.160
2025-12-05 03:15:00+01:00 0 123 0 5000 0 5000 -4876 0.634 0.128 0.106 -0.160 -0.160
2025-12-05 03:30:00+01:00 0 89 0 5000 0 5000 -4910 0.677 0.128 0.106 -0.160 -0.160
2025-12-05 03:45:00+01:00 0 77 0 5000 0 5000 -4922 0.720 0.128 0.105 -0.160 -0.160
2025-12-05 04:00:00+01:00 0 115 0 1611 0 1611 -1495 0.733 0.128 0.103 -0.052 -0.052
2025-12-05 04:15:00+01:00 0 97 0 97 0 97 0 0.733 0.128 0.100 -0.003 -0.003
2025-12-05 04:30:00+01:00 0 78 0 78 0 78 0 0.733 0.128 0.103 -0.003 -0.003
2025-12-05 04:45:00+01:00 0 1037 0 5000 0 5000 -3962 0.768 0.128 0.105 -0.160 -0.160
2025-12-05 05:00:00+01:00 0 837 0 837 0 837 0 0.768 0.128 0.103 -0.027 -0.027
2025-12-05 05:15:00+01:00 0 1184 0 1184 0 1184 0 0.768 0.128 0.102 -0.038 -0.038
2025-12-05 05:30:00+01:00 0 891 0 891 0 891 0 0.768 0.128 0.107 -0.029 -0.029
2025-12-05 05:45:00+01:00 0 1367 0 1367 0 1367 0 0.768 0.128 0.113 -0.044 -0.044
2025-12-05 06:00:00+01:00 0 1331 0 1331 0 1331 0 0.768 0.128 0.104 -0.043 -0.043
2025-12-05 06:15:00+01:00 0 486 0 486 0 486 0 0.768 0.128 0.115 -0.016 -0.016
2025-12-05 06:30:00+01:00 0 226 0 226 0 226 0 0.768 0.128 0.119 -0.007 -0.007
2025-12-05 06:45:00+01:00 0 737 0 737 0 737 0 0.768 0.128 0.136 -0.024 -0.024
2025-12-05 07:00:00+01:00 0 1977 0 0 0 0 1977 0.749 0.163 0.119 -0.000 -0.000
2025-12-05 07:15:00+01:00 0 2602 0 0 0 0 2602 0.723 0.163 0.139 -0.000 -0.000
2025-12-05 07:30:00+01:00 0 3569 0 0 0 0 3569 0.689 0.163 0.156 -0.000 -0.000
2025-12-05 07:45:00+01:00 0 3157 0 0 0 0 3157 0.658 0.163 0.160 -0.000 -0.000
2025-12-05 08:00:00+01:00 0 3012 0 0 0 0 3012 0.629 0.181 0.150 -0.000 -0.000
2025-12-05 08:15:00+01:00 2 1755 0 0 0 0 1753 0.611 0.181 0.154 -0.000 -0.000
2025-12-05 08:30:00+01:00 18 309 0 0 0 0 290 0.609 0.181 0.156 -0.000 -0.000
2025-12-05 08:45:00+01:00 31 412 0 0 0 0 380 0.605 0.181 0.171 -0.000 -0.000
2025-12-05 09:00:00+01:00 197 976 0 0 0 0 779 0.597 0.181 0.186 -0.000 -0.000
2025-12-05 09:15:00+01:00 262 1946 0 0 0 0 1684 0.581 0.181 0.182 -0.000 -0.000
2025-12-05 09:30:00+01:00 496 1422 0 0 0 0 926 0.572 0.181 0.169 -0.000 -0.000
2025-12-05 09:45:00+01:00 557 1414 0 0 0 0 857 0.564 0.181 0.166 -0.000 -0.000
2025-12-05 10:00:00+01:00 610 1687 0 0 0 0 1077 0.553 0.181 0.170 -0.000 -0.000
2025-12-05 10:15:00+01:00 633 1462 0 0 0 0 829 0.545 0.181 0.168 -0.000 -0.000
2025-12-05 10:30:00+01:00 738 1953 0 0 0 0 1214 0.533 0.181 0.162 -0.000 -0.000
2025-12-05 10:45:00+01:00 647 952 0 0 0 0 305 0.530 0.181 0.160 -0.000 -0.000
2025-12-05 11:00:00+01:00 798 2376 0 0 0 0 1577 0.515 0.181 0.190 -0.000 -0.000
2025-12-05 11:15:00+01:00 774 4108 0 0 0 0 3334 0.482 0.181 0.185 -0.000 -0.000
2025-12-05 11:30:00+01:00 566 1920 0 0 0 0 1353 0.469 0.181 0.179 -0.000 -0.000
2025-12-05 11:45:00+01:00 528 1205 0 0 0 0 676 0.462 0.181 0.166 -0.000 -0.000
2025-12-05 12:00:00+01:00 708 582 0 0 0 0 -126 0.464 0.181 0.162 -0.000 -0.000
2025-12-05 12:15:00+01:00 808 349 0 0 0 0 -459 0.468 0.181 0.154 -0.000 -0.000
2025-12-05 12:30:00+01:00 697 983 0 0 0 0 286 0.465 0.181 0.151 -0.000 -0.000
2025-12-05 12:45:00+01:00 629 1317 0 0 0 0 687 0.458 0.181 0.150 -0.000 -0.000
2025-12-05 13:00:00+01:00 500 1961 0 0 0 0 1460 0.444 0.181 0.151 -0.000 -0.000
2025-12-05 13:15:00+01:00 889 1550 0 0 0 0 661 0.437 0.181 0.151 -0.000 -0.000
2025-12-05 13:30:00+01:00 1251 1427 0 0 0 0 176 0.436 0.181 0.150 -0.000 -0.000
2025-12-05 13:45:00+01:00 1151 689 0 0 0 0 -462 0.440 0.181 0.146 -0.000 -0.000
2025-12-05 14:00:00+01:00 889 1693 0 0 0 0 803 0.432 0.181 0.139 -0.000 -0.000
2025-12-05 14:15:00+01:00 876 2943 0 0 0 0 2067 0.412 0.181 0.146 -0.000 -0.000
2025-12-05 14:30:00+01:00 999 3342 0 0 0 0 2343 0.389 0.181 0.154 -0.000 -0.000
2025-12-05 14:45:00+01:00 1294 2778 0 0 0 0 1483 0.374 0.181 0.156 -0.000 -0.000
2025-12-05 15:00:00+01:00 1057 794 0 0 0 0 -262 0.377 0.181 0.145 -0.000 -0.000
2025-12-05 15:15:00+01:00 991 226 0 0 0 0 -765 0.384 0.181 0.143 -0.000 -0.000
2025-12-05 15:30:00+01:00 1021 1166 0 0 0 0 145 0.382 0.181 0.155 -0.000 -0.000
2025-12-05 15:45:00+01:00 753 1675 0 0 0 0 922 0.373 0.181 0.156 -0.000 -0.000
2025-12-05 16:00:00+01:00 591 1350 0 0 0 0 758 0.366 0.181 0.144 -0.000 -0.000
2025-12-05 16:15:00+01:00 258 971 0 0 0 0 712 0.359 0.181 0.154 -0.000 -0.000
2025-12-05 16:30:00+01:00 3 144 0 0 0 0 140 0.357 0.181 0.154 -0.000 -0.000
2025-12-05 16:45:00+01:00 0 233 0 0 0 0 233 0.355 0.181 0.156 -0.000 -0.000
2025-12-05 17:00:00+01:00 0 877 0 0 0 0 877 0.347 0.181 0.154 -0.000 -0.000
2025-12-05 17:15:00+01:00 0 1873 0 0 0 0 1873 0.328 0.181 0.152 -0.000 -0.000
2025-12-05 17:30:00+01:00 0 1305 0 0 0 0 1305 0.316 0.181 0.150 -0.000 -0.000
2025-12-05 17:45:00+01:00 0 1060 0 0 0 0 1060 0.305 0.181 0.139 -0.000 -0.000
2025-12-05 18:00:00+01:00 0 2785 0 0 0 0 2785 0.278 0.181 0.150 -0.000 -0.000
2025-12-05 18:15:00+01:00 0 3535 0 0 0 0 3535 0.244 0.181 0.143 -0.000 -0.000
2025-12-05 18:30:00+01:00 0 4072 0 0 0 0 4072 0.204 0.181 0.138 -0.000 -0.000
2025-12-05 18:45:00+01:00 0 1291 0 0 0 0 1291 0.191 0.181 0.138 -0.000 -0.000
2025-12-05 19:00:00+01:00 0 473 0 0 0 0 473 0.187 0.163 0.139 -0.000 -0.000
2025-12-05 19:15:00+01:00 0 1276 0 0 0 0 1276 0.174 0.163 0.130 -0.000 -0.000
2025-12-05 19:30:00+01:00 0 2699 0 0 0 0 2699 0.148 0.163 0.124 -0.000 -0.000
2025-12-05 19:45:00+01:00 0 2597 0 0 0 0 2597 0.123 0.163 0.119 -0.000 -0.000
2025-12-05 20:00:00+01:00 0 2634 0 0 0 0 2634 0.097 0.163 0.120 -0.000 -0.000
2025-12-05 20:15:00+01:00 0 1869 0 0 0 0 1869 0.079 0.163 0.117 -0.000 -0.000
2025-12-05 20:30:00+01:00 0 311 0 0 0 0 311 0.076 0.163 0.114 -0.000 -0.000
2025-12-05 20:45:00+01:00 0 225 0 0 0 0 225 0.074 0.163 0.108 -0.000 -0.000
2025-12-05 21:00:00+01:00 0 224 0 0 0 0 224 0.071 0.163 0.115 -0.000 -0.000
2025-12-05 21:15:00+01:00 0 781 0 0 0 0 781 0.064 0.163 0.115 -0.000 -0.000
2025-12-05 21:30:00+01:00 0 2192 0 0 0 0 2192 0.042 0.163 0.110 -0.000 -0.000
2025-12-05 21:45:00+01:00 0 2484 0 0 0 0 2484 0.018 0.163 0.106 -0.000 -0.000
2025-12-05 22:00:00+01:00 0 954 0 0 0 0 954 0.009 0.163 0.113 -0.000 -0.000
2025-12-05 22:15:00+01:00 0 262 0 0 0 0 262 0.006 0.163 0.113 -0.000 -0.000
2025-12-05 22:30:00+01:00 0 326 0 0 0 0 326 0.003 0.163 0.109 -0.000 -0.000
2025-12-05 22:45:00+01:00 0 320 0 0 0 0 320 0.000 0.163 0.106 -0.000 -0.000
2025-12-05 23:00:00+01:00 0 1169 0 1169 0 1169 0 0.000 0.128 0.108 -0.037 -0.037
2025-12-05 23:15:00+01:00 0 1199 0 1199 0 1199 0 0.000 0.128 0.105 -0.038 -0.038
2025-12-05 23:30:00+01:00 0 212 0 212 0 212 0 0.000 0.128 0.102 -0.007 -0.007
2025-12-05 23:45:00+01:00 0 170 0 170 0 170 0 0.000 0.128 0.097 -0.005 -0.005
2025-12-06 00:00:00+01:00 0 220 0 220 0 220 0 0.000 0.128 0.109 -0.007 -0.007
2025-12-06 00:15:00+01:00 0 220 0 220 0 220 0 0.000 0.128 0.107 -0.007 -0.007
2025-12-06 00:30:00+01:00 0 176 0 176 0 176 0 0.000 0.128 0.103 -0.006 -0.006
2025-12-06 00:45:00+01:00 0 159 0 159 0 159 0 0.000 0.128 0.101 -0.005 -0.005
2025-12-06 01:00:00+01:00 0 166 0 166 0 166 0 0.000 0.128 0.104 -0.005 -0.005
2025-12-06 01:15:00+01:00 0 130 0 5000 0 5000 -4869 0.043 0.128 0.101 -0.160 -0.160
2025-12-06 01:30:00+01:00 0 95 0 5000 0 5000 -4904 0.086 0.128 0.101 -0.160 -0.160
2025-12-06 01:45:00+01:00 0 186 0 186 0 186 0 0.086 0.128 0.101 -0.006 -0.006
2025-12-06 02:00:00+01:00 0 121 0 5000 0 5000 -4878 0.129 0.128 0.103 -0.160 -0.160
2025-12-06 02:15:00+01:00 0 98 0 5000 0 5000 -4901 0.172 0.128 0.103 -0.160 -0.160
2025-12-06 02:30:00+01:00 0 83 0 5000 0 5000 -4916 0.215 0.128 0.103 -0.160 -0.160
2025-12-06 02:45:00+01:00 0 177 0 5000 0 5000 -4822 0.258 0.128 0.103 -0.160 -0.160
2025-12-06 03:00:00+01:00 0 169 0 4475 0 4475 -4305 0.296 0.128 0.105 -0.143 -0.143
2025-12-06 03:15:00+01:00 0 122 0 5000 0 5000 -4877 0.338 0.128 0.106 -0.160 -0.160
2025-12-06 03:30:00+01:00 0 125 0 5000 0 5000 -4874 0.381 0.128 0.106 -0.160 -0.160
2025-12-06 03:45:00+01:00 0 128 0 5000 0 5000 -4871 0.424 0.128 0.105 -0.160 -0.160
2025-12-06 04:00:00+01:00 0 91 0 5000 0 5000 -4908 0.467 0.128 0.103 -0.160 -0.160
2025-12-06 04:15:00+01:00 0 73 0 5000 0 5000 -4926 0.511 0.128 0.100 -0.160 -0.160
2025-12-06 04:30:00+01:00 0 116 0 5000 0 5000 -4883 0.554 0.128 0.103 -0.160 -0.160
2025-12-06 04:45:00+01:00 0 1102 0 5000 0 5000 -3897 0.588 0.128 0.105 -0.160 -0.160
2025-12-06 05:00:00+01:00 0 747 0 5000 0 5000 -4252 0.625 0.128 0.103 -0.160 -0.160
2025-12-06 05:15:00+01:00 0 1151 0 1151 0 1151 0 0.625 0.128 0.102 -0.037 -0.037
2025-12-06 05:30:00+01:00 0 852 0 5000 0 5000 -4147 0.662 0.128 0.107 -0.160 -0.160
2025-12-06 05:45:00+01:00 0 1286 0 5000 0 5000 -3713 0.694 0.128 0.113 -0.160 -0.160
2025-12-06 06:00:00+01:00 0 985 0 5000 0 5000 -4014 0.730 0.128 0.104 -0.160 -0.160
2025-12-06 06:15:00+01:00 0 144 0 5000 0 5000 -4855 0.773 0.128 0.115 -0.160 -0.160
2025-12-06 06:30:00+01:00 0 204 0 5000 0 5000 -4795 0.815 0.128 0.119 -0.160 -0.160
2025-12-06 06:45:00+01:00 0 1254 0 5000 0 5000 -3745 0.848 0.128 0.136 -0.160 -0.160
2025-12-06 07:00:00+01:00 0 2428 0 0 0 0 2428 0.824 0.163 0.119 -0.000 -0.000
2025-12-06 07:15:00+01:00 0 3312 0 0 0 0 3312 0.792 0.163 0.139 -0.000 -0.000
2025-12-06 07:30:00+01:00 0 1773 0 0 0 0 1773 0.774 0.163 0.156 -0.000 -0.000
2025-12-06 07:45:00+01:00 0 266 0 0 0 0 266 0.772 0.163 0.160 -0.000 -0.000
2025-12-06 08:00:00+01:00 0 1826 0 0 0 0 1826 0.754 0.163 0.150 -0.000 -0.000
2025-12-06 08:15:00+01:00 0 1827 0 0 0 0 1827 0.736 0.163 0.154 -0.000 -0.000
2025-12-06 08:30:00+01:00 26 2084 0 0 0 0 2058 0.716 0.163 0.156 -0.000 -0.000
2025-12-06 08:45:00+01:00 150 1381 0 0 0 0 1230 0.704 0.163 0.171 -0.000 -0.000
2025-12-06 09:00:00+01:00 217 1193 0 0 0 0 976 0.695 0.163 0.186 -0.000 -0.000
2025-12-06 09:15:00+01:00 238 1807 0 0 0 0 1569 0.679 0.163 0.182 -0.000 -0.000
2025-12-06 09:30:00+01:00 251 2151 0 0 0 0 1900 0.661 0.163 0.169 -0.000 -0.000
2025-12-06 09:45:00+01:00 363 2102 0 0 0 0 1738 0.644 0.163 0.166 -0.000 -0.000
2025-12-06 10:00:00+01:00 394 1859 0 0 0 0 1465 0.630 0.163 0.170 -0.000 -0.000
2025-12-06 10:15:00+01:00 487 612 0 0 0 0 124 0.628 0.163 0.168 -0.000 -0.000
2025-12-06 10:30:00+01:00 588 1546 0 0 0 0 958 0.619 0.163 0.162 -0.000 -0.000
2025-12-06 10:45:00+01:00 585 2667 0 0 0 0 2082 0.599 0.163 0.160 -0.000 -0.000
2025-12-06 11:00:00+01:00 644 2839 0 0 0 0 2195 0.577 0.163 0.190 -0.000 -0.000
2025-12-06 11:15:00+01:00 789 1165 0 0 0 0 375 0.574 0.163 0.185 -0.000 -0.000
2025-12-06 11:30:00+01:00 736 467 0 0 0 0 -269 0.576 0.163 0.179 -0.000 -0.000
2025-12-06 11:45:00+01:00 698 2152 0 0 0 0 1454 0.562 0.163 0.166 -0.000 -0.000
2025-12-06 12:00:00+01:00 660 2400 0 0 0 0 1739 0.545 0.163 0.162 -0.000 -0.000
2025-12-06 12:15:00+01:00 707 2173 0 0 0 0 1465 0.531 0.163 0.154 -0.000 -0.000
2025-12-06 12:30:00+01:00 676 2762 0 0 0 0 2086 0.510 0.163 0.151 -0.000 -0.000
2025-12-06 12:45:00+01:00 677 3692 0 0 0 0 3015 0.481 0.163 0.150 -0.000 -0.000
2025-12-06 13:00:00+01:00 661 2478 0 0 0 0 1816 0.463 0.163 0.151 -0.000 -0.000
2025-12-06 13:15:00+01:00 730 1894 0 0 0 0 1163 0.452 0.163 0.151 -0.000 -0.000
2025-12-06 13:30:00+01:00 697 999 0 0 0 0 301 0.449 0.163 0.150 -0.000 -0.000
2025-12-06 13:45:00+01:00 716 1477 0 0 0 0 761 0.441 0.163 0.146 -0.000 -0.000
2025-12-06 14:00:00+01:00 795 789 0 0 0 0 -6 0.442 0.163 0.139 -0.000 -0.000
2025-12-06 14:15:00+01:00 867 1827 0 0 0 0 959 0.432 0.163 0.146 -0.000 -0.000
2025-12-06 14:30:00+01:00 640 2962 0 0 0 0 2322 0.410 0.163 0.154 -0.000 -0.000
2025-12-06 14:45:00+01:00 500 1272 0 0 0 0 772 0.402 0.163 0.156 -0.000 -0.000
2025-12-06 15:00:00+01:00 367 697 0 0 0 0 330 0.399 0.163 0.145 -0.000 -0.000
2025-12-06 15:15:00+01:00 223 1906 0 0 0 0 1683 0.382 0.163 0.143 -0.000 -0.000
2025-12-06 15:30:00+01:00 170 683 0 0 0 0 512 0.377 0.163 0.155 -0.000 -0.000
2025-12-06 15:45:00+01:00 146 281 0 0 0 0 135 0.376 0.163 0.156 -0.000 -0.000
2025-12-06 16:00:00+01:00 29 1602 0 0 0 0 1572 0.361 0.163 0.144 -0.000 -0.000
2025-12-06 16:15:00+01:00 3 560 0 0 0 0 557 0.355 0.163 0.154 -0.000 -0.000
2025-12-06 16:30:00+01:00 0 1504 0 0 0 0 1504 0.341 0.163 0.154 -0.000 -0.000
2025-12-06 16:45:00+01:00 0 1686 0 0 0 0 1686 0.324 0.163 0.156 -0.000 -0.000
2025-12-06 17:00:00+01:00 0 1038 0 0 0 0 1038 0.314 0.163 0.154 -0.000 -0.000
2025-12-06 17:15:00+01:00 0 686 0 0 0 0 686 0.307 0.163 0.152 -0.000 -0.000
2025-12-06 17:30:00+01:00 0 270 0 0 0 0 270 0.305 0.163 0.150 -0.000 -0.000
2025-12-06 17:45:00+01:00 0 1211 0 0 0 0 1211 0.293 0.163 0.139 -0.000 -0.000
2025-12-06 18:00:00+01:00 0 3045 0 0 0 0 3045 0.263 0.163 0.150 -0.000 -0.000
2025-12-06 18:15:00+01:00 0 2364 0 0 0 0 2364 0.240 0.163 0.143 -0.000 -0.000
2025-12-06 18:30:00+01:00 0 2577 0 0 0 0 2577 0.215 0.163 0.138 -0.000 -0.000
2025-12-06 18:45:00+01:00 0 3142 0 0 0 0 3142 0.184 0.163 0.138 -0.000 -0.000
2025-12-06 19:00:00+01:00 0 415 0 0 0 0 415 0.180 0.163 0.139 -0.000 -0.000
2025-12-06 19:15:00+01:00 0 1115 0 0 0 0 1115 0.170 0.163 0.130 -0.000 -0.000
2025-12-06 19:30:00+01:00 0 1682 0 0 0 0 1682 0.153 0.163 0.124 -0.000 -0.000
2025-12-06 19:45:00+01:00 0 2271 0 0 0 0 2271 0.131 0.163 0.119 -0.000 -0.000
2025-12-06 20:00:00+01:00 0 2794 0 0 0 0 2794 0.104 0.163 0.120 -0.000 -0.000
2025-12-06 20:15:00+01:00 0 2226 0 0 0 0 2226 0.082 0.163 0.117 -0.000 -0.000
2025-12-06 20:30:00+01:00 0 759 0 0 0 0 759 0.075 0.163 0.114 -0.000 -0.000
2025-12-06 20:45:00+01:00 0 429 0 0 0 0 429 0.071 0.163 0.108 -0.000 -0.000
2025-12-06 21:00:00+01:00 0 345 0 0 0 0 345 0.067 0.163 0.115 -0.000 -0.000
2025-12-06 21:15:00+01:00 0 316 0 0 0 0 316 0.064 0.163 0.115 -0.000 -0.000
2025-12-06 21:30:00+01:00 0 1385 0 0 0 0 1385 0.051 0.163 0.110 -0.000 -0.000
2025-12-06 21:45:00+01:00 0 2042 0 0 0 0 2042 0.031 0.163 0.106 -0.000 -0.000
2025-12-06 22:00:00+01:00 0 1732 0 0 0 0 1732 0.014 0.163 0.113 -0.000 -0.000
2025-12-06 22:15:00+01:00 0 193 0 0 0 0 193 0.012 0.163 0.113 -0.000 -0.000
2025-12-06 22:30:00+01:00 0 346 0 0 0 0 346 0.009 0.163 0.109 -0.000 -0.000
2025-12-06 22:45:00+01:00 0 872 0 0 0 0 872 0.000 0.163 0.106 -0.000 -0.000
2025-12-06 23:00:00+01:00 0 1361 0 1361 0 1361 0 0.000 0.128 0.108 -0.044 -0.044
2025-12-06 23:15:00+01:00 0 755 0 755 0 755 0 0.000 0.128 0.105 -0.024 -0.024
2025-12-06 23:30:00+01:00 0 304 0 304 0 304 0 0.000 0.128 0.102 -0.010 -0.010
2025-12-06 23:45:00+01:00 0 148 0 148 0 148 0 0.000 0.128 0.097 -0.005 -0.005
2025-12-07 00:00:00+01:00 0 97 0 97 0 97 0 0.000 0.128 0.109 -0.003 -0.003
2025-12-07 00:15:00+01:00 0 134 0 134 0 134 0 0.000 0.128 0.107 -0.004 -0.004
2025-12-07 00:30:00+01:00 0 148 0 148 0 148 0 0.000 0.128 0.103 -0.005 -0.005
2025-12-07 00:45:00+01:00 0 154 0 154 0 154 0 0.000 0.128 0.101 -0.005 -0.005
2025-12-07 01:00:00+01:00 0 111 0 111 0 111 0 0.000 0.128 0.104 -0.004 -0.004
2025-12-07 01:15:00+01:00 0 108 0 108 0 108 0 0.000 0.128 0.101 -0.003 -0.003
2025-12-07 01:30:00+01:00 0 116 0 116 0 116 0 0.000 0.128 0.101 -0.004 -0.004
2025-12-07 01:45:00+01:00 0 78 0 78 0 78 0 0.000 0.128 0.101 -0.003 -0.003
2025-12-07 02:00:00+01:00 0 81 0 81 0 81 0 0.000 0.128 0.103 -0.003 -0.003
2025-12-07 02:15:00+01:00 0 121 0 121 0 121 0 0.000 0.128 0.103 -0.004 -0.004
2025-12-07 02:30:00+01:00 0 134 0 134 0 134 0 0.000 0.128 0.103 -0.004 -0.004
2025-12-07 02:45:00+01:00 0 120 0 120 0 120 0 0.000 0.128 0.103 -0.004 -0.004
2025-12-07 03:00:00+01:00 0 155 0 155 0 155 0 0.000 0.128 0.105 -0.005 -0.005
2025-12-07 03:15:00+01:00 0 164 0 164 0 164 0 0.000 0.128 0.106 -0.005 -0.005
2025-12-07 03:30:00+01:00 0 91 0 91 0 91 0 0.000 0.128 0.106 -0.003 -0.003
2025-12-07 03:45:00+01:00 0 79 0 79 0 79 0 0.000 0.128 0.105 -0.003 -0.003
2025-12-07 04:00:00+01:00 0 117 0 117 0 117 0 0.000 0.128 0.103 -0.004 -0.004
2025-12-07 04:15:00+01:00 0 112 0 112 0 112 0 0.000 0.128 0.100 -0.004 -0.004
2025-12-07 04:30:00+01:00 0 70 0 70 0 70 0 0.000 0.128 0.103 -0.002 -0.002
2025-12-07 04:45:00+01:00 0 527 0 527 0 527 0 0.000 0.128 0.105 -0.017 -0.017
2025-12-07 05:00:00+01:00 0 594 0 594 0 594 0 0.000 0.128 0.103 -0.019 -0.019
2025-12-07 05:15:00+01:00 0 662 0 662 0 662 0 0.000 0.128 0.102 -0.021 -0.021
2025-12-07 05:30:00+01:00 0 671 0 671 0 671 0 0.000 0.128 0.107 -0.021 -0.021
2025-12-07 05:45:00+01:00 0 1145 0 1145 0 1145 0 0.000 0.128 0.113 -0.037 -0.037
2025-12-07 06:00:00+01:00 0 1098 0 1098 0 1098 0 0.000 0.128 0.104 -0.035 -0.035
2025-12-07 06:15:00+01:00 0 179 0 179 0 179 0 0.000 0.128 0.115 -0.006 -0.006
2025-12-07 06:30:00+01:00 0 172 0 172 0 172 0 0.000 0.128 0.119 -0.006 -0.006
2025-12-07 06:45:00+01:00 0 1023 0 1023 0 1023 0 0.000 0.128 0.136 -0.033 -0.033
2025-12-07 07:00:00+01:00 0 2209 0 2209 0 2209 0 0.000 0.128 0.119 -0.071 -0.071
2025-12-07 07:15:00+01:00 0 3049 0 3049 0 3049 0 0.000 0.128 0.139 -0.098 -0.098
2025-12-07 07:30:00+01:00 0 3532 0 3532 0 3532 0 0.000 0.128 0.156 -0.113 -0.113
2025-12-07 07:45:00+01:00 0 3290 0 3290 0 3290 0 0.000 0.128 0.160 -0.105 -0.105
2025-12-07 08:00:00+01:00 0 3448 0 3448 0 3448 0 0.000 0.128 0.150 -0.110 -0.110
2025-12-07 08:15:00+01:00 0 1606 0 1606 0 1606 0 0.000 0.128 0.154 -0.051 -0.051
2025-12-07 08:30:00+01:00 16 1479 0 1463 0 1463 0 0.000 0.128 0.156 -0.047 -0.047
2025-12-07 08:45:00+01:00 36 1224 0 1188 0 1188 0 0.000 0.128 0.171 -0.038 -0.038
2025-12-07 09:00:00+01:00 150 1644 0 1494 0 1494 0 0.000 0.128 0.186 -0.048 -0.048
2025-12-07 09:15:00+01:00 218 1237 0 1019 0 1019 0 0.000 0.128 0.182 -0.033 -0.033
2025-12-07 09:30:00+01:00 287 1560 0 1273 0 1273 0 0.000 0.128 0.169 -0.041 -0.041
2025-12-07 09:45:00+01:00 354 1309 0 954 0 954 0 0.000 0.128 0.166 -0.031 -0.031
2025-12-07 10:00:00+01:00 403 1594 0 1191 0 1191 0 0.000 0.128 0.170 -0.038 -0.038
2025-12-07 10:15:00+01:00 443 1575 0 1132 0 1132 0 0.000 0.128 0.168 -0.036 -0.036
2025-12-07 10:30:00+01:00 493 2629 0 2136 0 2136 0 0.000 0.128 0.162 -0.068 -0.068
2025-12-07 10:45:00+01:00 533 3322 0 2789 0 2789 0 0.000 0.128 0.160 -0.089 -0.089
2025-12-07 11:00:00+01:00 584 4462 0 3878 0 3878 0 0.000 0.128 0.190 -0.124 -0.124
2025-12-07 11:15:00+01:00 648 4753 0 4104 0 4104 0 0.000 0.128 0.185 -0.131 -0.131
2025-12-07 11:30:00+01:00 693 2572 0 1878 0 1878 0 0.000 0.128 0.179 -0.060 -0.060
2025-12-07 11:45:00+01:00 734 1085 0 351 0 351 0 0.000 0.128 0.166 -0.011 -0.011
2025-12-07 12:00:00+01:00 779 1431 0 651 0 651 0 0.000 0.128 0.162 -0.021 -0.021
2025-12-07 12:15:00+01:00 819 942 0 123 0 123 0 0.000 0.128 0.154 -0.004 -0.004
2025-12-07 12:30:00+01:00 829 638 0 0 0 0 -191 0.002 0.128 0.151 -0.000 -0.000
2025-12-07 12:45:00+01:00 836 1693 0 856 0 856 0 0.002 0.128 0.150 -0.027 -0.027
2025-12-07 13:00:00+01:00 811 2232 0 1420 0 1420 0 0.002 0.128 0.151 -0.045 -0.045
2025-12-07 13:15:00+01:00 755 1042 0 286 0 286 0 0.002 0.128 0.151 -0.009 -0.009
2025-12-07 13:30:00+01:00 722 581 0 0 0 0 -140 0.003 0.128 0.150 -0.000 -0.000
2025-12-07 13:45:00+01:00 694 1232 0 538 0 538 0 0.003 0.128 0.146 -0.017 -0.017
2025-12-07 14:00:00+01:00 673 1153 0 480 0 480 0 0.003 0.128 0.139 -0.015 -0.015
2025-12-07 14:15:00+01:00 670 1512 0 842 0 842 0 0.003 0.128 0.146 -0.027 -0.027
2025-12-07 14:30:00+01:00 624 1078 0 454 0 454 0 0.003 0.128 0.154 -0.015 -0.015
2025-12-07 14:45:00+01:00 571 1673 0 1101 0 1101 0 0.003 0.128 0.156 -0.035 -0.035
2025-12-07 15:00:00+01:00 511 848 0 336 0 336 0 0.003 0.128 0.145 -0.011 -0.011
2025-12-07 15:15:00+01:00 443 1268 0 824 0 824 0 0.003 0.128 0.143 -0.026 -0.026
2025-12-07 15:30:00+01:00 352 2326 0 1974 0 1974 0 0.003 0.128 0.155 -0.063 -0.063
2025-12-07 15:45:00+01:00 254 4334 0 5000 0 5000 -920 0.011 0.128 0.156 -0.160 -0.160
2025-12-07 16:00:00+01:00 151 4105 0 5000 0 5000 -1045 0.020 0.128 0.144 -0.160 -0.160
2025-12-07 16:15:00+01:00 23 1743 0 1720 0 1720 0 0.020 0.128 0.154 -0.055 -0.055
2025-12-07 16:30:00+01:00 0 323 0 5000 0 5000 -4676 0.061 0.128 0.154 -0.160 -0.160
2025-12-07 16:45:00+01:00 0 332 0 5000 0 5000 -4667 0.102 0.128 0.156 -0.160 -0.160
2025-12-07 17:00:00+01:00 0 228 0 5000 0 5000 -4771 0.144 0.128 0.154 -0.160 -0.160
2025-12-07 17:15:00+01:00 0 992 0 5000 0 5000 -4007 0.180 0.128 0.152 -0.160 -0.160
2025-12-07 17:30:00+01:00 0 1671 0 3988 0 3988 -2317 0.200 0.128 0.150 -0.128 -0.128
2025-12-07 17:45:00+01:00 0 2137 0 2137 0 2137 0 0.200 0.128 0.139 -0.068 -0.068
2025-12-07 18:00:00+01:00 0 2207 0 2207 0 2207 0 0.200 0.128 0.150 -0.071 -0.071
2025-12-07 18:15:00+01:00 0 1967 0 1967 0 1967 0 0.200 0.128 0.143 -0.063 -0.063
2025-12-07 18:30:00+01:00 0 3291 0 3291 0 3291 0 0.200 0.128 0.138 -0.105 -0.105
2025-12-07 18:45:00+01:00 0 1279 0 1279 0 1279 0 0.200 0.128 0.138 -0.041 -0.041
2025-12-07 19:00:00+01:00 0 1762 0 1762 0 1762 0 0.200 0.128 0.139 -0.056 -0.056
2025-12-07 19:15:00+01:00 0 2774 0 2774 0 2774 0 0.200 0.128 0.130 -0.089 -0.089
2025-12-07 19:30:00+01:00 0 3494 0 3494 0 3494 0 0.200 0.128 0.124 -0.112 -0.112
2025-12-07 19:45:00+01:00 0 2906 0 2906 0 2906 0 0.200 0.128 0.119 -0.093 -0.093
2025-12-07 20:00:00+01:00 0 2077 0 2077 0 2077 0 0.200 0.128 0.120 -0.066 -0.066
2025-12-07 20:15:00+01:00 0 694 0 694 0 694 0 0.200 0.128 0.117 -0.022 -0.022
2025-12-07 20:30:00+01:00 0 600 0 600 0 600 0 0.200 0.128 0.114 -0.019 -0.019
2025-12-07 20:45:00+01:00 0 652 0 652 0 652 0 0.200 0.128 0.108 -0.021 -0.021
2025-12-07 21:00:00+01:00 0 993 0 993 0 993 0 0.200 0.128 0.115 -0.032 -0.032
2025-12-07 21:15:00+01:00 0 2101 0 2101 0 2101 0 0.200 0.128 0.115 -0.067 -0.067
2025-12-07 21:30:00+01:00 0 2388 0 2388 0 2388 0 0.200 0.128 0.110 -0.076 -0.076
2025-12-07 21:45:00+01:00 0 1981 0 1981 0 1981 0 0.200 0.128 0.106 -0.063 -0.063
2025-12-07 22:00:00+01:00 0 492 0 492 0 492 0 0.200 0.128 0.113 -0.016 -0.016
2025-12-07 22:15:00+01:00 0 462 0 462 0 462 0 0.200 0.128 0.113 -0.015 -0.015
2025-12-07 22:30:00+01:00 0 326 0 326 0 326 0 0.200 0.128 0.109 -0.010 -0.010
2025-12-07 22:45:00+01:00 0 637 0 637 0 637 0 0.200 0.128 0.106 -0.020 -0.020
2025-12-07 23:00:00+01:00 0 1871 0 1871 0 1871 0 0.200 0.128 0.108 -0.060 -0.060
2025-12-07 23:15:00+01:00 0 1100 0 1100 0 1100 0 0.200 0.128 0.105 -0.035 -0.035
2025-12-07 23:30:00+01:00 0 285 0 285 0 285 0 0.200 0.128 0.102 -0.009 -0.009
2025-12-07 23:45:00+01:00 0 227 0 227 0 227 0 0.200 0.128 0.097 -0.007 -0.007

v.0.14.1

index P_PV P_Load P_deferrable0 P_grid_pos P_grid_neg P_grid P_batt SOC_opt unit_load_cost unit_prod_price cost_profit cost_fun_selfcons
2025-12-05 00:00:00+01:00 0 191 0 1141 0 1141 -950 0.046 0.128 0.109 -0.036 -0.036
2025-12-05 00:15:00+01:00 0 116 0 1066 0 1066 -950 0.055 0.128 0.107 -0.034 -0.034
2025-12-05 00:30:00+01:00 0 95 0 1045 0 1045 -950 0.063 0.128 0.103 -0.033 -0.033
2025-12-05 00:45:00+01:00 0 207 0 1157 0 1157 -950 0.071 0.128 0.101 -0.037 -0.037
2025-12-05 01:00:00+01:00 0 121 0 1071 0 1071 -950 0.080 0.128 0.104 -0.034 -0.034
2025-12-05 01:15:00+01:00 0 122 0 1072 0 1072 -950 0.088 0.128 0.101 -0.034 -0.034
2025-12-05 01:30:00+01:00 0 172 0 1122 0 1122 -950 0.096 0.128 0.101 -0.036 -0.036
2025-12-05 01:45:00+01:00 0 164 0 1114 0 1114 -950 0.105 0.128 0.101 -0.036 -0.036
2025-12-05 02:00:00+01:00 0 115 0 1065 0 1065 -950 0.113 0.128 0.103 -0.034 -0.034
2025-12-05 02:15:00+01:00 0 109 0 1059 0 1059 -950 0.122 0.128 0.103 -0.034 -0.034
2025-12-05 02:30:00+01:00 0 123 0 1073 0 1073 -950 0.130 0.128 0.103 -0.034 -0.034
2025-12-05 02:45:00+01:00 0 76 0 1026 0 1026 -950 0.138 0.128 0.103 -0.033 -0.033
2025-12-05 03:00:00+01:00 0 77 0 1027 0 1027 -950 0.147 0.128 0.105 -0.033 -0.033
2025-12-05 03:15:00+01:00 0 123 0 1073 0 1073 -950 0.155 0.128 0.106 -0.034 -0.034
2025-12-05 03:30:00+01:00 0 89 0 1039 0 1039 -950 0.163 0.128 0.106 -0.033 -0.033
2025-12-05 03:45:00+01:00 0 77 0 1027 0 1027 -950 0.172 0.128 0.105 -0.033 -0.033
2025-12-05 04:00:00+01:00 0 115 0 1065 0 1065 -950 0.180 0.128 0.103 -0.034 -0.034
2025-12-05 04:15:00+01:00 0 97 0 1047 0 1047 -950 0.188 0.128 0.100 -0.033 -0.033
2025-12-05 04:30:00+01:00 0 78 0 1028 0 1028 -950 0.197 0.128 0.103 -0.033 -0.033
2025-12-05 04:45:00+01:00 0 1037 0 1987 0 1987 -950 0.205 0.128 0.105 -0.064 -0.064
2025-12-05 05:00:00+01:00 0 837 0 1787 0 1787 -950 0.213 0.128 0.103 -0.057 -0.057
2025-12-05 05:15:00+01:00 0 1184 0 2134 0 2134 -950 0.222 0.128 0.102 -0.068 -0.068
2025-12-05 05:30:00+01:00 0 891 0 1841 0 1841 -950 0.230 0.128 0.107 -0.059 -0.059
2025-12-05 05:45:00+01:00 0 1367 0 2317 0 2317 -950 0.239 0.128 0.113 -0.074 -0.074
2025-12-05 06:00:00+01:00 0 1331 0 2281 0 2281 -950 0.247 0.128 0.104 -0.073 -0.073
2025-12-05 06:15:00+01:00 0 486 0 1436 0 1436 -950 0.255 0.128 0.115 -0.046 -0.046
2025-12-05 06:30:00+01:00 0 226 0 1176 0 1176 -950 0.264 0.128 0.119 -0.038 -0.038
2025-12-05 06:45:00+01:00 0 737 0 1687 0 1687 -950 0.272 0.128 0.136 -0.054 -0.054
2025-12-05 07:00:00+01:00 0 1977 0 1977 0 1977 0 0.272 0.163 0.119 -0.081 -0.081
2025-12-05 07:15:00+01:00 0 2602 0 2602 0 2602 0 0.272 0.163 0.139 -0.106 -0.106
2025-12-05 07:30:00+01:00 0 3569 0 3569 0 3569 0 0.272 0.163 0.156 -0.146 -0.146
2025-12-05 07:45:00+01:00 0 3157 0 3157 0 3157 0 0.272 0.163 0.160 -0.129 -0.129
2025-12-05 08:00:00+01:00 0 3012 0 2924 0 2924 88 0.271 0.181 0.150 -0.132 -0.132
2025-12-05 08:15:00+01:00 2 1755 0 0 0 0 1753 0.254 0.181 0.154 -0.000 -0.000
2025-12-05 08:30:00+01:00 18 309 0 0 0 0 290 0.251 0.181 0.156 -0.000 -0.000
2025-12-05 08:45:00+01:00 31 412 0 0 0 0 380 0.247 0.181 0.171 -0.000 -0.000
2025-12-05 09:00:00+01:00 197 976 0 0 0 0 779 0.240 0.181 0.186 -0.000 -0.000
2025-12-05 09:15:00+01:00 262 1946 0 0 0 0 1684 0.223 0.181 0.182 -0.000 -0.000
2025-12-05 09:30:00+01:00 496 1422 0 0 0 0 926 0.214 0.181 0.169 -0.000 -0.000
2025-12-05 09:45:00+01:00 557 1414 0 0 0 0 857 0.206 0.181 0.166 -0.000 -0.000
2025-12-05 10:00:00+01:00 610 1687 0 0 0 0 1077 0.196 0.181 0.170 -0.000 -0.000
2025-12-05 10:15:00+01:00 633 1462 0 0 0 0 829 0.188 0.181 0.168 -0.000 -0.000
2025-12-05 10:30:00+01:00 738 1953 0 0 0 0 1214 0.176 0.181 0.162 -0.000 -0.000
2025-12-05 10:45:00+01:00 647 952 0 0 0 0 305 0.173 0.181 0.160 -0.000 -0.000
2025-12-05 11:00:00+01:00 798 2376 0 0 0 0 1577 0.157 0.181 0.190 -0.000 -0.000
2025-12-05 11:15:00+01:00 774 4108 0 0 0 0 3334 0.125 0.181 0.185 -0.000 -0.000
2025-12-05 11:30:00+01:00 566 1920 0 0 0 0 1353 0.112 0.181 0.179 -0.000 -0.000
2025-12-05 11:45:00+01:00 528 1205 0 0 0 0 676 0.105 0.181 0.166 -0.000 -0.000
2025-12-05 12:00:00+01:00 708 582 0 0 0 0 -126 0.106 0.181 0.162 -0.000 -0.000
2025-12-05 12:15:00+01:00 808 349 0 0 0 0 -459 0.110 0.181 0.154 -0.000 -0.000
2025-12-05 12:30:00+01:00 697 983 0 0 0 0 286 0.107 0.181 0.151 -0.000 -0.000
2025-12-05 12:45:00+01:00 629 1317 0 0 0 0 687 0.101 0.181 0.150 -0.000 -0.000
2025-12-05 13:00:00+01:00 500 1961 0 0 0 0 1460 0.086 0.181 0.151 -0.000 -0.000
2025-12-05 13:15:00+01:00 889 1550 0 0 0 0 661 0.080 0.181 0.151 -0.000 -0.000
2025-12-05 13:30:00+01:00 1251 1427 0 0 0 0 176 0.078 0.181 0.150 -0.000 -0.000
2025-12-05 13:45:00+01:00 1151 689 0 0 0 0 -462 0.082 0.181 0.146 -0.000 -0.000
2025-12-05 14:00:00+01:00 889 1693 0 0 0 0 803 0.075 0.181 0.139 -0.000 -0.000
2025-12-05 14:15:00+01:00 876 2943 0 0 0 0 2067 0.054 0.181 0.146 -0.000 -0.000
2025-12-05 14:30:00+01:00 999 3342 0 0 0 0 2343 0.032 0.181 0.154 -0.000 -0.000
2025-12-05 14:45:00+01:00 1294 2778 0 0 0 0 1483 0.017 0.181 0.156 -0.000 -0.000
2025-12-05 15:00:00+01:00 1057 794 0 0 0 0 -262 0.019 0.181 0.145 -0.000 -0.000
2025-12-05 15:15:00+01:00 991 226 0 0 0 0 -765 0.026 0.181 0.143 -0.000 -0.000
2025-12-05 15:30:00+01:00 1021 1166 0 0 0 0 145 0.025 0.181 0.155 -0.000 -0.000
2025-12-05 15:45:00+01:00 753 1675 0 0 0 0 922 0.016 0.181 0.156 -0.000 -0.000
2025-12-05 16:00:00+01:00 591 1350 0 0 0 0 758 0.008 0.181 0.144 -0.000 -0.000
2025-12-05 16:15:00+01:00 258 971 0 0 0 0 712 0.001 0.181 0.154 -0.000 -0.000
2025-12-05 16:30:00+01:00 3 144 0 0 0 0 140 -0.000 0.181 0.154 -0.000 -0.000
2025-12-05 16:45:00+01:00 0 233 0 233 0 233 0 -0.000 0.181 0.156 -0.011 -0.011
2025-12-05 17:00:00+01:00 0 877 0 877 0 877 0 -0.000 0.181 0.154 -0.040 -0.040
2025-12-05 17:15:00+01:00 0 1873 0 1873 0 1873 0 -0.000 0.181 0.152 -0.085 -0.085
2025-12-05 17:30:00+01:00 0 1305 0 1305 0 1305 0 -0.000 0.181 0.150 -0.059 -0.059
2025-12-05 17:45:00+01:00 0 1060 0 1060 0 1060 0 -0.000 0.181 0.139 -0.048 -0.048
2025-12-05 18:00:00+01:00 0 2785 0 2785 0 2785 0 -0.000 0.181 0.150 -0.126 -0.126
2025-12-05 18:15:00+01:00 0 3535 0 3535 0 3535 0 -0.000 0.181 0.143 -0.160 -0.160
2025-12-05 18:30:00+01:00 0 4072 0 4072 0 4072 0 -0.000 0.181 0.138 -0.184 -0.184
2025-12-05 18:45:00+01:00 0 1291 0 1291 0 1291 0 -0.000 0.181 0.138 -0.058 -0.058
2025-12-05 19:00:00+01:00 0 473 0 473 0 473 0 -0.000 0.163 0.139 -0.019 -0.019
2025-12-05 19:15:00+01:00 0 1276 0 1276 0 1276 0 -0.000 0.163 0.130 -0.052 -0.052
2025-12-05 19:30:00+01:00 0 2699 0 2699 0 2699 0 -0.000 0.163 0.124 -0.110 -0.110
2025-12-05 19:45:00+01:00 0 2597 0 2597 0 2597 0 -0.000 0.163 0.119 -0.106 -0.106
2025-12-05 20:00:00+01:00 0 2634 0 2634 0 2634 0 -0.000 0.163 0.120 -0.107 -0.107
2025-12-05 20:15:00+01:00 0 1869 0 1869 0 1869 0 -0.000 0.163 0.117 -0.076 -0.076
2025-12-05 20:30:00+01:00 0 311 0 311 0 311 0 -0.000 0.163 0.114 -0.013 -0.013
2025-12-05 20:45:00+01:00 0 225 0 225 0 225 0 -0.000 0.163 0.108 -0.009 -0.009
2025-12-05 21:00:00+01:00 0 224 0 224 0 224 0 -0.000 0.163 0.115 -0.009 -0.009
2025-12-05 21:15:00+01:00 0 781 0 781 0 781 0 -0.000 0.163 0.115 -0.032 -0.032
2025-12-05 21:30:00+01:00 0 2192 0 2192 0 2192 0 -0.000 0.163 0.110 -0.089 -0.089
2025-12-05 21:45:00+01:00 0 2484 0 2484 0 2484 0 -0.000 0.163 0.106 -0.101 -0.101
2025-12-05 22:00:00+01:00 0 954 0 954 0 954 0 -0.000 0.163 0.113 -0.039 -0.039
2025-12-05 22:15:00+01:00 0 262 0 262 0 262 0 -0.000 0.163 0.113 -0.011 -0.011
2025-12-05 22:30:00+01:00 0 326 0 326 0 326 0 -0.000 0.163 0.109 -0.013 -0.013
2025-12-05 22:45:00+01:00 0 320 0 320 0 320 0 -0.000 0.163 0.106 -0.013 -0.013
2025-12-05 23:00:00+01:00 0 1169 0 2119 0 2119 -950 0.008 0.128 0.108 -0.068 -0.068
2025-12-05 23:15:00+01:00 0 1199 0 2149 0 2149 -950 0.017 0.128 0.105 -0.069 -0.069
2025-12-05 23:30:00+01:00 0 212 0 1162 0 1162 -950 0.025 0.128 0.102 -0.037 -0.037
2025-12-05 23:45:00+01:00 0 170 0 1120 0 1120 -950 0.033 0.128 0.097 -0.036 -0.036
2025-12-06 00:00:00+01:00 0 220 0 1170 0 1170 -950 0.042 0.128 0.109 -0.037 -0.037
2025-12-06 00:15:00+01:00 0 220 0 1170 0 1170 -950 0.050 0.128 0.107 -0.037 -0.037
2025-12-06 00:30:00+01:00 0 176 0 1126 0 1126 -950 0.058 0.128 0.103 -0.036 -0.036
2025-12-06 00:45:00+01:00 0 159 0 1109 0 1109 -950 0.067 0.128 0.101 -0.035 -0.035
2025-12-06 01:00:00+01:00 0 166 0 1116 0 1116 -950 0.075 0.128 0.104 -0.036 -0.036
2025-12-06 01:15:00+01:00 0 130 0 1080 0 1080 -950 0.084 0.128 0.101 -0.035 -0.035
2025-12-06 01:30:00+01:00 0 95 0 1045 0 1045 -950 0.092 0.128 0.101 -0.033 -0.033
2025-12-06 01:45:00+01:00 0 186 0 1136 0 1136 -950 0.100 0.128 0.101 -0.036 -0.036
2025-12-06 02:00:00+01:00 0 121 0 1071 0 1071 -950 0.109 0.128 0.103 -0.034 -0.034
2025-12-06 02:15:00+01:00 0 98 0 1048 0 1048 -950 0.117 0.128 0.103 -0.034 -0.034
2025-12-06 02:30:00+01:00 0 83 0 1033 0 1033 -950 0.125 0.128 0.103 -0.033 -0.033
2025-12-06 02:45:00+01:00 0 177 0 1127 0 1127 -950 0.134 0.128 0.103 -0.036 -0.036
2025-12-06 03:00:00+01:00 0 169 0 1119 0 1119 -950 0.142 0.128 0.105 -0.036 -0.036
2025-12-06 03:15:00+01:00 0 122 0 1072 0 1072 -950 0.150 0.128 0.106 -0.034 -0.034
2025-12-06 03:30:00+01:00 0 125 0 1075 0 1075 -950 0.159 0.128 0.106 -0.034 -0.034
2025-12-06 03:45:00+01:00 0 128 0 1078 0 1078 -950 0.167 0.128 0.105 -0.035 -0.035
2025-12-06 04:00:00+01:00 0 91 0 1041 0 1041 -950 0.175 0.128 0.103 -0.033 -0.033
2025-12-06 04:15:00+01:00 0 73 0 1023 0 1023 -950 0.184 0.128 0.100 -0.033 -0.033
2025-12-06 04:30:00+01:00 0 116 0 1066 0 1066 -950 0.192 0.128 0.103 -0.034 -0.034
2025-12-06 04:45:00+01:00 0 1102 0 2052 0 2052 -950 0.201 0.128 0.105 -0.066 -0.066
2025-12-06 05:00:00+01:00 0 747 0 1697 0 1697 -950 0.209 0.128 0.103 -0.054 -0.054
2025-12-06 05:15:00+01:00 0 1151 0 2101 0 2101 -950 0.217 0.128 0.102 -0.067 -0.067
2025-12-06 05:30:00+01:00 0 852 0 1802 0 1802 -950 0.226 0.128 0.107 -0.058 -0.058
2025-12-06 05:45:00+01:00 0 1286 0 2236 0 2236 -950 0.234 0.128 0.113 -0.072 -0.072
2025-12-06 06:00:00+01:00 0 985 0 1935 0 1935 -950 0.242 0.128 0.104 -0.062 -0.062
2025-12-06 06:15:00+01:00 0 144 0 1094 0 1094 -950 0.251 0.128 0.115 -0.035 -0.035
2025-12-06 06:30:00+01:00 0 204 0 1154 0 1154 -950 0.259 0.128 0.119 -0.037 -0.037
2025-12-06 06:45:00+01:00 0 1254 0 2204 0 2204 -950 0.267 0.128 0.136 -0.071 -0.071
2025-12-06 07:00:00+01:00 0 2428 0 2428 0 2428 0 0.267 0.163 0.119 -0.099 -0.099
2025-12-06 07:15:00+01:00 0 3312 0 3312 0 3312 0 0.267 0.163 0.139 -0.135 -0.135
2025-12-06 07:30:00+01:00 0 1773 0 1773 0 1773 0 0.267 0.163 0.156 -0.072 -0.072
2025-12-06 07:45:00+01:00 0 266 0 266 0 266 0 0.267 0.163 0.160 -0.011 -0.011
2025-12-06 08:00:00+01:00 0 1826 0 1826 0 1826 0 0.267 0.163 0.150 -0.074 -0.074
2025-12-06 08:15:00+01:00 0 1827 0 1827 0 1827 0 0.267 0.163 0.154 -0.075 -0.075
2025-12-06 08:30:00+01:00 26 2084 0 0 0 0 2058 0.247 0.163 0.156 -0.000 -0.000
2025-12-06 08:45:00+01:00 150 1381 0 1230 0 1230 0 0.247 0.163 0.171 -0.050 -0.050
2025-12-06 09:00:00+01:00 217 1193 0 976 0 976 0 0.247 0.163 0.186 -0.040 -0.040
2025-12-06 09:15:00+01:00 238 1807 0 0 0 0 1569 0.232 0.163 0.182 -0.000 -0.000
2025-12-06 09:30:00+01:00 251 2151 0 0 0 0 1900 0.214 0.163 0.169 -0.000 -0.000
2025-12-06 09:45:00+01:00 363 2102 0 1738 0 1738 0 0.214 0.163 0.166 -0.071 -0.071
2025-12-06 10:00:00+01:00 394 1859 0 1465 0 1465 0 0.214 0.163 0.170 -0.060 -0.060
2025-12-06 10:15:00+01:00 487 612 0 0 0 0 124 0.212 0.163 0.168 -0.000 -0.000
2025-12-06 10:30:00+01:00 588 1546 0 0 0 0 958 0.203 0.163 0.162 -0.000 -0.000
2025-12-06 10:45:00+01:00 585 2667 0 0 0 0 2082 0.183 0.163 0.160 -0.000 -0.000
2025-12-06 11:00:00+01:00 644 2839 0 0 0 0 2195 0.161 0.163 0.190 -0.000 -0.000
2025-12-06 11:15:00+01:00 789 1165 0 375 0 375 0 0.161 0.163 0.185 -0.015 -0.015
2025-12-06 11:30:00+01:00 736 467 0 0 0 0 -269 0.164 0.163 0.179 -0.000 -0.000
2025-12-06 11:45:00+01:00 698 2152 0 1454 0 1454 0 0.164 0.163 0.166 -0.059 -0.059
2025-12-06 12:00:00+01:00 660 2400 0 0 0 0 1739 0.147 0.163 0.162 -0.000 -0.000
2025-12-06 12:15:00+01:00 707 2173 0 439 0 439 1026 0.137 0.163 0.154 -0.018 -0.018
2025-12-06 12:30:00+01:00 676 2762 0 2086 0 2086 0 0.137 0.163 0.151 -0.085 -0.085
2025-12-06 12:45:00+01:00 677 3692 0 0 0 0 3015 0.107 0.163 0.150 -0.000 -0.000
2025-12-06 13:00:00+01:00 661 2478 0 0 0 0 1816 0.090 0.163 0.151 -0.000 -0.000
2025-12-06 13:15:00+01:00 730 1894 0 0 0 0 1163 0.078 0.163 0.151 -0.000 -0.000
2025-12-06 13:30:00+01:00 697 999 0 301 0 301 0 0.078 0.163 0.150 -0.012 -0.012
2025-12-06 13:45:00+01:00 716 1477 0 0 0 0 761 0.071 0.163 0.146 -0.000 -0.000
2025-12-06 14:00:00+01:00 795 789 0 0 0 0 -6 0.071 0.163 0.139 -0.000 -0.000
2025-12-06 14:15:00+01:00 867 1827 0 0 0 0 959 0.062 0.163 0.146 -0.000 -0.000
2025-12-06 14:30:00+01:00 640 2962 0 0 0 0 2322 0.039 0.163 0.154 -0.000 -0.000
2025-12-06 14:45:00+01:00 500 1272 0 0 0 0 772 0.031 0.163 0.156 -0.000 -0.000
2025-12-06 15:00:00+01:00 367 697 0 0 0 0 330 0.028 0.163 0.145 -0.000 -0.000
2025-12-06 15:15:00+01:00 223 1906 0 0 0 0 1683 0.012 0.163 0.143 -0.000 -0.000
2025-12-06 15:30:00+01:00 170 683 0 0 0 0 512 0.007 0.163 0.155 -0.000 -0.000
2025-12-06 15:45:00+01:00 146 281 0 0 0 0 135 0.005 0.163 0.156 -0.000 -0.000
2025-12-06 16:00:00+01:00 29 1602 0 1572 0 1572 0 0.005 0.163 0.144 -0.064 -0.064
2025-12-06 16:15:00+01:00 3 560 0 0 0 0 557 -0.000 0.163 0.154 -0.000 -0.000
2025-12-06 16:30:00+01:00 0 1504 0 1504 0 1504 0 -0.000 0.163 0.154 -0.061 -0.061
2025-12-06 16:45:00+01:00 0 1686 0 1686 0 1686 0 -0.000 0.163 0.156 -0.069 -0.069
2025-12-06 17:00:00+01:00 0 1038 0 1038 0 1038 0 -0.000 0.163 0.154 -0.042 -0.042
2025-12-06 17:15:00+01:00 0 686 0 686 0 686 0 -0.000 0.163 0.152 -0.028 -0.028
2025-12-06 17:30:00+01:00 0 270 0 270 0 270 0 -0.000 0.163 0.150 -0.011 -0.011
2025-12-06 17:45:00+01:00 0 1211 0 1211 0 1211 0 -0.000 0.163 0.139 -0.049 -0.049
2025-12-06 18:00:00+01:00 0 3045 0 3045 0 3045 0 -0.000 0.163 0.150 -0.124 -0.124
2025-12-06 18:15:00+01:00 0 2364 0 2364 0 2364 0 -0.000 0.163 0.143 -0.096 -0.096
2025-12-06 18:30:00+01:00 0 2577 0 2577 0 2577 0 -0.000 0.163 0.138 -0.105 -0.105
2025-12-06 18:45:00+01:00 0 3142 0 3142 0 3142 0 -0.000 0.163 0.138 -0.128 -0.128
2025-12-06 19:00:00+01:00 0 415 0 415 0 415 0 -0.000 0.163 0.139 -0.017 -0.017
2025-12-06 19:15:00+01:00 0 1115 0 1115 0 1115 0 -0.000 0.163 0.130 -0.045 -0.045
2025-12-06 19:30:00+01:00 0 1682 0 1682 0 1682 0 -0.000 0.163 0.124 -0.069 -0.069
2025-12-06 19:45:00+01:00 0 2271 0 2271 0 2271 0 -0.000 0.163 0.119 -0.093 -0.093
2025-12-06 20:00:00+01:00 0 2794 0 2794 0 2794 0 -0.000 0.163 0.120 -0.114 -0.114
2025-12-06 20:15:00+01:00 0 2226 0 2226 0 2226 0 -0.000 0.163 0.117 -0.091 -0.091
2025-12-06 20:30:00+01:00 0 759 0 759 0 759 0 -0.000 0.163 0.114 -0.031 -0.031
2025-12-06 20:45:00+01:00 0 429 0 429 0 429 0 -0.000 0.163 0.108 -0.018 -0.018
2025-12-06 21:00:00+01:00 0 345 0 345 0 345 0 -0.000 0.163 0.115 -0.014 -0.014
2025-12-06 21:15:00+01:00 0 316 0 316 0 316 0 -0.000 0.163 0.115 -0.013 -0.013
2025-12-06 21:30:00+01:00 0 1385 0 1385 0 1385 0 -0.000 0.163 0.110 -0.056 -0.056
2025-12-06 21:45:00+01:00 0 2042 0 2042 0 2042 0 -0.000 0.163 0.106 -0.083 -0.083
2025-12-06 22:00:00+01:00 0 1732 0 1732 0 1732 0 -0.000 0.163 0.113 -0.071 -0.071
2025-12-06 22:15:00+01:00 0 193 0 193 0 193 0 -0.000 0.163 0.113 -0.008 -0.008
2025-12-06 22:30:00+01:00 0 346 0 346 0 346 0 -0.000 0.163 0.109 -0.014 -0.014
2025-12-06 22:45:00+01:00 0 872 0 872 0 872 0 -0.000 0.163 0.106 -0.036 -0.036
2025-12-06 23:00:00+01:00 0 1361 0 1361 0 1361 0 -0.000 0.128 0.108 -0.044 -0.044
2025-12-06 23:15:00+01:00 0 755 0 755 0 755 0 -0.000 0.128 0.105 -0.024 -0.024
2025-12-06 23:30:00+01:00 0 304 0 304 0 304 0 -0.000 0.128 0.102 -0.010 -0.010
2025-12-06 23:45:00+01:00 0 148 0 148 0 148 0 -0.000 0.128 0.097 -0.005 -0.005
2025-12-07 00:00:00+01:00 0 97 0 97 0 97 0 -0.000 0.128 0.109 -0.003 -0.003
2025-12-07 00:15:00+01:00 0 134 0 134 0 134 0 -0.000 0.128 0.107 -0.004 -0.004
2025-12-07 00:30:00+01:00 0 148 0 148 0 148 0 -0.000 0.128 0.103 -0.005 -0.005
2025-12-07 00:45:00+01:00 0 154 0 154 0 154 0 -0.000 0.128 0.101 -0.005 -0.005
2025-12-07 01:00:00+01:00 0 111 0 111 0 111 0 -0.000 0.128 0.104 -0.004 -0.004
2025-12-07 01:15:00+01:00 0 108 0 108 0 108 0 -0.000 0.128 0.101 -0.003 -0.003
2025-12-07 01:30:00+01:00 0 116 0 116 0 116 0 -0.000 0.128 0.101 -0.004 -0.004
2025-12-07 01:45:00+01:00 0 78 0 78 0 78 0 -0.000 0.128 0.101 -0.003 -0.003
2025-12-07 02:00:00+01:00 0 81 0 81 0 81 0 -0.000 0.128 0.103 -0.003 -0.003
2025-12-07 02:15:00+01:00 0 121 0 121 0 121 0 -0.000 0.128 0.103 -0.004 -0.004
2025-12-07 02:30:00+01:00 0 134 0 134 0 134 0 -0.000 0.128 0.103 -0.004 -0.004
2025-12-07 02:45:00+01:00 0 120 0 120 0 120 0 -0.000 0.128 0.103 -0.004 -0.004
2025-12-07 03:00:00+01:00 0 155 0 155 0 155 0 -0.000 0.128 0.105 -0.005 -0.005
2025-12-07 03:15:00+01:00 0 164 0 164 0 164 0 -0.000 0.128 0.106 -0.005 -0.005
2025-12-07 03:30:00+01:00 0 91 0 91 0 91 0 -0.000 0.128 0.106 -0.003 -0.003
2025-12-07 03:45:00+01:00 0 79 0 79 0 79 0 -0.000 0.128 0.105 -0.003 -0.003
2025-12-07 04:00:00+01:00 0 117 0 117 0 117 0 -0.000 0.128 0.103 -0.004 -0.004
2025-12-07 04:15:00+01:00 0 112 0 112 0 112 0 -0.000 0.128 0.100 -0.004 -0.004
2025-12-07 04:30:00+01:00 0 70 0 70 0 70 0 -0.000 0.128 0.103 -0.002 -0.002
2025-12-07 04:45:00+01:00 0 527 0 527 0 527 0 -0.000 0.128 0.105 -0.017 -0.017
2025-12-07 05:00:00+01:00 0 594 0 594 0 594 0 -0.000 0.128 0.103 -0.019 -0.019
2025-12-07 05:15:00+01:00 0 662 0 662 0 662 0 -0.000 0.128 0.102 -0.021 -0.021
2025-12-07 05:30:00+01:00 0 671 0 671 0 671 0 -0.000 0.128 0.107 -0.021 -0.021
2025-12-07 05:45:00+01:00 0 1145 0 1145 0 1145 0 -0.000 0.128 0.113 -0.037 -0.037
2025-12-07 06:00:00+01:00 0 1098 0 1098 0 1098 0 -0.000 0.128 0.104 -0.035 -0.035
2025-12-07 06:15:00+01:00 0 179 0 179 0 179 0 -0.000 0.128 0.115 -0.006 -0.006
2025-12-07 06:30:00+01:00 0 172 0 172 0 172 0 -0.000 0.128 0.119 -0.006 -0.006
2025-12-07 06:45:00+01:00 0 1023 0 1023 0 1023 0 -0.000 0.128 0.136 -0.033 -0.033
2025-12-07 07:00:00+01:00 0 2209 0 3159 0 3159 -950 0.008 0.128 0.119 -0.101 -0.101
2025-12-07 07:15:00+01:00 0 3049 0 3049 0 3049 0 0.008 0.128 0.139 -0.098 -0.098
2025-12-07 07:30:00+01:00 0 3532 0 3532 0 3532 0 0.008 0.128 0.156 -0.113 -0.113
2025-12-07 07:45:00+01:00 0 3290 0 3290 0 3290 0 0.008 0.128 0.160 -0.105 -0.105
2025-12-07 08:00:00+01:00 0 3448 0 3448 0 3448 0 0.008 0.128 0.150 -0.110 -0.110
2025-12-07 08:15:00+01:00 0 1606 0 1606 0 1606 0 0.008 0.128 0.154 -0.051 -0.051
2025-12-07 08:30:00+01:00 16 1479 0 1463 0 1463 0 0.008 0.128 0.156 -0.047 -0.047
2025-12-07 08:45:00+01:00 36 1224 0 1188 0 1188 0 0.008 0.128 0.171 -0.038 -0.038
2025-12-07 09:00:00+01:00 150 1644 0 1494 0 1494 0 0.008 0.128 0.186 -0.048 -0.048
2025-12-07 09:15:00+01:00 218 1237 0 1019 0 1019 0 0.008 0.128 0.182 -0.033 -0.033
2025-12-07 09:30:00+01:00 287 1560 0 1273 0 1273 0 0.008 0.128 0.169 -0.041 -0.041
2025-12-07 09:45:00+01:00 354 1309 0 954 0 954 0 0.008 0.128 0.166 -0.031 -0.031
2025-12-07 10:00:00+01:00 403 1594 0 1191 0 1191 0 0.008 0.128 0.170 -0.038 -0.038
2025-12-07 10:15:00+01:00 443 1575 0 1132 0 1132 0 0.008 0.128 0.168 -0.036 -0.036
2025-12-07 10:30:00+01:00 493 2629 0 2136 0 2136 0 0.008 0.128 0.162 -0.068 -0.068
2025-12-07 10:45:00+01:00 533 3322 0 2789 0 2789 0 0.008 0.128 0.160 -0.089 -0.089
2025-12-07 11:00:00+01:00 584 4462 0 3878 0 3878 0 0.008 0.128 0.190 -0.124 -0.124
2025-12-07 11:15:00+01:00 648 4753 0 4104 0 4104 0 0.008 0.128 0.185 -0.131 -0.131
2025-12-07 11:30:00+01:00 693 2572 0 1878 0 1878 0 0.008 0.128 0.179 -0.060 -0.060
2025-12-07 11:45:00+01:00 734 1085 0 351 0 351 0 0.008 0.128 0.166 -0.011 -0.011
2025-12-07 12:00:00+01:00 779 1431 0 651 0 651 0 0.008 0.128 0.162 -0.021 -0.021
2025-12-07 12:15:00+01:00 819 942 0 123 0 123 0 0.008 0.128 0.154 -0.004 -0.004
2025-12-07 12:30:00+01:00 829 638 0 0 0 0 -191 0.010 0.128 0.151 -0.000 -0.000
2025-12-07 12:45:00+01:00 836 1693 0 856 0 856 0 0.010 0.128 0.150 -0.027 -0.027
2025-12-07 13:00:00+01:00 811 2232 0 1420 0 1420 0 0.010 0.128 0.151 -0.045 -0.045
2025-12-07 13:15:00+01:00 755 1042 0 286 0 286 0 0.010 0.128 0.151 -0.009 -0.009
2025-12-07 13:30:00+01:00 722 581 0 0 0 0 -140 0.011 0.128 0.150 -0.000 -0.000
2025-12-07 13:45:00+01:00 694 1232 0 538 0 538 0 0.011 0.128 0.146 -0.017 -0.017
2025-12-07 14:00:00+01:00 673 1153 0 480 0 480 0 0.011 0.128 0.139 -0.015 -0.015
2025-12-07 14:15:00+01:00 670 1512 0 842 0 842 0 0.011 0.128 0.146 -0.027 -0.027
2025-12-07 14:30:00+01:00 624 1078 0 454 0 454 0 0.011 0.128 0.154 -0.015 -0.015
2025-12-07 14:45:00+01:00 571 1673 0 1101 0 1101 0 0.011 0.128 0.156 -0.035 -0.035
2025-12-07 15:00:00+01:00 511 848 0 336 0 336 0 0.011 0.128 0.145 -0.011 -0.011
2025-12-07 15:15:00+01:00 443 1268 0 824 0 824 0 0.011 0.128 0.143 -0.026 -0.026
2025-12-07 15:30:00+01:00 352 2326 0 1974 0 1974 0 0.011 0.128 0.155 -0.063 -0.063
2025-12-07 15:45:00+01:00 254 4334 0 4079 0 4079 0 0.011 0.128 0.156 -0.130 -0.130
2025-12-07 16:00:00+01:00 151 4105 0 3954 0 3954 0 0.011 0.128 0.144 -0.126 -0.126
2025-12-07 16:15:00+01:00 23 1743 0 1720 0 1720 0 0.011 0.128 0.154 -0.055 -0.055
2025-12-07 16:30:00+01:00 0 323 0 323 0 323 0 0.011 0.128 0.154 -0.010 -0.010
2025-12-07 16:45:00+01:00 0 332 0 332 0 332 0 0.011 0.128 0.156 -0.011 -0.011
2025-12-07 17:00:00+01:00 0 228 0 228 0 228 0 0.011 0.128 0.154 -0.007 -0.007
2025-12-07 17:15:00+01:00 0 992 0 992 0 992 0 0.011 0.128 0.152 -0.032 -0.032
2025-12-07 17:30:00+01:00 0 1671 0 2225 0 2225 -554 0.016 0.128 0.150 -0.071 -0.071
2025-12-07 17:45:00+01:00 0 2137 0 3087 0 3087 -950 0.025 0.128 0.139 -0.099 -0.099
2025-12-07 18:00:00+01:00 0 2207 0 3157 0 3157 -950 0.033 0.128 0.150 -0.101 -0.101
2025-12-07 18:15:00+01:00 0 1967 0 2917 0 2917 -950 0.041 0.128 0.143 -0.093 -0.093
2025-12-07 18:30:00+01:00 0 3291 0 3291 0 3291 0 0.041 0.128 0.138 -0.105 -0.105
2025-12-07 18:45:00+01:00 0 1279 0 2229 0 2229 -950 0.050 0.128 0.138 -0.071 -0.071
2025-12-07 19:00:00+01:00 0 1762 0 2712 0 2712 -950 0.058 0.128 0.139 -0.087 -0.087
2025-12-07 19:15:00+01:00 0 2774 0 3724 0 3724 -950 0.066 0.128 0.130 -0.119 -0.119
2025-12-07 19:30:00+01:00 0 3494 0 3494 0 3494 0 0.066 0.128 0.124 -0.112 -0.112
2025-12-07 19:45:00+01:00 0 2906 0 2906 0 2906 0 0.066 0.128 0.119 -0.093 -0.093
2025-12-07 20:00:00+01:00 0 2077 0 3027 0 3027 -950 0.075 0.128 0.120 -0.097 -0.097
2025-12-07 20:15:00+01:00 0 694 0 1644 0 1644 -950 0.083 0.128 0.117 -0.053 -0.053
2025-12-07 20:30:00+01:00 0 600 0 1550 0 1550 -950 0.091 0.128 0.114 -0.050 -0.050
2025-12-07 20:45:00+01:00 0 652 0 1602 0 1602 -950 0.100 0.128 0.108 -0.051 -0.051
2025-12-07 21:00:00+01:00 0 993 0 1943 0 1943 -950 0.108 0.128 0.115 -0.062 -0.062
2025-12-07 21:15:00+01:00 0 2101 0 3051 0 3051 -950 0.116 0.128 0.115 -0.098 -0.098
2025-12-07 21:30:00+01:00 0 2388 0 3338 0 3338 -950 0.125 0.128 0.110 -0.107 -0.107
2025-12-07 21:45:00+01:00 0 1981 0 2931 0 2931 -950 0.133 0.128 0.106 -0.094 -0.094
2025-12-07 22:00:00+01:00 0 492 0 1442 0 1442 -950 0.142 0.128 0.113 -0.046 -0.046
2025-12-07 22:15:00+01:00 0 462 0 1412 0 1412 -950 0.150 0.128 0.113 -0.045 -0.045
2025-12-07 22:30:00+01:00 0 326 0 1276 0 1276 -950 0.158 0.128 0.109 -0.041 -0.041
2025-12-07 22:45:00+01:00 0 637 0 1587 0 1587 -950 0.167 0.128 0.106 -0.051 -0.051
2025-12-07 23:00:00+01:00 0 1871 0 2821 0 2821 -950 0.175 0.128 0.108 -0.090 -0.090
2025-12-07 23:15:00+01:00 0 1100 0 2050 0 2050 -950 0.183 0.128 0.105 -0.066 -0.066
2025-12-07 23:30:00+01:00 0 285 0 1235 0 1235 -950 0.192 0.128 0.102 -0.040 -0.040
2025-12-07 23:45:00+01:00 0 206 0 1156 0 1156 -950 0.200 0.128 0.097 -0.037 -0.037

I have a Growatt inverter controlling my batteries. The inverter is connected to Home Assistant using the SolaX Modbus integration. I don’t understand how I should control the batteries based on what EMHASS publish.
Someone who can share how you do?

Anyone else get days like this from solcast? makes an utter mess of the forecasting. Currently using the bjreplay solcast integration

Emhass publishes p_batt_forecast & soc_batt_forecast. These will tell you what to do p_batt_forecast is the power (W), 0 = do nothing, positive = charge, negative = discharge (might be other way around). The SOC parameter tells you the target percentage the battery should (dis)charge to. E.g. if your current SOC is 20% and this value is 40%, it means you should charge to 40%. How to control that with your Growatt inverter I don’t know, but most likely you can use the modbus integration to tell it to go to the requested SOC or powers.


Change inverter_ac_input_max from 1000 to something else.

I do understand what I get from EMHASS. My problem is how I control the batteries.
Are there anyone using Growatt inverter/batteries together with EMHASS?

Thank you, the fact is that I do not owe a hybrid inverter.
Below my set-up from v.0.14.0
So is this going to be used for ANY inverter? Is this behaviour expected?

Not a specific issue, more a general question. For those using the MLForecast method of forecasting loads, how do you account for if the current load is different to what the ML forecaster is spitting out?

you can control charge/discharge from Home Assistant using the homeassistant-solax-modbus integration’s Modbus power control (the remotecontrol_* entities). Below I give the exact service calls / YAML snippets you can paste into the Services dev tool or into automations/scripts, explain what they do, and show how to stop the action. (References to the official integration docs and Growatt Modbus manual are below.)


How it works (short)

  • The integration exposes parameter entities (numbers / selects) plus a stateless button that triggers a short-lived Modbus “remote control” timeslot on the inverter. Use the parameters to set the mode and target power, then press the remotecontrol_trigger button to apply it. The Mode-1 remotecontrol commands are non-persistent (not written to EEPROM) and are intended for frequent automation use. homeassistant-solax-modbus.readthedocs.io+1

Typical entities you’ll see

(Names vary by the integration prefix you chose; replace solax below with your prefix.)

If you don’t see these exact names check Developer tools → States (your prefix may be different). homeassistant-solax-modbus.readthedocs.io


Basic examples

1) Force the battery to charge at 2500 W (Battery Control)

Use select.select_option → set Enabled Battery Control, set number to 2500, then press the trigger button.

Services / YAML (Developer Tools → Services):

# 1) set mode to Battery Control
service: select.select_option
data:
  entity_id: select.solax_remotecontrol_power_control
  option: "Enabled Battery Control"

# 2) set the target (charge) power to +2500 W
service: number.set_value
data:
  entity_id: number.solax_remotecontrol_active_power
  value: 2500

# 3) set how long the timeslot will be (e.g. 30 s)
service: number.set_value
data:
  entity_id: number.solax_remotecontrol_duration
  value: 30

# 4) press the trigger button to apply immediately
service: button.press
data:
  entity_id: button.solax_remotecontrol_trigger

Behavior: positive active_power in Battery Control = battery charging. If you want the command to persist, use remotecontrol_autorepeat_duration so the integration will re-trigger automatically. homeassistant-solax-modbus.readthedocs.io


2) Force the battery to discharge at 2000 W

Same flow, but target is negative:

service: select.select_option
data:
  entity_id: select.solax_remotecontrol_power_control
  option: "Enabled Battery Control"

service: number.set_value
data:
  entity_id: number.solax_remotecontrol_active_power
  value: -2000

service: number.set_value
data:
  entity_id: number.solax_remotecontrol_duration
  value: 30

service: button.press
data:
  entity_id: button.solax_remotecontrol_trigger

Negative active_power = discharge. homeassistant-solax-modbus.readthedocs.io


3) Charge from grid (grid import) — Grid Control / Power Control

If you want to force import from the grid (grid charge), use Enabled Grid Control (or Enabled Power Control with appropriate import limit). Example to import 3000 W:

service: select.select_option
data:
  entity_id: select.solax_remotecontrol_power_control
  option: "Enabled Grid Control"

service: number.set_value
data:
  entity_id: number.solax_remotecontrol_active_power
  value: 3000   # Positive means import in Grid Control

service: number.set_value
data:
  entity_id: number.solax_remotecontrol_duration
  value: 30

service: button.press
data:
  entity_id: button.solax_remotecontrol_trigger

(When using Grid Control, make sure remotecontrol_import_limit/related settings allow the requested import level.) homeassistant-solax-modbus.readthedocs.io


4) Run continuous control (autorepeat)

Set number.solax_remotecontrol_autorepeat_duration to a duration larger than remotecontrol_duration so the integration will retrigger automatically each poll cycle. Example: want 1 hour of autorepeat while the integration polls every 5s:

service: number.set_value
data:
  entity_id: number.solax_remotecontrol_autorepeat_duration
  value: 3600  # seconds (1 hour)

# then set mode/power/duration as above and press the trigger

Autorepeat avoids the need to re-run the automation every few seconds; the integration recomputes and re-applies the remote control each poll. Be mindful of the recommended polling interval (3–5s for autorepeat) to avoid overload. homeassistant-solax-modbus.readthedocs.io


5) Stop forced charge/discharge

Options:

  • Set select.solax_remotecontrol_power_control to "Disabled" and press button.solax_remotecontrol_trigger, or
  • Set number.solax_remotecontrol_autorepeat_duration to 0 (turn off autorepeat) — once the current duration expires the inverter returns to normal mode. homeassistant-solax-modbus.readthedocs.io

Example (disable now):

service: select.select_option
data:
  entity_id: select.solax_remotecontrol_power_control
  option: "Disabled"

service: button.press
data:
  entity_id: button.solax_remotecontrol_trigger

Important notes & caveats

  • Entity names depend on the integration prefix you chose at install time (default often solax). Check Developer Tools → States to find the exact entity IDs. homeassistant-solax-modbus.readthedocs.io
  • Mode-1 remotecontrol commands are non-persistent (not written to EEPROM), so they’re safe for automation use — but the inverter expects the command to be periodically re-issued (or use autorepeat). homeassistant-solax-modbus.readthedocs.io
  • Some older Gen-3 or non-SolaX inverters (or vendor-specific Growatt models) may use slightly different registers or require different approaches — the Solax integration supports multiple brands but behaviour can vary. If you have a Growatt-specific model, the Growatt Modbus manual gives the low-level register meanings. (If you prefer direct low-level Modbus writes instead of the integration entities I can show register write examples from the Growatt Modbus spec.) homeassistant-solax-modbus.readthedocs.io+1
  • Don’t confuse persistent settings (which write to EEPROM) and Mode-1 commands: persistent writes should be used sparingly because EEPROM has limited write cycles. The integration docs warn about that. homeassistant-solax-modbus.readthedocs.io

Useful references (read / bookmark)

  • SolaX Modbus integration docs (installation + Mode-1 Modbus power control details). — explains the remotecontrol_* entities and examples. homeassistant-solax-modbus.readthedocs.io+1
  • homeassistant-solax-modbus (GitHub / README) — implementation and supported inverter list. GitHub
  • Growatt Modbus protocol PDF — low-level register map if you want raw Modbus register writes. photovoltaicsolar.in+1

If you’d like, tell me:

  • the exact prefix/entity names you see in Developer Tools → States (paste one or two), and I’ll convert the generic examples above into copy-paste-ready service calls for your system; or
  • whether you want the raw Modbus register write examples for Growatt (RTU/TCP modbus.write_registers) instead of using the integration’s remotecontrol_* entities — I can provide those too (but we’ll need the exact model/register map).

link to discussion here

That seems like a very attractive solution!
Unfortunately I don’t have any of remotecontrol_* entities in the SolaX ModBus integration. When I come home I will check again that I run the correct version of toe integration but today I don’t have them for Growatt inverter that I use: MID 11~20KTL3-XH.

The Growatt integration allows control of the inverter.

Spent many more hours trying to get the MPC call to work without sucess. Extremely frustrating. Now passing all data as timestamped dict in same manner, based on same sensor output:
So the data format should be correct, and all arguments have same and correct length.

example:

[2025-12-09 00:24:03 +0100] [23] [INFO] Passed runtime parameters: {'prediction_horizon': 94, 'pv_power_forecast': {'2025-12-09T01:00:00+01:00': 0, '2025-12-09T01:30:00+01:00': 0'2025-12-09T04:30:00+01:00': 

The window shrinks as expected, based on when dayahead was run.

This is the parameters for the payload:

 {
        "prediction_horizon": {{ states('input_number.mpc_prediction_horizon') | int }},
        "pv_power_forecast": {{ ns_pv.iso_dict | tojson }},
        "load_power_forecast": {{ ns_houseload.iso_dict | tojson }},
        "load_cost_forecast": {{ ns_load.iso_dict | tojson }},
        "prod_price_forecast": {{ ns_prod.iso_dict | tojson }},
        "soc_init": {{ states('sensor.solaredge_b1_state_of_energy') | float }},
        "soc_final": 0.3,
        "number_of_deferrable_loads": 1,
        "nominal_power_of_deferrable_loads": 5000,
        "operating_hours_of_each_deferrable_load": [{{ (states('input_number.mpc_prediction_horizon') | float / 4) | round(0) | int }}],
        "start_timesteps_of_each_deferrable_load": [0],
        "end_timesteps_of_each_deferrable_load": [0],
        "battery_minimum_state_of_charge": 0.2,
        "battery_maximum_state_of_charge": 0.9,
        "publish_prefix": "mpc_"
      }

i am trying to run it as a rest_command:

trigger_mpc_optim:
    url: "http://192.168.10.3:5000/action/naive_mpc_optim"
    method: POST
    timeout: 60
    headers:
      Content-Type: "application/json"

I now get a 400 ERROR and an ERROR passed action argument is not valid!

[2025-12-09 00:24:03 +0100] [23] [DEBUG] Solver configuration: lp_solver=GLPK_CMD, lp_solver_path=
[2025-12-09 00:24:03 +0100] [23] [DEBUG] Number of threads: 4
[2025-12-09 00:24:03 +0100] [23] [ERROR] The passed action argument and hence the set_type parameter for setup is not valid
[2025-12-09 00:24:03 +0100] [23] [ERROR] ERROR: passed action is not valid
[2025-12-09 00:25:00 +0100] [23] [INFO]  >> Obtaining params: 
[2025-12-09 00:25:00 +0100] [23] [INFO] Passed runtime parameters: {}
[2025-12-09 00:25:00 +0100] [23] [INFO]  >> Setting input data dict
[2025-12-09 00:25:00 +0100] [23] [INFO] Setting up needed data
[2025-12-09 00:25:00 +0100] [23] [DEBUG] setting`passed_data:days_to_retrieve` to 9 for fit/predict/tune
[2025-12-09 00:25:00 +0100] [23] [DEBUG] InfluxDB integration disabled, using Home Assistant API
[2025-12-09 00:25:00 +0100] [23] [ERROR] Use COIN_CMD solver name if you want to set a path for the LP solver
[2025-12-09 00:25:00 +0100] [23] [DEBUG] Initialized Optimization with retrieve_hass_conf: {'optimization_time_step': Timedelta('0 days 

Chat GPT just goes around in circles, “solving” this. Any ideas??

It looks like you haven’t included the payload in your rest_command.

Here is what my rest_command definition looks like:

rest_command:
  mpc_servicecall_rest:
    url: http://localhost:5000/action/naive-mpc-optim
    method: POST
    content_type: "application/json; charset=utf-8"
    timeout: 200
    payload: "{{ payload }}"

Which I then call in my automation script.

action: rest_command.mpc_servicecall_rest
metadata: {}
data:
  payload: |
    {{ payload}}
enabled: true

Hi Marc and thnx for reply! Sorry. Did cut out to much info in my post. Felt i had occupied this thread with my long codesnippets…:slight_smile: There is a payload and it seems to be passed (i can read it in EMHASS logs) but getting this “unknown action” error. But i do notice you have another “content_type” defined, with specifying charset=utf-8? Should not make a difference, right?. Here is the full rest_command:

 trigger_mpc_optim:
    url: "http://192.xxx.xx.x:5000/action/naive_mpc_optim"
    method: POST
    timeout: 60
    headers:
      Content-Type: "application/json"
    payload: >
      {# Step 1: Load raw forecasts #}
      {% set load_raw = state_attr('sensor.nordpool_se3_total_costs_import', 'forecast_merged') or [] %}
      {% set prod_raw = state_attr('sensor.nordpool_se3_total_revenue_export', 'forecast_merged') or [] %}
      {% set pv_raw = state_attr('sensor.solcast_pv_forecast_15min_intervals', 'forecast_merged') or [] %}
      {% set houseload_raw = state_attr('sensor.p_load_dayahead_forecast', 'forecast_merged') or [] %}

      {# Step 2: Slice by window from input_numbers #}
      {% set window_start = states('input_number.mpc_window_start') | int %}
      {% set window_end = states('input_number.mpc_window_end') | int %}
      {% set load_slice = load_raw[window_start:window_end] %}
      {% set prod_slice = prod_raw[window_start:window_end] %}
      {% set pv_slice = pv_raw[window_start:window_end] %}
      {% set houseload_slice = houseload_raw[window_start:window_end] %}

      {# Step 3: Convert slices to ISO 8601 dicts with hardcoded timezone +01:00 #}
      {% set ns_load = namespace(iso_dict={}) %}
      {% for item in load_slice %}
        {% set iso_ts = item.ts.split(' - ')[0] | replace(' ', 'T') ~ ':00+01:00' %}
        {% set ns_load.iso_dict = ns_load.iso_dict | combine({ iso_ts: item.price }) %}
      {% endfor %}

      {% set ns_prod = namespace(iso_dict={}) %}
      {% for item in prod_slice %}
        {% set iso_ts = item.ts.split(' - ')[0] | replace(' ', 'T') ~ ':00+01:00' %}
        {% set ns_prod.iso_dict = ns_prod.iso_dict | combine({ iso_ts: item.price }) %}
      {% endfor %}

      {% set ns_pv = namespace(iso_dict={}) %}
      {% for item in pv_slice %}
        {% set iso_ts = item.ts.split(' - ')[0] | replace(' ', 'T') ~ ':00+01:00' %}
        {% set ns_pv.iso_dict = ns_pv.iso_dict | combine({ iso_ts: (item.pv_estimate * 1000) | round(0, 'floor') }) %}
      {% endfor %}

      {% set ns_houseload = namespace(iso_dict={}) %}
      {% for item in houseload_slice %}
        {% set iso_ts = item.ts.split(' - ')[0] | replace(' ', 'T') ~ ':00+01:00' %}
        {% set ns_houseload.iso_dict = ns_houseload.iso_dict | combine({ iso_ts: item.load }) %}
      {% endfor %}

      {# Step 4: Output full MPC payload #}
      {
        "prediction_horizon": {{ states('input_number.mpc_prediction_horizon') | int }},
        "pv_power_forecast": {{ ns_pv.iso_dict | tojson }},
        "load_power_forecast": {{ ns_houseload.iso_dict | tojson }},
        "load_cost_forecast": {{ ns_load.iso_dict | tojson }},
        "prod_price_forecast": {{ ns_prod.iso_dict | tojson }},
        "soc_init": {{ states('sensor.solaredge_b1_state_of_energy') | float / 100 }},
        "soc_final": 0.3,
        "number_of_deferrable_loads": 1,
        "nominal_power_of_deferrable_loads": 5000,
        "operating_hours_of_each_deferrable_load": [{{ (states('input_number.mpc_prediction_horizon') | float / 4) | round(0) | int }}],
        "start_timesteps_of_each_deferrable_load": [0],
        "end_timesteps_of_each_deferrable_load": [0],
        "battery_minimum_state_of_charge": 0.2,
        "battery_maximum_state_of_charge": 0.9,
        "publish_prefix": "mpc_"
      }

The EMHASS logs (cutting out some of the parameter data to short things down)

[2025-12-09 00:24:03 +0100] [23] [INFO]  >> Obtaining params: 
[2025-12-09 00:24:03 +0100] [23] [INFO] Passed runtime parameters: {'prediction_horizon': 94

'pv_power_forecast': {'2025-12-09T01:00:00+01:00': 0, '2025-12-09T01:30:00+01:00': 0, '2025-12-09T02:00:00+01:00': 0, '2025-12-09T02:30:00+01:00': 0, '2025-12-09T03:00:00+01:00': 0, '2025-12-09T03:30:00+01:00': 0, '2025-12-09T04:00:00+01:00': 0, '2025-12-09T04:30:00+01:00': 0, '2025-12-09T05:00:00+01:00': 0, '2025-12-09T05:30:00+01:00': 0, '2025-12-09T06:00:00+01:00': 0, '2025-12-09T06:30:00+01:00': 0, '2025-12-09T07:00:00+01:00': 0, '2025-12-09T07:30:00+01:00': 0, '2025-12-09T08:00:00+01:00': 0, '2025-12-09T08:30:00+01:00': 8, '2025-12-09T09:00:00+01:00': 79, '2025-12-09T09:30:00+01:00': 159, '2025-12-09T10:00:00+01:00': 199, '2025-12-09T10:30:00+01:00': 173, '2025-12-09T11:00:00+01:00': 186, '2025-12-09T11:30:00+01:00': 255, '2025-12-09T12:00:00+01:00': 285, '2025-12-09T12:30:00+01:00': 241, '2025-12-09T13:00:00+01:00': 195, '2025-12-09T13:30:00+01:00': 146, '2025-12-09T14:00:00+01:00': 88, '2025-12-09T14:30:00+01:00': 35, 
 'load_power_forecast': {'2025-12-09T00:45:00+01:00': 9099.44, '2025-12-09T01:00:00+01:00': 9514.27, '2025-12-09T01:15:00+01:00': 10016.26, '2025-12-09T01:30:00+01:00': 10202.25, '2025-12-09T01:45:00+01:00': 9237.48, '2025-12-09T02:00:00+01:00': 8253.25, '2025-12-09T02:15:00+01:00': 8242.67, '2025-12-09T02:30:00+01:00': 7905.42, '2025-12-09T02:45:00+01:00': 9114.31, '2025-12-09T03:00:00+01:00': 7206.8, '2025-12-09T03:15:00+01:00': 7612.4, '2025-12-09T03:30:00+01:00': 8018.0, '2025-12-09T03:45:00+01:00': 8423.6, 
'load_cost_forecast': {'2025-12-09T00:30:00+01:00': 1.57, '2025-12-09T00:45:00+01:00': 1.52, '2025-12-09T01:00:00+01:00': 1.58, '2025-12-09T01:15:00+01:00': 1.58, '2025-12-09T01:30:00+01:00': 1.59, '2025-12-09T01:45:00+01:00': 1.59, '2025-12-09T02:00:00+01:00': 1.3, '2025-12-09T02:15:00+01:00': 1.3, 
'prod_price_forecast': {'2025-12-09T00:30:00+01:00': 1.11, '2025-12-09T00:45:00+01:00': 1.07, '2025-12-09T01:00:00+01:00': 1.12, '2025-12-09T01:15:00+01:00': 1.12, '2025-12-09T01:30:00+01:00': 1.13, '2025-12-09T01:45:00+01:00': 1.12, '2025-12-09T02:00:00+01:00': 0.89, '2025-12-09T02:15:00+01:00': 0.9, 
'soc_init': 65.5555572509766, 'soc_final': 0.3, 'number_of_deferrable_loads': 1, 'nominal_power_of_deferrable_loads': 5000, 'operating_hours_of_each_deferrable_load': [24], 'start_timesteps_of_each_deferrable_load': [0], 'end_timesteps_of_each_deferrable_load': [0], 'battery_minimum_state_of_charge': 0.2, 'battery_maximum_state_of_charge': 0.9, 'publish_prefix': 'mpc_'}
[2025-12-09 00:24:03 +0100] [23] [INFO]  >> Setting input data dict
[2025-12-09 00:24:03 +0100] [23] [INFO] Setting up needed data
[2025-12-09 00:24:03 +0100] [23] [DEBUG] setting`passed_data:days_to_retrieve` to 9 for fit/predict/tune
[2025-12-09 00:24:03 +0100] [23] [DEBUG] InfluxDB integration disabled, using Home Assistant API
[2025-12-09 00:24:03 +0100] [23] [ERROR] Use COIN_CMD solver name if you want to set a path for the LP solver
[2025-12-09 00:24:03 +0100] [23] [DEBUG] Initialized Optimization with retrieve_hass_conf: {'optimization_time_step': Timedelta('0 days 00:15:00'), 'historic_days_to_retrieve': 2, 'sensor_power_photovoltaics': 'sensor.solar_panel_production_w', 'sensor_power_photovoltaics_forecast': 'sensor.solcast_pv_forecast_power_now', 'sensor_power_load_no_var_loads': 'sensor.power_myhouse_load_no_var_loads', 'load_negative': False, 'set_zero_min': True, 'sensor_replace_zero': ['sensor.solar_panel_production_w', 'sensor.solar_house_consumption_w'], 'sensor_linear_interp': ['', ''], 'use_influxdb': False, 'influxdb_host': 'localhost', 'influxdb_port': 8086, 'influxdb_username': '', 'influxdb_password': '', 'influxdb_database': 'homeassistant', 'influxdb_measurement': 'W', 'influxdb_retention_policy': 'autogen', 'influxdb_use_ssl': False, 'influxdb_verify_ssl': False, 'method_ts_round': 'first', 'continual_publish': False, 'hass_url': 'http://supervisor/core/api', 'long_lived_token': 'b28770cf6cbe1778101e98e6c4fe925f803e85a17c9ca022cfe96040c207ac552b554c7f6ecf0543f65b452d035d7981de6ddb0b8b6b08b5', 'time_zone': <DstTzInfo 'Europe/Stockholm' LMT+0:53:00 STD>, 'Latitude': 57.85885, 'Longitude': 14.305337, 'Altitude': 16}
[2025-12-09 00:24:03 +0100] [23] [DEBUG] Optimization configuration: {'costfun': 'profit', 'logging_level': 'DEBUG', 'set_use_pv': True, 'set_use_adjusted_pv': False, 'adjusted_pv_regression_model': 'LassoRegression', 'adjusted_pv_solar_elevation_threshold': 10, 'set_use_battery': True, 'number_of_deferrable_loads': 1, 'nominal_power_of_deferrable_loads': 5000, 'minimum_power_of_deferrable_loads': [0], 'operating_hours_of_each_deferrable_load': [24], 'treat_deferrable_load_as_semi_cont': [False], 'set_deferrable_load_single_constant': [False], 'set_deferrable_startup_penalty': [1], 'delta_forecast_daily': Timedelta('1 days 00:00:00'), 'load_forecast_method': 'list', 'load_cost_forecast_method': 'list', 'load_peak_hours_cost': 0.1907, 'load_offpeak_hours_cost': 0.1419, 'production_price_forecast_method': 'list', 'photovoltaic_production_sell_price': 0.1419, 'set_total_pv_sell': False, 'lp_solver': 'GLPK_CMD', 'lp_solver_path': '', 'lp_solver_timeout': 45, 'num_threads': 0, 'set_nocharge_from_grid': False, 'set_nodischarge_to_grid': False, 'set_battery_dynamic': True, 'battery_dynamic_max': 0.9, 'battery_dynamic_min': -0.9, 'weight_battery_discharge': 0, 'weight_battery_charge': 0, 'weather_forecast_method': 'list', 'open_meteo_cache_max_age': 60, 'start_timesteps_of_each_deferrable_load': [0], 'end_timesteps_of_each_deferrable_load': [0], 'load_peak_hour_periods': {'period_hp_1': [{'start': '02:54'}, {'end': '15:24'}]}}
[2025-12-09 00:24:03 +0100] [23] [DEBUG] Plant configuration: {'maximum_power_from_grid': 9000, 'maximum_power_to_grid': 3000, 'pv_module_model': ['Trina_Solar_TSM_490DE18M_II_'], 'pv_inverter_model': ['SolarEdge_Technologies_Ltd___SE10KUS__480V_'], 'surface_tilt': [30], 'surface_azimuth': [205], 'modules_per_string': [8], 'strings_per_inverter': [2], 'inverter_is_hybrid': True, 'inverter_ac_output_max': 5000, 'inverter_ac_input_max': 3300, 'inverter_efficiency_dc_ac': 1, 'inverter_efficiency_ac_dc': 1, 'compute_curtailment': False, 'battery_discharge_power_max': 3300, 'battery_charge_power_max': 3300, 'battery_discharge_efficiency': 0.9, 'battery_charge_efficiency': 0.95, 'battery_nominal_energy_capacity': 5000, 'battery_minimum_state_of_charge': 0.2, 'battery_maximum_state_of_charge': 0.9, 'battery_target_state_of_charge': 0.3}
[2025-12-09 00:24:03 +0100] [23] [DEBUG] Solver configuration: lp_solver=GLPK_CMD, lp_solver_path=
[2025-12-09 00:24:03 +0100] [23] [DEBUG] Number of threads: 4
[2025-12-09 00:24:03 +0100] [23] [ERROR] The passed action argument and hence the set_type parameter for setup is not valid
[2025-12-09 00:24:03 +0100] [23] [ERROR] ERROR: passed action is not valid

To me it looks like the action “naive_mpc_optim” is not accepted as a valid action! I wonder if some (wrong?) parameters in the payload could “block” the action from validation??

I am not totally sure, but could you add squared brackets to the “nominal_power_of_deferrable_loads” like this [5000].

Tried the brackets around 5000. No difference. But see that the load_power_forecast atcually starts at 00:45, pv_power forecast at 01:00 and load_cost_forecast and prod_price_forecast at 00:30. So something fishy here. Will look into that!