• Sympy
  • Registratie: December 2025
  • Laatst online: 30-12-2025
Goedemiddag allemaal,

Al vooraf, bedankt voor alle informatie en de mooie tools, ik krijg alleen nog weinig output, probleem;

Ik krijg na configuratie geen handeling vanuit de tool. Hij laadt een beetje in de ochtend en handelt vervolgens de hele dag niet, terwijl er wel winst valt te behalen vanuit de batterij en hiermee te verkopen en te laden in de rustige periode, ook zit er nog lading in.

Dashboard:
Afbeeldingslocatie: https://tweakers.net/i/6w60fz-kkN1m6w5d0-CSDL39fxM=/800x/filters:strip_exif()/f/image/BlBQC4NsqCxEngwBJj6vWeW3.png?f=fotoalbum_large

code;
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
{
  "homeassistant": { },
  "database ha": {
    "engine": "sqlite",
    "database": "home-assistant_v2.db",
    "db_path": "/homeassistant"
  },
  "database da": {
    "engine": "sqlite",
    "db_path": "../data"
  },
  "meteoserver-key": "!secret meteoserver-key",
  "prices": {
    "source day ahead": "tibber",
    "energy taxes consumption": {
      "2025-01-01": 0.10154
    },
    "energy taxes production": {
      "2025-01-01": 0.10154
    },
    "cost supplier consumption": {
      "2025-01-01": 0.01653
    },
    "cost supplier production": {
      "2025-01-01": 0.01653
    },
    "vat consumption": {
      "2025-01-01": 21
    },
    "vat production": {
      "2025-01-01": 21
    },
   "last invoice": "2025-09-01",
    "tax refund": "True"
  },
  "logging level" : "info",
  "use_calc_baseload": "False",
  "baseload calc periode": 56,
  "baseload": [
    0.14,
    0.38,
    0.26,
    0.42,
    0.25,
    0.19,
    0.13,
    0.25,
    0.33,
    0.26,
    0.31,
    0.32,
    0.41,
    0.23,
    0.26,
    0.21,
    0.61,
    1.54,
    1.26,
    0.46,
    0.42,
    0.49,
    0.48,
    0.36
  ],
  "graphical backend": "",
  "graphics": {
    "style": "Solarize_Light2",
    "show" : "true",
    "battery balance": "True",
    "prices consumption": "True",
    "prices production": "True",
    "prices spot": "True",
    "average consumption": "True"
  },
  "strategy": "minimize cost",
  "notifications": {
  },
  "grid": {
    "max_power": 17
  },
  "history": {
    "save days": 7
  },
  "dashboard": {
    "port": 5000
  },
  "boiler": {
    "boiler present": "False",
    "entity actual temp.": "sensor.boiler_gemeten",
    "entity setpoint": "sensor.boiler_ingesteld",
    "entity hysterese": "sensor.hysterese_hot_water",
    "cop": 2.9,
    "cooling rate": 0.4,
    "volume": 180,
    "heating allowed below": 44,
    "elec. power": 1500,
    "activate service": "press",
    "activate entity": "input_button.hw_trigger"
  },
  "heating": {
    "heater present": "False",
    "degree days factor": 3.6,
    "stages": [
      {
        "max_power": 225,
        "cop": 7.1
      },
      {
        "max_power": 300,
        "cop": 7.0
      },
      {
        "max_power": 400,
        "cop": 6.5
      },
      {
        "max_power": 500,
        "cop": 6.0
      },
      {
        "max_power": 600,
        "cop": 5.5
      },
      {
        "max_power": 750,
        "cop": 5.0
      },
      {
        "max_power": 1000,
        "cop": 4.5
      },
      {
        "max_power": 1250,
        "cop": 4.0
      }
    ],
    "entity adjust heating curve": "input_number.stooklijn_verschuiving_day_ahead",
    "adjustment factor": 0.04
  },
  "battery": [
    {
      "name": "Goodwe",
      "entity actual level": "sensor.battery_state_of_charge",
      "capacity": 33,
      "upper limit": 90,
      "lower limit": 20,
      "optimal lower level": 20,
      "entity min soc end opt": "input_number.min_soc_einde_opt",
      "entity max soc end opt": "input_number.max_soc_einde_opt",
      "dc_to_bat efficiency": 0.98,
      "bat_to_dc efficiency": 0.98,
      "minimum power": 250,
      "charge stages": [
{ "power": 0.0, "efficiency": 1 },
    { "power": 200, "efficiency": 0.865 },
    { "power": 500, "efficiency": 0.925 },
    { "power": 750, "efficiency": 0.940 },
    { "power": 1000, "efficiency": 0.952 },
    { "power": 1500, "efficiency": 0.960 },
    { "power": 2000, "efficiency": 0.965 },
    { "power": 2500, "efficiency": 0.968 },
    { "power": 3000, "efficiency": 0.970 },
    { "power": 3500, "efficiency": 0.972 },
    { "power": 4000, "efficiency": 0.974 },
    { "power": 4500, "efficiency": 0.975 },
    { "power": 5000, "efficiency": 0.976 },
    { "power": 5500, "efficiency": 0.976 },
    { "power": 6000, "efficiency": 0.975 },
    { "power": 6500, "efficiency": 0.974 },
    { "power": 7000, "efficiency": 0.973 },
    { "power": 7500, "efficiency": 0.972 },
    { "power": 8000, "efficiency": 0.971 },
    { "power": 8500, "efficiency": 0.970 },
    { "power": 9000, "efficiency": 0.968 },
    { "power": 9500, "efficiency": 0.965 },
    { "power": 10000, "efficiency": 0.960 }
  ],
  "discharge stages": [
    { "power": 0.0, "efficiency": 1 },
    { "power": 200, "efficiency": 0.880 },
    { "power": 500, "efficiency": 0.935 },
    { "power": 750, "efficiency": 0.948 },
    { "power": 1000, "efficiency": 0.958 },
    { "power": 1500, "efficiency": 0.965 },
    { "power": 2000, "efficiency": 0.968 },
    { "power": 2500, "efficiency": 0.971 },
    { "power": 3000, "efficiency": 0.973 },
    { "power": 3500, "efficiency": 0.974 },
    { "power": 4000, "efficiency": 0.975 },
    { "power": 4500, "efficiency": 0.976 },
    { "power": 5000, "efficiency": 0.976 },
    { "power": 5500, "efficiency": 0.976 },
    { "power": 6000, "efficiency": 0.975 },
    { "power": 6500, "efficiency": 0.974 },
    { "power": 7000, "efficiency": 0.973 },
    { "power": 7500, "efficiency": 0.972 },
    { "power": 8000, "efficiency": 0.971 },
    { "power": 8500, "efficiency": 0.970 },
    { "power": 9000, "efficiency": 0.969 },
    { "power": 9500, "efficiency": 0.967 },
    { "power": 10000, "efficiency": 0.965 } 
       ],
      "cycle cost": 0.01,
      "solar": []
  }
],
    "solar": [
    { "name" : "Dakpanelen",
        "tilt": 40,
        "orientation": 10,
        "capacity": 6.4,
        "yield": 0.017
    }
  ],
  "electric vehicle": [ ],
  "machines" : [ ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.tibber_pulse_brederolaan_30_accumulated_consumption"
   
    ],
    "entities grid production": [
      "sensor.tibber_pulse_brederolaan_30_accumulated_production"
    ],
    "entities solar production ac": [
      "sensor.solaredge_zonnepanelen_current_power"
    ],
    "entities solar production dc": [],
    "entities ev consumption" : ["sensor.laadpunt_total_energy"],
    "entities wp consumption" : [],
    "entities boiler consumption": [],
    "entities battery consumption": ["sensor.ess_grid_consumption"],
    "entities battery production": ["sensor.ess_grid_production"]
  },
  "scheduler": {
    "active": "true",
    "0430": "get_meteo_data",
    "1030": "get_meteo_data",
    "1630": "get_meteo_data",
    "2230": "get_meteo_data",
    "1255": "get_day_ahead_prices",
    "1355": "get_day_ahead_prices",
    "1455": "get_day_ahead_prices",
    "1554": "get_day_ahead_prices",
    "1655": "get_day_ahead_prices",
    "xx00": "calc_optimum",
    "2359": "clean_data"
  }
}

  • Dapdodo
  • Registratie: Mei 2019
  • Laatst online: 21:51
@Sympy Wat heb je in HA opgenomen aan regels om je accu aan te sturen?
DAO doet uit zichzelf niets, zet wat variabelen, waarvoor je zelf een automation moet maken.

[ Voor 3% gewijzigd door Dapdodo op 24-12-2025 13:52 ]


  • Sympy
  • Registratie: December 2025
  • Laatst online: 30-12-2025
@Dapdodo nog niks, ik bestuur de accu nu via de Goodwe sems app. Ik kijk nu elke avond naar de tijden van de vorige dag en zet dan in de app van de Goodwe sems de tijden van laden en ontladen.

Hoe zou ik dit moeten doen in HA? Kan hier niet 123 documentatie voor vinden.
bartzzz schreef op woensdag 24 december 2025 @ 09:42:
Hier een 2-tal vragen:
1. Waarom blijft in de grafiek de SoC voor de komende 24 gelijk, terwijl hij toch weet wat mijn baseload is en deze dus zou moeten afnemen.

[Afbeelding]

2. Wat kan de rede zijn dat ik bij Bereken de baseloads negatieve waardes zie.
Ik heb alle entities onder report nagekeken en deze laten in HA allemaal een stijgende lijn zien.
[Afbeelding]
Wat betreft de negatieve getallen:
Je zou eens een balans-rapport per maand kunnen opvragen en dan kijken waar en hoe de negatieve getallen ontstaan:
Afbeeldingslocatie: https://tweakers.net/i/KhheOtiqGUjFqIv2xjB6R-JJYzc=/800x/filters:strip_exif()/f/image/L46TaLu1x5m6lWp6GdGPbIfF.png?f=fotoalbum_large
Je kunt eventueel ook inzoomen op gisteren of vandaag.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer

@Noshi
In de logging van DAO staat ergens een tabel waarin de winst-berekening wordt verantwoord.
Zoiets als deze:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2025-12-24 15:45:08 info: Consumption              46.02 (kWh)
2025-12-24 15:45:08 info: Cost consumption         10.25 (€)
2025-12-24 15:45:08 info: Tariff consumption        0.223 (€/kWh)
2025-12-24 15:45:08 info: Production                1.70 (kWh)
2025-12-24 15:45:08 info: Profit production        -0.44 (€)
2025-12-24 15:45:08 info: Tariff production         0.260 (€/kWh)

2025-12-24 15:45:08 info: 
Calculation profit after optimize in €
Cost before optimize             10.04
Cost consumption     10.25
Cycle cost            0.16
Penalty cost          0.00
Battery storage       0.03
Boiler storage        0.08
Profit production    -0.44
Total                10.08
Cost after optimize              10.08
Profit:                          -0.03

Hoe ziet die er bij jou uit?

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • djoenez
  • Registratie: April 2007
  • Laatst online: 21:11
Is het mogelijk om op een of andere manier de grafieken zoals je die ziet in de add-on ook in HA te krijgen via APEX? (dus alle in en uit stromen optimized?). Dit zodat ik kan zien dat de auto echt gaat opladen zonder dat ik dat eerst buiten de add-on instel, op de calculate knop duw. en dan moet checken in de add on of het ook echt is ingecalculeerd is (ik zie ook maar 1 EV opladen, is het mogelijk dit op te splitsen in EV 1 en EV 2 opladen als er 2 EVs zijn gedefinieerd?)

Verder, ik zag efficiencies van 105% bij mijn overzicht staan (maar niks doet met de batterij?), ik snap niet helemaal waar hij dat vandaan haalt. zie hieronder:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
2025-12-24 19:15:03 info: In- en uitgaande energie per kwartier batterij Deye
   uur   ac->    eff   ->dc pv->dc   dc->    eff  ->bat  o_eff    SoC
          kWh      %    kWh    kWh    kWh      %    kWh      %      %
 19:15   0.00 106.95   0.00   0.00   0.00 101.52   0.00 108.58  14.00
 19:30   0.00 106.95   0.00   0.00   0.00 101.52   0.00 108.58  14.00
 19:45   0.00 105.82   0.00   0.00   0.00 101.52   0.00 107.43  14.00
 20:00   0.00 105.82   0.00   0.00   0.00 101.52   0.00 107.43  14.00
 20:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 20:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 20:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 21:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 21:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 21:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 21:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 22:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 22:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 22:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 22:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 23:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 23:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 23:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 23:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 00:00   0.00 105.82   0.00   0.00   0.00  98.50   0.00 104.23  14.00
 00:15   0.00 105.82   0.00   0.00   0.00  98.50   0.00 104.23  14.00
 00:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 00:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 01:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 01:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 01:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 01:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 02:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 02:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 02:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 02:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 03:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 03:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 03:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 03:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 04:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 04:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 04:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 04:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 05:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 05:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 05:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 05:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 06:00   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  22.77
 06:15   0.00     --   0.00   0.00   0.00     --   0.00     --  22.77
 06:30   0.00     --   0.00   0.00   0.00     --   0.00     --  22.77
 06:45   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  31.55
 07:00   2.42  94.64   2.29   0.00   2.29  98.50   2.25  93.22  38.59
 07:15   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 07:30   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 07:45   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 08:00   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 08:15  -0.00  94.50  -0.00   0.00  -0.00 101.52  -0.00  95.94  38.59
 08:30   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 08:45   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 09:00   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 09:15   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 09:30  -0.00  94.50  -0.00   0.00  -0.00 101.52  -0.00  95.94  38.59
 09:45   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 10:00   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 10:15   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 10:30   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 10:45   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 11:00   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 11:15   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  47.36
 11:30   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  56.14
 11:45   0.00     --   0.00   0.00   0.00     --   0.00     --  56.14
 12:00   0.00     --   0.00   0.00   0.00     --   0.00     --  56.14
 12:15   0.00     --   0.00   0.00   0.00     --   0.00     --  56.14
 12:30   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  64.91
 12:45   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  73.68
 13:00   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  82.45
 13:15   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  91.23
 13:30   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58 100.00
 13:45   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 14:00   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 14:15   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 14:30  -0.00  94.50  -0.00   0.00  -0.00 101.52  -0.00  95.94 100.00
 14:45   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 15:00   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 15:15   0.00 106.95   0.00   0.00   0.00  98.50   0.00 105.35 100.00
 15:30   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 15:45   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 16:00   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 16:15   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 16:30   0.00 105.82   0.00   0.00   0.00 101.52   0.00 107.43 100.00
 16:45  -2.25  94.50  -2.38   0.00  -2.38  98.50  -2.42  93.08  92.45
 17:00   0.00     --   0.00   0.00   0.00     --   0.00     --  92.45
 17:15   0.00     --   0.00   0.00   0.00     --   0.00     --  92.45
 17:30  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  82.93
 17:45  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  73.41
 18:00  -2.46  94.50  -2.61   0.00  -2.61  98.50  -2.65  93.08  65.14
 18:15  -2.25  94.50  -2.38   0.00  -2.38  98.50  -2.42  93.08  57.59
 18:30   0.00 105.82   0.00   0.00   0.00 101.52   0.00 107.43  57.59
 18:45   0.00     --   0.00   0.00   0.00     --   0.00     --  57.59
 19:00   0.00     --   0.00   0.00   0.00     --   0.00     --  57.59
 19:15   0.00     --   0.00   0.00   0.00     --   0.00     --  57.59
 19:30   0.00     --   0.00   0.00   0.00     --   0.00     --  57.59
 19:45   0.00     --   0.00   0.00   0.00     --   0.00     --  57.59
 20:00  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  48.07
 20:15  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  38.55
 20:30   0.00     --   0.00   0.00   0.00     --   0.00     --  38.55
 20:45   0.00     --   0.00   0.00   0.00     --   0.00     --  38.55
 21:00   0.00     --   0.00   0.00   0.00     --   0.00     --  38.55
 21:15  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  29.04
 21:30   0.00     --   0.00   0.00   0.00     --   0.00     --  29.04
 21:45   0.00     --   0.00   0.00   0.00     --   0.00     --  29.04
 22:00   0.00     --   0.00   0.00   0.00     --   0.00     --  29.04
 22:15  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  19.52
 22:30  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  10.00
 22:45   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
 23:00   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
 23:15   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
 23:30   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
 23:45   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
Totaal   2.61     --  -0.43   0.00  -0.43     --  -1.28     --
En mijn config:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
{
  "homeassistant": { },
  "database ha": {
    "engine": "sqlite",
    "database": "home-assistant_v2.db",
    "db_path": "/homeassistant"
  },
  "database da": {
    "engine": "sqlite",
    "db_path": "../data"
  },
  "meteoserver-key": "!secret meteoserver-key",
  "prices": {
    "source day ahead": "nordpool",
    "regular high": 0.50,
    "regular low": 0.40,
    "switch to low": 23,
    "energy taxes consumption": {
      "2022-01-01": 0.06729,
      "2023-01-01": 0.12599,
      "2024-01-01": 0.10880,
      "2025-01-01": 0.10154
    },
    "energy taxes production": {
      "2022-01-01": 0.06729,
      "2023-01-01": 0.12599,
      "2024-01-01": 0.10880,
      "2025-01-01": 0.10154
    },
    "cost supplier consumption": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2024-08-01": 0.020496
    },
    "cost supplier production": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2024-08-01": 0.020496
    },
    "vat consumption": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
    "vat production": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
   "last invoice": "2025-09-01",
    "tax refund": "True"
  },
  "logging level" : "info",
  "interval": "15min",
  "use_calc_baseload": "False",
  "baseload calc periode": 56,
  "baseload": [
    0.14,
    0.38,
    0.26,
    0.42,
    0.15,
    0.12,
    0.13,
    0.15,
    0.23,
    0.26,
    0.31,
    0.32,
    0.31,
    0.23,
    0.26,
    0.21,
    0.21,
    0.54,
    0.26,
    0.26,
    0.22,
    0.19,
    0.18,
    0.16
  ],
  "graphical backend": "",
  "graphics": {
    "style": "Solarize_Light2",
    "show" : "true",
    "battery balance": "True",
    "prices consumption": "True",
    "prices production": "False",
    "prices spot": "True",
    "average consumption": "True"
  },
  "strategy": "minimize cost",
  "notifications": {
     "notification entity": "input_text.dao_status",
     "opstarten": "True",
     "berekening": "True",
     "last activity entity": "input_datetime.dao_last_activity"
  },


  "grid": {
    "max_power": 17
  },
  "history": {
    "save days": 7
  },
  "dashboard": {
    "port": 5000
  },
  "boiler": {
    "boiler present": "False",
    "entity actual temp.": "sensor.boiler_gemeten",
    "entity setpoint": "sensor.boiler_ingesteld",
    "entity hysterese": "sensor.hysterese_hot_water",
    "cop": 2.9,
    "cooling rate": 0.4,
    "volume": 180,
    "heating allowed below": 44,
    "elec. power": 1500,
    "activate service": "press",
    "activate entity": "input_button.hw_trigger"
  },
  "heating": {
    "heater present": "False",
    "degree days factor": 3.6,
    "stages": [
      {
        "max_power": 225,
        "cop": 7.1
      },
      {
        "max_power": 300,
        "cop": 7.0
      },
      {
        "max_power": 400,
        "cop": 6.5
      },
      {
        "max_power": 500,
        "cop": 6.0
      },
      {
        "max_power": 600,
        "cop": 5.5
      },
      {
        "max_power": 750,
        "cop": 5.0
      },
      {
        "max_power": 1000,
        "cop": 4.5
      },
      {
        "max_power": 1250,
        "cop": 4.0
      }
    ],
    "entity adjust heating curve": "input_number.stooklijn_verschuiving_day_ahead",
    "adjustment factor": 0.04
  },
"battery": [
    {
      "name": "Deye",
      "entity actual level": "sensor.inverter_battery",
      "capacity": 32,
      "upper limit": 100,
      "lower limit": 10,
      "optimal lower level": 10,
      "charge stages": [
        {
          "power": 0,
          "efficiency": 1
        },
        {
          "power": 500,
          "efficiency": 0.78
        },
        {
          "power": 1500,
          "efficiency": 0.80
        },
        {
          "power": 3000,
          "efficiency": 0.90
        },
        {
          "power": 4500,
          "efficiency": 0.92
        },

        {
          "power": 6000,
          "efficiency": 0.93
        },
        {
          "power": 7500,
          "efficiency": 0.94
        },
        {
          "power": 9000,
          "efficiency": 0.945
        },

        {
          "power": 12000,
          "efficiency": 0.95
        }
      ],
"discharge stages": [
  { "power": 0,     "efficiency": 1 },
  { "power": 1500,  "efficiency": 0.82 },
  { "power": 3000,  "efficiency": 0.90 },
  { "power": 4500,  "efficiency": 0.91 },
  { "power": 6000,  "efficiency": 0.92 },
  { "power": 7500,  "efficiency": 0.93 },
  { "power": 9000,  "efficiency": 0.935 },
  { "power": 12000, "efficiency": 0.945 }
],
      "minimum power": 1000,
      "dc_to_bat efficiency": 0.985,
      "bat_to_dc efficiency": 0.985,
      "cycle cost": 0.006,
      "entity set power feedin": "input_number.dao_set_power_feedin",
      "entity set operating mode": "input_select.dao_set_operation_mode",
      "entity stop inverter": "input_datetime.dao_stop_inverter",
      "entity balance switch": "input_boolean.dao_balance_switch",
      "entity from battery": "input_number.dao_from_battery",
      "entity from pv": "input_number.dao_from_pv",
      "entity from ac": "input_number.dao_from_ac",
      "entity calculated soc": "input_number.dao_calculated_soc",
      "solar": []
    }
  ],
  "solar": [
    {
      "name": "oost",
      "tilt": 45,
      "orientation": -80,
      "capacity": 3.6,
      "yield": 0.0091,
      "entity pv switch": "input_boolean.dao_panelen_aan_uit"
    },
    {
      "name": "west",
      "tilt": 45,
      "orientation": 100,
      "capacity": 4.3,
      "yield": 0.010,
      "entity pv switch": "input_boolean.dao_panelen_aan_uit"
    },
    {
      "name": "south",
      "tilt": 20,
      "orientation": 10,
      "capacity": 0.8,
      "yield": 0.010,
      "entity pv switch": "input_boolean.dao_panelen_aan_uit"
    } ],
  "electric vehicle": [
{
      "name": "Kia EV6",
      "capacity": 77,
      "entity position": "input_text.home_away_status",
      "entity max amperage": "input_number.dao_kia_max_amperage",
      "charge three phase": "True",
      "charge stages" : [
        {"ampere":  0, "efficiency" :  1},
        {"ampere": 6, "efficiency" :  0.83},
        {"ampere": 8, "efficiency" :  0.87},
        {"ampere": 10, "efficiency" :  0.9},
        {"ampere": 12, "efficiency" :  0.93},
        {"ampere": 14, "efficiency" :  0.95},
        {"ampere": 16, "efficiency" :  0.97}
      ],
      "entity actual level": "sensor.ev6_ev_battery_level",
      "entity plugged in": "input_boolean.kia_connected",
      "charge scheduler": {
        "entity set level": "input_number.dao_kia_max_battery_percentage",
        "entity ready datetime": "input_datetime.dao_kia_charging_ready"
      },
      "charge switch": "input_boolean.dao_kia_charging",
      "entity set charging ampere" : "input_number.dao_kia_amperage"
    },{
      "name": "Skoda CitigoEV",
      "capacity": 32,
      "entity position": "input_text.home_away_status",
      "entity max amperage": "input_number.dao_skoda_max_amperage",
      "charge three phase": "False",
      "charge stages" : [
        {"ampere":  0, "efficiency" :  1},
        {"ampere": 6, "efficiency" :  0.83},
        {"ampere": 8, "efficiency" :  0.87},
        {"ampere": 10, "efficiency" :  0.9},
        {"ampere": 12, "efficiency" :  0.93},
        {"ampere": 14, "efficiency" :  0.95},
        {"ampere": 16, "efficiency" :  0.97}
      ],
      "entity actual level": "sensor.skoda_citigoe_iv_battery_percentage",
      "entity plugged in": "input_boolean.skoda_connected",
      "charge scheduler": {
        "entity set level": "input_number.dao_skoda_max_battery_percentage",
        "entity ready datetime": "input_datetime.dao_skoda_charging_ready"
      },
      "charge switch": "input_boolean.dao_skoda_charging",
      "entity set charging ampere" : "input_number.dao_skoda_amperage"
    }


 ],


  "machines" : [ ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.power_consumption"
    ],
    "entities grid production": [
      "sensor.power_production"
    ],
    "entities solar production ac": [
      "sensor.pv_production"
    ],
    "entities solar production dc": [],
    "entities ev consumption" : ["sensor.laadpunt_total_energy"],
    "entities wp consumption" : [],
    "entities boiler consumption": [],
    "entities machine consumption": [],
    "entities battery consumption": ["sensor.inverter_total_battery_charge"],
    "entities battery production": ["sensor.inverter_total_battery_discharge"]
  },
  "scheduler": {
    "active": "true",
    "0430": "get_meteo_data",
    "1030": "get_meteo_data",
    "1630": "get_meteo_data",
    "2230": "get_meteo_data",
    "1255": "get_day_ahead_prices",
    "1355": "get_day_ahead_prices",
    "1455": "get_day_ahead_prices",
    "1554": "get_day_ahead_prices",
    "1655": "get_day_ahead_prices",
    "xx00": "calc_optimum",
    "xx15": "calc_optimum",
    "xx30": "calc_optimum",
    "xx45": "calc_optimum",
    "2359": "clean_data"
  }
}

  • djoenez
  • Registratie: April 2007
  • Laatst online: 21:11
Ben ook nog even bezig geweest qua efficiency van de DEYE 12kW inverter, zie hieronder:

Afbeeldingslocatie: https://tweakers.net/i/pUcZ1UXt_RnhCrWk6JWQwthXmGs=/800x/filters:strip_exif()/f/image/XRO90azRQNahRFlAeRMXrOyK.png?f=fotoalbum_large

Dit gaat dus om de zelf gerapporteerde opgenomen vermogen en de zelf gerapporteerde losses, datapunten zijn van af gelopen 3 weken.
Is dit herkenbaar?

Als iemand geinteresseerd is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
"battery": [
    {
      "name": "Deye",
      "entity actual level": "sensor.inverter_battery",
      "capacity": 32,
      "upper limit": 100,
      "lower limit": 10,
      "optimal lower level": 10,
      "charge stages": [
  { "power": 0,     "efficiency": 1 },
  { "power": 100,  "efficiency": 0.62 },
  { "power": 500,  "efficiency": 0.87 },
  { "power": 1500,  "efficiency": 0.94 },
  { "power": 3000,  "efficiency": 0.95 },
  { "power": 5000,  "efficiency": 0.96 },
  { "power": 7500,  "efficiency": 0.964 },
  { "power": 10000,  "efficiency": 0.966 },
  { "power": 12000, "efficiency": 0.966 }
],
"discharge stages": [
  { "power": 0,     "efficiency": 1 },
  { "power": 100,  "efficiency": 0.62 },
  { "power": 500,  "efficiency": 0.78 },
  { "power": 1000,  "efficiency": 0.87 },
  { "power": 1500,  "efficiency": 0.9 },
  { "power": 3000,  "efficiency": 0.923 },
  { "power": 4500,  "efficiency": 0.926 },
  { "power": 6000,  "efficiency": 0.928 },
  { "power": 7500,  "efficiency": 0.93 },
  { "power": 9000,  "efficiency": 0.93 },
  { "power": 12000, "efficiency": 0.931 }
],

  • Dogooder
  • Registratie: April 2004
  • Laatst online: 23:43

Dogooder

dus...

@djoenez heel interessant van die deye efficiëntie. Hoe heb je dat gemeten en is dat inclusief of exclusief de ~120 W zelfverbruik van de Deye?

  • djoenez
  • Registratie: April 2007
  • Laatst online: 21:11
Dogooder schreef op woensdag 24 december 2025 @ 21:04:
@djoenez heel interessant van die deye efficiëntie. Hoe heb je dat gemeten en is dat inclusief of exclusief de ~120 W zelfverbruik van de Deye?
Dit zijn alleen de geraporteerde waarden van Deye, dus zelfverbruik/ Absolute (Deye import/export) *100.
djoenez schreef op woensdag 24 december 2025 @ 19:23:
Is het mogelijk om op een of andere manier de grafieken zoals je die ziet in de add-on ook in HA te krijgen via APEX? (dus alle in en uit stromen optimized?). Dit zodat ik kan zien dat de auto echt gaat opladen zonder dat ik dat eerst buiten de add-on instel, op de calculate knop duw. en dan moet checken in de add on of het ook echt is ingecalculeerd is (ik zie ook maar 1 EV opladen, is het mogelijk dit op te splitsen in EV 1 en EV 2 opladen als er 2 EVs zijn gedefinieerd?)

Verder, ik zag efficiencies van 105% bij mijn overzicht staan (maar niks doet met de batterij?), ik snap niet helemaal waar hij dat vandaan haalt. zie hieronder:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
2025-12-24 19:15:03 info: In- en uitgaande energie per kwartier batterij Deye
   uur   ac->    eff   ->dc pv->dc   dc->    eff  ->bat  o_eff    SoC
          kWh      %    kWh    kWh    kWh      %    kWh      %      %
 19:15   0.00 106.95   0.00   0.00   0.00 101.52   0.00 108.58  14.00
 19:30   0.00 106.95   0.00   0.00   0.00 101.52   0.00 108.58  14.00
 19:45   0.00 105.82   0.00   0.00   0.00 101.52   0.00 107.43  14.00
 20:00   0.00 105.82   0.00   0.00   0.00 101.52   0.00 107.43  14.00
 20:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 20:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 20:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 21:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 21:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 21:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 21:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 22:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 22:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 22:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 22:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 23:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 23:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 23:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 23:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 00:00   0.00 105.82   0.00   0.00   0.00  98.50   0.00 104.23  14.00
 00:15   0.00 105.82   0.00   0.00   0.00  98.50   0.00 104.23  14.00
 00:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 00:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 01:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 01:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 01:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 01:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 02:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 02:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 02:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 02:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 03:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 03:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 03:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 03:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 04:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 04:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 04:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 04:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 05:00   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 05:15   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 05:30   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 05:45   0.00     --   0.00   0.00   0.00     --   0.00     --  14.00
 06:00   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  22.77
 06:15   0.00     --   0.00   0.00   0.00     --   0.00     --  22.77
 06:30   0.00     --   0.00   0.00   0.00     --   0.00     --  22.77
 06:45   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  31.55
 07:00   2.42  94.64   2.29   0.00   2.29  98.50   2.25  93.22  38.59
 07:15   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 07:30   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 07:45   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 08:00   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 08:15  -0.00  94.50  -0.00   0.00  -0.00 101.52  -0.00  95.94  38.59
 08:30   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 08:45   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 09:00   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 09:15   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 09:30  -0.00  94.50  -0.00   0.00  -0.00 101.52  -0.00  95.94  38.59
 09:45   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 10:00   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 10:15   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 10:30   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 10:45   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 11:00   0.00     --   0.00   0.00   0.00     --   0.00     --  38.59
 11:15   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  47.36
 11:30   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  56.14
 11:45   0.00     --   0.00   0.00   0.00     --   0.00     --  56.14
 12:00   0.00     --   0.00   0.00   0.00     --   0.00     --  56.14
 12:15   0.00     --   0.00   0.00   0.00     --   0.00     --  56.14
 12:30   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  64.91
 12:45   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  73.68
 13:00   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  82.45
 13:15   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58  91.23
 13:30   3.00  95.00   2.85   0.00   2.85  98.50   2.81  93.58 100.00
 13:45   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 14:00   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 14:15   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 14:30  -0.00  94.50  -0.00   0.00  -0.00 101.52  -0.00  95.94 100.00
 14:45   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 15:00   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 15:15   0.00 106.95   0.00   0.00   0.00  98.50   0.00 105.35 100.00
 15:30   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 15:45   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 16:00   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 16:15   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
 16:30   0.00 105.82   0.00   0.00   0.00 101.52   0.00 107.43 100.00
 16:45  -2.25  94.50  -2.38   0.00  -2.38  98.50  -2.42  93.08  92.45
 17:00   0.00     --   0.00   0.00   0.00     --   0.00     --  92.45
 17:15   0.00     --   0.00   0.00   0.00     --   0.00     --  92.45
 17:30  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  82.93
 17:45  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  73.41
 18:00  -2.46  94.50  -2.61   0.00  -2.61  98.50  -2.65  93.08  65.14
 18:15  -2.25  94.50  -2.38   0.00  -2.38  98.50  -2.42  93.08  57.59
 18:30   0.00 105.82   0.00   0.00   0.00 101.52   0.00 107.43  57.59
 18:45   0.00     --   0.00   0.00   0.00     --   0.00     --  57.59
 19:00   0.00     --   0.00   0.00   0.00     --   0.00     --  57.59
 19:15   0.00     --   0.00   0.00   0.00     --   0.00     --  57.59
 19:30   0.00     --   0.00   0.00   0.00     --   0.00     --  57.59
 19:45   0.00     --   0.00   0.00   0.00     --   0.00     --  57.59
 20:00  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  48.07
 20:15  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  38.55
 20:30   0.00     --   0.00   0.00   0.00     --   0.00     --  38.55
 20:45   0.00     --   0.00   0.00   0.00     --   0.00     --  38.55
 21:00   0.00     --   0.00   0.00   0.00     --   0.00     --  38.55
 21:15  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  29.04
 21:30   0.00     --   0.00   0.00   0.00     --   0.00     --  29.04
 21:45   0.00     --   0.00   0.00   0.00     --   0.00     --  29.04
 22:00   0.00     --   0.00   0.00   0.00     --   0.00     --  29.04
 22:15  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  19.52
 22:30  -2.83  94.50  -3.00   0.00  -3.00  98.50  -3.05  93.08  10.00
 22:45   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
 23:00   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
 23:15   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
 23:30   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
 23:45   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
Totaal   2.61     --  -0.43   0.00  -0.43     --  -1.28     --


En mijn config:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
{
  "homeassistant": { },
  "database ha": {
    "engine": "sqlite",
    "database": "home-assistant_v2.db",
    "db_path": "/homeassistant"
  },
  "database da": {
    "engine": "sqlite",
    "db_path": "../data"
  },
  "meteoserver-key": "!secret meteoserver-key",
  "prices": {
    "source day ahead": "nordpool",
    "regular high": 0.50,
    "regular low": 0.40,
    "switch to low": 23,
    "energy taxes consumption": {
      "2022-01-01": 0.06729,
      "2023-01-01": 0.12599,
      "2024-01-01": 0.10880,
      "2025-01-01": 0.10154
    },
    "energy taxes production": {
      "2022-01-01": 0.06729,
      "2023-01-01": 0.12599,
      "2024-01-01": 0.10880,
      "2025-01-01": 0.10154
    },
    "cost supplier consumption": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2024-08-01": 0.020496
    },
    "cost supplier production": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2024-08-01": 0.020496
    },
    "vat consumption": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
    "vat production": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
   "last invoice": "2025-09-01",
    "tax refund": "True"
  },
  "logging level" : "info",
  "interval": "15min",
  "use_calc_baseload": "False",
  "baseload calc periode": 56,
  "baseload": [
    0.14,
    0.38,
    0.26,
    0.42,
    0.15,
    0.12,
    0.13,
    0.15,
    0.23,
    0.26,
    0.31,
    0.32,
    0.31,
    0.23,
    0.26,
    0.21,
    0.21,
    0.54,
    0.26,
    0.26,
    0.22,
    0.19,
    0.18,
    0.16
  ],
  "graphical backend": "",
  "graphics": {
    "style": "Solarize_Light2",
    "show" : "true",
    "battery balance": "True",
    "prices consumption": "True",
    "prices production": "False",
    "prices spot": "True",
    "average consumption": "True"
  },
  "strategy": "minimize cost",
  "notifications": {
     "notification entity": "input_text.dao_status",
     "opstarten": "True",
     "berekening": "True",
     "last activity entity": "input_datetime.dao_last_activity"
  },


  "grid": {
    "max_power": 17
  },
  "history": {
    "save days": 7
  },
  "dashboard": {
    "port": 5000
  },
  "boiler": {
    "boiler present": "False",
    "entity actual temp.": "sensor.boiler_gemeten",
    "entity setpoint": "sensor.boiler_ingesteld",
    "entity hysterese": "sensor.hysterese_hot_water",
    "cop": 2.9,
    "cooling rate": 0.4,
    "volume": 180,
    "heating allowed below": 44,
    "elec. power": 1500,
    "activate service": "press",
    "activate entity": "input_button.hw_trigger"
  },
  "heating": {
    "heater present": "False",
    "degree days factor": 3.6,
    "stages": [
      {
        "max_power": 225,
        "cop": 7.1
      },
      {
        "max_power": 300,
        "cop": 7.0
      },
      {
        "max_power": 400,
        "cop": 6.5
      },
      {
        "max_power": 500,
        "cop": 6.0
      },
      {
        "max_power": 600,
        "cop": 5.5
      },
      {
        "max_power": 750,
        "cop": 5.0
      },
      {
        "max_power": 1000,
        "cop": 4.5
      },
      {
        "max_power": 1250,
        "cop": 4.0
      }
    ],
    "entity adjust heating curve": "input_number.stooklijn_verschuiving_day_ahead",
    "adjustment factor": 0.04
  },
"battery": [
    {
      "name": "Deye",
      "entity actual level": "sensor.inverter_battery",
      "capacity": 32,
      "upper limit": 100,
      "lower limit": 10,
      "optimal lower level": 10,
      "charge stages": [
        {
          "power": 0,
          "efficiency": 1
        },
        {
          "power": 500,
          "efficiency": 0.78
        },
        {
          "power": 1500,
          "efficiency": 0.80
        },
        {
          "power": 3000,
          "efficiency": 0.90
        },
        {
          "power": 4500,
          "efficiency": 0.92
        },

        {
          "power": 6000,
          "efficiency": 0.93
        },
        {
          "power": 7500,
          "efficiency": 0.94
        },
        {
          "power": 9000,
          "efficiency": 0.945
        },

        {
          "power": 12000,
          "efficiency": 0.95
        }
      ],
"discharge stages": [
  { "power": 0,     "efficiency": 1 },
  { "power": 1500,  "efficiency": 0.82 },
  { "power": 3000,  "efficiency": 0.90 },
  { "power": 4500,  "efficiency": 0.91 },
  { "power": 6000,  "efficiency": 0.92 },
  { "power": 7500,  "efficiency": 0.93 },
  { "power": 9000,  "efficiency": 0.935 },
  { "power": 12000, "efficiency": 0.945 }
],
      "minimum power": 1000,
      "dc_to_bat efficiency": 0.985,
      "bat_to_dc efficiency": 0.985,
      "cycle cost": 0.006,
      "entity set power feedin": "input_number.dao_set_power_feedin",
      "entity set operating mode": "input_select.dao_set_operation_mode",
      "entity stop inverter": "input_datetime.dao_stop_inverter",
      "entity balance switch": "input_boolean.dao_balance_switch",
      "entity from battery": "input_number.dao_from_battery",
      "entity from pv": "input_number.dao_from_pv",
      "entity from ac": "input_number.dao_from_ac",
      "entity calculated soc": "input_number.dao_calculated_soc",
      "solar": []
    }
  ],
  "solar": [
    {
      "name": "oost",
      "tilt": 45,
      "orientation": -80,
      "capacity": 3.6,
      "yield": 0.0091,
      "entity pv switch": "input_boolean.dao_panelen_aan_uit"
    },
    {
      "name": "west",
      "tilt": 45,
      "orientation": 100,
      "capacity": 4.3,
      "yield": 0.010,
      "entity pv switch": "input_boolean.dao_panelen_aan_uit"
    },
    {
      "name": "south",
      "tilt": 20,
      "orientation": 10,
      "capacity": 0.8,
      "yield": 0.010,
      "entity pv switch": "input_boolean.dao_panelen_aan_uit"
    } ],
  "electric vehicle": [
{
      "name": "Kia EV6",
      "capacity": 77,
      "entity position": "input_text.home_away_status",
      "entity max amperage": "input_number.dao_kia_max_amperage",
      "charge three phase": "True",
      "charge stages" : [
        {"ampere":  0, "efficiency" :  1},
        {"ampere": 6, "efficiency" :  0.83},
        {"ampere": 8, "efficiency" :  0.87},
        {"ampere": 10, "efficiency" :  0.9},
        {"ampere": 12, "efficiency" :  0.93},
        {"ampere": 14, "efficiency" :  0.95},
        {"ampere": 16, "efficiency" :  0.97}
      ],
      "entity actual level": "sensor.ev6_ev_battery_level",
      "entity plugged in": "input_boolean.kia_connected",
      "charge scheduler": {
        "entity set level": "input_number.dao_kia_max_battery_percentage",
        "entity ready datetime": "input_datetime.dao_kia_charging_ready"
      },
      "charge switch": "input_boolean.dao_kia_charging",
      "entity set charging ampere" : "input_number.dao_kia_amperage"
    },{
      "name": "Skoda CitigoEV",
      "capacity": 32,
      "entity position": "input_text.home_away_status",
      "entity max amperage": "input_number.dao_skoda_max_amperage",
      "charge three phase": "False",
      "charge stages" : [
        {"ampere":  0, "efficiency" :  1},
        {"ampere": 6, "efficiency" :  0.83},
        {"ampere": 8, "efficiency" :  0.87},
        {"ampere": 10, "efficiency" :  0.9},
        {"ampere": 12, "efficiency" :  0.93},
        {"ampere": 14, "efficiency" :  0.95},
        {"ampere": 16, "efficiency" :  0.97}
      ],
      "entity actual level": "sensor.skoda_citigoe_iv_battery_percentage",
      "entity plugged in": "input_boolean.skoda_connected",
      "charge scheduler": {
        "entity set level": "input_number.dao_skoda_max_battery_percentage",
        "entity ready datetime": "input_datetime.dao_skoda_charging_ready"
      },
      "charge switch": "input_boolean.dao_skoda_charging",
      "entity set charging ampere" : "input_number.dao_skoda_amperage"
    }


 ],


  "machines" : [ ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.power_consumption"
    ],
    "entities grid production": [
      "sensor.power_production"
    ],
    "entities solar production ac": [
      "sensor.pv_production"
    ],
    "entities solar production dc": [],
    "entities ev consumption" : ["sensor.laadpunt_total_energy"],
    "entities wp consumption" : [],
    "entities boiler consumption": [],
    "entities machine consumption": [],
    "entities battery consumption": ["sensor.inverter_total_battery_charge"],
    "entities battery production": ["sensor.inverter_total_battery_discharge"]
  },
  "scheduler": {
    "active": "true",
    "0430": "get_meteo_data",
    "1030": "get_meteo_data",
    "1630": "get_meteo_data",
    "2230": "get_meteo_data",
    "1255": "get_day_ahead_prices",
    "1355": "get_day_ahead_prices",
    "1455": "get_day_ahead_prices",
    "1554": "get_day_ahead_prices",
    "1655": "get_day_ahead_prices",
    "xx00": "calc_optimum",
    "xx15": "calc_optimum",
    "xx30": "calc_optimum",
    "xx45": "calc_optimum",
    "2359": "clean_data"
  }
}
Alle waarden van de variabelen die worden berekend en die je ziet in de "geoptimaliseerde" grafiek worden opgeslagen in de database van DAO.
Met behulp van de api kun je deze opvragen met de periode "vandaag_en_morgen".
Voor de code van de variabelen zie de logging:
code:
1
2
3
4
2025-12-24 21:30:07 info: Berekende prognoses: 
   uur  bat_in  bat_out   cons   prod   base   boil     wp     ev  pv_ac   cost  profit  b_tem   mach
 21:30    0.00     0.00   0.36   0.00   0.05   0.00   0.31   0.00   0.00   0.08   -0.00  52.88   0.00
 21:45    0.00     0.00   0.36   0.00   0.05   0.00   0.31   0.00   0.00   0.08   -0.00  52.75   0.00

Voor de werking van de api: zie DOCS.md.
Voor het visualiseren: apexcharts is je vriend:
https://community.home-as...mizable-graph-card/272877

Verder: in het volgende graag loggings en settings tussen quote-tags, dat maakt scrollen wat makkelijker in deze dagen😉.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • djoenez
  • Registratie: April 2007
  • Laatst online: 21:11
KC27 schreef op woensdag 24 december 2025 @ 21:44:
[...]

Alle waarden van de variabelen die worden berekend en die je ziet in de "geoptimaliseerde" grafiek worden opgeslagen in de database van DAO.
Met behulp van de api kun je deze opvragen met de periode "vandaag_en_morgen".
Voor de code van de variabelen zie de logging:
code:
1
2
3
4
2025-12-24 21:30:07 info: Berekende prognoses: 
   uur  bat_in  bat_out   cons   prod   base   boil     wp     ev  pv_ac   cost  profit  b_tem   mach
 21:30    0.00     0.00   0.36   0.00   0.05   0.00   0.31   0.00   0.00   0.08   -0.00  52.88   0.00
 21:45    0.00     0.00   0.36   0.00   0.05   0.00   0.31   0.00   0.00   0.08   -0.00  52.75   0.00

Voor de werking van de api: zie DOCS.md.
Voor het visualiseren: apexcharts is je vriend:
https://community.home-as...mizable-graph-card/272877

Verder: in het volgende graag loggings en settings tussen quote-tags, dat maakt scrollen wat makkelijker in deze dagen😉.
Done!
En het eventueel uitsplitsen van EVs?

Verder: ontzettend blij met je werk. Kan ik je ergens koffie aanbieden?

  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:18
djoenez schreef op woensdag 24 december 2025 @ 19:23:
Is het mogelijk om op een of andere manier de grafieken zoals je die ziet in de add-on ook in HA te krijgen via APEX? (dus alle in en uit stromen optimized?). Dit zodat ik kan zien dat de auto echt gaat opladen zonder dat ik dat eerst buiten de add-on instel, op de calculate knop duw. en dan moet checken in de add on of het ook echt is ingecalculeerd is (ik zie ook maar 1 EV opladen, is het mogelijk dit op te splitsen in EV 1 en EV 2 opladen als er 2 EVs zijn gedefinieerd?)
En en aanvulling op KC27, je kunt een REST sensor aanmaken:
code:
1
2
3
4
5
6
7
8
9
10
11
rest:
  - resource: http://192.168.1.7:5151/api/report/soc/vandaag_en_morgen
    verify_ssl: false
    scan_interval: 10
    sensor:
      - name: "SOC Projection"
        unique_id: soc_projection
        unit_of_measurement: "%"
        value_template: "{{ value_json.data[0].value }}"
        json_attributes:
          - data

en dan
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
type: custom:apexcharts-card
style: |
  ha-card {
    padding: 0px !important;
    border: none;
    box-shadow: none;
    margin-bottom: -3rem;
  }      
experimental:
  color_threshold: true
apex_config:
  grid:
    show: true
    borderColor: "#E0E0E0"
  chart:
    height: 200px
    offsetY: -20
  yaxis:
    decimalsInFloat: 2
  tooltip:
    enabled: true
    followCursor: false
    x:
      show: false
    fixed:
      enabled: true
yaxis:
  - id: price
    decimals: 2
    min: ~0
    max: ~0.4
    apex_config:
      grid:
        show: true
        borderColor: "#E0E0E0"
      chart:
        height: 200px
        offsetY: -20
      yaxis:
        decimalsInFloat: 2
      tooltip:
        enabled: true
        followCursor: false
        x:
          show: false
        fixed:
          enabled: true
  - id: soc
    opposite: true
    decimals: 0
    min: 0
    max: 100
    apex_config:
      tickAmount: 4
header:
  show: true
  show_states: true
  colorize_states: true
  standard_format: false
graph_span: 24h
now:
  show: true
  color: 9E9E9E
  label: nu
span:
  start: day
series:
  - entity: sensor.soc_projection
    unit: "%"
    yaxis_id: soc
    show:
      in_header: false
      name_in_header: true
      header_color_threshold: true
    name: SoC
    type: line
    curve: stepline
    color: silver
    extend_to: false
    stroke_width: 2
    float_precision: 2
    data_generator: |
      return entity.attributes.data.map((record, index) => {
        return [record.time, record.value];
      });
Meer API calls hier: https://github.com/cornee...blob/main/dao/DOCS.md#api
--edit--
ik zie nu dat ik een vrij frequente scan doe. Dat is niet nodig :)
djoenez schreef op woensdag 24 december 2025 @ 21:55:
[...]

En het eventueel uitsplitsen van EVs?
Dat zit er (nog) niet in :-(

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Torch1969
  • Registratie: Juni 2013
  • Laatst online: 22:23
djoenez schreef op woensdag 24 december 2025 @ 19:23:
Is het mogelijk om op een of andere manier de grafieken zoals je die ziet in de add-on ook in HA te krijgen via APEX? (dus alle in en uit stromen optimized?). Dit zodat ik kan zien dat de auto echt gaat opladen zonder dat ik dat eerst buiten de add-on instel, op de calculate knop duw. en dan moet checken in de add on of het ook echt is ingecalculeerd is (ik zie ook maar 1 EV opladen, is het mogelijk dit op te splitsen in EV 1 en EV 2 opladen als er 2 EVs zijn gedefinieerd?)

Verder, ik zag efficiencies van 105% bij mijn overzicht staan (maar niks doet met de batterij?), ik snap niet helemaal waar hij dat vandaan haalt. zie hieronder:

[...]


En mijn config:

[...]
API en charts staan ook al beschreven in de wiki

  • bartzzz
  • Registratie: December 2009
  • Laatst online: 19:39
KC27 schreef op woensdag 24 december 2025 @ 15:48:
[...]

Wat betreft de negatieve getallen:
Je zou eens een balans-rapport per maand kunnen opvragen en dan kijken waar en hoe de negatieve getallen ontstaan:
[Afbeelding]
Je kunt eventueel ook inzoomen op gisteren of vandaag.
Mijn gehele woning draait op deze accu, met andere woorden het is geïnstalleerd als een full back-up installatie. Dat het gezien de Epex prijzen niet interessant is om te kopen of verkopen dat is mij meer als duidelijk met deze tarieven. Om het systeem helemaal goed te laten draaien heb ik eigenlijk een "helper" nodig die zegt, gebruik de batterij niet. Echter staat de hybride omvormer zo ingesteld dat hij mag ontladen uit de batterij tot een bepaalde SoC waarden en als de batterij er onder komt laat hij van uit het Grid automatisch bij.
Deze minimale SoC is mijn backup capaciteit mocht er stroomuitval zijn.

  • Noshi
  • Registratie: Januari 2007
  • Laatst online: 22:48
KC27 schreef op woensdag 24 december 2025 @ 15:53:
@Noshi
In de logging van DAO staat ergens een tabel waarin de winst-berekening wordt verantwoord.
Zoiets als deze:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2025-12-24 15:45:08 info: Consumption              46.02 (kWh)
2025-12-24 15:45:08 info: Cost consumption         10.25 (€)
2025-12-24 15:45:08 info: Tariff consumption        0.223 (€/kWh)
2025-12-24 15:45:08 info: Production                1.70 (kWh)
2025-12-24 15:45:08 info: Profit production        -0.44 (€)
2025-12-24 15:45:08 info: Tariff production         0.260 (€/kWh)

2025-12-24 15:45:08 info: 
Calculation profit after optimize in €
Cost before optimize             10.04
Cost consumption     10.25
Cycle cost            0.16
Penalty cost          0.00
Battery storage       0.03
Boiler storage        0.08
Profit production    -0.44
Total                10.08
Cost after optimize              10.08
Profit:                          -0.03

Hoe ziet die er bij jou uit?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2025-12-25 09:39:58 info: Consumption               3.80 (kWh)
2025-12-25 09:39:58 info: Cost consumption          0.98 (€)
2025-12-25 09:39:58 info: Tariff consumption        0.259 (€/kWh)
2025-12-25 09:39:58 info: Production               11.29 (kWh)
2025-12-25 09:39:58 info: Profit production        -2.35 (€)
2025-12-25 09:39:58 info: Tariff production         0.208 (€/kWh)

2025-12-25 09:39:58 info: 
Calculation profit after optimize in €
Cost before optimize             -1.29
Cost consumption      0.98
Cycle cost            0.00
Penalty cost          0.00
Battery storage      -1.08
Boiler storage        0.00
Profit production    -2.35
Total                -2.44
Cost after optimize              -2.44
Profit:                           1.15


Ik snap niet hoe battery storage op dat bedrag komt. Maar ik zou alsnog een profit van €0.00 verwachten.

Mijn configuratie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
{
  "homeassistant": { },
  "database ha": {
    "engine": "sqlite",
    "database": "home-assistant_v2.db",
    "db_path": "/homeassistant"
  },
  "database da": {
    "engine": "sqlite",
    "db_path": "../data"
  },
  "meteoserver-key": "!secret meteoserver-key",
  "prices": {
    "source day ahead": "nordpool",
    "regular high": 0.50,
    "regular low": 0.40,
    "switch to low": 23,
    "energy taxes consumption": {
      "2022-01-01": 0.06729,
      "2023-01-01": 0.12599,
      "2024-01-01": 0.10880,
      "2025-01-01": 0.10154,
      "2026-01-01": 0.0913
    },
    "energy taxes production": {
      "2022-01-01": 0.06729,
      "2023-01-01": 0.12599,
      "2024-01-01": 0.10880,
      "2025-01-01": 0.10154,
      "2026-01-01": 0.0913
    },
    "cost supplier consumption": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2024-08-01": 0.02,
      "2026-01-01": 0.02

    },
    "cost supplier production": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2024-08-01": 0.020496,
      "2025-01-01": 0.02,
      "2026-01-01": 0.02
    },
    "vat consumption": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
    "vat production": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
   "last invoice": "2025-01-01",
    "tax refund": "True"
  },
  "logging level" : "info",
  "use_calc_baseload": "False",
  "baseload calc periode": 56,
  "baseload": [
    0.30,
    0.30,
    0.30,
    0.30,
    0.30,
    0.30,
    0.30,
    0.50,
    0.50,
    0.50,
    0.50,
    0.50,
    0.50,
    0.50,
    0.50,
    0.50,
    0.50,
    0.60,
    0.60,
    0.60,
    0.50,
    0.50,
    0.30,
    0.30
  ],
  "graphical backend": "",
  "graphics": {
    "style": "Solarize_Light2",
    "show" : "true",
    "battery balance": "True",
    "prices consumption": "True",
    "prices production": "False",
    "prices spot": "True",
    "average consumption": "True"
  },
  "strategy": "minimize cost",
  "notifications": {
    "notification entity": "input_text.dao_status",
    "opstarten": "False",
    "berekening": "False",
    "last activity entity": "input_datetime.dao_status_tijd"
  },
  "grid": {
    "max_power": 17
  },
  "history": {
    "save days": 7
  },
  "dashboard": {
    "port": 5000
  },
  "boiler": {
    "boiler present": "False",
    "entity actual temp.": "sensor.boiler_gemeten",
    "entity setpoint": "sensor.boiler_ingesteld",
    "entity hysterese": "sensor.hysterese_hot_water",
    "cop": 2.9,
    "cooling rate": 0.4,
    "volume": 180,
    "heating allowed below": 44,
    "elec. power": 1500,
    "activate service": "press",
    "activate entity": "input_button.hw_trigger"
  },
  "heating": {
    "heater present": "False",
    "degree days factor": 3.6,
    "stages": [
      {
        "max_power": 225,
        "cop": 7.1
      },
      {
        "max_power": 300,
        "cop": 7.0
      },
      {
        "max_power": 400,
        "cop": 6.5
      },
      {
        "max_power": 500,
        "cop": 6.0
      },
      {
        "max_power": 600,
        "cop": 5.5
      },
      {
        "max_power": 750,
        "cop": 5.0
      },
      {
        "max_power": 1000,
        "cop": 4.5
      },
      {
        "max_power": 1250,
        "cop": 4.0
      }
    ],
    "entity adjust heating curve": "input_number.stooklijn_verschuiving_day_ahead",
    "adjustment factor": 0.04
  },
  "battery": [
    {
      "name": "Batterij",
      "entity actual level": "sensor.victron_mqtt_c0619ab84911_battery_278_battery_soc",
      "capacity": 48,
      "upper limit": 90,
      "lower limit": 30,
      "optimal lower level": 40,
      "entity min soc end opt": "input_number.dao_minimum_soc",
      "entity max soc end opt": "input_number.dao_maximum_soc",
      "charge stages": [
        {
          "power": 0.0,
          "efficiency": 1
        },
        {
          "power": 900.0,
          "efficiency": 0.95
        },
        {
          "power": 1800.0,
          "efficiency": 0.96
        },
        {
          "power": 3600.0,
          "efficiency": 0.96
        },
        {
          "power": 7200.0,
          "efficiency": 0.94
        },
        {
          "power": 9000.0,
          "efficiency": 0.90
        }
      ],
      "discharge stages": [
        {
          "power": 0.0,
          "efficiency": 1
        },
        {
          "power": 900.0,
          "efficiency": 0.95
        },
        {
          "power": 1800.0,
          "efficiency": 0.96
        },
        {
          "power": 3600.0,
          "efficiency": 0.96
        },
        {
          "power": 7200.0,
          "efficiency": 0.94
        },
        {
          "power": 9000.0,
          "efficiency": 0.90
        }
      ],
      "reduced hours":
       {
       },
      "minimum power": 1000,
      "dc_to_bat efficiency": 1,
      "dc_to_bat max power" : 7500.0,
      "bat_to_dc efficiency": 1,
      "bat_to_dc max power" : 7500.0,
      "cycle cost": 0.04,
      "entity set power feedin": "input_number.dao_omvormer_vermogen",
      "entity set operating mode": "input_select.dao_omvormer_sturing",
      "entity set operating mode on": "Aan",
      "entity set operating mode off": "Uit", 
      "entity stop inverter": "input_datetime.dao_omvormer_eindtijd",
      "entity balance switch": "input_boolean.dao_omvormer_nul_op_de_meter",
      "entity from battery": "input_number.dao_geschat_dc",
      "entity from pv": "input_number.dao_geschat_pv",
      "entity from ac": "input_number.dao_geschat_ac",
      "entity calculated soc": "input_number.dao_geschat_soc",
      "solar": []
      
    }
  ],
  "solar": [  
  { "name" : "pv1",
    "entity pv switch": "",
    "max_power" : 1.0,
    "strings": [
        {
        "tilt": 40,
        "orientation": 60,
        "capacity": 1.32,
        "yield": 0.00275
        }
      ]
  },
  { "name" : "pv2",
      "entity pv switch": "",
      "max_power" : 3.6,
      "strings": [
        {
        "tilt": 15,
        "orientation": 60,
        "capacity": 2.88,
        "yield": 0.00275
        },
        {
        "tilt": 15,
        "orientation": -30,
        "capacity": 2.16,
        "yield": 0.00524
        }
      ]
  },
  { "name" : "pv3",
      "entity pv switch": "",
      "max_power" : 6.6,
      "strings": [
        {
        "tilt": 40,
        "orientation": 60,
        "capacity": 4.9,
        "yield": 0.0112
        },
        {
        "tilt": 40,
        "orientation": -120,
        "capacity": 5.95,
        "yield": 0.0112
        }
      ]
  } ],
  "electric vehicle": [
    {
      "name": "Mini",
      "capacity": 50.0,
      "charge three phase": "True",
      "charge stages" : [
        {"ampere":  0, "efficiency" :  1},
        {"ampere":  6, "efficiency": 0.95},
        {"ampere": 10, "efficiency": 1},
        {"ampere": 13, "efficiency": 0.95},
        {"ampere": 16, "efficiency": 0.92}
      ],
      "entity actual level": "sensor.cooper_se_battery_hv_state_of_charge",
      "entity plugged in": "binary_sensor.dao_ev_verbonden",
      "entity position": "device_tracker.cooper_se_location",
      "charge scheduler": {
        "entity set level": "sensor.cooper_se_battery_ev_target_state_of_charge",
        "level margin": 1,
        "entity ready datetime": "input_datetime.dao_ev_doeltijd"
      },
      "charge switch": "switch.dao_ev_laadschakelaar",
      "entity set charging ampere" : "number.smartevse_6998_chargecurrentoverride",
      "entity stop charging": "input_datetime.stop_laden_ev"
    }],
  "machines" : [ ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.verbruikt_laag_tarief",
      "sensor.verbruikt_hoog_tarief"
    ],
    "entities grid production": [
      "sensor.teruggeleverd_laag_tarief",
      "sensor.teruggeleverd_hoog_tarief"
    ],
    "entities solar production ac": [
      "sensor.solar_zolder_omvormer_1_opbrengst",   
      "sensor.solar_zolder_omvormer_2_opbrengst",
      "sensor.solar_zolder_omvormer_3_opbrengst"
    ],
    "entities solar production dc": [],
    "entities ev consumption" : ["sensor.smartevse_ev_import_energy_kwh"],
    "entities wp consumption" : ["sensor.warmtepomp_energie"],
    "entities boiler consumption": [],
    "entities machine consumption": [],
    "entities battery consumption": ["sensor.victron_mqtt_c0619ab84911_battery_278_battery_charged_energy"],
    "entities battery production": ["sensor.victron_mqtt_c0619ab84911_battery_278_battery_discharged_energy"]
  },
  "scheduler": {
    "active": "true",
    "0431": "get_meteo_data",
    "1031": "get_meteo_data",
    "1631": "get_meteo_data",
    "2231": "get_meteo_data",
    "1257": "get_day_ahead_prices",
    "1357": "get_day_ahead_prices",
    "1457": "get_day_ahead_prices",
    "1557": "get_day_ahead_prices",
    "1657": "get_day_ahead_prices",
    "xx00": "calc_optimum",
    "2359": "clean_data"
  }
}
Alvast bedankt! :)
Noshi schreef op donderdag 25 december 2025 @ 10:03:
[...]


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2025-12-25 09:39:58 info: Consumption               3.80 (kWh)
2025-12-25 09:39:58 info: Cost consumption          0.98 (€)
2025-12-25 09:39:58 info: Tariff consumption        0.259 (€/kWh)
2025-12-25 09:39:58 info: Production               11.29 (kWh)
2025-12-25 09:39:58 info: Profit production        -2.35 (€)
2025-12-25 09:39:58 info: Tariff production         0.208 (€/kWh)

2025-12-25 09:39:58 info: 
Calculation profit after optimize in €
Cost before optimize             -1.29
Cost consumption      0.98
Cycle cost            0.00
Penalty cost          0.00
Battery storage      -1.08
Boiler storage        0.00
Profit production    -2.35
Total                -2.44
Cost after optimize              -2.44
Profit:                           1.15


Ik snap niet hoe battery storage op dat bedrag komt. Maar ik zou alsnog een profit van €0.00 verwachten.

Mijn configuratie:

[...]


Alvast bedankt! :)
code:
1
Battery storage      -1.08

Dat betekent dat de inhoud van de batterij aan het einde van de berekening meer waard is dan aan het begin van de berekening (omgerekend naar kWh tegen het gemiddelde inkooptarief in de rekenperiode). Dat zijn dus negatieve kosten. Daarvoor heb je goedkopere stroom (inkoop of pv) gebruikt.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer

Productieversie 2025.12.1 is gepubliceerd.
Deze is gelijk aan testversie 2025.12.1.rc1 (gepubliceerd op maandag 22 december).
Dit staat in de changelog:
- Fix error calculating number of heat-blocks heatpump (on/off, reported by @sailor_dg)

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Dogooder
  • Registratie: April 2004
  • Laatst online: 23:43

Dogooder

dus...

Is het mogelijk om via de api de kwartierwaardes te krijgen?
Ik heb al de standaard apexchart in homeassistant, maar ik merk dat ik vaak nog naar de "In- en uitgaande energie per kwartier batterij" tabel kijk als ik merk dat mijn batterij twijfelachtig gedrag vertoond.
Dus ik zou die informatie graag naar homeassistant halen, per kwartier.
Dogooder schreef op zaterdag 27 december 2025 @ 23:04:
Is het mogelijk om via de api de kwartierwaardes te krijgen?
Ik heb al de standaard apexchart in homeassistant, maar ik merk dat ik vaak nog naar de "In- en uitgaande energie per kwartier batterij" tabel kijk als ik merk dat mijn batterij twijfelachtig gedrag vertoond.
Dus ik zou die informatie graag naar homeassistant halen, per kwartier.
Dat staat wel op mijn "te doen" lijstje, maar is net iets moeilijker dan het lijkt. Home Assistant slaat alle energie-data op in de lange termijn tabel en dan alleen per uur. In de korte termijn tabel worden de alle data heel frequent opgeslagen, maar na tien dagen worden deze gegevens gewist.
DAO maakt tot nu toe alleen gebruik van de lange termijn tabel (net als het Energy Dashboard van HA).
Voor de kwartierwaarden (voor de intervallen "gisteren", "vandaag", "morgen" en "vandaag en morgen"), zal ik voor de historie van de korte termijn tabel van HA gebruik moeten gaan maken.
Wordt vervolgd.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • djoenez
  • Registratie: April 2007
  • Laatst online: 21:11
Weer 2 vragen:

Ik probeer mijn pv yield te tunen. Maar in de rapport tab kan ik alleen de pv ac opwek zien van morgen. De data van vandaag of eerder is altijd 0. Is er iets wat ik mis/ slecht heb geconfigureerd?

Als ik mijn normaal verbruik laat berekenen krijg ik veel negatieve waarden. Terwijl de sensor die ik doorgeef echt alleen consumptie heeft ( geen negatieve waarden). Waar gaat het fout?

En dan nog een feature request: Is het mogelijk om pv op dezelfde manier te laten berekenen? ( Dus kijkend naar historische data).
djoenez schreef op zondag 28 december 2025 @ 09:42:
Weer 2 vragen:

Ik probeer mijn pv yield te tunen. Maar in de rapport tab kan ik alleen de pv ac opwek zien van morgen. De data van vandaag of eerder is altijd 0. Is er iets wat ik mis/ slecht heb geconfigureerd?

Als ik mijn normaal verbruik laat berekenen krijg ik veel negatieve waarden. Terwijl de sensor die ik doorgeef echt alleen consumptie heeft ( geen negatieve waarden). Waar gaat het fout?

En dan nog een feature request: Is het mogelijk om pv op dezelfde manier te laten berekenen? ( Dus kijkend naar historische data).
In je settings kun je onder "report"de HA-sensoren opgeven die je pv-productie registreren (dezelfde die je ook opgeeft voor het energie-dashboard van HA). Bijvoorbeeld:
code:
1
2
3
4
    "entities solar production ac": [
      "sensor.solaredge_woning_ac_energy_kwh",
      "sensor.solaredge_garage_ac_energy_kwh_2"
    ],

Als je dat goed invult kun je je totale pv-productie zien bij report\balans.
Misschien zijn dan ook de negatieve getallen weg bij.

Ik ben samen met @simnet bezig een module te maken op basis van ML om de pv-productie te voorspellen met een ml-model.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Dogooder
  • Registratie: April 2004
  • Laatst online: 23:43

Dogooder

dus...

Even een controle vraag. De DAO power feedin is exact wat mijn deye terug het grid in moet stoppen?
Ik regel namelijk de max current, maar dan komt de pv_dc daar nog bovenop.
Dus als feedin op -100 watt staat dan trekt hij ongeveer 100 watt uit de batterij, maar de deye kan op zo'n moment veel meer als output geven want alle pv_dc gaat dan ook naar de grid.

Het zou handig zijn om te kunnen detecteren of DAO geld wil verdienen met export of het gebruik wil reduceren. Ik vermoed het laatste bij feedin waardes van -100 w. Maar Deye heeft daar een betere optie voor, nul op meter. Maar de balance boolean zie ik niet zo vaak bij minimum cost strategy.

[ Voor 29% gewijzigd door Dogooder op 28-12-2025 12:33 ]

Dogooder schreef op zondag 28 december 2025 @ 12:05:
Even een controle vraag. De DAO power feedin is exact wat mijn deye terug het grid in moet stoppen?
Ik regel namelijk de max current, maar dan komt de pv_dc daar nog bovenop.
Dus als feedin op -100 watt staat dan trekt hij ongeveer 100 watt uit de batterij, maar de deye kan op zo'n moment veel meer als output geven want alle pv_dc gaat dan ook naar de grid.

Het zou handig zijn om te kunnen detecteren of DAO geld wil verdienen met export of het gebruik wil reduceren. Ik vermoed het laatste bij feedin waardes van -100 w. Maar Deye heeft daar een betere optie voor, nul op meter. Maar de balance boolean zie ik niet zo vaak bij minimum cost strategy.
Bij een door DAO berekende feedin van -100W gaat er 100 W van de Deye naar je lokale net/grid. Als de pv-dc productie meer is dan die 100 W zou het meerdere moeten worden opgeslagen in de batterij.
Als die -100 W overeenkomt met het berekende opgenomen verbruik van al je huisverbruikers (wp, boiler, ev's, machines en baseload) dan is de door DAO berekende grid-power 0 en dan zet hij de "balance vlag/boolean" (entity balance switch).

Verder: als je optimaliseert met de strategie "minimize cost" probeert DAO altijd "geld te verdienen" en als dan het inkooptarief gelijk is aan het verkooptarief (zoals tot 1-1-2027 vaak het geval is) zal er niet zoveel gebalanceerd worden.

Heb je voor mij een grafiek en een logging van de berekening (tussen quotes- en code-tags)?
Misschien kun je aan de hand daarvan uitleggen wat je eigenlijk wil?

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Dogooder
  • Registratie: April 2004
  • Laatst online: 23:43

Dogooder

dus...

Het probleem zit het hem zeker weten in Deye of de aansturing daarvan, niet in DAO. Maar ik wil het graag goed implementeren.
De situatie is als volgt, rond deze tijd van het jaar doet de batterij voornamelijk niks, dat snap ik. Maar met het winterzonnetje ziet DAO toch de SOC van de batterij oplopen. Waarbij voornamelijk de pv_dc deels naar het grid gaat.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2025-12-28 10:00:01 info: In- en uitgaande energie per kwartier batterij Deye
   uur   ac->    eff   ->dc pv->dc   dc->    eff  ->bat  o_eff    SoC
          kWh      %    kWh    kWh    kWh      %    kWh      %      %
 10:00   0.02  95.10   0.02   0.16   0.18  93.00   0.17     --  21.00
 10:15  -0.19  95.50  -0.19   0.19   0.00     --   0.00     --  21.00
 10:30  -0.22  95.50  -0.23   0.23   0.00     --   0.00     --  21.00
 10:45  -0.25  95.50  -0.26   0.26   0.00     --   0.00     --  21.00
 11:00  -0.29  95.50  -0.30   0.30   0.00     --   0.00     --  21.00
 11:15  -0.30  95.50  -0.31   0.34   0.03  93.00   0.03     --  21.15
 11:30  -0.36  94.90  -0.38   0.38   0.00     --   0.00     --  21.15
 11:45  -0.30  95.50  -0.31   0.40   0.09  93.00   0.08     --  21.64
 12:00  -0.39  94.90  -0.42   0.42   0.00     --   0.00     --  21.64
 12:15  -0.42  94.90  -0.44   0.44   0.00     --   0.00     --  21.64
 12:30  -0.45  94.90  -0.47   0.47   0.00     --   0.00     --  21.64
 12:45  -0.30  95.50  -0.31   0.47   0.16  93.00   0.15     --  22.51
 13:00  -0.30  95.50  -0.31   0.46   0.15  93.00   0.14     --  23.32
 13:15  -0.30  95.50  -0.31   0.46   0.15  93.00   0.14     --  24.13
 13:30  -0.44  94.90  -0.47   0.47   0.00     --   0.00     --  24.13
 13:45  -0.43  94.90  -0.45   0.45   0.00     --   0.00     --  24.13
 14:00  -0.30  95.50  -0.31   0.43   0.12  93.00   0.11     --  24.78
 14:15  -0.40  94.90  -0.42   0.42   0.00     --   0.00     --  24.78
 14:30  -0.37  94.90  -0.39   0.39   0.00     --   0.00     --  24.78
 14:45  -0.32  94.90  -0.34   0.34   0.00     --   0.00     --  24.78
 15:00  -0.26  95.50  -0.28   0.28   0.00     --   0.00     --  24.78
 15:15  -0.11  95.40  -0.12   0.12   0.00     --   0.00     --  24.78
 15:30  -0.09  95.40  -0.09   0.09   0.00     --   0.00     --  24.78
 15:45  -0.07  95.30  -0.07   0.07   0.00     --   0.00     --  24.78
 16:00  -0.04  95.30  -0.04   0.04   0.00     --   0.00     --  24.78
 16:15  -0.02  95.10  -0.02   0.02   0.00     --   0.00     --  24.78
 16:30   0.00     --   0.00   0.00   0.00     --   0.00     --  24.78

Ziet er prima uit, maar in de praktijk zie ik het volgende gebeuren een dip in plaats van toename:
Afbeeldingslocatie: https://tweakers.net/i/9cEcgL8rBKEi6pFa0viGDda_qcw=/800x/filters:strip_icc():strip_exif()/f/image/g6aSsxN2TRhqcduyLfjR71ay.jpg?f=fotoalbum_large
Nu kan er natuurlijk wat minder zon zijn geweest dan dan DAO dacht, maar mijn Deye laat het volgende zien:
Afbeeldingslocatie: https://tweakers.net/i/agyjX4x9P-F6upFew8TnG28rlEc=/x800/filters:strip_icc():strip_exif()/f/image/JbNh9uDXaGZ25dlkkEE2BcF8.jpg?f=fotoalbum_large
De Deye haalt netjes de gevraagde waarde aan energie uit de batterij, maar wat vervolgens naar het grid gaat is vele malen hoger. Dat lijkt op DAO feedin + pv_dc - eigen vebruik (~116W).
Met als gevolg dat de SOC daalt en DAO soms weer gaat laden op niet de goedkoopst momenten. Momenteel is het wat gerommel in de marge, maar legt volgens mij wel mijn probleem bloot.
zie bijvoorbeeld hier, onderstaande is nog redelijk volgens plan:
code:
1
2
3
4
5
6
7
2025-12-28 14:30:02 info: In- en uitgaande energie per kwartier batterij Deye
   uur   ac->    eff   ->dc pv->dc   dc->    eff  ->bat  o_eff    SoC
          kWh      %    kWh    kWh    kWh      %    kWh      %      %
 14:30  -0.01  95.00  -0.02   0.37   0.35  93.00   0.33     --  21.47
 14:45  -0.30  95.50  -0.31   0.32   0.01  93.00   0.00     --  21.50
 15:00  -0.26  95.50  -0.27   0.27   0.00     --   0.00     --  21.50
 15:15  -0.11  95.40  -0.12   0.12   0.00     --   0.00     --  21.50

Maar ineens gaat hij laden, op niet het goekoopste moment:
code:
1
2
3
4
5
2025-12-28 15:00:02 info: In- en uitgaande energie per kwartier batterij Deye
   uur   ac->    eff   ->dc pv->dc   dc->    eff  ->bat  o_eff    SoC
          kWh      %    kWh    kWh    kWh      %    kWh      %      %
 15:00   0.10  95.35   0.10   0.27   0.37  93.00   0.34     --  21.00
 15:15  -0.11  95.40  -0.12   0.12   0.00  93.00   0.00     --  21.00


extra tabel van hetzelfde eerdere tijdsvak, maar hier staat geen pv_dc.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2025-12-28 10:00:02 info: Berekende prognoses: 
   uur  bat_in  bat_out   cons   prod   base   boil     wp     ev  pv_ac   cost  profit  b_tem
 10:00    0.02     0.00   0.13   0.00   0.11   0.00   0.00   0.00   0.00   0.04   -0.00  20.00
 10:15    0.00     0.19   0.00   0.08   0.10   0.00   0.00   0.00   0.00   0.00   -0.02  20.00
 10:30    0.00     0.22   0.00   0.12   0.10   0.00   0.00   0.00   0.00   0.00   -0.03  20.00
 10:45    0.00     0.25   0.00   0.15   0.09   0.00   0.00   0.00   0.00   0.00   -0.04  20.00
 11:00    0.00     0.29   0.00   0.20   0.09   0.00   0.00   0.00   0.00   0.00   -0.05  20.00
 11:15    0.00     0.30   0.00   0.21   0.09   0.00   0.00   0.00   0.00   0.00   -0.05  20.00
 11:30    0.00     0.36   0.00   0.27   0.09   0.00   0.00   0.00   0.00   0.00   -0.07  20.00
 11:45    0.00     0.30   0.00   0.20   0.10   0.00   0.00   0.00   0.00   0.00   -0.05  20.00
 12:00    0.00     0.39   0.00   0.27   0.12   0.00   0.00   0.00   0.00   0.00   -0.07  20.00
 12:15    0.00     0.42   0.00   0.29   0.13   0.00   0.00   0.00   0.00   0.00   -0.07  20.00
 12:30    0.00     0.45   0.00   0.30   0.15   0.00   0.00   0.00   0.00   0.00   -0.07  20.00
 12:45    0.00     0.30   0.00   0.09   0.21   0.00   0.00   0.00   0.00   0.00   -0.02  20.00
 13:00    0.00     0.30   0.02   0.00   0.32   0.00   0.00   0.00   0.00   0.00   -0.00  20.00
 13:15    0.00     0.30   0.08   0.00   0.38   0.00   0.00   0.00   0.00   0.02   -0.00  20.00
 13:30    0.00     0.44   0.00   0.01   0.44   0.00   0.00   0.00   0.00   0.00   -0.00  20.00
 13:45    0.00     0.43   0.00   0.02   0.41   0.00   0.00   0.00   0.00   0.00   -0.00  20.00
 14:00    0.00     0.30   0.03   0.00   0.33   0.00   0.00   0.00   0.00   0.01   -0.00  20.00
 14:15    0.00     0.40   0.00   0.09   0.31   0.00   0.00   0.00   0.00   0.00   -0.02  20.00
 14:30    0.00     0.37   0.00   0.09   0.29   0.00   0.00   0.00   0.00   0.00   -0.02  20.00
 14:45    0.00     0.32   0.00   0.08   0.25   0.00   0.00   0.00   0.00   0.00   -0.02  20.00
 15:00    0.00     0.26   0.00   0.07   0.19   0.00   0.00   0.00   0.00   0.00   -0.02  20.00
 15:15    0.00     0.11   0.04   0.00   0.16   0.00   0.00   0.00   0.00   0.01   -0.00  20.00
 15:30    0.00     0.09   0.03   0.00   0.12   0.00   0.00   0.00   0.00   0.01   -0.00  20.00
 15:45    0.00     0.07   0.04   0.00   0.11   0.00   0.00   0.00   0.00   0.01   -0.00  20.00
 16:00    0.00     0.04   0.07   0.00   0.12   0.00   0.00   0.00   0.00   0.02   -0.00  20.00

[ Voor 32% gewijzigd door Dogooder op 28-12-2025 15:19 ]


  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:18
KC27 schreef op zondag 28 december 2025 @ 09:30:
[...]

Dat staat wel op mijn "te doen" lijstje, maar is net iets moeilijker dan het lijkt. Home Assistant slaat alle energie-data op in de lange termijn tabel en dan alleen per uur. In de korte termijn tabel worden de alle data heel frequent opgeslagen, maar na tien dagen worden deze gegevens gewist.
DAO maakt tot nu toe alleen gebruik van de lange termijn tabel (net als het Energy Dashboard van HA).
Voor de kwartierwaarden (voor de intervallen "gisteren", "vandaag", "morgen" en "vandaag en morgen"), zal ik voor de historie van de korte termijn tabel van HA gebruik moeten gaan maken.
Wordt vervolgd.
@KC27 Ik (samen met Gemini) heb een Appdaemon script gemaakt dat dit doet, nou ja, zonder de API dan. Staat hier. Berekent elk kwartier het verbruik en kosten/opbrengst per entity. Produceert iets als dit. Ik denk dat het goed is om zoiets in DAO te hebben, maar ik begrijp ook dat dit een behoorlijke verbouwing is van de code. Ik heb al eens geprobeerd maar het lukte me niet om te snappen hoe zoiets toe te voegen.
idtimestampmeasurement_typemeter_readingusage_kwhprice_per_kwhcost_amount
51742025-12-30 08:45:00+00misc_consumption1.7940.0590.2630.0155
51732025-12-30 08:45:00+00battery_discharge1640.080.040.263-0.0105
51722025-12-30 08:45:00+00battery_charge2025.3400.2630
51712025-12-30 08:45:00+00solar_production4284.68900.2630
51702025-12-30 08:45:00+00grid_export1969.83610.04510.263-0.0119
51692025-12-30 08:45:00+00grid_import2822.28690.05790.2630.0152

[ Voor 1% gewijzigd door balk op 30-12-2025 09:05 . Reden: verduidelijking ]


  • djoenez
  • Registratie: April 2007
  • Laatst online: 21:11
KC27 schreef op zondag 28 december 2025 @ 09:58:
[...]

In je settings kun je onder "report"de HA-sensoren opgeven die je pv-productie registreren (dezelfde die je ook opgeeft voor het energie-dashboard van HA). Bijvoorbeeld:
code:
1
2
3
4
    "entities solar production ac": [
      "sensor.solaredge_woning_ac_energy_kwh",
      "sensor.solaredge_garage_ac_energy_kwh_2"
    ],

Als je dat goed invult kun je je totale pv-productie zien bij report\balans.
Misschien zijn dan ook de negatieve getallen weg bij.

Ik ben samen met @simnet bezig een module te maken op basis van ML om de pv-productie te voorspellen met een ml-model.
Bedankt! ik had de PV wel gedefinieerd, maar dan de live power. dat werkt natuurlijk niet. 8)7

Meteen een opvolgende vraag, als ik nu mijn baseloads probeer te berekenen crasht DAO, in de log zie ik het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[2025-12-30 10:31:46 +0100] [11] [CRITICAL] WORKER TIMEOUT (pid:589)
[2025-12-30 10:31:46 +0100] [589] [fout] Error handling request /
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/gunicorn/workers/sync.py", line 134, in handle
    self.handle_request(listener, req, client, addr)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/gunicorn/workers/sync.py", line 177, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1536, in __call__
    return self.wsgi_app(environ, start_response)
           ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 213, in menu
    return run_process()
  File "/root/dao/webserver/app/routes.py", line 342, in run_process
    proc = run(cmd, stdout=PIPE, stderr=PIPE)
  File "/usr/lib/python3.13/subprocess.py", line 556, in run
    stdout, stderr = process.communicate(input, timeout=timeout)
                     ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/subprocess.py", line 1222, in communicate
    stdout, stderr = self._communicate(input, endtime, timeout)
                     ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/subprocess.py", line 2128, in _communicate
    ready = selector.select(timeout)
  File "/usr/lib/python3.13/selectors.py", line 398, in select
    fd_event_list = self._selector.poll(timeout)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
    sys.exit(1)
    ~~~~~~~~^^^
SystemExit: 1
[2025-12-30 10:31:46 +0100] [589] [info] Worker exiting (pid: 589)
[2025-12-30 10:31:46 +0100] [594] [INFO] Booting worker with pid: 594
balk schreef op dinsdag 30 december 2025 @ 09:04:
[...]

@KC27 Ik (samen met Gemini) heb een Appdaemon script gemaakt dat dit doet, nou ja, zonder de API dan. Staat hier. Berekent elk kwartier het verbruik en kosten/opbrengst per entity. Produceert iets als dit. Ik denk dat het goed is om zoiets in DAO te hebben, maar ik begrijp ook dat dit een behoorlijke verbouwing is van de code. Ik heb al eens geprobeerd maar het lukte me niet om te snappen hoe zoiets toe te voegen.

[...]
Ziet er erg goed uit.
Hier kan ik zeker gebruik van maken, maar dan om de kwartierwaarden op te slaan in de DAO-database.
Maar ik maak het dan in sql-alchemy zodat het universeel (zowel voor postgresql alsook voor mysql en sqlite) bruikbaar is.
Dank voor je mooi bijdrage.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer

djoenez schreef op dinsdag 30 december 2025 @ 10:38:
[...]


Bedankt! ik had de PV wel gedefinieerd, maar dan de live power. dat werkt natuurlijk niet. 8)7

Meteen een opvolgende vraag, als ik nu mijn baseloads probeer te berekenen crasht DAO, in de log zie ik het volgende:


[...]
Hij crasht op een time-out.
Neem de berekening op in de scheduleren dan bijvoorbeeld (als test) een paar minuten na het opslaan van de settings.
Ga dan na ca 5 minuten kijken in de logging (via Home, maar dan met "tabel") wat hij heeft gedaan.
Als het goed werkt kun je het vast opnemen in de scheduler op een tijdstip dat jou past.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer

Ik heb een nieuwe test-release candidate gepubliceerd: versie 2025.12.2.rc2
LET OP lees eerst goed de changelog, want deze rc bevat "breaking changes"

Deze versie implementeert de voorspelling van de pv productie met behulp van ML-learning.
@simnet heeft daar een mooie module voor gebouwd en deze heb ik geïmplementeerd in DAO.

Tijdens installatie van de addon worden de meteo-gegevens van Meteoserver overgeheveld van de "values"-tabel naar de "prognoses"-tabel (waar ze thuishoren omdat het altijd prognoses zijn), zodat er in de values-table ruimte komt om echte waarnemingen van het knmi op te slaan.
De database is na deze "move" niet meer bruikbaar voor versies 2025.12.1 of eerder.
Zie verder de changelog.
Belangrijk: dit is nog "work in progress".
De module en de implementatie moet nog verder worden gefinetuned, maar wij denken dat we jullie ervaring en input daarbij kunnen gebruiken.

Edit 14:25:
Inmiddels is de eerste fout in rc1 hersteld.
We werken vanaf nu met rc2

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Herbertnl
  • Registratie: Maart 2022
  • Laatst online: 14-01 12:29
Hallo allemaal !
Zo dan.... tijdje lopen lurken hier en uiteindelijk DAO geïnstalleerd en Emhass eruit. Met dank aan Gemini pro de boel best aardig lopend gekregen deze (rustige) vakantiedagen. Ietwat gedoe met ophalen van Tibber data (?) dus die even geskipt (ook al ben ik Tibber klant) Paar dagen terug mijn excentrieke warmtepomp in HAS gekregen via wat omwegen dus meteen op de tanden bijten en de rest er ook in. De logica is mij soms nog niet helemaal duidelijk, maar het is in ieder geval al beter dan de Solis AI die ik af en toe liet draaien. Die maakt er echt een potje van.
Even als side noot. Ik ben hier feut maar in home assistent ook. Heel vroeger wel sql / foxpro / access geprogrammeerd dus ik snap een aantal dingen wel. Maar sinds een paar dagen wat actiever gebruik gemaakt van Gemini AI pro. Dat ding is best wel slim, zeker als je er eerst een manual of specblad van je apparatuur door heen gooit. Dus tip, kom je er niet helemaal uit, probeer wat AI. Ik was anders nooit zover gekomen dat alles draait en met elkaar praat. Komende tijd even afwachten of de apparaten ook zinninge dingen zeggen :-)
Verder blijf ik gewoon even lurken en als ik iets in mijn installatie ontdek wat handig kan zijn, dan laat ik het weten.

Huidige setup:
- Phnix Greentherm wamptepomp (modulerend tot 15Kw) met 300 liter boilervat
- Solis S6 15Kw omvormer (met slechts 4,5 kwp zonnepanelen. komt nog 1,5 kwp bij)
- Dynes T21 kWh HV accu
- 76kWh EV6
- 50kWh busje
- WTW met geintegreerde warmtepomp (moet ik nog de rs485 uit snuffelen) niet echt slurper maar wil ik er wel in hebben
en verder nog teveel verbuikers om op te noemen.
Alles op home assistant, veel zigbee spul.

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
@KC27:

Met het ML-model word het solarstuk dus:

code:
1
2
3
4
5
6
7
8
9
10
11
..
..
 "solar": [ 
    {
      "name": "Growatt",
      "ml_prediction": "true",
      "entities sensors": "sensor.pv_opbrengst_huisdak",
      "max power": 7,
      "entity pv switch": "input_boolean.pv_huis_onoff"
    },
..


Oftewel: tilt, orientation, capaity en yield komen te vervallen?
DaBit schreef op dinsdag 30 december 2025 @ 19:24:
@KC27:

Met het ML-model word het solarstuk dus:

code:
1
2
3
4
5
6
7
8
9
10
11
..
..
 "solar": [ 
    {
      "name": "Growatt",
      "ml_prediction": "true",
      "entities sensors": "sensor.pv_opbrengst_huisdak",
      "max power": 7,
      "entity pv switch": "input_boolean.pv_huis_onoff"
    },
..


Oftewel: tilt, orientation, capaity en yield komen te vervallen?
Ze worden nog niet gebruikt door de ml-voorspeller, maar ik zou ze wel laten staan omdat:
  • de voorspeller nog niet feilloos werkt, dus kun je makkelijker terug, maak van "ml_prediction" bijvoorbeeld "#ml_prediction"
  • in de rapportages worden den oude dao voorspellingen vergeleken met de ml voorspellingen en de daadwerkelijke productie. Die worden berekend aan de hand van je settings.
Voorbeeld:
Afbeeldingslocatie: https://tweakers.net/i/tod4C3rLLC2wxHFz4OOG1R7LBuU=/800x/filters:strip_exif()/f/image/XrWJ6tLQ3749WlRz9BiAgnHV.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/zALPNw25iDNhTDwavkglOa7boaw=/x800/filters:strip_exif()/f/image/KBHuaA2AJuXrsr9kAo3nJ0uD.png?f=fotoalbum_large

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
Dan zal ik ze weer terug zetten.

Nog geen resultaat overigens:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Logging van bewerking "ML modellen trainen":
2025-12-30 19:39:17 info: Day Ahead Optimalisering versie: 2025.12.2.rc2
2025-12-30 19:39:17 info: Day Ahead Optimalisering gestart op: 30-12-2025 19:39:17
2025-12-30 19:39:17 info: Day Ahead Optimalisatie gestart: 30-12-2025 19:39:17 taak: train_ml_predictions
2025-12-30 19:39:17 info: Er zijn knmi-data aanwezig tot 2025-12-29 00:00:00
2025-12-30 19:39:17 info: Er zijn geen aanvullende knmi-data beschikbaar
2025-12-30 19:39:17 fout: Er is een fout opgetreden, zie de fout-tracering
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/pandas/core/indexes/base.py", line 3812, in get_loc
    return self._engine.get_loc(casted_key)
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "pandas/_libs/index.pyx", line 167, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 196, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 7088, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 7096, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'utc'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/dao/prog/da_base.py", line 647, in run_task_function
    getattr(self, run_task["function"])()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/da_base.py", line 592, in train_ml_predictions
    solar_predictor.run_train()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/solar_predictor.py", line 883, in run_train
    self.train_solar_option(weather_data, solar_option, start)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/prog/solar_predictor.py", line 863, in train_solar_option
    solar_data = self.get_solar_data(start=start, entities=self.solar_entities)
  File "/root/dao/prog/solar_predictor.py", line 849, in get_solar_data
    df_solar["utc"] = pd.to_datetime(df_solar["utc"], unit="s", utc=True)
                                     ~~~~~~~~^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/pandas/core/frame.py", line 4113, in __getitem__
    indexer = self.columns.get_loc(key)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/pandas/core/indexes/base.py", line 3819, in get_loc
    raise KeyError(key) from err
KeyError: 'utc'
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/pandas/core/indexes/base.py", line 3812, in get_loc
    return self._engine.get_loc(casted_key)
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "pandas/_libs/index.pyx", line 167, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 196, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 7088, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 7096, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'utc'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/dao/webserver/../prog/day_ahead.py", line 4509, in <module>
    main()
    ~~~~^^
  File "/root/dao/webserver/../prog/day_ahead.py", line 4503, in main
    da_calc.run_task_function("train_ml_predictions")
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/prog/da_base.py", line 647, in run_task_function
    getattr(self, run_task["function"])()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/da_base.py", line 592, in train_ml_predictions
    solar_predictor.run_train()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/solar_predictor.py", line 883, in run_train
    self.train_solar_option(weather_data, solar_option, start)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/prog/solar_predictor.py", line 863, in train_solar_option
    solar_data = self.get_solar_data(start=start, entities=self.solar_entities)
  File "/root/dao/prog/solar_predictor.py", line 849, in get_solar_data
    df_solar["utc"] = pd.to_datetime(df_solar["utc"], unit="s", utc=True)
                                     ~~~~~~~~^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/pandas/core/frame.py", line 4113, in __getitem__
    indexer = self.columns.get_loc(key)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/pandas/core/indexes/base.py", line 3819, in get_loc
    raise KeyError(key) from err
KeyError: 'utc'
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
{
  "homeassistant": { 
     "protocol api": "http",
     "host": "192.168.100.18",
     "ip port": 8123,
     "token": "!secret ha_api_token"
  },
  "database ha": {
    "engine": "sqlite",
    "database": "home-assistant_v2.db",
    "db_path": "/homeassistant"
  },
  "database da": {
    "engine": "sqlite",
    "db_path": "../data"
  },
  "meteoserver-key": "!secret meteoserver-key",
  "meteoserver-model": "harmonie",
  "meteoserver-attemps": 2,
  "interval": "15min",
  "prices": {
    "source day ahead": "nordpool",
    "entsoe-api-key": "!secret entsoe-api-key",
    "energy taxes consumption": {
      "2022-01-01": 0.06729,
      "2023-01-01": 0.12599,
      "2024-01-01": 0.10880,
      "2025-01-01": 0.10154,
      "2026-01-01": 0.09157
    },
    "energy taxes production": {
      "2022-01-01": 0.06729,
      "2023-01-01": 0.12599,
      "2024-01-01": 0.10880,
      "2025-01-01": 0.10154,
      "2026-01-01": 0.09157
    },
    "cost supplier consumption": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2024-08-01": 0.020496,
      "2025-01-01": 0.0181,
      "2026-01-01": 0.0181
    },
    "cost supplier production": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2024-08-01": 0.020496,
      "2025-01-01": -0.0181,
      "2026-01-01": -0.0181
    },
    "vat consumption": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
    "vat production": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
    "last invoice": "2025-02-27",
    "tax refund": "True"
  },
  "logging level" : "info",
  "use_calc_baseload": "True",
  "baseload calc periode": 56,
  "baseload": [
    0.40,
    0.40,
    0.40,
    0.40,
    0.65,
    0.65,
    0.65,
    0.65,
    0.90,
    1.30,
    2.00,
    1.80,
    1.70,
    1.30,
    1.10,
    1.30,
    1.60,
    1.60,
    0.90,
    0.90,
    0.90,
    0.70,
    0.70,
    0.50
  ],
  "graphical backend": "",
  "graphics": {
    "style": "dark_background",
    "show" : "true",
    "battery balance": "True",
    "prices delivery": "False",
    "prices redelivery": "True",
    "average delivery": "False",
    "prices consumption": "True",
    "prices production": "True",
    "prices spot": "True",
    "average consumption": "True"
  },
  "strategy": "minimize cost",
  "notifications": {
        "notification entity": "input_text.dao_notification"
  },
  "grid": {
    "max_power": 18
  },
  "history": {
    "save days": 14
  },
  "dashboard": {
    "port": 5000
  },
  "boiler": {
    "boiler present": "False",
    "entity actual temp.": "sensor.boiler_boiler_temperature",
    "entity setpoint": "input_number.boiler_desiredtemperature",
    "cop": 1.0,
    "cooling rate": 0.4,
    "volume": 100,
    "heating allowed below": 70,
    "elec. power": 2100,
    "entity hysterese": "input_number.boiler_hysterese",
    "activate service": "turn_on",
    "activate entity": "input_boolean.dao_boiler_activate"
  },
  "heating": {
    "heater present": "False",
    "entity hp enabled": "input_boolean.always_true",
    "entity hp heat produced": "sensor.heatpump_daily_energy_production",
    "min run length": 3,
    "adjustment": "heating curve",
    "degree days factor": 3.6,
    "stages": [
      {
        "max_power": 225,
        "cop": 7.1
      },
      {
        "max_power": 300,
        "cop": 7.0
      },
      {
        "max_power": 400,
        "cop": 6.5
      },
      {
        "max_power": 500,
        "cop": 6.0
      },
      {
        "max_power": 600,
        "cop": 5.5
      },
      {
        "max_power": 750,
        "cop": 5.0
      },
      {
        "max_power": 1000,
        "cop": 4.5
      },
      {
        "max_power": 1250,
        "cop": 4.0
      }
    ],
    "entity adjust heating curve": "input_number.hp_lwt_adjust",
    "adjustment factor": 0.05
  },
  "battery": [ 
          {
        "name": "Accu schuur",
        "entity actual level": "sensor.victron_battery_state_of_charge_system",
        "capacity": 31,
        "upper limit": 100,
        "lower limit": 25,
        "optimal lower level": 50,
      "penalty_low_soc": 0.0005,
        "entity min soc end opt": "input_number.bat_min_soc_einde_opt",
        "entity max soc end opt": "input_number.bat_max_soc_einde_opt",
      "charge stages": [
            {
              "power": 0,
              "efficiency": 1
            },
            {
              "power": 180,
              "efficiency": 0.711
            },
            {
              "power": 495,
              "efficiency": 0.806
            },
            {
              "power": 591,
              "efficiency": 0.838
            },
            {
              "power": 651,
              "efficiency": 0.848
            },
            {
              "power": 798,
              "efficiency": 0.865
            },
            {
              "power": 1140,
              "efficiency": 0.895
            },
            {
              "power": 1446,
              "efficiency": 0.913
            },
            {
              "power": 2274,
              "efficiency": 0.920
            },
            {
              "power": 2456,
              "efficiency": 0.920
            },
        {
              "power": 3009,
              "efficiency": 0.922
        },
        {
              "power": 4170,
              "efficiency": 0.921
            },
        {
              "power": 5298,
              "efficiency": 0.916
            },
        {
              "power": 6200,
              "efficiency": 0.910
            }
   ],
   "BvH inactive charge stages": [
            {
              "power": 7116,
              "efficiency": 0.906
            },
            {
              "power": 8100,
              "efficiency": 0.885
            },
        {
              "power": 9000,
              "efficiency": 0.80
            },
        {
              "power": 10500,
              "efficiency": 0.75
            }
   ],
   "discharge stages": [
            {
              "power": 0,
              "efficiency": 1
            },
            {
              "power": 117,
              "efficiency": 0.661
            },
            {
              "power": 192,
              "efficiency": 0.762
            },
            {
              "power": 315,
              "efficiency": 0.835
            },
            {
              "power": 579,
              "efficiency": 0.902
            },
            {
              "power": 837,
              "efficiency": 0.927
            },
            {
              "power": 1206,
              "efficiency": 0.941
            },
            {
              "power": 1467,
              "efficiency": 0.95
            },
            {
              "power": 1866,
              "efficiency": 0.957
            },
            {
              "power": 2262,
              "efficiency": 0.956
            },
            {
              "power": 3300,
              "efficiency": 0.956
            },
        {
              "power": 4398,
              "efficiency": 0.950
            },
        {
              "power": 5430,
              "efficiency": 0.944
            },
        {
              "power": 6564,
              "efficiency": 0.935
            },
            {
              "power": 7230,
              "efficiency": 0.929
            },
        {
              "power": 8235,
              "efficiency": 0.919
            }
          ],
    "BvH inactive discharge stages": [
            {
              "power": 9360,
              "efficiency": 0.909
            },
        {
              "power": 10312,
              "efficiency": 0.80
            },
            {
              "power": 11265,
              "efficiency": 0.75
            },
            {
              "power": 12378,
              "efficiency": 0.70
            }
        ],
          "minimum power": 300,
          "dc_to_bat efficiency": 0.98,
          "bat_to_dc efficiency": 0.98,
          "cycle cost": 0.005,
          "entity set power feedin": "input_number.batt_power_feedin",
          "entity set operating mode": "input_select.batt_operating_mode",
          "entity stop inverter": "input_datetime.batt_inverter_stop",
          "entity balance switch": "input_boolean.batt_balance_switch",
          "solar": [ ]
      }
  ],
  "solar": [ 
    {
      "name": "Growatt",
      "ml_prediction": "true",
      "entities sensors": "sensor.pv_opbrengst_huisdak",
      "max power": 7,
      "entity pv switch": "input_boolean.pv_huis_onoff"
    },
    {
      "name": "schuur zuid",
      "ml_prediction": "true",
      "entities sensors": "sensor.zuidkant_yieldtotal",
      "max power": 0.8,
      "entity pv switch": "input_boolean.pv_schuur_onoff"
    },
    {
      "name": "schuur midden",
      "ml_prediction": "true",
      "entities sensors": "sensor.midden_schuur_yieldtotal",
      "max power": 0.8,
      "entity pv switch": "input_boolean.pv_schuur_onoff"
    },
    {
      "name": "schuur noord",
      "ml_prediction": "true",
      "entities sensors": "sensor.noordkant_yieldtotal",
      "max power": 0.8,
      "entity pv switch": "input_boolean.pv_schuur_onoff"
    },
    {
      "name": "schuur platnoord",
      "ml_prediction": "true",
      "entities sensors": "sensor.schuur_opnoorden_yieldtotal",
      "max power": 0.8,      
      "entity pv switch": "input_boolean.pv_schuur_onoff"
    },
    {
      "name": "erker",
      "ml_prediction": "true",
      "entities sensors": "sensor.erker_yieldtotal",
      "max power": 0.5,      
      "entity pv switch": "input_boolean.pv_huis_onoff"
    },
    {
      "name": "aanbouw",
      "ml_prediction": "true",
      "entities sensors": "sensor.aanbouw_yieldtotal",
      "max power": 1.0,      
      "entity pv switch": "input_boolean.pv_huis_onoff"
    }
  ],
  "electric vehicle": [ 
    {
      "name": "Corsa-E",
      "capacity": 47.0,
      "entity max amperage": "input_number.ev_max_charge_amps",
      "entity position": "input_select.corsae_location",
      "entity instant start": "input_boolean.dao_nu_laden",
      "entity instant level": "input_number.dao_nu_laden_soc",
      "charge three phase": "False",
      "charge stages" : [
      {"ampere":  0, "efficiency" :  1},
            {"ampere":  6, "efficiency": 0.95},
            {"ampere":  7, "efficiency": 0.95},
            {"ampere":  8, "efficiency": 0.95},
            {"ampere": 18, "efficiency": 0.95},
            {"ampere": 21, "efficiency": 0.95},
            {"ampere": 24, "efficiency": 0.95},
            {"ampere": 27, "efficiency": 0.95},
      {"ampere": 30, "efficiency": 0.95},
            {"ampere": 33, "efficiency": 0.94},
            {"ampere": 36, "efficiency": 0.93},
            {"ampere": 39, "efficiency": 0.92},
            {"ampere": 42, "efficiency": 0.91},
            {"ampere": 45, "efficiency": 0.85},
            {"ampere": 48, "efficiency": 0.80}
      ],
      "entity actual level": "sensor.corsa_e_battery_percent",
      "entity plugged in": "binary_sensor.charger_pluggedin",
      "charge scheduler": {
        "entity set level": "input_number.ev_desired_chargelevel",
        "level margin": 1,
        "entity ready datetime": "input_datetime.charge_ready_datetime"
      },
      "charge switch": "input_boolean.corsae_charge_switch",
      "entity set charging ampere": "input_number.dao_laadpaal_amp"
    },
    {
      "name": "boiler",
      "capacity": 13.4,
      "entity max amperage": "input_number.ev_max_charge_amps",
      "entity position": "input_select.corsae_location",
      "charge three phase": "False",
      "charge stages" : [
        {"ampere":  0,  "efficiency":  1},
        {"ampere":  4,  "efficiency": 0.93 },
        {"ampere":  5,  "efficiency": 0.93 },
        {"ampere":  6,  "efficiency": 0.95 },
        {"ampere":  7,  "efficiency": 0.97 },
        {"ampere":  8,  "efficiency": 0.99 },
        {"ampere":  9,  "efficiency": 0.99 },
        {"ampere":  10,  "efficiency": 0.99 }
      ],
      "entity actual level": "sensor.boiler_boiler_temperature",
      "entity plugged in": "binary_sensor.electricity_cheaperthangas",
      "charge scheduler": {
        "entity set level": "input_number.boiler_desiredtemperature",
        "level margin": 1,
        "entity ready datetime": "input_datetime.dao_boiler_ready_datetime"
      },
      "charge switch": "input_boolean.dao_boiler_activate",
      "entity set charging ampere": "input_number.dao_boiler_ampsetpoint"
    }
  ],
  "machines" : [ ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.energy_consumption_tarif_1",
      "sensor.energy_consumption_tarif_2"
    ],
    "entities grid production": [
      "sensor.energy_production_tarif_1",
      "sensor.energy_production_tarif_2"
    ],
    "entities solar production ac": [
      "sensor.pv_opbrengst_huisdak",
      "sensor.noordkant_yieldtotal",
      "sensor.midden_schuur_yieldtotal",
      "sensor.zuidkant_yieldtotal",
      "sensor.schuur_opnoorden_yieldtotal",
      "sensor.aanbouw_yieldtotal",
      "sensor.erker_yieldtotal"
    ],
   "entities solar production dc": [],
    "entities ev consumption" : ["sensor.laadpaal_energieverbruik_kwh", "sensor.boiler_boiler_daily_energy"],
    "entities wp consumption" : ["sensor.warmtepomp_energieverbruik"],
    "entities machine consumption": [],
    "entities boiler consumption": [],
    "entities battery consumption": ["sensor.victron_energy_into_battery"],
    "entities battery production": ["sensor.victron_energy_from_battery"]  },
  "scheduler": {
    "active": "true",
    "0433": "get_meteo_data",
    "0930": "calc_baseloads",
    "1033": "get_meteo_data",
    "1633": "get_meteo_data",
    "2233": "get_meteo_data",
    "2235": "calc_baseloads",
    "xx55": "get_day_ahead_prices",
    "2359": "clean_data"
  }
}
DaBit schreef op dinsdag 30 december 2025 @ 19:41:
Dan zal ik ze weer terug zetten.

Nog geen resultaat overigens:


[...]


[...]
Om een of andere reden komen bij jou geen knmi- data binnen.
Ik zou alles maar weer terugzetten.
Even om te snappen waar het fout kan gaan:
Heb jij in HA de positie van je woning ingevoerd?
Zoja zou jij mij dan je coördinaten (latitude en longitude) per pm willen sturen?
Ik zal in de volgende rc de logging uitbreiden met het dichtsbijzijnde berekende weerstation.

Edit: je moet de "entities sensors" tussen [ ] zetten, het kunnen er meer zijn, dus het moet een lijst zijn

[ Voor 8% gewijzigd door KC27 op 30-12-2025 19:56 ]

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
Zie bericht.
En oeps, je hebt gelijk met die []. Ik zal zo eens proberen of dat het probleem oplost maar dat lijkt me los te staan van KNMI weerdata.

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
Dat doet het in ieder geval wat beter lijkt het.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
Home Run Reports Savings Solar Config
Voer een bewerking, berekening of actie uit door een van onderstaande onderdelen aan te klikken
 Optimaliseringsberekening met debug
 Optimaliseringsberekening zonder debug
 Verbruiksgegevens bij Tibber ophalen
 Meteoprognoses ophalen
 Day ahead prijzen ophalen prijzen_start 
jjjj-mm-dd
 prijzen_tot 
jjjj-mm-dd

 Bereken de baseloads
 ML modellen trainen
Logging van bewerking "ML modellen trainen":
2025-12-30 20:06:52 info: Day Ahead Optimalisering versie: 2025.12.2.rc2
2025-12-30 20:06:52 info: Day Ahead Optimalisering gestart op: 30-12-2025 20:06:52
2025-12-30 20:06:52 info: Day Ahead Optimalisatie gestart: 30-12-2025 20:06:52 taak: train_ml_predictions
2025-12-30 20:06:52 info: Er zijn knmi-data aanwezig tot 2025-12-29 00:00:00
2025-12-30 20:06:52 info: Er zijn geen aanvullende knmi-data beschikbaar
2025-12-30 20:06:54 info: Starting solar prediction model for Growatt (westkant) training...
2025-12-30 20:06:54 info: Loading and processing data...
2025-12-30 20:06:54 info: Merging weather and solar data...
2025-12-30 20:06:54 info: Merged dataset: 3970 records
2025-12-30 20:06:54 info: Date range: 2025-03-07 09:00:00+00:00 to 2025-12-28 15:00:00+00:00
2025-12-30 20:06:54 info: Detecting outliers...
2025-12-30 20:06:54 info: Outliers removed: 184 (4.6%)
2025-12-30 20:06:54 info: Clean dataset: 3786 records
2025-12-30 20:06:54 info: Training samples: 3028
2025-12-30 20:06:54 info: Testing samples: 758
2025-12-30 20:06:54 info: Tuning hyperparameters...
2025-12-30 20:07:05 info: Best parameters: {'learning_rate': 0.05, 'max_depth': 3, 'n_estimators': 100, 'subsample': 0.8}
2025-12-30 20:07:05 info: Training final model...
2025-12-30 20:07:05 info: Model training van Growatt (westkant) complete
2025-12-30 20:07:05 info: Model saved to: ../data/prediction/models/Growatt (westkant).pkl
2025-12-30 20:07:05 info: Training MAE: 0.2335 kWh
2025-12-30 20:07:05 info: Testing MAE: 0.1720 kWh
2025-12-30 20:07:05 info: Training R²: 0.9369
2025-12-30 20:07:05 info: Testing R²: 0.7923
2025-12-30 20:07:05 info: Sorted features:
2025-12-30 20:07:05 info:   1. irradiance: 0.932
2025-12-30 20:07:05 info:   2. month: 0.024
2025-12-30 20:07:05 info:   3. hour: 0.017
2025-12-30 20:07:05 info:   4. day_of_week: 0.011
2025-12-30 20:07:05 info:   5. quarter: 0.009
2025-12-30 20:07:05 info:   6. temperature: 0.008
2025-12-30 20:07:05 info:   7. season: 0.000
2025-12-30 20:07:06 info: Starting solar prediction model for schuur zuid training...
2025-12-30 20:07:06 info: Loading and processing data...
2025-12-30 20:07:06 info: Merging weather and solar data...
2025-12-30 20:07:06 info: Merged dataset: 4667 records
2025-12-30 20:07:06 info: Date range: 2024-12-30 09:00:00+00:00 to 2025-12-28 15:00:00+00:00
2025-12-30 20:07:06 info: Detecting outliers...
2025-12-30 20:07:06 info: Outliers removed: 144 (3.1%)
2025-12-30 20:07:06 info: Clean dataset: 4523 records
2025-12-30 20:07:06 info: Training samples: 3618
2025-12-30 20:07:06 info: Testing samples: 905
2025-12-30 20:07:06 info: Tuning hyperparameters...
2025-12-30 20:07:12 info: Best parameters: {'learning_rate': 0.05, 'max_depth': 6, 'n_estimators': 100, 'subsample': 0.9}
2025-12-30 20:07:12 info: Training final model...
2025-12-30 20:07:12 info: Model training van schuur zuid complete
2025-12-30 20:07:12 info: Model saved to: ../data/prediction/models/schuur zuid.pkl
2025-12-30 20:07:12 info: Training MAE: 0.0295 kWh
2025-12-30 20:07:12 info: Testing MAE: 0.0368 kWh
2025-12-30 20:07:12 info: Training R²: 0.9433
2025-12-30 20:07:12 info: Testing R²: 0.6216
2025-12-30 20:07:12 info: Sorted features:
2025-12-30 20:07:12 info:   1. irradiance: 0.714
2025-12-30 20:07:12 info:   2. quarter: 0.143
2025-12-30 20:07:12 info:   3. month: 0.053
2025-12-30 20:07:12 info:   4. hour: 0.044
2025-12-30 20:07:12 info:   5. day_of_week: 0.022
2025-12-30 20:07:12 info:   6. temperature: 0.020
2025-12-30 20:07:12 info:   7. season: 0.004
2025-12-30 20:07:12 info: Starting solar prediction model for schuur midden training...
2025-12-30 20:07:12 info: Loading and processing data...
2025-12-30 20:07:12 info: Merging weather and solar data...
2025-12-30 20:07:12 info: Merged dataset: 4655 records
2025-12-30 20:07:12 info: Date range: 2024-12-30 09:00:00+00:00 to 2025-12-28 15:00:00+00:00
2025-12-30 20:07:12 info: Detecting outliers...
2025-12-30 20:07:13 info: Outliers removed: 147 (3.2%)
2025-12-30 20:07:13 info: Clean dataset: 4508 records
2025-12-30 20:07:13 info: Training samples: 3606
2025-12-30 20:07:13 info: Testing samples: 902
2025-12-30 20:07:13 info: Tuning hyperparameters...
2025-12-30 20:07:19 info: Best parameters: {'learning_rate': 0.05, 'max_depth': 6, 'n_estimators': 100, 'subsample': 0.9}
2025-12-30 20:07:19 info: Training final model...
2025-12-30 20:07:19 info: Model training van schuur midden complete
2025-12-30 20:07:19 info: Model saved to: ../data/prediction/models/schuur midden.pkl
2025-12-30 20:07:19 info: Training MAE: 0.0291 kWh
2025-12-30 20:07:19 info: Testing MAE: 0.0329 kWh
2025-12-30 20:07:19 info: Training R²: 0.9424
2025-12-30 20:07:19 info: Testing R²: 0.6478
2025-12-30 20:07:19 info: Sorted features:
2025-12-30 20:07:19 info:   1. irradiance: 0.698
2025-12-30 20:07:19 info:   2. quarter: 0.170
2025-12-30 20:07:19 info:   3. month: 0.050
2025-12-30 20:07:19 info:   4. hour: 0.037
2025-12-30 20:07:19 info:   5. day_of_week: 0.023
2025-12-30 20:07:19 info:   6. temperature: 0.019
2025-12-30 20:07:19 info:   7. season: 0.004
2025-12-30 20:07:19 info: Starting solar prediction model for schuur noord training...
2025-12-30 20:07:19 info: Loading and processing data...
2025-12-30 20:07:19 info: Merging weather and solar data...
2025-12-30 20:07:19 info: Merged dataset: 4658 records
2025-12-30 20:07:19 info: Date range: 2024-12-30 09:00:00+00:00 to 2025-12-28 15:00:00+00:00
2025-12-30 20:07:19 info: Detecting outliers...
2025-12-30 20:07:19 info: Outliers removed: 135 (2.9%)
2025-12-30 20:07:19 info: Clean dataset: 4523 records
2025-12-30 20:07:19 info: Training samples: 3618
2025-12-30 20:07:19 info: Testing samples: 905
2025-12-30 20:07:19 info: Tuning hyperparameters...
2025-12-30 20:07:25 info: Best parameters: {'learning_rate': 0.05, 'max_depth': 6, 'n_estimators': 100, 'subsample': 0.9}
2025-12-30 20:07:25 info: Training final model...
2025-12-30 20:07:25 info: Model training van schuur noord complete
2025-12-30 20:07:25 info: Model saved to: ../data/prediction/models/schuur noord.pkl
2025-12-30 20:07:25 info: Training MAE: 0.0293 kWh
2025-12-30 20:07:25 info: Testing MAE: 0.0334 kWh
2025-12-30 20:07:25 info: Training R²: 0.9456
2025-12-30 20:07:25 info: Testing R²: 0.6425
2025-12-30 20:07:25 info: Sorted features:
2025-12-30 20:07:25 info:   1. irradiance: 0.738
2025-12-30 20:07:25 info:   2. quarter: 0.126
2025-12-30 20:07:25 info:   3. month: 0.055
2025-12-30 20:07:25 info:   4. hour: 0.035
2025-12-30 20:07:25 info:   5. day_of_week: 0.025
2025-12-30 20:07:25 info:   6. temperature: 0.019
2025-12-30 20:07:25 info:   7. season: 0.003
2025-12-30 20:07:26 info: Starting solar prediction model for schuur platnoord training...
2025-12-30 20:07:26 info: Loading and processing data...
2025-12-30 20:07:26 info: Merging weather and solar data...
2025-12-30 20:07:26 info: Merged dataset: 4670 records
2025-12-30 20:07:26 info: Date range: 2024-12-30 08:00:00+00:00 to 2025-12-28 15:00:00+00:00
2025-12-30 20:07:26 info: Detecting outliers...
2025-12-30 20:07:26 info: Outliers removed: 163 (3.5%)
2025-12-30 20:07:26 info: Clean dataset: 4507 records
2025-12-30 20:07:26 info: Training samples: 3605
2025-12-30 20:07:26 info: Testing samples: 902
2025-12-30 20:07:26 info: Tuning hyperparameters...
2025-12-30 20:07:32 info: Best parameters: {'learning_rate': 0.05, 'max_depth': 6, 'n_estimators': 100, 'subsample': 0.9}
2025-12-30 20:07:32 info: Training final model...
2025-12-30 20:07:32 info: Model training van schuur platnoord complete
2025-12-30 20:07:32 info: Model saved to: ../data/prediction/models/schuur platnoord.pkl
2025-12-30 20:07:32 info: Training MAE: 0.0271 kWh
2025-12-30 20:07:32 info: Testing MAE: 0.0251 kWh
2025-12-30 20:07:32 info: Training R²: 0.9464
2025-12-30 20:07:32 info: Testing R²: 0.3934
2025-12-30 20:07:32 info: Sorted features:
2025-12-30 20:07:32 info:   1. irradiance: 0.683
2025-12-30 20:07:32 info:   2. quarter: 0.182
2025-12-30 20:07:32 info:   3. month: 0.060
2025-12-30 20:07:32 info:   4. hour: 0.029
2025-12-30 20:07:32 info:   5. temperature: 0.022
2025-12-30 20:07:32 info:   6. day_of_week: 0.019
2025-12-30 20:07:32 info:   7. season: 0.004
2025-12-30 20:07:33 info: Starting solar prediction model for erker training...
2025-12-30 20:07:33 info: Loading and processing data...
2025-12-30 20:07:33 info: Merging weather and solar data...
2025-12-30 20:07:33 info: Merged dataset: 4640 records
2025-12-30 20:07:33 info: Date range: 2024-12-30 09:00:00+00:00 to 2025-12-28 15:00:00+00:00
2025-12-30 20:07:33 info: Detecting outliers...
2025-12-30 20:07:33 info: Outliers removed: 91 (2.0%)
2025-12-30 20:07:33 info: Clean dataset: 4549 records
2025-12-30 20:07:33 info: Training samples: 3639
2025-12-30 20:07:33 info: Testing samples: 910
2025-12-30 20:07:33 info: Tuning hyperparameters...
2025-12-30 20:07:39 info: Best parameters: {'learning_rate': 0.05, 'max_depth': 3, 'n_estimators': 200, 'subsample': 0.8}
2025-12-30 20:07:39 info: Training final model...
2025-12-30 20:07:40 info: Model training van erker complete
2025-12-30 20:07:40 info: Model saved to: ../data/prediction/models/erker.pkl
2025-12-30 20:07:40 info: Training MAE: 0.0175 kWh
2025-12-30 20:07:40 info: Testing MAE: 0.0111 kWh
2025-12-30 20:07:40 info: Training R²: 0.8864
2025-12-30 20:07:40 info: Testing R²: 0.6711
2025-12-30 20:07:40 info: Sorted features:
2025-12-30 20:07:40 info:   1. hour: 0.536
2025-12-30 20:07:40 info:   2. irradiance: 0.364
2025-12-30 20:07:40 info:   3. month: 0.036
2025-12-30 20:07:40 info:   4. season: 0.020
2025-12-30 20:07:40 info:   5. temperature: 0.019
2025-12-30 20:07:40 info:   6. quarter: 0.012
2025-12-30 20:07:40 info:   7. day_of_week: 0.012
2025-12-30 20:07:40 info: Starting solar prediction model for aanbouw training...
2025-12-30 20:07:40 info: Loading and processing data...
2025-12-30 20:07:40 info: Merging weather and solar data...
2025-12-30 20:07:40 info: Merged dataset: 4666 records
2025-12-30 20:07:40 info: Date range: 2024-12-30 09:00:00+00:00 to 2025-12-28 15:00:00+00:00
2025-12-30 20:07:40 info: Detecting outliers...
2025-12-30 20:07:40 info: Outliers removed: 125 (2.7%)
2025-12-30 20:07:40 info: Clean dataset: 4541 records
2025-12-30 20:07:40 info: Training samples: 3632
2025-12-30 20:07:40 info: Testing samples: 909
2025-12-30 20:07:40 info: Tuning hyperparameters...
2025-12-30 20:07:46 info: Best parameters: {'learning_rate': 0.1, 'max_depth': 4, 'n_estimators': 100, 'subsample': 0.8}
2025-12-30 20:07:46 info: Training final model...
2025-12-30 20:07:46 info: Model training van aanbouw complete
2025-12-30 20:07:46 info: Model saved to: ../data/prediction/models/aanbouw.pkl
2025-12-30 20:07:46 info: Training MAE: 0.0280 kWh
2025-12-30 20:07:46 info: Testing MAE: 0.0238 kWh
2025-12-30 20:07:46 info: Training R²: 0.9388
2025-12-30 20:07:46 info: Testing R²: 0.6170
2025-12-30 20:07:46 info: Sorted features:
2025-12-30 20:07:46 info:   1. hour: 0.498
2025-12-30 20:07:46 info:   2. irradiance: 0.363
2025-12-30 20:07:46 info:   3. month: 0.050
2025-12-30 20:07:46 info:   4. quarter: 0.041
2025-12-30 20:07:46 info:   5. day_of_week: 0.020
2025-12-30 20:07:46 info:   6. temperature: 0.016
2025-12-30 20:07:46 info:   7. season: 0.013
 © 2025: Apache 2.0  Day Ahead Optimizer version: 2025.12.2.rc2
Noot: ik heb het huisdak (Growatt) wat bestaat uit 2 strings op oost/west voor het ML-model samengevoegd want maar 1 opbrengst-entiteit. Dat waren origineel 2 losse entries met verschillende orientatie.

  • Dapdodo
  • Registratie: Mei 2019
  • Laatst online: 21:51
DaBit schreef op dinsdag 30 december 2025 @ 20:11:
Noot: ik heb het huisdak (Growatt) wat bestaat uit 2 strings op oost/west voor het ML-model samengevoegd want maar 1 opbrengst-entiteit. Dat waren origineel 2 losse entries met verschillende orientatie.
Meer lijkt me ook niet nodig, met ML model.
DaBit schreef op dinsdag 30 december 2025 @ 20:03:
Zie bericht.
En oeps, je hebt gelijk met die []. Ik zal zo eens proberen of dat het probleem oplost maar dat lijkt me los te staan van KNMI weerdata.
Oh hij doet het nou wel!!
Ja, die haken waren ook nodig om de gemeten solar productie te kunnen bepalen. Daar ging het dus fout.
Die knmi-data zijn er nu ook.
Ik zie nog wel een groot verschil in nauwkeurigheid (r² hoe dichter bij 1 hoe beter) tussen de training-data en de test-data. @simnet en ik moeten nog echt aan de bak om het model te verbeteren.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer

KC27 schreef op dinsdag 30 december 2025 @ 20:45:
[...]

Oh hij doet het nou wel!!
Ja, die haken waren ook nodig om de gemeten solar productie te kunnen bepalen, die zijn nodig om het model te trainen. Daar ging het dus fout.
Die knmi-data zijn er nu ook.
Ik zie nog wel een groot verschil in nauwkeurigheid (r² hoe dichter bij 1 hoe beter) tussen de training-data en de test-data. @simnet en ik moeten nog echt aan de bak om het model te verbeteren.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
Zit het spul niet ergens een factor mis?

Afbeeldingslocatie: https://tweakers.net/i/ShHIy7Nlb3V1qj_T4tXckiQ4gFY=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/t56LDGlmX9l9QfY1ZkKc0rtl.png?f=user_large

Volgens mij is dit van 'Schuur zuid'; een andere bron lijk ik niet te kunnen kiezen onder het 'Solar' kopje.

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
En er ploft nog wat als ik een berekening wil doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
Logging van bewerking "Optimaliseringsberekening zonder debug":
2025-12-30 21:11:05 info: Day Ahead Optimalisering versie: 2025.12.2.rc2
2025-12-30 21:11:05 info: Day Ahead Optimalisering gestart op: 30-12-2025 21:11:05
2025-12-30 21:11:05 info: Day Ahead Optimalisatie gestart: 30-12-2025 21:11:05 taak: calc_optimum
2025-12-30 21:11:05 info: Debug = False
2025-12-30 21:11:05 info: Zelf berekende baseload
2025-12-30 21:11:05 info: ML prediction Growatt
                   date_time  prediction
0  2025-12-30 21:00:00+01:00       0.121
1  2025-12-30 22:00:00+01:00       0.121
2  2025-12-30 23:00:00+01:00       0.121
3  2025-12-31 00:00:00+01:00       0.121
4  2025-12-31 01:00:00+01:00       0.010
5  2025-12-31 02:00:00+01:00       0.010
6  2025-12-31 03:00:00+01:00       0.010
7  2025-12-31 04:00:00+01:00       0.010
8  2025-12-31 05:00:00+01:00       0.010
9  2025-12-31 06:00:00+01:00       0.010
10 2025-12-31 07:00:00+01:00       0.050
11 2025-12-31 08:00:00+01:00       0.057
12 2025-12-31 09:00:00+01:00       0.089
13 2025-12-31 10:00:00+01:00       0.451
14 2025-12-31 11:00:00+01:00       0.584
15 2025-12-31 12:00:00+01:00       1.334
16 2025-12-31 13:00:00+01:00       1.079
17 2025-12-31 14:00:00+01:00       0.910
18 2025-12-31 15:00:00+01:00       0.575
19 2025-12-31 16:00:00+01:00       0.110
20 2025-12-31 17:00:00+01:00       0.116
21 2025-12-31 18:00:00+01:00       0.121
22 2025-12-31 19:00:00+01:00       0.121
23 2025-12-31 20:00:00+01:00       0.121
24 2025-12-31 21:00:00+01:00       0.121
25 2025-12-31 22:00:00+01:00       0.121
26 2025-12-31 23:00:00+01:00       0.121
2025-12-30 21:11:05 info: ML prediction schuur zuid
                   date_time  prediction
0  2025-12-30 21:00:00+01:00       0.004
1  2025-12-30 22:00:00+01:00       0.004
2  2025-12-30 23:00:00+01:00       0.004
3  2025-12-31 00:00:00+01:00       0.004
4  2025-12-31 01:00:00+01:00       0.000
5  2025-12-31 02:00:00+01:00       0.000
6  2025-12-31 03:00:00+01:00       0.000
7  2025-12-31 04:00:00+01:00       0.000
8  2025-12-31 05:00:00+01:00       0.000
9  2025-12-31 06:00:00+01:00       0.001
10 2025-12-31 07:00:00+01:00       0.002
11 2025-12-31 08:00:00+01:00       0.003
12 2025-12-31 09:00:00+01:00       0.004
13 2025-12-31 10:00:00+01:00       0.047
14 2025-12-31 11:00:00+01:00       0.072
15 2025-12-31 12:00:00+01:00       0.170
16 2025-12-31 13:00:00+01:00       0.115
17 2025-12-31 14:00:00+01:00       0.104
18 2025-12-31 15:00:00+01:00       0.062
19 2025-12-31 16:00:00+01:00       0.008
20 2025-12-31 17:00:00+01:00       0.006
21 2025-12-31 18:00:00+01:00       0.005
22 2025-12-31 19:00:00+01:00       0.004
23 2025-12-31 20:00:00+01:00       0.004
24 2025-12-31 21:00:00+01:00       0.004
25 2025-12-31 22:00:00+01:00       0.005
26 2025-12-31 23:00:00+01:00       0.005
2025-12-30 21:11:05 info: ML prediction schuur midden
                   date_time  prediction
0  2025-12-30 21:00:00+01:00       0.005
1  2025-12-30 22:00:00+01:00       0.005
2  2025-12-30 23:00:00+01:00       0.005
3  2025-12-31 00:00:00+01:00       0.005
4  2025-12-31 01:00:00+01:00       0.001
5  2025-12-31 02:00:00+01:00       0.001
6  2025-12-31 03:00:00+01:00       0.001
7  2025-12-31 04:00:00+01:00       0.001
8  2025-12-31 05:00:00+01:00       0.001
9  2025-12-31 06:00:00+01:00       0.001
10 2025-12-31 07:00:00+01:00       0.003
11 2025-12-31 08:00:00+01:00       0.003
12 2025-12-31 09:00:00+01:00       0.006
13 2025-12-31 10:00:00+01:00       0.042
14 2025-12-31 11:00:00+01:00       0.063
15 2025-12-31 12:00:00+01:00       0.175
16 2025-12-31 13:00:00+01:00       0.126
17 2025-12-31 14:00:00+01:00       0.099
18 2025-12-31 15:00:00+01:00       0.058
19 2025-12-31 16:00:00+01:00       0.010
20 2025-12-31 17:00:00+01:00       0.008
21 2025-12-31 18:00:00+01:00       0.006
22 2025-12-31 19:00:00+01:00       0.005
23 2025-12-31 20:00:00+01:00       0.005
24 2025-12-31 21:00:00+01:00       0.005
25 2025-12-31 22:00:00+01:00       0.005
26 2025-12-31 23:00:00+01:00       0.005
2025-12-30 21:11:05 info: ML prediction schuur noord
                   date_time  prediction
0  2025-12-30 21:00:00+01:00       0.004
1  2025-12-30 22:00:00+01:00       0.004
2  2025-12-30 23:00:00+01:00       0.004
3  2025-12-31 00:00:00+01:00       0.004
4  2025-12-31 01:00:00+01:00       0.000
5  2025-12-31 02:00:00+01:00       0.000
6  2025-12-31 03:00:00+01:00       0.000
7  2025-12-31 04:00:00+01:00       0.000
8  2025-12-31 05:00:00+01:00       0.000
9  2025-12-31 06:00:00+01:00       0.000
10 2025-12-31 07:00:00+01:00       0.001
11 2025-12-31 08:00:00+01:00       0.001
12 2025-12-31 09:00:00+01:00       0.003
13 2025-12-31 10:00:00+01:00       0.048
14 2025-12-31 11:00:00+01:00       0.066
15 2025-12-31 12:00:00+01:00       0.165
16 2025-12-31 13:00:00+01:00       0.121
17 2025-12-31 14:00:00+01:00       0.108
18 2025-12-31 15:00:00+01:00       0.063
19 2025-12-31 16:00:00+01:00       0.009
20 2025-12-31 17:00:00+01:00       0.005
21 2025-12-31 18:00:00+01:00       0.003
22 2025-12-31 19:00:00+01:00       0.003
23 2025-12-31 20:00:00+01:00       0.003
24 2025-12-31 21:00:00+01:00       0.003
25 2025-12-31 22:00:00+01:00       0.004
26 2025-12-31 23:00:00+01:00       0.004
2025-12-30 21:11:05 info: ML prediction schuur platnoord
                   date_time  prediction
0  2025-12-30 21:00:00+01:00       0.002
1  2025-12-30 22:00:00+01:00       0.002
2  2025-12-30 23:00:00+01:00       0.002
3  2025-12-31 00:00:00+01:00       0.002
4  2025-12-31 01:00:00+01:00       0.000
5  2025-12-31 02:00:00+01:00       0.000
6  2025-12-31 03:00:00+01:00       0.000
7  2025-12-31 04:00:00+01:00       0.000
8  2025-12-31 05:00:00+01:00       0.000
9  2025-12-31 06:00:00+01:00       0.000
10 2025-12-31 07:00:00+01:00       0.001
11 2025-12-31 08:00:00+01:00       0.001
12 2025-12-31 09:00:00+01:00       0.005
13 2025-12-31 10:00:00+01:00       0.060
14 2025-12-31 11:00:00+01:00       0.090
15 2025-12-31 12:00:00+01:00       0.165
16 2025-12-31 13:00:00+01:00       0.123
17 2025-12-31 14:00:00+01:00       0.103
18 2025-12-31 15:00:00+01:00       0.074
19 2025-12-31 16:00:00+01:00       0.007
20 2025-12-31 17:00:00+01:00       0.005
21 2025-12-31 18:00:00+01:00       0.004
22 2025-12-31 19:00:00+01:00       0.003
23 2025-12-31 20:00:00+01:00       0.003
24 2025-12-31 21:00:00+01:00       0.003
25 2025-12-31 22:00:00+01:00       0.003
26 2025-12-31 23:00:00+01:00       0.003
2025-12-30 21:11:05 info: ML prediction erker
                   date_time  prediction
0  2025-12-30 21:00:00+01:00       0.001
1  2025-12-30 22:00:00+01:00       0.001
2  2025-12-30 23:00:00+01:00       0.001
3  2025-12-31 00:00:00+01:00       0.001
4  2025-12-31 01:00:00+01:00       0.000
5  2025-12-31 02:00:00+01:00       0.000
6  2025-12-31 03:00:00+01:00       0.000
7  2025-12-31 04:00:00+01:00       0.000
8  2025-12-31 05:00:00+01:00       0.000
9  2025-12-31 06:00:00+01:00       0.000
10 2025-12-31 07:00:00+01:00       0.003
11 2025-12-31 08:00:00+01:00       0.002
12 2025-12-31 09:00:00+01:00       0.003
13 2025-12-31 10:00:00+01:00       0.016
14 2025-12-31 11:00:00+01:00       0.023
15 2025-12-31 12:00:00+01:00       0.058
16 2025-12-31 13:00:00+01:00       0.041
17 2025-12-31 14:00:00+01:00       0.034
18 2025-12-31 15:00:00+01:00       0.025
19 2025-12-31 16:00:00+01:00       0.005
20 2025-12-31 17:00:00+01:00       0.002
21 2025-12-31 18:00:00+01:00       0.001
22 2025-12-31 19:00:00+01:00       0.001
23 2025-12-31 20:00:00+01:00       0.001
24 2025-12-31 21:00:00+01:00       0.001
25 2025-12-31 22:00:00+01:00       0.001
26 2025-12-31 23:00:00+01:00       0.001
2025-12-30 21:11:05 info: ML prediction aanbouw
                   date_time  prediction
0  2025-12-30 21:00:00+01:00       0.006
1  2025-12-30 22:00:00+01:00       0.006
2  2025-12-30 23:00:00+01:00       0.006
3  2025-12-31 00:00:00+01:00       0.006
4  2025-12-31 01:00:00+01:00       0.000
5  2025-12-31 02:00:00+01:00       0.000
6  2025-12-31 03:00:00+01:00       0.000
7  2025-12-31 04:00:00+01:00       0.000
8  2025-12-31 05:00:00+01:00       0.000
9  2025-12-31 06:00:00+01:00       0.000
10 2025-12-31 07:00:00+01:00       0.000
11 2025-12-31 08:00:00+01:00       0.003
12 2025-12-31 09:00:00+01:00       0.008
13 2025-12-31 10:00:00+01:00       0.041
14 2025-12-31 11:00:00+01:00       0.058
15 2025-12-31 12:00:00+01:00       0.083
16 2025-12-31 13:00:00+01:00       0.079
17 2025-12-31 14:00:00+01:00       0.078
18 2025-12-31 15:00:00+01:00       0.050
19 2025-12-31 16:00:00+01:00       0.008
20 2025-12-31 17:00:00+01:00       0.009
21 2025-12-31 18:00:00+01:00       0.009
22 2025-12-31 19:00:00+01:00       0.008
23 2025-12-31 20:00:00+01:00       0.008
24 2025-12-31 21:00:00+01:00       0.008
25 2025-12-31 22:00:00+01:00       0.008
26 2025-12-31 23:00:00+01:00       0.008
2025-12-30 21:11:05 fout: Er is een fout opgetreden, zie de fout-tracering
Traceback (most recent call last):
  File "/root/dao/prog/da_base.py", line 647, in run_task_function
    getattr(self, run_task["function"])()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/webserver/../prog/day_ahead.py", line 294, in calc_optimum
    prod = max(0,getattr(row, self.solar[s]["name"])) * interval_fraction[-1]
                 ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Pandas' object has no attribute 'schuur zuid'
Traceback (most recent call last):
  File "/root/dao/webserver/../prog/day_ahead.py", line 4509, in <module>
    main()
    ~~~~^^
  File "/root/dao/webserver/../prog/day_ahead.py", line 4482, in main
    da_calc.run_task_function("calc_optimum")
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/root/dao/prog/da_base.py", line 647, in run_task_function
    getattr(self, run_task["function"])()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/webserver/../prog/day_ahead.py", line 294, in calc_optimum
    prod = max(0,getattr(row, self.solar[s]["name"])) * interval_fraction[-1]
                 ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Pandas' object has no attribute 'schuur zuid'
edit:
Het lijkt erop dat-ie niet blij is met spatie in "name": "schuur zuid". Even wat proberen, momentje...
DaBit schreef op dinsdag 30 december 2025 @ 21:13:
En er ploft nog wat als ik een berekening wil doen:


[...]
edit:
Het lijkt erop dat-ie niet blij is met spatie in "name": "schuur zuid". Even wat proberen, momentje...
Lees de changelog goed: rtfm 😉
Er mag geen spatie in de naam. En iedere naam moet uniek zijn!

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Kees Schilder
  • Registratie: April 2005
  • Laatst online: 20:50
Is het gebruik van ML voor het inschatten van de zonnepanelenopbrengst ook uit te breiden naar verwarming en boiler?

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
Die spatie stond niet in de changelog
(name must be present and unique in all your solar-device (also the pv_dc devices))

Goed, een paar resultaten. Beslis zelf maar wat je eraan hebt.
Ik heb op mijn schuurdak onder andere een drietal rijen van 2 panelen staan, gericht op het zuiden, onder een hoek van 35 verticaal graden, op micro-omvormers. Die micro-omvormers zijn schuurzuid, schuurmidden, schuurnoord.

In lente/zomer doen die rijen allemaal ongeveer evenveel. Rond deze tijd echter is de afstand tussen die rijen aan de krappe kant dus ze werpen schaduw op elkaar en vangt het ook schaduw van andere gebouwen als de zon zo laag staat. Dus zuid doet nog redelijk wat, midden/noord niet.

Plaatje:
Afbeeldingslocatie: https://tweakers.net/i/xkI6eUBfVELsk7OR8NdyB9RyqYg=/800x/filters:strip_exif()/f/image/d7kePAEnbrA95MX2Ol2rjtqy.png?f=fotoalbum_large

Waarom de 26e? De straling op die dag is een mooie sinc-achtige vorm en nog best wel wat ook.

Dan de ML-voorspellingen.
Zuid:
Afbeeldingslocatie: https://tweakers.net/i/tD8GalBasx5pJ6duQyire1R3pTY=/800x/filters:strip_exif()/f/image/6DiauINg3phCogPTSLm9qvcc.png?f=fotoalbum_large

Midden:
Afbeeldingslocatie: https://tweakers.net/i/CAI1o5gyN_e8LzghmncSOspkVsk=/800x/filters:strip_exif()/f/image/9SduRDPOqMelNihnkNb9n0JX.png?f=fotoalbum_large

Zuid is de meest consistente over het jaar maar die wordt behoorlijk onderschat wat ik niet zou verwachten. Midden is een knap vervelende rond deze tijd maar die klopt beter. Ook wel vreemd; zo goed kun je die schaduwwerking niet voorspellen met die paar duizend datapunten verdeeld over een jaar tijd.
Ik laat de analyse maar aan jullie over.

  • simnet
  • Registratie: Januari 2020
  • Laatst online: 22:12
KC27 schreef op dinsdag 30 december 2025 @ 20:45:
[...]

Oh hij doet het nou wel!!
Ja, die haken waren ook nodig om de gemeten solar productie te kunnen bepalen. Daar ging het dus fout.
Die knmi-data zijn er nu ook.
Ik zie nog wel een groot verschil in nauwkeurigheid (r² hoe dichter bij 1 hoe beter) tussen de training-data en de test-data. @simnet en ik moeten nog echt aan de bak om het model te verbeteren.
Ik heb hem zelf nog niet kunnen testen. Maar er zijn een aantal knoppen waar we aan kunnen draaien:

- toevoegen van features om beter de seaonality te leren (dus bijvoorbeeld weeknummer toevoegen i.p.v. day_of_week (aangezien maandag of woensdag helemaal niets zegt over opwek).

- meer opties toevoegen aan de hyperparameter tuning ten koste van de trainingtijd. Of mensen zelf de hyperparameters laten opgeven, maar ik denk dat autotuning voor de meeste mensen beter is.

- test en trainingset (voor de tuning) in kleinere stukken hakken zodat je meer seaonality ziet, maar hier heb je weer liever langere termijn dan maar een jaar.

Daarnaast is de daterange (2025-03-07 09:00:00+00:00 to 2025-12-28) te kort. Hier mist eigenlijk het hele winterseizoen aan trainings data. Een enkel jaar is al krap aan, maar minder dan een jaar eigenlijk te weinig. Het liefst heb je meerdere jaren, maar ik kan me voorstellen dat veel mensen die historische data niet hebben.
DaBit schreef op dinsdag 30 december 2025 @ 22:00:
Die spatie stond niet in de changelog
(name must be present and unique in all your solar-device (also the pv_dc devices))
Sorry, mijn fout.
Ik dacht dat ik het wel had opgeschreven.
Goed, een paar resultaten. Beslis zelf maar wat je eraan hebt.
Ik heb op mijn schuurdak onder andere een drietal rijen van 2 panelen staan, gericht op het zuiden, onder een hoek van 35 verticaal graden, op micro-omvormers. Die micro-omvormers zijn schuurzuid, schuurmidden, schuurnoord.

In lente/zomer doen die rijen allemaal ongeveer evenveel. Rond deze tijd echter is de afstand tussen die rijen aan de krappe kant dus ze werpen schaduw op elkaar en vangt het ook schaduw van andere gebouwen als de zon zo laag staat. Dus zuid doet nog redelijk wat, midden/noord niet.

Plaatje:
[Afbeelding]

Waarom de 26e? De straling op die dag is een mooie sinc-achtige vorm en nog best wel wat ook.

Dan de ML-voorspellingen.
Zuid:
[Afbeelding]

Midden:
[Afbeelding]

Zuid is de meest consistente over het jaar maar die wordt behoorlijk onderschat wat ik niet zou verwachten. Midden is een knap vervelende rond deze tijd maar die klopt beter. Ook wel vreemd; zo goed kun je die schaduwwerking niet voorspellen met die paar duizend datapunten verdeeld over een jaar tijd.
Ik laat de analyse maar aan jullie over.
Net zoals @simnet zegt: het werkt eigenlijk pas goed als je minimaal data van een jaar hebt.
Mijn model heb ik met data van een jaar kunnen trainen.
In de zomer werkt de ml-voorspelling beter:
Afbeeldingslocatie: https://tweakers.net/i/tod4C3rLLC2wxHFz4OOG1R7LBuU=/800x/filters:strip_exif()/f/image/XrWJ6tLQ3749WlRz9BiAgnHV.png?f=fotoalbum_large
Ik woon hier aan de bosrand en pas vanaf 10 uur komen mijn panelen in de zon.
De DAO-berekening snapt dat (nog) niet, maar de ml-berekening heeft dat al in het snotje.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Impossibl3
  • Registratie: November 2012
  • Laatst online: 13-01 21:29
@KC27 je hebt jaardata in HA nodig of in DAO? Want in HA heb ik zat aan data zitten om de ML te trainen. Maar in DAO nog niet.

PV 5.590 Wp Enphase, 2.700 Wp Growatt - Easee laadpaal - Itho Amber 95 WP


  • simnet
  • Registratie: Januari 2020
  • Laatst online: 22:12
Impossibl3 schreef op dinsdag 30 december 2025 @ 23:26:
@KC27 je hebt jaardata in HA nodig of in DAO? Want in HA heb ik zat aan data zitten om de ML te trainen. Maar in DAO nog niet.
DAO kan missende data aanvullen met KNMI waardes. Dit zijn welliswaar gemeten waardes en minder goed dan prognose data, maar het belangrijkste is om de data van HA te hebben over je opwek.

  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:18
Ik heb 2025.12.2.rc2 geinstalleerd en de productie database gekopieerd. Mijn database gaat terug tot 20 maart 2025. Ik krijg deze foutmelding:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
2025-12-31 08:56:01 info: Day Ahead Optimalisering versie: 2025.12.2.rc2
2025-12-31 08:56:01 info: Day Ahead Optimalisering gestart op: 31-12-2025 08:56:01
2025-12-31 08:56:01 info: Day Ahead Optimalisatie gestart: 31-12-2025 08:56:01 taak: train_ml_predictions
2025-12-31 08:56:01 info: Er zijn knmi-data aanwezig tot 2025-12-30 00:00:00
2025-12-31 08:56:01 info: Er zijn geen aanvullende knmi-data beschikbaar
2025-12-31 08:56:02 fout: Er is een fout opgetreden, zie de fout-tracering
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/pandas/core/indexes/base.py", line 3812, in get_loc
    return self._engine.get_loc(casted_key)
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "pandas/_libs/index.pyx", line 167, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 196, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 7088, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 7096, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'utc'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/dao/prog/da_base.py", line 647, in run_task_function
    getattr(self, run_task["function"])()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/da_base.py", line 592, in train_ml_predictions
    solar_predictor.run_train()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/solar_predictor.py", line 883, in run_train
    self.train_solar_option(weather_data, solar_option, start)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/prog/solar_predictor.py", line 863, in train_solar_option
    solar_data = self.get_solar_data(start=start, entities=self.solar_entities)
  File "/root/dao/prog/solar_predictor.py", line 849, in get_solar_data
    df_solar["utc"] = pd.to_datetime(df_solar["utc"], unit="s", utc=True)
                                     ~~~~~~~~^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/pandas/core/frame.py", line 4113, in __getitem__
    indexer = self.columns.get_loc(key)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/pandas/core/indexes/base.py", line 3819, in get_loc
    raise KeyError(key) from err
KeyError: 'utc'
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/pandas/core/indexes/base.py", line 3812, in get_loc
    return self._engine.get_loc(casted_key)
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "pandas/_libs/index.pyx", line 167, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 196, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 7088, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 7096, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'utc'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/dao/webserver/../prog/day_ahead.py", line 4509, in <module>
    main()
    ~~~~^^
  File "/root/dao/webserver/../prog/day_ahead.py", line 4503, in main
    da_calc.run_task_function("train_ml_predictions")
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/prog/da_base.py", line 647, in run_task_function
    getattr(self, run_task["function"])()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/da_base.py", line 592, in train_ml_predictions
    solar_predictor.run_train()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/solar_predictor.py", line 883, in run_train
    self.train_solar_option(weather_data, solar_option, start)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/prog/solar_predictor.py", line 863, in train_solar_option
    solar_data = self.get_solar_data(start=start, entities=self.solar_entities)
  File "/root/dao/prog/solar_predictor.py", line 849, in get_solar_data
    df_solar["utc"] = pd.to_datetime(df_solar["utc"], unit="s", utc=True)
                                     ~~~~~~~~^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/pandas/core/frame.py", line 4113, in __getitem__
    indexer = self.columns.get_loc(key)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/pandas/core/indexes/base.py", line 3819, in get_loc
    raise KeyError(key) from err
KeyError: 'utc'
Relevante config:
code:
1
2
3
4
5
6
7
8
9
10
11
"solar": [
        {
            "name": "1.0.1",
            "tilt": 10,
            "orientation": 146,
            "capacity": 0.405,
            "ml_prediction": "true",
            "entities sensors": "sensor.lifetime_energy_1_0_1",
            "yield": 0.000931658,
            "max power": 0.5
        }

Ik heb mijn panelen nu individueel er in zitten, dus nog een paar. Misschien moet ik dat voor deze toepassing eens samenvoegen.

[ Voor 0% gewijzigd door balk op 31-12-2025 09:00 . Reden: max power toegevoegd. Maakte geen verschil ]

balk schreef op woensdag 31 december 2025 @ 08:57:
Ik heb 2025.12.2.rc2 geinstalleerd en de productie database gekopieerd. Mijn database gaat terug tot 20 maart 2025. Ik krijg deze foutmelding:

[...]

Relevante config:
code:
1
2
3
4
5
6
7
8
9
10
"solar": [
        {
            "name": "1.0.1",
            "tilt": 10,
            "orientation": 146,
            "capacity": 0.405,
            "ml_prediction": "true",
            "entities sensors": "sensor.lifetime_energy_1_0_1",
            "yield": 0.000931658
        }

Ik heb mijn panelen nu individueel er in zitten, dus nog een paar. Misschien moet ik dat voor deze toepassing eens samenvoegen.
De sensors moeten tussen [ ], het is een lijst.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
simnet schreef op dinsdag 30 december 2025 @ 22:47:
Daarnaast is de daterange (2025-03-07 09:00:00+00:00 to 2025-12-28) te kort. Hier mist eigenlijk het hele winterseizoen aan trainings data. Een enkel jaar is al krap aan, maar minder dan een jaar eigenlijk te weinig.
Dat geld bij mij voor die Growatt/huisdak (die data is er wel maar dan moet ik meerdere HA sensoren combineren; uitlezing omvormer is een keer veranderd). Voor de schuur zuid/midden/noord geld dat niet; die hebben wel meer dan een jaar aan data.

  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:18
KC27 schreef op woensdag 31 december 2025 @ 09:00:
[...]

De sensors moeten tussen [ ], het is een lijst.
Thanks, dat werkt. Model traint. Als ik nu op menu Solar klik krijg ik een internal server error. Geen regels in de log.
--edit--
Model:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
2025-12-31 09:10:52 info: Model saved to: ../data/prediction/models/Solaredge.pkl
2025-12-31 09:10:52 info: Training MAE: 0.0806 kWh
2025-12-31 09:10:52 info: Testing MAE: 0.0570 kWh
2025-12-31 09:10:52 info: Training R²: 0.9559
2025-12-31 09:10:52 info: Testing R²: 0.8618
2025-12-31 09:10:52 info: Sorted features:
2025-12-31 09:10:52 info:   1. irradiance: 0.849
2025-12-31 09:10:52 info:   2. hour: 0.085
2025-12-31 09:10:52 info:   3. quarter: 0.032
2025-12-31 09:10:52 info:   4. month: 0.014
2025-12-31 09:10:52 info:   5. season: 0.008
2025-12-31 09:10:52 info:   6. temperature: 0.008
2025-12-31 09:10:52 info:   7. day_of_week: 0.004

--edit2--
aha, na het trainen moet je eerst de berekening doen. Dat is op zich wel logisch :) nu werkt het wel

[ Voor 59% gewijzigd door balk op 31-12-2025 09:20 . Reden: model ]


  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:18
Als ik terug ga in het Solar menu naar 2025-06-26 of eerder dan krijg ik een Internal Server Error. Ik heb alle solar data beschikbaar in Home Assistant en mijn DAO database gaat terug naar maart 2025.
--log--
En daarbij krijg ik wel een error in de log:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[2025-12-31 09:31:37,364] fout in app: Exception on / [POST]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 263, in menu
    return solar()
  File "/root/dao/webserver/app/routes.py", line 595, in solar
    report_df = report.calc_solar_data(solar_items[active_subject], active_date, active_view)
  File "/root/dao/prog/da_report.py", line 3003, in calc_solar_data
    prod = self.calc_prod_solar(device, row.tijd.timestamp(), row.prognose_straling, 1)
                                        ~~~~~~~~~~~~~~~~~~^^
  File "pandas/_libs/tslibs/nattype.pyx", line 54, in pandas._libs.tslibs.nattype._make_error_func.f
ValueError: NaTType does not support timestamp

--edit--
tabel:
Afbeeldingslocatie: https://tweakers.net/i/ieCT0BcGLjhxPWixc6qHzpFsqEg=/800x/filters:strip_exif()/f/image/NsJUeMfQWELpqmoOXquSF48g.png?f=fotoalbum_large

[ Voor 88% gewijzigd door balk op 31-12-2025 09:35 . Reden: log toegevoegd ]


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
Die internal sever error krijg ik ook zo gauw ik voor 20 september probeer te kijken.

In de log:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[2025-12-31 09:36:27,839] fout in app: Exception on / [POST]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 263, in menu
    return solar()
  File "/root/dao/webserver/app/routes.py", line 595, in solar
    report_df = report.calc_solar_data(solar_items[active_subject], active_date, active_view)
  File "/root/dao/prog/da_report.py", line 3003, in calc_solar_data
    prod = self.calc_prod_solar(device, row.tijd.timestamp(), row.prognose_straling, 1)
                                        ~~~~~~~~~~~~~~~~~~^^
  File "pandas/_libs/tslibs/nattype.pyx", line 54, in pandas._libs.tslibs.nattype._make_error_func.f
ValueError: NaTType does not support timestamp


Verder zie ik dat ik zo hier en daar gaten in de data heb waar blijkbaar de omvormers hun verbindingkje kwijt waren. Strippen jullie die er ook uit als outliers?

Dit dus:
Afbeeldingslocatie: https://tweakers.net/i/WPIItZAVa84fFyLInM0YW2X90oQ=/800x/filters:strip_exif()/f/image/igw8MhQCCTTrZ3yd7IFD6Pri.png?f=fotoalbum_large

  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:18
Ik zie ook geen gekkigheden op 26 en 27 juni:
Afbeeldingslocatie: https://tweakers.net/i/pEcxsPZZYvvOi4XpgBHUJY4TOVo=/800x/filters:strip_exif()/f/image/rcwyGJWKLczg1SR68aMdq3YP.png?f=fotoalbum_large
@balk en @DaBit
Dank voor jullie testen en terugkoppelingen.
Duidelijk werk aan de winkel om zsm een volgende test-versie te maken waarin deze fouten zijn hersteld.

Als je de ml_predictions uitcommentarieert (bijv "#ml_prediction") dan gaat hij weer over naar de oude instellingen.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
Och, zoveel heb ik niet te mopperen stiekum.
Vreselijk accuraat zijn de voorspellingen van het ML model niet (rond deze tijd, bij mij), maar dat zijn de DAO voorspellingen 'oude stijl' ook niet. Daarvoor zou ik elke paar maanden aan de yield-nummertjes moeten sleutelen.

Is de limiet van 1 jaar aan trainingsdata gebruiken een KNMI-beperking? Of zouden we ook 2,3,4, etc. jaar aan data kunnen gebruiken als die beschikbaar zijn?

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
Nog een dingetje: ik ben ergens vorig jaar overgestapt naar een andere manier van data vergaren van de huisdak-omvormer waardoor de entiteit veranderde (tip van flip: doe die energiedashbord-dingen vanaf het begin via een template sensor). Vandaar dat er volgens de ML-trainer maar vanaf maart data beschikbaar is. Maar ik heb eerdere data, alleen in een andere entiteit.

Wat ik dus wilde proberen is:

code:
1
2
3
4
5
6
7
"solar": [ 
    {
      "name": "Growatt",
      "ml_prediction": "true",
      "entities sensors": ["sensor.pv_opbrengst_huisdak", "sensor.growatt_generated_energy_total"],
      "max power": 7,
..


Die sensoren vullen elkaar aan. Waar sensor.growatt_generated_energy_total stopt neemt sensor.pv_opbrengst_huisdak het over, monotoon.

Energy dashboard gaat daar goed mee om; zie de donker-oranje balk die na maart weg is:

Afbeeldingslocatie: https://tweakers.net/i/GRvL7Vhg2jbtVcNp__VCuyEAZ2A=/800x/filters:strip_exif()/f/image/m2yBSNUMwHVNGNaHeVpyyCDQ.png?f=fotoalbum_large

De training daarentegen pakt dit niet op; ook met die twee sensoren vind-ie dat er voor maart geen data is.

code:
1
2
3
4
5
6
7
8
2025-12-31 12:11:33 info: Starting solar prediction model for Growatt training...
2025-12-31 12:11:33 info: Loading and processing data...
2025-12-31 12:11:33 info: Merging weather and solar data...
2025-12-31 12:11:33 info: Merged dataset: 3979 records
2025-12-31 12:11:33 info: Date range: 2025-03-07 09:00:00+00:00 to 2025-12-29 15:00:00+00:00
2025-12-31 12:11:33 info: Detecting outliers...
2025-12-31 12:11:33 info: Outliers removed: 184 (4.6%)
2025-12-31 12:11:33 info: Clean dataset: 3795 records


Misschien handig als daar een workaround voor is; apparaten en infrastructuur die vervangen worden door wat anders is aan de orde van de dag.

  • simnet
  • Registratie: Januari 2020
  • Laatst online: 22:12
Er zouden meerdere jaren gebruikt moeten kunnen worden. Ik weet niet de exacte implementatie details, maar voor zover ik het me zo voorstel wordt uit HA alle historische (PV) data gehaald, voor die date-range wordt er KNMI data opgehaald, aangevult met lokale voorspellingen die in de DAO database aanwezig zijn.
Klopt dat @KC27 ?

Meerdere sensoren zouden ook moeten kunnen, maar misschien dat er een join van de data mis gaat ergens.

Als ik het zelf heb draaien, dan ga ik er in duiken! Met name de tuning kan beter (minder conservatief).
DaBit schreef op woensdag 31 december 2025 @ 12:23:
Nog een dingetje: ik ben ergens vorig jaar overgestapt naar een andere manier van data vergaren van de huisdak-omvormer waardoor de entiteit veranderde (tip van flip: doe die energiedashbord-dingen vanaf het begin via een template sensor). Vandaar dat er volgens de ML-triner maar vanaf maart data beschikbaar is. MAar ik heb eerdere data, alleen in een andere entiteit.

Wat ik dus wilde proberen is:

code:
1
2
3
4
5
6
7
"solar": [ 
    {
      "name": "Growatt",
      "ml_prediction": "true",
      "entities sensors": ["sensor.pv_opbrengst_huisdak", "sensor.growatt_generated_energy_total"],
      "max power": 7,
..


Die sensoren vullen elkaar aan. Waar sensor.growatt_generated_energy_total stopt neemt sensor.pv_opbrengst_huisdak het over, monotoon.

Energy dashboard gaat daar goed mee om; zie de donker-oranje balk die na maart weg is:

[Afbeelding]

De training daarentegen pakt dit niet op; ook met die twee sensoren vind-ie dat er voor maart geen data is.

code:
1
2
3
4
5
6
7
8
2025-12-31 12:11:33 info: Starting solar prediction model for Growatt training...
2025-12-31 12:11:33 info: Loading and processing data...
2025-12-31 12:11:33 info: Merging weather and solar data...
2025-12-31 12:11:33 info: Merged dataset: 3979 records
2025-12-31 12:11:33 info: Date range: 2025-03-07 09:00:00+00:00 to 2025-12-29 15:00:00+00:00
2025-12-31 12:11:33 info: Detecting outliers...
2025-12-31 12:11:33 info: Outliers removed: 184 (4.6%)
2025-12-31 12:11:33 info: Clean dataset: 3795 records


Misschien handig als daar een workaround voor is; apparaten en infrastructuur die vervangen worden door wat anders is aan de orde van de dag.
In theorie moet dit werken.
Daar is o.a.die lijst (met []) voor bedoeld.
Ga dit repareren.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Deikke
  • Registratie: Juni 2004
  • Laatst online: 16:46
Vannacht goedkope prijzen, maar DAO ziet geen mogelijkheid om het dezelfde dag weer te verkopen en dus blijft de accu leeg. Is het ook mogelijk om op te geven dat er onder een bepaalde prijs altijd geladen mag worden als voorraad voor een duurdere dag?

  • wmc
  • Registratie: November 2012
  • Laatst online: 21:18

wmc

Je kunt de minimum SOC aan het einde hoger zetten.
Deikke schreef op woensdag 31 december 2025 @ 13:41:
Vannacht goedkope prijzen, maar DAO ziet geen mogelijkheid om het dezelfde dag weer te verkopen en dus blijft de accu leeg. Is het ook mogelijk om op te geven dat er onder een bepaalde prijs altijd geladen mag worden als voorraad voor een duurdere dag?
Bij mij laad ie wel zonder alles te verkopen:
Afbeeldingslocatie: https://tweakers.net/i/3KjpbLe5FfcRWMjAz4JLWisAWo0=/x800/filters:strip_exif()/f/image/efHkSY34LEVVMNs4Qh1N2kyr.png?f=fotoalbum_large

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer

DaBit schreef op woensdag 31 december 2025 @ 12:08:
Och, zoveel heb ik niet te mopperen stiekum.
Vreselijk accuraat zijn de voorspellingen van het ML model niet (rond deze tijd, bij mij), maar dat zijn de DAO voorspellingen 'oude stijl' ook niet. Daarvoor zou ik elke paar maanden aan de yield-nummertjes moeten sleutelen.

Is de limiet van 1 jaar aan trainingsdata gebruiken een KNMI-beperking? Of zouden we ook 2,3,4, etc. jaar aan data kunnen gebruiken als die beschikbaar zijn?
Die 1 jaar limiet is door mij gekozen. Gaat in de volgende testversie verdwijnen.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • Deikke
  • Registratie: Juni 2004
  • Laatst online: 16:46
wmc schreef op woensdag 31 december 2025 @ 13:47:
Je kunt de minimum SOC aan het einde hoger zetten.
Dat kan inderdaad, maar ik vind handmatige aanpassingen aan deze setting niet zo handig, gezien ik hem handmatig weer omlaag moet zetten zodra ik vind dat DAO weer mag verkopen.

  • Deikke
  • Registratie: Juni 2004
  • Laatst online: 16:46
KC27 schreef op woensdag 31 december 2025 @ 14:48:
[...]

Bij mij laad ie wel zonder alles te verkopen:
[Afbeelding]
Ik snap niet zo goed wat er bij jou voor zorgt dat dit wel gebeurd? Het levert nooit winst op om de accu vol te laden zonder te ontladen. Waar ziet DAO de winst dan om meer te gaan laden dan er weer uit kan?
Deikke schreef op woensdag 31 december 2025 @ 15:36:
[...]

Ik snap niet zo goed wat er bij jou voor zorgt dat dit wel gebeurd? Het levert nooit winst op om de accu vol te laden zonder te ontladen. Waar ziet DAO de winst dan om meer te gaan laden dan er weer uit kan?
Omdat DAO de opslag in de batterij aan het einde waardeert op het gemiddelde leveringstarief.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer

Deikke schreef op woensdag 31 december 2025 @ 15:36:
[...]

Ik snap niet zo goed wat er bij jou voor zorgt dat dit wel gebeurd? Het levert nooit winst op om de accu vol te laden zonder te ontladen. Waar ziet DAO de winst dan om meer te gaan laden dan er weer uit kan?
Wat zijn jouw battery-settings?

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
simnet schreef op woensdag 31 december 2025 @ 12:49:
Als ik het zelf heb draaien, dan ga ik er in duiken! Met name de tuning kan beter (minder conservatief).
Als je datasets wilt hebben van mijn panelen dan laat maar weten hoe we dat vorm kunnen geven.

  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:18
Ik denk dat het voor de solar_predictor goed is om ook uit te printen welk meetstation gekozen is op basis van de afstand. PR is ingediend.
En wellicht kan de gebruiker ook zelf een stationsnummer instellen?
balk schreef op donderdag 1 januari 2026 @ 17:16:
Ik denk dat het voor de solar_predictor goed is om ook uit te printen welk meetstation gekozen is op basis van de afstand. PR is ingediend.
En wellicht kan de gebruiker ook zelf een stationsnummer instellen?
Dit zit al in de volgende test-versie.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • diamanten
  • Registratie: Juli 2024
  • Laatst online: 18:38
Klopt dit wel? Een winst van -33.45 Euro terwijl er ongeveer 25kWh wordt gebruikt?Afbeeldingslocatie: https://tweakers.net/i/WAnkhtuaHLvlHUnqHnt7PvwQKMA=/800x/filters:strip_exif()/f/image/l6Vh4mwYzZ82lzs6FFitE4Nu.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/Y1VNQOtzTvZXwULKqGqlGqGz1eY=/x800/filters:strip_exif()/f/image/G50tt34fp4o0ZjvpuQg2HSw6.png?f=fotoalbum_large
diamanten schreef op vrijdag 2 januari 2026 @ 21:35:
Klopt dit wel? Een winst van -33.45 Euro terwijl er ongeveer 25kWh wordt gebruikt?[Afbeelding]

[Afbeelding]
Wat staat er in je logging bij dit tabelletje (bijna helemaal onderaan):
code:
1
2
3
4
5
6
7
8
9
10
11
Calculation profit after optimize in €
Cost before optimize              8.51
Cost consumption      6.61
Cycle cost            0.08
Penalty cost          0.00
Battery storage       1.75
Boiler storage        0.08
Profit production     0.00
Total                 8.52
Cost after optimize               8.52
Profit:                          -0.01

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • diamanten
  • Registratie: Juli 2024
  • Laatst online: 18:38
KC27 schreef op vrijdag 2 januari 2026 @ 22:25:
[...]

Wat staat er in je logging bij dit tabelletje (bijna helemaal onderaan):
code:
1
2
3
4
5
6
7
8
9
10
11
Calculation profit after optimize in €
Cost before optimize              8.51
Cost consumption      6.61
Cycle cost            0.08
Penalty cost          0.00
Battery storage       1.75
Boiler storage        0.08
Profit production     0.00
Total                 8.52
Cost after optimize               8.52
Profit:                          -0.01
Dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
2026-01-02 21:15:37 info: 
Calculation profit after optimize in €
Cost before optimize              1.11
Cost consumption      1.04
Cycle cost            0.07
Penalty cost         33.47
Battery storage      -0.01
Boiler storage        0.00
Profit production     0.00
Total                34.56
Cost after optimize              34.56
Profit:                         -33.45

Een hoge penalty cost blijkbaar. Waarop is dit gebaseerd?

  • Knielen
  • Registratie: December 2009
  • Laatst online: 21:36
Ik heb met de laatste update hetzelfde probleem, getal fluctueert ook steeds bij herberekenen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
2026-01-03 10:45:55 info: 
Calculation profit after optimize in €
Cost before optimize              0.81
Cost consumption      0.58
Cycle cost            0.01
Penalty cost         10.88
Battery storage       0.12
Boiler storage        0.00
Profit production     0.00
Total                11.59
Cost after optimize              11.59
Profit:                         -10.78
@Knielen @diamanten
De penalty geeft "virtuele kosten" als de SoC van je batterij onder het "optimal level" komt.
Je kunt deze instellen bij je batterij met de settting "penalty low soc".
Als je niks instelt is deze default 0.0025 euro/%.uur. De kosten worden gesommeerd over de hele berekeningsperiode.
Dit staat erover in DOCS.md:
  • penalty low soc: de kosten per uur en per procent dat de SoC onder de optimal low soc verblijft in euro/%.uur (default 0.0025 euro/%.uur)

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • diamanten
  • Registratie: Juli 2024
  • Laatst online: 18:38
KC27 schreef op zaterdag 3 januari 2026 @ 11:34:
@Knielen @diamanten
De penalty geeft "virtuele kosten" als de SoC van je batterij onder het "optimal level" komt.
Je kunt deze instellen bij je batterij met de settting "penalty low soc".
Als je niks instelt is deze default 0.0025 euro/%.uur. De kosten worden gesommeerd over de hele berekeningsperiode.
Dit staat erover in DOCS.md:
  • penalty low soc: de kosten per uur en per procent dat de SoC onder de optimal low soc verblijft in euro/%.uur (default 0.0025 euro/%.uur)
Dank! Weer wat geleerd :)

  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:18
KC27 schreef op zaterdag 3 januari 2026 @ 11:34:
@Knielen @diamanten
De penalty geeft "virtuele kosten" als de SoC van je batterij onder het "optimal level" komt.
Je kunt deze instellen bij je batterij met de settting "penalty low soc".
Als je niks instelt is deze default 0.0025 euro/%.uur. De kosten worden gesommeerd over de hele berekeningsperiode.
Dit staat erover in DOCS.md:
  • penalty low soc: de kosten per uur en per procent dat de SoC onder de optimal low soc verblijft in euro/%.uur (default 0.0025 euro/%.uur)
Toch een vraag: wat is het idee achter deze kosten? Verslechtering van de accu bij lage soc?

  • Knielen
  • Registratie: December 2009
  • Laatst online: 21:36
KC27 schreef op zaterdag 3 januari 2026 @ 11:34:
@Knielen @diamanten
De penalty geeft "virtuele kosten" als de SoC van je batterij onder het "optimal level" komt.
Je kunt deze instellen bij je batterij met de settting "penalty low soc".
Als je niks instelt is deze default 0.0025 euro/%.uur. De kosten worden gesommeerd over de hele berekeningsperiode.
Dit staat erover in DOCS.md:
  • penalty low soc: de kosten per uur en per procent dat de SoC onder de optimal low soc verblijft in euro/%.uur (default 0.0025 euro/%.uur)
Bedankt voor de uitleg, die heb ik op 0 gezet.

Nog een tip, in eerste instantie werkte het niet omdat het dus niet 'penalty low cost' moet zijn maar 'penalty_low_cost'. Ik zie dit op meer plekken, misschien goed om hier wat consistenter in te worden, of overal met underscore of overal met spaties.
balk schreef op zaterdag 3 januari 2026 @ 16:10:
[...]

Toch een vraag: wat is het idee achter deze kosten? Verslechtering van de accu bij lage soc?
Die kosten hebben er altijd in gezeten, maar ze zijn vanaf een paar versies terug "zichtbaar"gemaakt. Ze zijn alleen van toepassing als je naast "lower limit" (die iedereen heeft) ook werkt met de optionele "optimal lower level". DAO heeft een kosten functie nodig om het gebruik van die tussenruimte te "bestraffen".
Als je die kostenfunctie op nul zet (zoals @Knielen doet) dan kun je die instelling beter weglaten, want dan gebruikt DAO de hele ruimte.
Die instelling is alleen zinvol als je de ruimte onder het optimale minimum van je batterij wilt gebruiken om (veel) geld" te verdienen of als je hem nodig hebt bij "nul op de meter".
En voor de duidelijkheid en nogmaals: het zijn geen echte kosten. Ze worden alleen aangerekend in het optimaliseringsalgoritme.
Het valt te overwegen om dit soort kosten uit het overzicht te halen.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer

Knielen schreef op zaterdag 3 januari 2026 @ 17:12:
[...]


Bedankt voor de uitleg, die heb ik op 0 gezet.
Zie mijn reactie hierboven.
Nog een tip, in eerste instantie werkte het niet omdat het dus niet 'penalty low cost' moet zijn maar 'penalty_low_cost'. Ik zie dit op meer plekken, misschien goed om hier wat consistenter in te worden, of overal met underscore of overal met spaties.
Goede tip. Dit gaat binnenkort ook gebeuren. @simnet is bezig met een json-validator en (daaraan gekoppeld) een echte json-editor. Als we dat gaan toepassen zijn spaties verboden.
Er zal in de periode daarvoor waarschijnlijk een "omzetting" plaatsvinden van alle key's waarbij spaties vervangen worden door underscores ("_").
Wordt vervolgd ...

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
@KC27, FYI: ik zag in rc2 dit langskomen na de berekening van 10.00 vanochtend:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
 2026-01-04 00:00:20,510 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 00:30:21,490 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 02:00:23,682 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 02:15:23,700 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 03:00:22,882 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 03:30:22,619 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 04:00:20,286 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 04:15:21,332 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 04:30:21,207 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 04:45:17,248 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 05:30:17,380 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 05:45:17,031 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 06:00:15,343 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 06:15:16,663 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 06:30:15,427 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 06:45:15,142 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 07:00:15,814 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 07:15:15,045 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 08:30:15,157 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 08:45:15,124 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-04 10:00:14,598 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
De berekening zelf ging gewoon goed, inclusief het doorzetten naar HA.

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
KC27 schreef op zaterdag 3 januari 2026 @ 19:06:
Het valt te overwegen om dit soort kosten uit het overzicht te halen.
Ik vind het persoonlijk wel handig dat het resultaat waar zo'n instelling toe leid ergens zichtbaar is.

  • wmc
  • Registratie: November 2012
  • Laatst online: 21:18

wmc

DaBit schreef op zondag 4 januari 2026 @ 10:26:
[...]


Ik vind het persoonlijk wel handig dat het resultaat waar zo'n instelling toe leid ergens zichtbaar is.
Inderdaad graag erin laten. Goed om duidelijk te maken wat de optimalisatie echt doet.
DaBit schreef op zondag 4 januari 2026 @ 10:20:
@KC27, FYI: ik zag in rc2 dit langskomen na de berekening van 10.00 vanochtend:


[...]


De berekening zelf ging gewoon goed, inclusief het doorzetten naar HA.
Dank voor het melden.
Deze heb ik nog niet eerder gezien.
Het gaat fout bij het renderen van resultaten/logging van de berekening.
Hou het in de gaten.
Ik hoor graag als het meer voorkomt.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • balk
  • Registratie: Januari 2000
  • Laatst online: 21:18
@KC27 Ik heb nu deze fout in 2026.01.0.rc1 bij het trainen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2026-01-04 15:35:59 fout: Er is een fout opgetreden, zie de fout-tracering
Traceback (most recent call last):
  File "/root/dao/prog/da_base.py", line 648, in run_task_function
    getattr(self, run_task["function"])()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/da_base.py", line 590, in train_ml_predictions
    from dao.prog.solar_predictor import SolarPredictor
  File "/root/dao/prog/solar_predictor.py", line 21, in <module>
    from sqlglot.helper import is_type
ModuleNotFoundError: No module named 'sqlglot'
2026-01-04 15:35:59 debug: Starting new HTTP connection (1): 192.168.1.7:8123
2026-01-04 15:35:59 debug: http://192.168.1.7:8123 "POST /api/services/input_text/set_value HTTP/1.1" 200 336
debug:root:hass/api/config: {"allowlist_external_dirs":["/media","/config/www"],"allowlist_external_urls":[],"components":["openweathermap.sensor","zwave_js.siren","buienradar.camera","entsoe.sensor","solaredgeoptimizers.sensor","unifi","energy_meter","homekit_controller.climate","assist_pipeline","zwave_js.switch","mqtt.number","image","spook.button","ical.calendar","sensor","smartthings.event","mobile_app.binary_sensor","mqtt.sensor","zwave_js.button","cloud","spotify.media_player","version.binary_sensor","sessy.button","persistent_notification","stt","tado.switch","smartthings.cover","mqtt.climate","spotify","smartthings.binary_sensor","ping.binary_sensor","mqtt.switch","tuya.binary_sensor","my","homeassistant","zwave_js.sensor","tuya.fan","tuya.event","integration","statistics.sensor","rest.sensor","solaredge_modbus.number","samsungtv","mqtt.binary_sensor","tuya.camera","smartthings.number","mqtt.event","ping","wake_on_lan.switch","auto_backup.sensor","notify","spook","usb","tibber.sensor","zwave_js.binary_sensor","buienalarm","time","zwave_js.humidifier","google_generative_ai_conversation.ai_task","scheduler","tuya.scene","nederlandse_spoorwegen.binary_sensor","local_calendar","conversation","ping.sensor","number","bluetooth","websocket_api","github","samsungtv_smart","tuya.number","tuya.button","hassio.sensor","template.select","localtuya.number","api","mqtt.text","person","min_max.sensor","tado","mobile_app.notify","media_source","logbook","entsoe","zwave_js.update","tado.water_heater","light","local_calendar.calendar","bluetooth_adapters","tuya.alarm_control_panel","nodered.time","zwave_js.fan","tuya.siren","frontend","systemmonitor","lock","systemmonitor.sensor","shell_command","tts","zwave_js.climate","wake_word","unifi.device_tracker","nodered","cast","valve","cloud.binary_sensor","auth","google_generative_ai_conversation.conversation","proxmoxve.binary_sensor","hacs.switch","counter","history_stats.sensor","homekit_controller","backup.event","rest_command","http","onboarding","nodered.binary_sensor","sessy.sensor","spook.select","homekit_controller.button","search","spook.time","scheduler.switch","input_button","afvalwijzer.sensor","file_upload","input_number","threshold","unifi.sensor","github.sensor","solaredge_modbus.select","nodered.number","mqtt","smartthings.valve","cloud.stt","tuya.sensor","automation","esphome.camera","proxmoxve.button","tuya.cover","version.sensor","spook.sensor","hassio.switch","mqtt.select","event","solaredge_modbus.sensor","trace","binary_sensor","analytics","calendar","tuya.vacuum","adaptive_lighting","vacuum","zwave_js.light","command_line.sensor","time_date.sensor","nederlandse_spoorwegen.sensor","buienradar.sensor","template.switch","spook.binary_sensor","openweathermap.weather","network","group.light","proxmoxve","smart_thermostat.climate","input_text","forecast_solar","tag","unifi.light","smartthings.lock","history","wled","unifi.image","weather","esphome.number","esphome.event","utility_meter.sensor","smartthings.sensor","logger","afvalwijzer","co2signal","samsungtv.media_player","tuya.switch","webhook","nodered.text","systemmonitor.binary_sensor","smartthings.water_heater","forecast_solar.sensor","wake_on_lan","config","localtuya.sensor","proxmoxve.sensor","smartthings.vacuum","sessy.switch","watchman.sensor","auto_backup.binary_sensor","watchman","timer","device_tracker","zwave_js","media_player","ping.device_tracker","auto_backup.button","rest","fan","system_log","image_upload","solaredgeoptimizers","mobile_app.device_tracker","smartthings.scene","tuya.valve","input_select","sun","workday.binary_sensor","sun.sensor","samsungtv.remote","esphome.select","tuya.light","spotifyplus","buienradar","spook.switch","samsungtv_smart.remote","adguard.update","tado.sensor","remote","local_todo.todo","lovelace","tod","plant","nodered.switch","sessy","schedule","pvoutput.sensor","sessy.update","energy_meter.sensor","dsmr_reader.sensor","adguard","select","hacs","smartthings.light","samsungtv_smart.media_player","tado.device_tracker","tado.climate","nodered.button","camera","cloud.tts","zwave_js.number","workday","esphome.switch","smartthings.button","adaptive_lighting.switch","unifi.update","mpd.media_player","todo","unifi.switch","adguard.sensor","integration.sensor","water_heater","diagnostics","tod.binary_sensor","sql","zwave_js.event","zwave_js.cover","hardware","humidifier","cover","toyota","switch","backup","sessy.select","system_health","universal.media_player","tibber","statistics","version","input_boolean","esphome.binary_sensor","derivative","ical.sensor","esphome.sensor","button","smartthings.fan","nederlandse_spoorwegen","sessy.number","localtuya","spook.number","hassio","utility_meter","kleenex_pollenradar","group.notify","sessy.binary_sensor","dsmr_reader","homeassistant.scene","energy","sql.sensor","ssdp","buienalarm.sensor","hassio.update","repairs","localtuya.switch","siren","template.sensor","twinkly","labs","google_generative_ai_conversation.tts","command_line","tuya.select","buienradar.weather","generic_thermostat.climate","zone","esphome","filter.sensor","zeroconf","sun.binary_sensor","esphome.light","tuya.humidifier","alarm_control_panel","text","esphome.media_player","smartthings.climate","spotifyplus.media_player","local_todo","hassio.binary_sensor","scene","google_generative_ai_conversation","mpd","application_credentials","script","intent","homekit_controller.select","min_max","update","zwave_js.lock","utility_meter.select","kleenex_pollenradar.sensor","mqtt.fan","smartthings.select","input_datetime","openweathermap","mobile_app.sensor","switch_as_x.light","nodered.select","smartthings.update","auto_backup","tibber.notify","smartthings.switch","spook.event","group","blueprint","unifi.button","ical","tuya","smartthings.media_player","hacs.update","pvoutput","mobile_app","recorder","esphome.cover","adguard.switch","template","ffmpeg","climate","derivative.sensor","smartthings","nodered.sensor","tado.binary_sensor","tuya.climate","backup.sensor","solaredge_modbus","switch_as_x","co2signal.sensor","workday.calendar","google_generative_ai_conversation.stt","sessy.time","threshold.binary_sensor","esphome.button","mqtt.light","zwave_js.select","energy.sensor","esphome.update","homekit_controller.sensor","cast.media_player","ai_task","device_automation","template.binary_sensor"],"config_dir":"/config","config_source":"storage","country":"NL","currency":"EUR","debug":false,"elevation":0,"external_url":null,"internal_url":null,"language":"en","latitude":52.01789586139738,"location_name":"Home","longitude":4.3583106994628915,"radius":100,"recovery_mode":false,"safe_mode":false,"state":"RUNNING","time_zone":"Europe/Amsterdam","unit_system":{"length":"km","accumulated_precipitation":"mm","area":"m²","mass":"g","pressure":"Pa","temperature":"°C","volume":"L","wind_speed":"m/s"},"version":"2025.12.5","whitelist_external_dirs":["/media","/config/www"]}
debug:root:Dialect: sqlite, database: day_ahead.db, db_path: ../data
debug:root:db_url: sqlite://///root/dao/data/day_ahead.db
debug:root:Dialect: postgresql, database: homeassistant3, server: 192.168.1.111
debug:root:db_url: postgresql+psycopg2://postgres:RMzK5tzHN2zebj@192.168.1.111:5432/homeassistant3
debug:urllib3.connectionpool:Starting new HTTP connection (1): 192.168.1.7:8123
debug:urllib3.connectionpool:http://192.168.1.7:8123 "GET /api/states/input_select.dao_strategy HTTP/1.1" 200 429
debug:urllib3.connectionpool:Starting new HTTP connection (1): 192.168.1.7:8123
debug:urllib3.connectionpool:http://192.168.1.7:8123 "POST /api/services/input_datetime/set_datetime HTTP/1.1" 200 322
debug:root:Connection status Pool size: 5  Connections in pool: 0 Current Overflow: -5 Current Checked out connections: 0 at line 215 in /root/dao/prog/da_base.py
Traceback (most recent call last):
  File "/root/dao/webserver/../prog/day_ahead.py", line 4565, in <module>
    main()
    ~~~~^^
  File "/root/dao/webserver/../prog/day_ahead.py", line 4559, in main
    da_calc.run_task_function("train_ml_predictions")
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/prog/da_base.py", line 648, in run_task_function
    getattr(self, run_task["function"])()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/da_base.py", line 590, in train_ml_predictions
    from dao.prog.solar_predictor import SolarPredictor
  File "/root/dao/prog/solar_predictor.py", line 21, in <module>
    from sqlglot.helper import is_type
ModuleNotFoundError: No module named 'sqlglot'
Er is een nieuwe testversie gepubliceerd: 2026.01.0.rc1.
Dit staat in de changelog:
  • Fixed error when there more entities for one solar device
  • Fix error when one solar_entity is not encapsulated in a list
  • Solar device may have spaces in its name
  • Added knmi weerstation to logging when running "ml train"

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer

balk schreef op zondag 4 januari 2026 @ 15:37:
@KC27 Ik heb nu deze fout in 2026.01.0.rc1 bij het trainen

[...]
Dank voor het melden.
Is gerepareerd.
Versie 2026.01.0.rc2 is onderweg.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer

Met dank aan de snelle opmerkzaamheid van @balk .
Er staat een fout in versie 2026.01.0.rc1
Inmiddels is de fout gerepareerd in versie 2026.01.0.rc2

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • simnet
  • Registratie: Januari 2020
  • Laatst online: 22:12
Ik ben eindelijk toegekomen aan het installeren van de ml-versie als schaduw naast productie. Ik krijg nu de volgende error bij de het trainen van de modellen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2026-01-04 17:06:36 info: Day Ahead Optimalisering versie: 2026.01.0.rc2
2026-01-04 17:06:36 info: Day Ahead Optimalisering gestart op: 04-01-2026 17:06:36
2026-01-04 17:06:36 info: Day Ahead Optimalisatie gestart: 04-01-2026 17:06:36 taak: train_ml_predictions
2026-01-04 17:06:36 info: KNMI-weerstation: 275 DEELEN
2026-01-04 17:06:36 info: Er zijn nog geen knmi-data aanwezig
2026-01-04 17:06:37 info: Er zijn data van het KNMI binnengekomen vanaf 2023-01-03 00:00:00+01:00 tot en met 2026-01-02 23:00:00+01:00
2026-01-04 17:07:26 fout: Er is een fout opgetreden, zie de fout-tracering
Traceback (most recent call last):
  File "/root/dao/prog/da_base.py", line 648, in run_task_function
    getattr(self, run_task["function"])()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/da_base.py", line 593, in train_ml_predictions
    solar_predictor.run_train()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/solar_predictor.py", line 964, in run_train
    weather_data = self.get_weatherdata(start=start)
  File "/root/dao/prog/solar_predictor.py", line 876, in get_weatherdata
    self.import_knmi_df(start, end)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/root/dao/prog/solar_predictor.py", line 849, in import_knmi_df
    if first_dt <= start and latest_dt >= end:
       ^^^^^^^^^^^^^^^^^
TypeError: '<=' not supported between instances of 'NoneType' and 'datetime.datetime'
Traceback (most recent call last):
  File "/root/dao/webserver/../prog/day_ahead.py", line 4565, in <module>
    main()
    ~~~~^^
  File "/root/dao/webserver/../prog/day_ahead.py", line 4559, in main
    da_calc.run_task_function("train_ml_predictions")
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/prog/da_base.py", line 648, in run_task_function
    getattr(self, run_task["function"])()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/da_base.py", line 593, in train_ml_predictions
    solar_predictor.run_train()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/prog/solar_predictor.py", line 964, in run_train
    weather_data = self.get_weatherdata(start=start)
  File "/root/dao/prog/solar_predictor.py", line 876, in get_weatherdata
    self.import_knmi_df(start, end)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/root/dao/prog/solar_predictor.py", line 849, in import_knmi_df
    if first_dt <= start and latest_dt >= end:
       ^^^^^^^^^^^^^^^^^
TypeError: '<=' not supported between instances of 'NoneType' and 'datetime.datetime'
Edit:
Dit was alleen de 1e keer. Tweede keer ging het wel goed:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2026-01-04 17:10:58 info: Day Ahead Optimalisering versie: 2026.01.0.rc2
2026-01-04 17:10:58 info: Day Ahead Optimalisering gestart op: 04-01-2026 17:10:58
2026-01-04 17:10:58 info: Day Ahead Optimalisatie gestart: 04-01-2026 17:10:58 taak: train_ml_predictions
2026-01-04 17:10:58 info: KNMI-weerstation: 275 DEELEN
2026-01-04 17:10:58 info: Er zijn knmi-data aanwezig vanaf 2023-01-03 01:00:00 tot 2026-01-03 00:00:00
2026-01-04 17:10:59 info: Er zijn data van het KNMI binnengekomen vanaf 2026-01-02 00:00:00+01:00 tot en met 2026-01-02 23:00:00+01:00
2026-01-04 17:11:01 info: Starting solar prediction model for dak_woning training...
2026-01-04 17:11:01 info: Loading and processing data...
2026-01-04 17:11:01 info: Merging weather and solar data...
2026-01-04 17:11:01 info: Merged dataset: 26281 records
2026-01-04 17:11:01 info: Date range: 2023-01-03 23:00:00+00:00 to 2026-01-02 23:00:00+00:00
2026-01-04 17:11:01 info: Detecting outliers...
2026-01-04 17:11:01 info: Outliers removed: 795 (3.0%)
2026-01-04 17:11:01 info: Clean dataset: 25486 records
2026-01-04 17:11:01 info: Training samples: 20388
2026-01-04 17:11:01 info: Testing samples: 5098
2026-01-04 17:11:01 info: Tune hyperparameters: True
2026-01-04 17:11:01 info: Tuning hyperparameters...
2026-01-04 17:11:01 info: Parameter grid: {'n_estimators': [100, 200, 300], 'max_depth': [3, 4, 6], 'learning_rate': [0.05, 0.1, 0.15], 'subsample': [0.8, 0.9]}
2026-01-04 17:11:07 info: Best parameters: {'learning_rate': 0.05, 'max_depth': 4, 'n_estimators': 100, 'subsample': 0.8}
2026-01-04 17:11:07 info: Training final model...
2026-01-04 17:11:07 info: Parameters: {'learning_rate': 0.05, 'max_depth': 4, 'n_estimators': 100, 'subsample': 0.8}
2026-01-04 17:11:07 info: Model training van dak_woning complete
2026-01-04 17:11:07 info: Model saved to: ../data/prediction/models/dak_woning.pkl
2026-01-04 17:11:07 info: Training MAE: 0.1466 kWh
2026-01-04 17:11:07 info: Testing MAE: 0.1618 kWh
2026-01-04 17:11:07 info: Training R²: 0.9249
2026-01-04 17:11:07 info: Testing R²: 0.8930
2026-01-04 17:11:07 info: Sorted features:
2026-01-04 17:11:07 info:   1. irradiance: 0.789
2026-01-04 17:11:07 info:   2. hour: 0.116
2026-01-04 17:11:07 info:   3. week_nr: 0.026
2026-01-04 17:11:07 info:   4. quarter: 0.024
2026-01-04 17:11:07 info:   5. temperature: 0.018
2026-01-04 17:11:07 info:   6. month: 0.016
2026-01-04 17:11:07 info:   7. day_of_week: 0.008
2026-01-04 17:11:07 info:   8. season: 0.005

[ Voor 32% gewijzigd door simnet op 04-01-2026 17:12 ]

simnet schreef op zondag 4 januari 2026 @ 17:09:
Ik ben eindelijk toegekomen aan het installeren van de ml-versie als schaduw naast productie. Ik krijg nu de volgende error bij de het trainen van de modellen:


[...]


Edit:
Dit was alleen de 1e keer. Tweede keer ging het wel goed:

[...]
Die fout zal er ook nog uit moeten.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
@KC27 : hier nog eentje:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
 2026-01-05 01:30:26,920 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 01:45:39,742 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 02:15:34,655 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 02:30:20,315 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 03:30:31,288 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 03:45:31,848 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 04:00:22,675 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 04:15:21,000 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 04:30:27,010 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 04:45:17,272 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 05:45:25,371 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 06:15:20,664 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 06:30:25,611 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 06:40:36,964 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 06:41:18,284 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 06:45:29,791 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 07:00:30,671 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 07:45:24,580 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 08:30:08,877 fout dao.webserver.app MainThread : Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 748, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
..
<knip, ML predictions weg vanwege karakterlimiet Tweakers>
..
2026-01-05 08:38:28,734 fout dao.webserver.app MainThread : Exception on / [POST]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 265, in menu
    return solar()
  File "/root/dao/webserver/app/routes.py", line 599, in solar
    report_df = report.calc_solar_data(
        solar_items[active_subject], active_date, active_view
    )
  File "/root/dao/prog/da_report.py", line 3014, in calc_solar_data
    device, row.tijd.timestamp(), row.prognose_straling, 1
            ~~~~~~~~~~~~~~~~~~^^
  File "pandas/_libs/tslibs/nattype.pyx", line 54, in pandas._libs.tslibs.nattype._make_error_func.f
ValueError: NaTType does not support timestamp
Is volgens mij van 2026.01.0.rc2

DAO notification:

code:
1
2
3
4
5
6
7
8
9
10
January 5, 2026
changed to 2026-01-05 08:30:08 fout: Er is een fout opgetreden, zie de fout-tracering triggered by action input_text: set_value
8:30:08 AM - 12 minutes ago
changed to 2026-01-05 02:30:19 waarschuwing: Geen oplossing voor: minimize cost triggered by action input_text: set_value
2:30:19 AM - 6 hours ago
January 4, 2026
changed to 2026-01-04 12:55:00 fout: Geen data van Nordpool: tussen 2026-01-04 00:00:00+01:00 en 2026-01-06 00:00:00+01:00 triggered by action input_text: set_value
12:55:00 PM - 20 hours ago 
changed to 2026-01-04 10:34:27 fout: could not convert string to float: 'unknown' triggered by action input_text: set_value
10:34:27 AM - Yesterday

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
Het gebeurt ook niet elk kwartier:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
2026-01-05 03:55:00 info: Day Ahead Optimalisering versie: 2025.12.2.rc2
2026-01-05 03:55:00 info: Day Ahead Optimalisering gestart op: 05-01-2026 03:55:00
2026-01-05 03:55:00 info: Day Ahead Optimalisatie gestart: 05-01-2026 03:55:00 taak: get_day_ahead_prices
2026-01-05 03:55:00 info: Day ahead data already present
2026-01-05 04:33:00 info: Day Ahead Optimalisering versie: 2025.12.2.rc2
2026-01-05 04:33:00 info: Day Ahead Optimalisering gestart op: 05-01-2026 04:33:00
2026-01-05 04:33:00 info: Day Ahead Optimalisatie gestart: 05-01-2026 04:33:00 taak: get_meteo_data
2026-01-05 04:33:00 info: Meteodata model harmonie
2026-01-05 04:33:00 info: Aantal uitgevoerde ophaalpogingen: 1 van maximaal: 2
2026-01-05 04:33:00 info: Aantal records: 40
2026-01-05 04:33:00 info: Data harmonie: 
          tijd           tijd_nl  gr temp winds neersl
0   1767585600  05-01-2026 05:00   0   -3     4      0
1   1767589200  05-01-2026 06:00   0   -3     3      0
2   1767592800  05-01-2026 07:00   0   -3     4      0
3   1767596400  05-01-2026 08:00   0   -3     4      0
4   1767600000  05-01-2026 09:00   5   -2     4    0.2
5   1767603600  05-01-2026 10:00  18   -1     4      0
6   1767607200  05-01-2026 11:00  23   -1     4    0.1
7   1767610800  05-01-2026 12:00  12   -0     5    0.7
8   1767614400  05-01-2026 13:00  42    0     5      0
9   1767618000  05-01-2026 14:00  62    0     5      0
10  1767621600  05-01-2026 15:00  35    0     4      0
11  1767625200  05-01-2026 16:00   5   -0     4      0
12  1767628800  05-01-2026 17:00   0    0     5    0.2
13  1767632400  05-01-2026 18:00   0    0     4    0.5
14  1767636000  05-01-2026 19:00   0    0     4      0
15  1767639600  05-01-2026 20:00   0   -0     3      0
16  1767643200  05-01-2026 21:00   0   -0     3      0
17  1767646800  05-01-2026 22:00   0    0     3      0
18  1767650400  05-01-2026 23:00   0   -0     3      0
19  1767654000  06-01-2026 00:00   0   -1     2      0
20  1767657600  06-01-2026 01:00   0   -2     1    0.1
21  1767661200  06-01-2026 02:00   0   -2     2      0
22  1767664800  06-01-2026 03:00   0   -3     2      0
23  1767668400  06-01-2026 04:00   0   -4     2      0
24  1767672000  06-01-2026 05:00   0   -4     2      0
25  1767675600  06-01-2026 06:00   0   -3     3      0
26  1767679200  06-01-2026 07:00   0   -2     4      0
27  1767682800  06-01-2026 08:00   0   -1     4      0
28  1767686400  06-01-2026 09:00  19   -1     4      0
29  1767690000  06-01-2026 10:00  47   -0     4      0
30  1767693600  06-01-2026 11:00  76    1     5      0
31  1767697200  06-01-2026 12:00  90    1     5      0
32  1767700800  06-01-2026 13:00  86    2     5      0
33  1767704400  06-01-2026 14:00  56    2     5      0
34  1767708000  06-01-2026 15:00  30    2     5      0
35  1767711600  06-01-2026 16:00   5    1     5      0
36  1767715200  06-01-2026 17:00   0    1     5      0
37  1767718800  06-01-2026 18:00   0    1     6      0
38  1767722400  06-01-2026 19:00   0    1     7      0
39  1767726000  06-01-2026 20:00   0    1     6    0.1
2026-01-05 04:55:00 info: Day Ahead Optimalisering versie: 2025.12.2.rc2
2026-01-05 04:55:00 info: Day Ahead Optimalisering gestart op: 05-01-2026 04:55:00
2026-01-05 04:55:00 info: Day Ahead Optimalisatie gestart: 05-01-2026 04:55:00 taak: get_day_ahead_prices
2026-01-05 04:55:00 info: Day ahead data already present
[2026-01-05 05:00:20,706] fout in app: Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
[2026-01-05 05:15:25,729] fout in app: Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
[2026-01-05 05:30:21,912] fout in app: Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 05:55:00 info: Day Ahead Optimalisering versie: 2025.12.2.rc2
2026-01-05 05:55:00 info: Day Ahead Optimalisering gestart op: 05-01-2026 05:55:00
2026-01-05 05:55:00 info: Day Ahead Optimalisatie gestart: 05-01-2026 05:55:00 taak: get_day_ahead_prices
2026-01-05 05:55:00 info: Day ahead data already present
[2026-01-05 06:00:26,992] fout in app: Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 06:55:00 info: Day Ahead Optimalisering versie: 2025.12.2.rc2
2026-01-05 06:55:00 info: Day Ahead Optimalisering gestart op: 05-01-2026 06:55:00
2026-01-05 06:55:00 info: Day Ahead Optimalisatie gestart: 05-01-2026 06:55:00 taak: get_day_ahead_prices
2026-01-05 06:55:00 info: Day ahead data already present
[2026-01-05 07:15:30,457] fout in app: Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
[2026-01-05 07:30:28,001] fout in app: Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
2026-01-05 07:55:00 info: Day Ahead Optimalisering versie: 2025.12.2.rc2
2026-01-05 07:55:00 info: Day Ahead Optimalisering gestart op: 05-01-2026 07:55:00
2026-01-05 07:55:00 info: Day Ahead Optimalisatie gestart: 05-01-2026 07:55:00 taak: get_day_ahead_prices
2026-01-05 07:55:00 info: Day ahead data already present
[2026-01-05 08:00:23,371] fout in app: Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
[2026-01-05 08:15:32,350] fout in app: Exception on /api/run/calc_zonder_debug [GET]
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/root/dao/webserver/app/routes.py", line 742, in run_api
    return render_template(
        "api_run.html", log_content=log_content, version=__version__
    )
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
    return _render(app, template, context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
    rv = template.render(context)
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/root/dao/webserver/app/templates/api_run.html", line 1, in top-level template code
    {% extends "base.html" %}
  File "/root/dao/webserver/app/templates/base.html", line 34, in top-level template code
    {% for key, value in active_menu_list.items() %}
    ^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.13/site-packages/jinja2/environment.py", line 490, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'active_menu_list' is undefined
DaBit schreef op maandag 5 januari 2026 @ 08:50:
@KC27 : hier nog eentje:

[...]


Is volgens mij van 2026.01.0.rc2

DAO notification:

code:
1
2
3
4
5
6
7
8
9
10
January 5, 2026
changed to 2026-01-05 08:30:08 fout: Er is een fout opgetreden, zie de fout-tracering triggered by action input_text: set_value
8:30:08 AM - 12 minutes ago
changed to 2026-01-05 02:30:19 waarschuwing: Geen oplossing voor: minimize cost triggered by action input_text: set_value
2:30:19 AM - 6 hours ago
January 4, 2026
changed to 2026-01-04 12:55:00 fout: Geen data van Nordpool: tussen 2026-01-04 00:00:00+01:00 en 2026-01-06 00:00:00+01:00 triggered by action input_text: set_value
12:55:00 PM - 20 hours ago 
changed to 2026-01-04 10:34:27 fout: could not convert string to float: 'unknown' triggered by action input_text: set_value
10:34:27 AM - Yesterday
Dank voor het melden van de fouten, hier kan ik mee verder!

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer

@DaBit
Ik kan ze niet allemaal traceren/oplossen door het ontbreken van meer context(bijv copy van de logging)
Mocht je die logging nog hebben dan kan ik ernaar kijken.
Dat geldt voor:
code:
1
2
3
4
5
6
7
8
January 5, 2026
changed to 2026-01-05 08:30:08 fout: Er is een fout opgetreden, zie de fout-tracering triggered by action input_text: set_value

changed to 2026-01-05 02:30:19 waarschuwing: Geen oplossing voor: minimize cost triggered by action input_text: set_value
2:30:19 AM - 6 hours ago

changed to 2026-01-04 10:34:27 fout: could not convert string to float: 'unknown' triggered by action input_text: set_value
10:34:27 AM - Yesterday


De volgende hadden we allemaal, omdat de data nog niet beschikbaar waren:
code:
1
changed to 2026-01-04 12:55:00 fout: Geen data van Nordpool: tussen 2026-01-04 00:00:00+01:00

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
@KC27 : ik heb je de hele DAO-testing directory gezipt gestuurd samen met de HA logfile. Een beetje overkill misschien, maar dan mis je in ieder geval niks.
@DaBit
Laat ik beginnen te zeggen dat ik heel blij ben met je terugkoppeling!
Nu komen de kleine foutjes boven water waar ik met mijn "oogkleppen" nooit tegenaan loop.
Om te beginnen deze melding:
code:
1
2
January 5, 2026
changed to 2026-01-05 08:30:08 fout: Er is een fout opgetreden, zie de fout-tracering triggered by action input_text: set_value

Deze ging fout omdat de panelen van "erker" en "aanbouw" niet met de nieuwe versie zijn getraind.
De feature "weeknr" is pas bij de nieuwe versie geïntroduceerd en die mist hij in het "oude" model.
Ik heb nog naar de logging van de training gekeken en die stuitert er na 2 minuten uit (time-out van de web-pagina) en daardoor worden "erker" en "aanbouw" niet opnieuw berekend.
Oplossing: neem een regel op in de scheduler met deze taak:
"2350": "train_ml_predictions"
De scheduler heeft geen last van een time-out.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer

@DaBit
Ik heb helaas niet alle errors kunnen traceren.
De meeste zullen in rc3 zijn gerepareerd.
Die komt morgen of overmorgen.

WP: Alpha Innotec MSW2-6S | PV: 20 x 300 Wp AEG | ACCU: 2x16x280Ah LiFePO4 3 x Multiplus II 48/3000 | DYN: Tibber | Gasloos | Day Ahead Optimizer


  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 19:08
Die train_ml_predictions in de scheduler is eigenlijk wel een goed idee ja. Die voeg ik toe.
En niet alle errors, ach, maak je niet druk. Dat komt vanzelf.
Pagina: 1 ... 25 26 Laatste