Day Ahead Optimizer: ervaringen met Home Assistant-addon DAO

Pagina: 1 ... 8 9 Laatste
Acties:

Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
@storeman
Bij een hybride omvormer heb je twee instellingen waarmee je het laden en ontladen kunt beperken:
De eerste heb je net genoemd
Er is nog een tweede: bat_to_dc max power en dc_to_bat max power, zie DOCS.md.
Ben je hiermee geholpen?

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


Acties:
  • 0 Henk 'm!

  • simnet
  • Registratie: Januari 2020
  • Laatst online: 08-07 18:41
De berekening rekent voor iedere dag van de week en alle uren van die dag de baseload als gemiddelde van de dagen uit de historie.
Ik heb er nog niet lang over nagedacht, maar moet je voor de baseload niet de mediaan gebruiken ipv het gemiddelde?

Acties:
  • +1 Henk 'm!

  • sailor_dg
  • Registratie: Januari 2019
  • Laatst online: 22:32
KC27 schreef op woensdag 18 juni 2025 @ 23:18:
[...]

Hoe ziet je berekening eruit van Report\Balans met periode "deze maand" en "vorige maand"?
Waarschijnlijk kun je daar zien wat er ontbreekt en/of fout gaat.
Dank voor je reactie - alles heeft waarden, maar zit wel wat negatieve waarden tussen. Ga nog even verder kijken naar mijn sensoren

All-electric | Deye 12KSG04LP3 met 2x Yixiang V2, 32x MB31 314 Ah | Panasonic Aquarea J 5kW | Tesla MY, SmartEVSE | 5.2 kWp PV | Proxmox met HomeAssistant, Docker host, PfSense, TrueNas & Mailcow


Acties:
  • +1 Henk 'm!

  • balk
  • Registratie: Januari 2000
  • Laatst online: 06:10
@KC27 ik heb nog wat zitten stoeien met mijn baseload berekening. Ik zag dat deze op sommige momenten negatief was (en dat kan niet) en daardoor gaat de optimizer de mist in. Oorzaak bij mij was dat ik een 'combine the state of several sensors' helper gebruik om de waardes van mijn twee Sessys op te sommen. En blijkbaar maakt die geen 'state' waarde aan in de statistics tabel van Home Assistant. Hierdoor had de batterij component van de baseload berekenin geen waarde, en was deze soms negatief. Zie ook dit issue.
===
hmm, raar. De baseload is nu goed maar ik heb nog steeds geen oplossing wanneer ik 2025.6.1 gebruik. Met 2025.5.0 wel.

Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
balk schreef op donderdag 19 juni 2025 @ 22:11:
@KC27 ik heb nog wat zitten stoeien met mijn baseload berekening. Ik zag dat deze op sommige momenten negatief was (en dat kan niet) en daardoor gaat de optimizer de mist in. Oorzaak bij mij was dat ik een 'combine the state of several sensors' helper gebruik om de waardes van mijn twee Sessys op te sommen. En blijkbaar maakt die geen 'state' waarde aan in de statistics tabel van Home Assistant. Hierdoor had de batterij component van de baseload berekenin geen waarde, en was deze soms negatief. Zie ook dit issue.
===
hmm, raar. De baseload is nu goed maar ik heb nog steeds geen oplossing wanneer ik 2025.6.1 gebruik. Met 2025.5.0 wel.
Kun je de logging delen van de berekening waarin DAO geen oplossing heeft?

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


Acties:
  • +1 Henk 'm!

  • diamanten
  • Registratie: Juli 2024
  • Laatst online: 22:39
Ik zit nog even op de oude versie (versie 5), want wilde eerst alles goed hebben draaien. Ik zie ook wat vreemds mbt de baseloads: waarom is die vanaf 05:00 groter dan >38 kWh? Nb. de grip reports kloppen wel. Afbeeldingslocatie: https://tweakers.net/i/lc-JaS5TiGAmBwPzSPJKawSlYy4=/800x/filters:strip_icc():strip_exif()/f/image/tf6leTw5yyfN25Jinvb09sCD.jpg?f=fotoalbum_large Afbeeldingslocatie: https://tweakers.net/i/zXAdunsp8N4in9zRmgKg4OwaA6E=/800x/filters:strip_icc():strip_exif()/f/image/sKuQrzGiCTshSsHfloUCJg4p.jpg?f=fotoalbum_large
Mijn config 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
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
{
  "homeassistant": { },
  "database ha": {
    "engine": "sqlite",
    "database": "home-assistant_v2.db",
    "db_path": "/homeassistant"
  },  "notifications": {
    "notification entity": "input_text.dao_notificatie",
    "opstarten": "True",
    "berekening": "True",
    "last activity entity": "input_datetime.dao_laatste_activiteit"
  },
  "database da": {
    "engine": "sqlite",
    "db_path": "../data"
  },
  "meteoserver-key": "!secret meteoserver-key",
  "prices": {
    "source day ahead": "entsoe",
    "entsoe-api-key": "!secret entsoe-api-key",
    "regular high": 0.24,
    "regular low": 0.23,
    "switch to low": 23,
    "energy taxes delivery": {
      "2022-01-01": 0.06729,
      "2023-01-01": 0.12599,
      "2024-01-01": 0.10880,
      "2025-01-01": 0.10154
    },
    "energy taxes redelivery": {
      "2022-01-01": 0.06729,
      "2023-01-01": 0.12599,
      "2024-01-01": 0.10880,
      "2025-01-01": 0.10154
    },
    "cost supplier delivery": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2024-08-01": 0.020496
    },
    "cost supplier redelivery": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2024-08-01": 0.020496
    },
    "vat": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
    "last invoice": "2025-04-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.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",
    "prices delivery": "True",
    "prices redelivery": "True",
    "average delivery": "True"
  },
  "strategy": "minimize cost",
  "notifications": {
    "notification entity": "input_text.dao_notificatie",
    "opstarten": "True",
    "berekening": "True",
    "last activity entity": "input_datetime.dao_laatste_activiteit"
  },
  "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": "EvaPower",
      "entity actual level": "sensor.gesimuleerde_evapower_soc_dao",
      "capacity": 3.072,
      "upper limit": 100,
      "lower limit": 10,
      "optimal lower level": 10,
      "entity set power feedin": "input_number.dao_feedin_grid",
      "entity calculated soc": "input_number.dao_entity_calculated_soc",
      "entity min soc end opt": "input_number.dao_entity_min_soc_end_eva",
      "cycle cost": 0.035,
      "dc_to_bat efficiency": 0.85,
      "bat_to_dc efficiency": 0.85,
      "minimum power": 120,
      "charge stages": [
        { "power": 0.0, "efficiency": 1 },
        { "power": 100, "efficiency": 0.5 },
        { "power": 800, "efficiency": 0.89 },
        { "power": 1250, "efficiency": 0.85 },
        { "power": 2000, "efficiency": 0.86 }
      ],
      "discharge stages": [
        { "power": 0.0, "efficiency": 1 },
        { "power": 100, "efficiency": 0.5 },
        { "power": 800, "efficiency": 0.92 },
        { "power": 400, "efficiency": 0.85 },
        { "power": 600, "efficiency": 0.88 }
      ],
      "solar": []
    },
    {
      "name": "Delta2Max",
      "entity actual level": "sensor.gesimuleerde_delta2max_soc",
      "capacity": 2.048,
      "upper limit": 100,
      "lower limit": 10,
      "optimal lower level": 10,
      "minimum power": 200,
      "dc_to_bat efficiency": 0.85,
      "bat_to_dc efficiency": 0.85,
      "cycle cost": 0.035,
      "entity set power feedin": "input_number.dao_feedin_grid_d2max",
      "entity calculated soc": "input_number.dao_entity_calculated_soc_d2max",
      "entity min soc end opt": "input_number.dao_entity_min_soc_end",
      "solar": [],
      "charge stages": [
        {
          "power": 0,
          "efficiency": 1
        },
        {
          "power": 100,
          "efficiency": 0.85
        },
        {
          "power": 200,
          "efficiency": 0.88
        },
        {
          "power": 300,
          "efficiency": 0.90
        },
        {
          "power": 400,
          "efficiency": 0.91
        },
        {
          "power": 1200,
          "efficiency": 0.91
        },
        {
          "power": 1800,
          "efficiency": 0.90
        }
      ],
      "discharge stages": [
        {
          "power": 0,
          "efficiency": 1
        },
        {
          "power": 100,
          "efficiency": 0.92
        },
        {
          "power": 200,
          "efficiency": 0.93
        },
        {
          "power": 300,
          "efficiency": 0.93
        },
        {
          "power": 400,
          "efficiency": 0.92
        },
        {
          "power": 500,
          "efficiency": 0.90
        },
        {
          "power": 600,
          "efficiency": 0.88
        }
      ]
    }
  ],

  "solar": [ 
    {
      "name": "Enphase",
      "tilt": 30,
      "orientation": 200,
      "capacity": 11.680,
      "yield": 0.007,
      "entity pv switch": "input_boolean.solar_pv_on_off",
      "sensor history": "sensor.envoy_122126050988_lifetime_energy_production"
    }
  ],
  "electric vehicle": [
    {
      "name": "Kia Niro EV",
      "capacity": 55,
      "entity position": "input_select.kia_locatie_dao",
      "entity max amperage": "input_number.niro_ac_max_ampere",
      "charge three phase": "True",
      "charge stages": [
        { "ampere": 0, "efficiency": 1.00 },
        { "ampere": 16, "efficiency": 0.95 }
      ],
      "entity actual level": "sensor.niro_ev_battery_level",
      "entity plugged in": "input_boolean.kia_ingeplugd_dao",
      "entity stop charging": "input_datetime.stop_laden_ev",
      "charge scheduler": {
        "entity set level": "number.ev_smart_charging_minimum_ev_soc",
        "level margin": 2,
        "entity ready datetime": "input_datetime.kia_niro_ready_time"
      },
      "charge switch": "input_boolean.kia_niro_charge_enable",
      "entity set charging ampere": "input_number.kia_niro_set_charging_ampere"
    }
  ],

  "machines" : [ ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.energy_consumed_tariff_1",
      "sensor.energy_consumed_tariff_2"
    ],
    "entities grid production": [
      "sensor.energy_produced_tariff_1",
      "sensor.energy_produced_tariff_2"
    ],
    "entities solar production ac": [
      "sensor.envoy_122126050988_today_s_energy_production"
    ],
    "entities solar production dc": [],
    "entities ev consumption" : [],
    "entities wp consumption" : ["sensor.warmtepomp_today_s_consumption"],
    "entities boiler consumption": [],
    "entities battery consumption": ["sensor.totaal_batterij_consumption_dao"],
    "entities battery production": ["sensor.totaal_batterij_production_dao"]
  },
  "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"
  }
}

Acties:
  • +1 Henk 'm!

  • f.welvering
  • Registratie: Oktober 2009
  • Laatst online: 23:04
Ik ben weer even gaan stoeien met DAO en heb mijn wasmachine toegevoegd als machine.
Ik krijg netjes een optimalisatie grafiek, maar de wasmachine wordt niet ingepland, ik begrijp niet zo goed waarom niet.

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
{
  "homeassistant": {
    "host": "192.168.60.3",
    "ip port": 8123,
    "token": "!secret ha_api_token"
  },
  "database ha": {
    "engine": "mysql",
    "server": "192.168.60.3",
    "port": 3306,
    "database": "homeassistant",
    "username": "dao",
    "password": "!secret db_da_password"
  },
  "database da": {
    "engine": "mysql",
    "server": "192.168.60.3",
    "port": 3306,
    "database": "dao",
    "username": "dao",
    "password": "!secret db_da_password"
  },
  "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": {
      "2025-01-01": 0.10154
    },
    "energy taxes production": {
      "2025-01-01": 0.10154
    },
    "cost supplier consumption": {
      "2024-08-01": 0.020496
    },
    "cost supplier production": {
      "2024-08-01": 0.020496
    },
    "vat": {
      "2023-01-01": 21
    },
    "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": "2024-09-01",
    "tax refund": "True",
    "prices consumption": "True",
    "prices production": "False",
    "prices spot": "False",
    "average consumption": "False"
  },
  "logging level" : "info",
  "use_calc_baseload": "True",
  "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",
    "prices consumption": "True",
    "prices production": "False",
    "prices spot": "false",
    "average consumption": "false"
  },
  "strategy": "minimize cost",
  "notifications": {
  },
  "grid": {
    "max_power": 17
  },
  "history": {
    "save days": 7
  },
  "dashboard": {
    "port": 5000
  },
  "boiler": {
    "boiler present": "False"
  },
  "heating": {
    "heater present": "False"
  },
  "battery": [ ],
  "solar": [
    { "name" : "main",
      "tilt": 50,
      "orientation": 160,
      "capacity": 9.0,
      "yield": 0.0180625,
      "entity pv switch": "input_boolean.pv_main_aan_uit"
  }],
  "electric vehicle": [ ],
  "machines" : [
      { "name": "wasmachine",
        "programs":[
          {"name": "Uit",
           "power": []},
          {"name": "Kleur 40 graden",
           "power": [2000, 1500, 500, 400, 200, 300]
           },
          {"name": "Donker 40 graden",
           "power": [1500, 1000, 500, 400, 200, 300,200, 300]
           }
        ],
        "entity start window": "input_datetime.start_window_wasmachine",
        "entity end window": "input_datetime.eind_window_wasmachine",
        "entity selected program": "input_select.wasmachine_programma",
        "entity calculated start": "input_datetime.berekende_start_wasmachine",
        "entity calculated end": "input_datetime.berekende_stop_wasmachine"
      }
  ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.p1_meter_energie_import_tarief_1",
      "sensor.p1_meter_energie_import_tarief_2"
    ],
    "entities grid production": [
      "sensor.p1_meter_energie_export_tarief_1",
      "sensor.p1_meter_energie_export_tarief_2"
    ],
    "entities solar production ac": [
      "sensor.solaredge_panel_production_daily"
    ],
    "entities solar production dc": [],
    "entities ev consumption" : [],
    "entities wp consumption" : [],
    "entities boiler consumption": [],
    "entities battery consumption": [],
    "entities battery 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"
  }
}


Log
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
2025-06-20 15:20:17 info: Day Ahead Optimalisering versie: 2025.6.1
2025-06-20 15:20:17 info: Day Ahead Optimalisering gestart op: 20-06-2025 15:20:17
2025-06-20 15:20:17 info: Day Ahead Optimalisatie gestart: 20-06-2025 15:20:17 taak: calc_optimum
2025-06-20 15:20:17 info: Debug = False
2025-06-20 15:20:17 info: Zelf berekende baseload
2025-06-20 15:20:17 info: Start waarden: 
    uur                tijd       p_l       p_t   base     pv_ac  pv_dc
0     0 2025-06-21 00:00:00  0.291073  0.291073  0.290  0.000000      0
1     1 2025-06-21 01:00:00  0.281344  0.281344  0.296  0.000000      0
2     2 2025-06-21 02:00:00  0.278525  0.278525  0.278  0.000000      0
3     3 2025-06-21 03:00:00  0.276287  0.276287  0.266  0.000000      0
4     4 2025-06-21 04:00:00  0.280764  0.280764  0.268  0.000000      0
5     5 2025-06-21 05:00:00  0.274641  0.274641  0.274  0.054711      0
6     6 2025-06-21 06:00:00  0.269571  0.269571  0.223  0.935762      0
7     7 2025-06-21 07:00:00  0.257459  0.257459  1.009  1.152426      0
8     8 2025-06-21 08:00:00  0.239539  0.239539  1.128  1.197923      0
9     9 2025-06-21 09:00:00  0.175978  0.175978  1.632  1.186866      0
10   10 2025-06-21 10:00:00  0.148256  0.148256  0.007  1.217669      0
11   11 2025-06-21 11:00:00  0.145231  0.145231  2.312  1.323333      0
12   12 2025-06-21 12:00:00  0.132660  0.132660  4.314  1.498583      0
13   13 2025-06-21 13:00:00  0.116131  0.116131  4.602  1.751323      0
14   14 2025-06-21 14:00:00  0.114050  0.114050  1.517  2.051714      0
15   15 2025-06-21 15:00:00  0.144034  0.144034  1.061  2.350290      0
16   16 2025-06-21 16:00:00  0.147772  0.147772  1.253  2.579816      0
17   17 2025-06-21 17:00:00  0.220506  0.220506  0.853  2.687413      0
18   18 2025-06-21 18:00:00  0.269740  0.269740  1.102  2.541722      0
19   19 2025-06-21 19:00:00  0.302423  0.302423  1.429  2.109260      0
20   20 2025-06-21 20:00:00  0.337319  0.337319  3.260  1.224595      0
21   21 2025-06-21 21:00:00  0.348342  0.348342  3.092  0.295823      0
22   22 2025-06-21 22:00:00  0.318322  0.318322  2.656  0.000000      0
23   23 2025-06-21 23:00:00  0.292041  0.292041  0.840  0.000000      0
2025-06-20 15:20:18 info: Boiler niet aanwezig of staat uit, boiler wordt niet ingepland
2025-06-20 15:20:18 info: Warmtepomp niet aanwezig of enabled - warmtepomp wordt niet ingepland
2025-06-20 15:20:18 info: Strategie: minimale kosten
2025-06-20 15:20:18 info: Het programma heeft een optimale oplossing gevonden.
2025-06-20 15:20:18 info: Niet geoptimaliseerd, kosten met day ahead tarieven: 2.27  
2025-06-20 15:20:18 info: Geoptimaliseerd, kosten met day ahead tarieven: 2.24  
2025-06-20 15:20:18 info: Levering: 16.95  (kWh)
2025-06-20 15:20:18 info: Berekende prognoses: 
   uur  bat_in  bat_out   cons   prod   base   boil     wp     ev  pv_ac   cost  profit  b_tem   mach
  0.00    0.00     0.00   0.19   0.00   0.29   0.00   0.00   0.00   0.00   0.06   -0.00  20.00   0.00
  1.00    0.00     0.00   0.30   0.00   0.30   0.00   0.00   0.00   0.00   0.08   -0.00  20.00   0.00
  2.00    0.00     0.00   0.28   0.00   0.28   0.00   0.00   0.00   0.00   0.08   -0.00  20.00   0.00
  3.00    0.00     0.00   0.27   0.00   0.27   0.00   0.00   0.00   0.00   0.07   -0.00  20.00   0.00
  4.00    0.00     0.00   0.27   0.00   0.27   0.00   0.00   0.00   0.00   0.08   -0.00  20.00   0.00
  5.00    0.00     0.00   0.22   0.00   0.27   0.00   0.00   0.00   0.05   0.06   -0.00  20.00   0.00
  6.00    0.00     0.00   0.00   0.71   0.22   0.00   0.00   0.00   0.94   0.00   -0.19  20.00   0.00
  7.00    0.00     0.00   0.00   0.14   1.01   0.00   0.00   0.00   1.15   0.00   -0.04  20.00   0.00
  8.00    0.00     0.00   0.00   0.07   1.13   0.00   0.00   0.00   1.20   0.00   -0.02  20.00   0.00
  9.00    0.00     0.00   0.45   0.00   1.63   0.00   0.00   0.00   1.19   0.08   -0.00  20.00   0.00
 10.00    0.00     0.00   0.00   1.21   0.01   0.00   0.00   0.00   1.22   0.00   -0.18  20.00   0.00
 11.00    0.00     0.00   0.99   0.00   2.31   0.00   0.00   0.00   1.32   0.14   -0.00  20.00   0.00
 12.00    0.00     0.00   2.82   0.00   4.31   0.00   0.00   0.00   1.50   0.37   -0.00  20.00   0.00
 13.00    0.00     0.00   2.85   0.00   4.60   0.00   0.00   0.00   1.75   0.33   -0.00  20.00   0.00
 14.00    0.00     0.00   0.00   0.53   1.52   0.00   0.00   0.00   2.05   0.00   -0.06  20.00   0.00
 15.00    0.00     0.00   0.00   1.29   1.06   0.00   0.00   0.00   2.35   0.00   -0.19  20.00   0.00
 16.00    0.00     0.00   0.00   1.33   1.25   0.00   0.00   0.00   2.58   0.00   -0.20  20.00   0.00
 17.00    0.00     0.00   0.00   1.83   0.85   0.00   0.00   0.00   2.69   0.00   -0.40  20.00   0.00
 18.00    0.00     0.00   0.00   1.44   1.10   0.00   0.00   0.00   2.54   0.00   -0.39  20.00   0.00
 19.00    0.00     0.00   0.00   0.68   1.43   0.00   0.00   0.00   2.11   0.00   -0.21  20.00   0.00
 20.00    0.00     0.00   2.04   0.00   3.26   0.00   0.00   0.00   1.22   0.69   -0.00  20.00   0.00
 21.00    0.00     0.00   2.80   0.00   3.09   0.00   0.00   0.00   0.30   0.97   -0.00  20.00   0.00
 22.00    0.00     0.00   2.66   0.00   2.66   0.00   0.00   0.00   0.00   0.85   -0.00  20.00   0.00
 23.00    0.00     0.00   0.84   0.00   0.84   0.00   0.00   0.00   0.00   0.25   -0.00  20.00   0.00
Totaal    0.00     0.00  16.95   9.24  33.96   0.00   0.00   0.00  26.16   4.10   -1.87          0.00
2025-06-20 15:20:18 info: Winst: € 0.03
2025-06-20 15:20:18 info: Doorzetten van alle settings naar HA
2025-06-20 15:20:18 info: Apparaat: wasmachine
2025-06-20 15:20:18 info: Programma: Kleur 40 graden
2025-06-20 15:20:18 info: Niet ingepland

WP: DeWarmte PompAO 6.4Kw Hybrid, CV Intergas, Thermostaat Netatmo, 70m2 vvw, PV: 34x 325wp solaredge omvormer en optimizers,Wan ip adres weten? https://mijnips.eu


Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
diamanten schreef op vrijdag 20 juni 2025 @ 14:10:
Ik zit nog even op de oude versie (versie 5), want wilde eerst alles goed hebben draaien. Ik zie ook wat vreemds mbt de baseloads: waarom is die vanaf 05:00 groter dan >38 kWh? Nb. de grip reports kloppen wel. [Afbeelding] [Afbeelding]
Mijn config 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
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
{
  "homeassistant": { },
  "database ha": {
    "engine": "sqlite",
    "database": "home-assistant_v2.db",
    "db_path": "/homeassistant"
  },  "notifications": {
    "notification entity": "input_text.dao_notificatie",
    "opstarten": "True",
    "berekening": "True",
    "last activity entity": "input_datetime.dao_laatste_activiteit"
  },
  "database da": {
    "engine": "sqlite",
    "db_path": "../data"
  },
  "meteoserver-key": "!secret meteoserver-key",
  "prices": {
    "source day ahead": "entsoe",
    "entsoe-api-key": "!secret entsoe-api-key",
    "regular high": 0.24,
    "regular low": 0.23,
    "switch to low": 23,
    "energy taxes delivery": {
      "2022-01-01": 0.06729,
      "2023-01-01": 0.12599,
      "2024-01-01": 0.10880,
      "2025-01-01": 0.10154
    },
    "energy taxes redelivery": {
      "2022-01-01": 0.06729,
      "2023-01-01": 0.12599,
      "2024-01-01": 0.10880,
      "2025-01-01": 0.10154
    },
    "cost supplier delivery": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2024-08-01": 0.020496
    },
    "cost supplier redelivery": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2024-08-01": 0.020496
    },
    "vat": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
    "last invoice": "2025-04-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.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",
    "prices delivery": "True",
    "prices redelivery": "True",
    "average delivery": "True"
  },
  "strategy": "minimize cost",
  "notifications": {
    "notification entity": "input_text.dao_notificatie",
    "opstarten": "True",
    "berekening": "True",
    "last activity entity": "input_datetime.dao_laatste_activiteit"
  },
  "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": "EvaPower",
      "entity actual level": "sensor.gesimuleerde_evapower_soc_dao",
      "capacity": 3.072,
      "upper limit": 100,
      "lower limit": 10,
      "optimal lower level": 10,
      "entity set power feedin": "input_number.dao_feedin_grid",
      "entity calculated soc": "input_number.dao_entity_calculated_soc",
      "entity min soc end opt": "input_number.dao_entity_min_soc_end_eva",
      "cycle cost": 0.035,
      "dc_to_bat efficiency": 0.85,
      "bat_to_dc efficiency": 0.85,
      "minimum power": 120,
      "charge stages": [
        { "power": 0.0, "efficiency": 1 },
        { "power": 100, "efficiency": 0.5 },
        { "power": 800, "efficiency": 0.89 },
        { "power": 1250, "efficiency": 0.85 },
        { "power": 2000, "efficiency": 0.86 }
      ],
      "discharge stages": [
        { "power": 0.0, "efficiency": 1 },
        { "power": 100, "efficiency": 0.5 },
        { "power": 800, "efficiency": 0.92 },
        { "power": 400, "efficiency": 0.85 },
        { "power": 600, "efficiency": 0.88 }
      ],
      "solar": []
    },
    {
      "name": "Delta2Max",
      "entity actual level": "sensor.gesimuleerde_delta2max_soc",
      "capacity": 2.048,
      "upper limit": 100,
      "lower limit": 10,
      "optimal lower level": 10,
      "minimum power": 200,
      "dc_to_bat efficiency": 0.85,
      "bat_to_dc efficiency": 0.85,
      "cycle cost": 0.035,
      "entity set power feedin": "input_number.dao_feedin_grid_d2max",
      "entity calculated soc": "input_number.dao_entity_calculated_soc_d2max",
      "entity min soc end opt": "input_number.dao_entity_min_soc_end",
      "solar": [],
      "charge stages": [
        {
          "power": 0,
          "efficiency": 1
        },
        {
          "power": 100,
          "efficiency": 0.85
        },
        {
          "power": 200,
          "efficiency": 0.88
        },
        {
          "power": 300,
          "efficiency": 0.90
        },
        {
          "power": 400,
          "efficiency": 0.91
        },
        {
          "power": 1200,
          "efficiency": 0.91
        },
        {
          "power": 1800,
          "efficiency": 0.90
        }
      ],
      "discharge stages": [
        {
          "power": 0,
          "efficiency": 1
        },
        {
          "power": 100,
          "efficiency": 0.92
        },
        {
          "power": 200,
          "efficiency": 0.93
        },
        {
          "power": 300,
          "efficiency": 0.93
        },
        {
          "power": 400,
          "efficiency": 0.92
        },
        {
          "power": 500,
          "efficiency": 0.90
        },
        {
          "power": 600,
          "efficiency": 0.88
        }
      ]
    }
  ],

  "solar": [ 
    {
      "name": "Enphase",
      "tilt": 30,
      "orientation": 200,
      "capacity": 11.680,
      "yield": 0.007,
      "entity pv switch": "input_boolean.solar_pv_on_off",
      "sensor history": "sensor.envoy_122126050988_lifetime_energy_production"
    }
  ],
  "electric vehicle": [
    {
      "name": "Kia Niro EV",
      "capacity": 55,
      "entity position": "input_select.kia_locatie_dao",
      "entity max amperage": "input_number.niro_ac_max_ampere",
      "charge three phase": "True",
      "charge stages": [
        { "ampere": 0, "efficiency": 1.00 },
        { "ampere": 16, "efficiency": 0.95 }
      ],
      "entity actual level": "sensor.niro_ev_battery_level",
      "entity plugged in": "input_boolean.kia_ingeplugd_dao",
      "entity stop charging": "input_datetime.stop_laden_ev",
      "charge scheduler": {
        "entity set level": "number.ev_smart_charging_minimum_ev_soc",
        "level margin": 2,
        "entity ready datetime": "input_datetime.kia_niro_ready_time"
      },
      "charge switch": "input_boolean.kia_niro_charge_enable",
      "entity set charging ampere": "input_number.kia_niro_set_charging_ampere"
    }
  ],

  "machines" : [ ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.energy_consumed_tariff_1",
      "sensor.energy_consumed_tariff_2"
    ],
    "entities grid production": [
      "sensor.energy_produced_tariff_1",
      "sensor.energy_produced_tariff_2"
    ],
    "entities solar production ac": [
      "sensor.envoy_122126050988_today_s_energy_production"
    ],
    "entities solar production dc": [],
    "entities ev consumption" : [],
    "entities wp consumption" : ["sensor.warmtepomp_today_s_consumption"],
    "entities boiler consumption": [],
    "entities battery consumption": ["sensor.totaal_batterij_consumption_dao"],
    "entities battery production": ["sensor.totaal_batterij_production_dao"]
  },
  "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"
  }
}
Zo te zien is je pv_ac een factor duizend te hoog en wordt die in HA geregistreerd in Wh ipv kWh.
HA is zo slim om dat zelf te corrigeren in de rapportages in het energy Dashboard, maar DAO moet nog veel bijleren en is nog niet zo slim 🤔.
Je kunt een template sensor maken in HA, bijvoorbeeld
code:
1
2
3
4
5
6
7
8
sensor:
  - platform: template
    sensors:
      solaredge_energ_kWh:
        friendly_name: '"solar energy in kWh'
        unit_of_measurement: 'kWh'
        value_template: "{{ states('sensor.solaredge_energy') | float / 1000 }}"
        icon_template: mdi:solar-power

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


Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
f.welvering schreef op vrijdag 20 juni 2025 @ 15:22:
Ik ben weer even gaan stoeien met DAO en heb mijn wasmachine toegevoegd als machine.
Ik krijg netjes een optimalisatie grafiek, maar de wasmachine wordt niet ingepland, ik begrijp niet zo goed waarom niet.

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
{
  "homeassistant": {
    "host": "192.168.60.3",
    "ip port": 8123,
    "token": "!secret ha_api_token"
  },
  "database ha": {
    "engine": "mysql",
    "server": "192.168.60.3",
    "port": 3306,
    "database": "homeassistant",
    "username": "dao",
    "password": "!secret db_da_password"
  },
  "database da": {
    "engine": "mysql",
    "server": "192.168.60.3",
    "port": 3306,
    "database": "dao",
    "username": "dao",
    "password": "!secret db_da_password"
  },
  "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": {
      "2025-01-01": 0.10154
    },
    "energy taxes production": {
      "2025-01-01": 0.10154
    },
    "cost supplier consumption": {
      "2024-08-01": 0.020496
    },
    "cost supplier production": {
      "2024-08-01": 0.020496
    },
    "vat": {
      "2023-01-01": 21
    },
    "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": "2024-09-01",
    "tax refund": "True",
    "prices consumption": "True",
    "prices production": "False",
    "prices spot": "False",
    "average consumption": "False"
  },
  "logging level" : "info",
  "use_calc_baseload": "True",
  "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",
    "prices consumption": "True",
    "prices production": "False",
    "prices spot": "false",
    "average consumption": "false"
  },
  "strategy": "minimize cost",
  "notifications": {
  },
  "grid": {
    "max_power": 17
  },
  "history": {
    "save days": 7
  },
  "dashboard": {
    "port": 5000
  },
  "boiler": {
    "boiler present": "False"
  },
  "heating": {
    "heater present": "False"
  },
  "battery": [ ],
  "solar": [
    { "name" : "main",
      "tilt": 50,
      "orientation": 160,
      "capacity": 9.0,
      "yield": 0.0180625,
      "entity pv switch": "input_boolean.pv_main_aan_uit"
  }],
  "electric vehicle": [ ],
  "machines" : [
      { "name": "wasmachine",
        "programs":[
          {"name": "Uit",
           "power": []},
          {"name": "Kleur 40 graden",
           "power": [2000, 1500, 500, 400, 200, 300]
           },
          {"name": "Donker 40 graden",
           "power": [1500, 1000, 500, 400, 200, 300,200, 300]
           }
        ],
        "entity start window": "input_datetime.start_window_wasmachine",
        "entity end window": "input_datetime.eind_window_wasmachine",
        "entity selected program": "input_select.wasmachine_programma",
        "entity calculated start": "input_datetime.berekende_start_wasmachine",
        "entity calculated end": "input_datetime.berekende_stop_wasmachine"
      }
  ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.p1_meter_energie_import_tarief_1",
      "sensor.p1_meter_energie_import_tarief_2"
    ],
    "entities grid production": [
      "sensor.p1_meter_energie_export_tarief_1",
      "sensor.p1_meter_energie_export_tarief_2"
    ],
    "entities solar production ac": [
      "sensor.solaredge_panel_production_daily"
    ],
    "entities solar production dc": [],
    "entities ev consumption" : [],
    "entities wp consumption" : [],
    "entities boiler consumption": [],
    "entities battery consumption": [],
    "entities battery 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"
  }
}


Log
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
2025-06-20 15:20:17 info: Day Ahead Optimalisering versie: 2025.6.1
2025-06-20 15:20:17 info: Day Ahead Optimalisering gestart op: 20-06-2025 15:20:17
2025-06-20 15:20:17 info: Day Ahead Optimalisatie gestart: 20-06-2025 15:20:17 taak: calc_optimum
2025-06-20 15:20:17 info: Debug = False
2025-06-20 15:20:17 info: Zelf berekende baseload
2025-06-20 15:20:17 info: Start waarden: 
    uur                tijd       p_l       p_t   base     pv_ac  pv_dc
0     0 2025-06-21 00:00:00  0.291073  0.291073  0.290  0.000000      0
1     1 2025-06-21 01:00:00  0.281344  0.281344  0.296  0.000000      0
2     2 2025-06-21 02:00:00  0.278525  0.278525  0.278  0.000000      0
3     3 2025-06-21 03:00:00  0.276287  0.276287  0.266  0.000000      0
4     4 2025-06-21 04:00:00  0.280764  0.280764  0.268  0.000000      0
5     5 2025-06-21 05:00:00  0.274641  0.274641  0.274  0.054711      0
6     6 2025-06-21 06:00:00  0.269571  0.269571  0.223  0.935762      0
7     7 2025-06-21 07:00:00  0.257459  0.257459  1.009  1.152426      0
8     8 2025-06-21 08:00:00  0.239539  0.239539  1.128  1.197923      0
9     9 2025-06-21 09:00:00  0.175978  0.175978  1.632  1.186866      0
10   10 2025-06-21 10:00:00  0.148256  0.148256  0.007  1.217669      0
11   11 2025-06-21 11:00:00  0.145231  0.145231  2.312  1.323333      0
12   12 2025-06-21 12:00:00  0.132660  0.132660  4.314  1.498583      0
13   13 2025-06-21 13:00:00  0.116131  0.116131  4.602  1.751323      0
14   14 2025-06-21 14:00:00  0.114050  0.114050  1.517  2.051714      0
15   15 2025-06-21 15:00:00  0.144034  0.144034  1.061  2.350290      0
16   16 2025-06-21 16:00:00  0.147772  0.147772  1.253  2.579816      0
17   17 2025-06-21 17:00:00  0.220506  0.220506  0.853  2.687413      0
18   18 2025-06-21 18:00:00  0.269740  0.269740  1.102  2.541722      0
19   19 2025-06-21 19:00:00  0.302423  0.302423  1.429  2.109260      0
20   20 2025-06-21 20:00:00  0.337319  0.337319  3.260  1.224595      0
21   21 2025-06-21 21:00:00  0.348342  0.348342  3.092  0.295823      0
22   22 2025-06-21 22:00:00  0.318322  0.318322  2.656  0.000000      0
23   23 2025-06-21 23:00:00  0.292041  0.292041  0.840  0.000000      0
2025-06-20 15:20:18 info: Boiler niet aanwezig of staat uit, boiler wordt niet ingepland
2025-06-20 15:20:18 info: Warmtepomp niet aanwezig of enabled - warmtepomp wordt niet ingepland
2025-06-20 15:20:18 info: Strategie: minimale kosten
2025-06-20 15:20:18 info: Het programma heeft een optimale oplossing gevonden.
2025-06-20 15:20:18 info: Niet geoptimaliseerd, kosten met day ahead tarieven: 2.27  
2025-06-20 15:20:18 info: Geoptimaliseerd, kosten met day ahead tarieven: 2.24  
2025-06-20 15:20:18 info: Levering: 16.95  (kWh)
2025-06-20 15:20:18 info: Berekende prognoses: 
   uur  bat_in  bat_out   cons   prod   base   boil     wp     ev  pv_ac   cost  profit  b_tem   mach
  0.00    0.00     0.00   0.19   0.00   0.29   0.00   0.00   0.00   0.00   0.06   -0.00  20.00   0.00
  1.00    0.00     0.00   0.30   0.00   0.30   0.00   0.00   0.00   0.00   0.08   -0.00  20.00   0.00
  2.00    0.00     0.00   0.28   0.00   0.28   0.00   0.00   0.00   0.00   0.08   -0.00  20.00   0.00
  3.00    0.00     0.00   0.27   0.00   0.27   0.00   0.00   0.00   0.00   0.07   -0.00  20.00   0.00
  4.00    0.00     0.00   0.27   0.00   0.27   0.00   0.00   0.00   0.00   0.08   -0.00  20.00   0.00
  5.00    0.00     0.00   0.22   0.00   0.27   0.00   0.00   0.00   0.05   0.06   -0.00  20.00   0.00
  6.00    0.00     0.00   0.00   0.71   0.22   0.00   0.00   0.00   0.94   0.00   -0.19  20.00   0.00
  7.00    0.00     0.00   0.00   0.14   1.01   0.00   0.00   0.00   1.15   0.00   -0.04  20.00   0.00
  8.00    0.00     0.00   0.00   0.07   1.13   0.00   0.00   0.00   1.20   0.00   -0.02  20.00   0.00
  9.00    0.00     0.00   0.45   0.00   1.63   0.00   0.00   0.00   1.19   0.08   -0.00  20.00   0.00
 10.00    0.00     0.00   0.00   1.21   0.01   0.00   0.00   0.00   1.22   0.00   -0.18  20.00   0.00
 11.00    0.00     0.00   0.99   0.00   2.31   0.00   0.00   0.00   1.32   0.14   -0.00  20.00   0.00
 12.00    0.00     0.00   2.82   0.00   4.31   0.00   0.00   0.00   1.50   0.37   -0.00  20.00   0.00
 13.00    0.00     0.00   2.85   0.00   4.60   0.00   0.00   0.00   1.75   0.33   -0.00  20.00   0.00
 14.00    0.00     0.00   0.00   0.53   1.52   0.00   0.00   0.00   2.05   0.00   -0.06  20.00   0.00
 15.00    0.00     0.00   0.00   1.29   1.06   0.00   0.00   0.00   2.35   0.00   -0.19  20.00   0.00
 16.00    0.00     0.00   0.00   1.33   1.25   0.00   0.00   0.00   2.58   0.00   -0.20  20.00   0.00
 17.00    0.00     0.00   0.00   1.83   0.85   0.00   0.00   0.00   2.69   0.00   -0.40  20.00   0.00
 18.00    0.00     0.00   0.00   1.44   1.10   0.00   0.00   0.00   2.54   0.00   -0.39  20.00   0.00
 19.00    0.00     0.00   0.00   0.68   1.43   0.00   0.00   0.00   2.11   0.00   -0.21  20.00   0.00
 20.00    0.00     0.00   2.04   0.00   3.26   0.00   0.00   0.00   1.22   0.69   -0.00  20.00   0.00
 21.00    0.00     0.00   2.80   0.00   3.09   0.00   0.00   0.00   0.30   0.97   -0.00  20.00   0.00
 22.00    0.00     0.00   2.66   0.00   2.66   0.00   0.00   0.00   0.00   0.85   -0.00  20.00   0.00
 23.00    0.00     0.00   0.84   0.00   0.84   0.00   0.00   0.00   0.00   0.25   -0.00  20.00   0.00
Totaal    0.00     0.00  16.95   9.24  33.96   0.00   0.00   0.00  26.16   4.10   -1.87          0.00
2025-06-20 15:20:18 info: Winst: € 0.03
2025-06-20 15:20:18 info: Doorzetten van alle settings naar HA
2025-06-20 15:20:18 info: Apparaat: wasmachine
2025-06-20 15:20:18 info: Programma: Kleur 40 graden
2025-06-20 15:20:18 info: Niet ingepland
Wat staat er in de entities die je hebt geconfigureerd:
code:
1
2
3
4
5
        "entity start window": "input_datetime.start_window_wasmachine",
        "entity end window": "input_datetime.eind_window_wasmachine",
        "entity selected program": "input_select.wasmachine_programma",
        "entity calculated start": "input_datetime.berekende_start_wasmachine",
        "entity calculated end": "input_datetime.berekende_stop_wasmachine"

Misschien kun je er een screenshot van maken, zoals deze(?):
Afbeeldingslocatie: https://tweakers.net/i/KWsuAVVgduMhZIIiiswf6fFfAFU=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/Afcrv9NOI876OXwUnDqIwKHh.png?f=user_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


Acties:
  • +1 Henk 'm!

  • diamanten
  • Registratie: Juli 2024
  • Laatst online: 22:39
KC27 schreef op vrijdag 20 juni 2025 @ 16:12:
[...]

Zo te zien is je pv_ac een factor duizend te hoog en wordt die in HA geregistreerd in Wh ipv kWh.
HA is zo slim om dat zelf te corrigeren in de rapportages in het energy Dashboard, maar DAO moet nog veel bijleren en is nog niet zo slim 🤔.
Je kunt een template sensor maken in HA, bijvoorbeeld
code:
1
2
3
4
5
6
7
8
sensor:
  - platform: template
    sensors:
      solaredge_energ_kWh:
        friendly_name: '"solar energy in kWh'
        unit_of_measurement: 'kWh'
        value_template: "{{ states('sensor.solaredge_energy') | float / 1000 }}"
        icon_template: mdi:solar-power
Dank! Dat was het idd. :) Afbeeldingslocatie: https://tweakers.net/i/-sZvTMkdxJCkS8vOxMtk_ZE8Hps=/800x/filters:strip_icc():strip_exif()/f/image/7fXfxt7Bbh0HrsQboHTD7tBD.jpg?f=fotoalbum_large

Acties:
  • 0 Henk 'm!

  • diamanten
  • Registratie: Juli 2024
  • Laatst online: 22:39
Verder (durf te vragen ;-)): is er een reden waarom morgen de Delta2Max accu wel tot 100% wordt geladen en de Evapower accu niet?
Afbeeldingslocatie: https://tweakers.net/i/dte1I7bGDyHeW9qUCdB9mXEUtsQ=/800x/filters:strip_icc():strip_exif()/f/image/8U3iAsPdPfxgQaW1EkGJn8kf.jpg?f=fotoalbum_large

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
  "battery": [
    {
      "name": "EvaPower",
      "entity actual level": "sensor.gesimuleerde_evapower_soc_dao",
      "capacity": 3.072,
      "upper limit": 100,
      "lower limit": 10,
      "optimal lower level": 10,
      "entity set power feedin": "input_number.dao_feedin_grid",
      "entity calculated soc": "input_number.dao_entity_calculated_soc",
      "entity min soc end opt": "input_number.dao_entity_min_soc_end_eva",
      "cycle cost": 0.035,
      "dc_to_bat efficiency": 0.85,
      "bat_to_dc efficiency": 0.85,
      "minimum power": 120,
      "charge stages": [
        { "power": 0.0, "efficiency": 1 },
        { "power": 100, "efficiency": 0.5 },
        { "power": 800, "efficiency": 0.89 },
        { "power": 1250, "efficiency": 0.85 },
        { "power": 2000, "efficiency": 0.86 }
      ],
      "discharge stages": [
        { "power": 0.0, "efficiency": 1 },
        { "power": 100, "efficiency": 0.5 },
        { "power": 800, "efficiency": 0.92 },
        { "power": 400, "efficiency": 0.85 },
        { "power": 600, "efficiency": 0.88 }
      ],
      "solar": []
    },
    {
      "name": "Delta2Max",
      "entity actual level": "sensor.gesimuleerde_delta2max_soc",
      "capacity": 2.048,
      "upper limit": 100,
      "lower limit": 10,
      "optimal lower level": 10,
      "minimum power": 200,
      "dc_to_bat efficiency": 0.85,
      "bat_to_dc efficiency": 0.85,
      "cycle cost": 0.035,
      "entity set power feedin": "input_number.dao_feedin_grid_d2max",
      "entity calculated soc": "input_number.dao_entity_calculated_soc_d2max",
      "entity min soc end opt": "input_number.dao_entity_min_soc_end",
      "solar": [],
      "charge stages": [
        {
          "power": 0,
          "efficiency": 1
        },
        {
          "power": 100,
          "efficiency": 0.85
        },
        {
          "power": 200,
          "efficiency": 0.88
        },
        {
          "power": 300,
          "efficiency": 0.90
        },
        {
          "power": 400,
          "efficiency": 0.91
        },
        {
          "power": 1200,
          "efficiency": 0.91
        },
        {
          "power": 1800,
          "efficiency": 0.90
        }
      ],
      "discharge stages": [
        {
          "power": 0,
          "efficiency": 1
        },
        {
          "power": 100,
          "efficiency": 0.92
        },
        {
          "power": 200,
          "efficiency": 0.93
        },
        {
          "power": 300,
          "efficiency": 0.93
        },
        {
          "power": 400,
          "efficiency": 0.92
        },
        {
          "power": 500,
          "efficiency": 0.90
        },
        {
          "power": 600,
          "efficiency": 0.88
        }
      ]
    }
  ],
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
2025-06-20 18:20:20 info: Day Ahead Optimalisering versie: 2025.5.0
2025-06-20 18:20:20 info: Day Ahead Optimalisering gestart op: 20-06-2025 18:20:20
2025-06-20 18:20:20 info: Day Ahead Optimalisatie gestart: 20-06-2025 18:20:20 taak: calc_optimum_met_debug
2025-06-20 18:20:21 info: Debug = True
2025-06-20 18:20:21 info: Baseload uit instellingen
2025-06-20 18:20:21 info: Start waarden: 
    uur                tijd      p_l      p_t  base     pv_ac  pv_dc
0    18 2025-06-20 18:00:00  0.28225  0.28225  0.26  0.455437      0
1    19 2025-06-20 19:00:00  0.31150  0.31150  0.26  0.445756      0
2    20 2025-06-20 20:00:00  0.38335  0.38335  0.22  0.190385      0
3    21 2025-06-20 21:00:00  0.36381  0.36381  0.19  0.065479      0
4    22 2025-06-20 22:00:00  0.31349  0.31349  0.18  0.000000      0
5    23 2025-06-20 23:00:00  0.29453  0.29453  0.16  0.000000      0
6     0 2025-06-21 00:00:00  0.29107  0.29107  0.14  0.000000      0
7     1 2025-06-21 01:00:00  0.28134  0.28134  0.38  0.000000      0
8     2 2025-06-21 02:00:00  0.27853  0.27853  0.26  0.000000      0
9     3 2025-06-21 03:00:00  0.27629  0.27629  0.42  0.000000      0
10    4 2025-06-21 04:00:00  0.28076  0.28076  0.15  0.000000      0
11    5 2025-06-21 05:00:00  0.27464  0.27464  0.12  0.019709      0
12    6 2025-06-21 06:00:00  0.26957  0.26957  0.13  0.377679      0
13    7 2025-06-21 07:00:00  0.25746  0.25746  0.15  0.935443      0
14    8 2025-06-21 08:00:00  0.23954  0.23954  0.23  1.303114      0
15    9 2025-06-21 09:00:00  0.17598  0.17598  0.26  1.481980      0
16   10 2025-06-21 10:00:00  0.14826  0.14826  0.31  1.588647      0
17   11 2025-06-21 11:00:00  0.14523  0.14523  0.32  1.634771      0
18   12 2025-06-21 12:00:00  0.13266  0.13266  0.31  1.615815      0
19   13 2025-06-21 13:00:00  0.11613  0.11613  0.23  1.542076      0
20   14 2025-06-21 14:00:00  0.11405  0.11405  0.26  1.423206      0
21   15 2025-06-21 15:00:00  0.14403  0.14403  0.21  1.275006      0
22   16 2025-06-21 16:00:00  0.14777  0.14777  0.21  1.100370      0
23   17 2025-06-21 17:00:00  0.22051  0.22051  0.54  0.912527      0
24   18 2025-06-21 18:00:00  0.26974  0.26974  0.26  0.711078      0
25   19 2025-06-21 19:00:00  0.30242  0.30242  0.26  0.504124      0
26   20 2025-06-21 20:00:00  0.33732  0.33732  0.22  0.279139      0
27   21 2025-06-21 21:00:00  0.34834  0.34834  0.19  0.085420      0
28   22 2025-06-21 22:00:00  0.31832  0.31832  0.18  0.000000      0
29   23 2025-06-21 23:00:00  0.29204  0.29204  0.16  0.000000      0
2025-06-20 18:20:37 info: Verbruik dit contractjaar: 645.898 kWh
2025-06-20 18:20:37 info: Productie dit contractjaar: 2739.942 kWh
2025-06-20 18:20:37 info: All taxes refund (alles wordt gesaldeerd)
2025-06-20 18:20:39 info: No reduced hours applied for EvaPower
2025-06-20 18:20:39 info: Startwaarde SoC EvaPower: 45.0%
2025-06-20 18:20:39 info: No reduced hours applied for Delta2Max
2025-06-20 18:20:39 info: Startwaarde SoC Delta2Max: 78.0%
2025-06-20 18:20:39 info: Boiler niet aanwezig of staat uit, boiler wordt niet ingepland
2025-06-20 18:20:39 info: Instellingen voor laden van EV: Kia Niro EV
2025-06-20 18:20:39 info:  Ampere  Effic. Grid kW Accu kW
2025-06-20 18:20:39 info:    0.00    1.00    0.00    0.00
2025-06-20 18:20:39 info:   16.00    0.95   11.04   10.49
2025-06-20 18:20:39 info: Capaciteit accu: 55 kWh
2025-06-20 18:20:39 info: Maximaal laadvermogen: 11.04 kW
2025-06-20 18:20:39 info: Klaar met laden op: 21-06-2025 18:50:00
2025-06-20 18:20:39 info: Huidig laadniveau: 98.0 %
2025-06-20 18:20:39 info: Gewenst laadniveau:100.0 %
2025-06-20 18:20:39 info: Marge voor het laden: 2 %
2025-06-20 18:20:39 info: Locatie: home
2025-06-20 18:20:39 info: Ingeplugged:True
2025-06-20 18:20:39 info: Benodigde energie: 1.1 kWh
2025-06-20 18:20:39 info: Tijd nodig om te laden: 0.10 uur
2025-06-20 18:20:40 info: Afgerond naar hele uren: 1
2025-06-20 18:20:40 info: Stand laden schakelaar: off
2025-06-20 18:20:40 info: Stand aantal ampere laden: 0.0 A
2025-06-20 18:20:40 info: Opladen wordt niet ingepland, omdat werkelijk niveau (98.0%) hoger is of gelijk aan gewenst niveau (100.0% minus de marge 2%).
2025-06-20 18:20:40 info: Warmtepomp niet aanwezig of enabled - warmtepomp wordt niet ingepland
2025-06-20 18:20:41 info: Strategie: minimale kosten
2025-06-20 18:20:41 info: Het programma heeft een optimale oplossing gevonden.
2025-06-20 18:20:41 info: Geen saldeer correctie
2025-06-20 18:20:41 info: Niet geoptimaliseerd, kosten met reguliere tarieven: -4.32 
2025-06-20 18:20:41 info: Niet geoptimaliseerd, kosten met day ahead tarieven: -1.57 
2025-06-20 18:20:41 info: Geoptimaliseerd, kosten met day ahead tarieven: -1.88 
2025-06-20 18:20:41 info: Levering: 2.59   (kWh)
2025-06-20 18:20:41 info: In- en uitgaande energie per uur batterij EvaPower
   uur   ac->    eff   ->dc pv->dc   dc->    eff  ->bat  o_eff    SoC
          kWh      %    kWh    kWh    kWh      %    kWh      %      %
    18   0.00     --   0.00   0.00   0.00     --   0.00     --  45.00
    19   0.00     --   0.00   0.00   0.00     --   0.00     --  45.00
    20  -0.40  92.00  -0.43   0.00  -0.43  85.00  -0.51  78.20  28.35
    21  -0.40  92.00  -0.43   0.00  -0.43  85.00  -0.51  78.20  11.70
    22   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
    23   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
     0   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
     1   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
     2   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
     3   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
     4   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
     5   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
     6   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
     7   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
     8   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
     9   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
    10   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
    11   0.00     --   0.00   0.00   0.00     --   0.00     --  11.70
    12   0.40  91.00   0.36   0.00   0.36  85.00   0.31  77.35  21.77
    13   0.40  91.00   0.36   0.00   0.36  85.00   0.31  77.35  31.84
    14   0.40  91.00   0.36   0.00   0.36  85.00   0.31  77.35  41.91
    15   0.00     --   0.00   0.00   0.00     --   0.00     --  41.91
    16   0.00     --   0.00   0.00   0.00     --   0.00     --  41.91
    17   0.00     --   0.00   0.00   0.00     --   0.00     --  41.91
    18   0.00     --   0.00   0.00   0.00     --   0.00     --  41.91
    19   0.00     --   0.00   0.00   0.00     --   0.00     --  41.91
    20  -0.37  92.00  -0.40   0.00  -0.40  85.00  -0.47  78.20  26.65
    21  -0.40  92.00  -0.43   0.00  -0.43  85.00  -0.51  78.20  10.00
    22   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
    23   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
Totaal  -0.37     --  -0.61   0.00  -0.61     --  -1.08     --       
2025-06-20 18:20:41 info: In- en uitgaande energie per uur batterij Delta2Max
   uur   ac->    eff   ->dc pv->dc   dc->    eff  ->bat  o_eff    SoC
          kWh      %    kWh    kWh    kWh      %    kWh      %      %
    18   0.00     --   0.00   0.00   0.00     --   0.00     --  78.00
    19   0.00     --   0.00   0.00   0.00     --   0.00     --  78.00
    20  -0.50  90.00  -0.56   0.00  -0.56  85.00  -0.65  76.50  46.09
    21  -0.50  90.00  -0.56   0.00  -0.56  85.00  -0.65  76.50  14.17
    22  -0.07  92.00  -0.07   0.00  -0.07  85.00  -0.09  78.20  10.00
    23   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
     0   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
     1   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
     2   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
     3   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
     4   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
     5   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
     6   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
     7   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
     8   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
     9   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
    10   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
    11   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
    12   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
    13   1.18  91.00   1.08   0.00   1.08  85.00   0.92  77.35  54.68
    14   1.20  91.00   1.09   0.00   1.09  85.00   0.93  77.35 100.00
    15   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
    16   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
    17   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
    18   0.00     --   0.00   0.00   0.00     --   0.00     -- 100.00
    19  -0.13  93.00  -0.14   0.00  -0.14  85.00  -0.17  79.05  91.87
    20  -0.40  92.00  -0.43   0.00  -0.43  85.00  -0.51  78.20  66.89
    21  -0.50  90.00  -0.56   0.00  -0.56  85.00  -0.65  76.50  34.98
    22  -0.40  92.00  -0.43   0.00  -0.43  85.00  -0.51  78.20  10.00
    23   0.00     --   0.00   0.00   0.00     --   0.00     --  10.00
Totaal  -0.12     --  -0.58   0.00  -0.58     --  -1.39     --       
2025-06-20 18:20:41 info: Berekende prognoses zijn niet opgeslagen.
2025-06-20 18:20:41 info: Berekende prognoses: 
   uur  bat_in  bat_out   cons   prod   base   boil     wp     ev  pv_ac   cost  profit  b_tem
 18.00    0.00     0.00   0.00   0.28   0.26   0.00   0.00   0.00   0.46   0.00   -0.08  20.00
 19.00    0.00     0.00   0.00   0.19   0.26   0.00   0.00   0.00   0.45   0.00   -0.06  20.00
 20.00    0.00     0.90   0.00   0.87   0.22   0.00   0.00   0.00   0.19   0.00   -0.33  20.00
 21.00    0.00     0.90   0.00   0.78   0.19   0.00   0.00   0.00   0.07   0.00   -0.28  20.00
 22.00    0.00     0.07   0.11   0.00   0.18   0.00   0.00   0.00   0.00   0.04   -0.00  20.00
 23.00    0.00     0.00   0.16   0.00   0.16   0.00   0.00   0.00   0.00   0.05   -0.00  20.00
  0.00    0.00     0.00   0.14   0.00   0.14   0.00   0.00   0.00   0.00   0.04   -0.00  20.00
  1.00    0.00     0.00   0.38   0.00   0.38   0.00   0.00   0.00   0.00   0.11   -0.00  20.00
  2.00    0.00     0.00   0.26   0.00   0.26   0.00   0.00   0.00   0.00   0.07   -0.00  20.00
  3.00    0.00     0.00   0.42   0.00   0.42   0.00   0.00   0.00   0.00   0.12   -0.00  20.00
  4.00    0.00     0.00   0.15   0.00   0.15   0.00   0.00   0.00   0.00   0.04   -0.00  20.00
  5.00    0.00     0.00   0.10   0.00   0.12   0.00   0.00   0.00   0.02   0.03   -0.00  20.00
  6.00    0.00     0.00   0.00   0.25   0.13   0.00   0.00   0.00   0.38   0.00   -0.07  20.00
  7.00    0.00     0.00   0.00   0.79   0.15   0.00   0.00   0.00   0.94   0.00   -0.20  20.00
  8.00    0.00     0.00   0.00   1.07   0.23   0.00   0.00   0.00   1.30   0.00   -0.26  20.00
  9.00    0.00     0.00   0.00   1.22   0.26   0.00   0.00   0.00   1.48   0.00   -0.22  20.00
 10.00    0.00     0.00   0.00   1.28   0.31   0.00   0.00   0.00   1.59   0.00   -0.19  20.00
 11.00    0.00     0.00   0.00   1.31   0.32   0.00   0.00   0.00   1.63   0.00   -0.19  20.00
 12.00    0.40     0.00   0.00   0.91   0.31   0.00   0.00   0.00   1.62   0.00   -0.12  20.00
 13.00    1.58     0.00   0.27   0.00   0.23   0.00   0.00   0.00   1.54   0.03    0.00  20.00
 14.00    1.60     0.00   0.44   0.00   0.26   0.00   0.00   0.00   1.42   0.05    0.00  20.00
 15.00    0.00     0.00   0.00   1.07   0.21   0.00   0.00   0.00   1.28   0.00   -0.15  20.00
 16.00    0.00     0.00   0.00   0.89   0.21   0.00   0.00   0.00   1.10   0.00   -0.13  20.00
 17.00    0.00     0.00   0.00   0.37   0.54   0.00   0.00   0.00   0.91   0.00   -0.08  20.00
 18.00    0.00     0.00   0.00   0.45   0.26   0.00   0.00   0.00   0.71   0.00   -0.12  20.00
 19.00    0.00     0.13   0.00   0.38   0.26   0.00   0.00   0.00   0.50   0.00   -0.11  20.00
 20.00    0.00     0.77   0.00   0.83   0.22   0.00   0.00   0.00   0.28   0.00   -0.28  20.00
 21.00    0.00     0.90   0.00   0.80   0.19   0.00   0.00   0.00   0.09   0.00   -0.28  20.00
 22.00    0.00     0.40   0.00   0.22   0.18   0.00   0.00   0.00   0.00   0.00   -0.07  20.00
 23.00    0.00     0.00   0.16   0.00   0.16   0.00   0.00   0.00   0.00   0.05   -0.00  20.00
Totaal    3.58     4.07   2.59  13.94   7.17   0.00   0.00   0.00  17.95   0.62   -3.22       
2025-06-20 18:20:41 info: Winst: € 0.31
2025-06-20 18:20:41 info: Onderstaande settings worden NIET doorgezet naar HA
2025-06-20 18:20:41 info: Berekeningsuitkomst voor opladen van Kia Niro EV:
2025-06-20 18:20:41 info: - aantal ampere 0A (was 0.0A)
2025-06-20 18:20:41 info: - stand schakelaar 'off' (was 'off')
2025-06-20 18:20:41 info: - positie: home
2025-06-20 18:20:41 info: - ingeplugd: True
2025-06-20 18:20:41 info: Evaluatie status laden Kia Niro EV op 2025-06-20 18:20
2025-06-20 18:20:41 info: - schakelaar laden: off
2025-06-20 18:20:41 info: - aantal ampere: 0.0
2025-06-20 18:20:41 info: Grid set point: -429.0 W
2025-06-20 18:20:41 info: Cycle cost EvaPower: 0.10 euro
2025-06-20 18:20:41 info: Netto vermogen naar(+)/uit(-) batterij EvaPower zou zijn: 0 W
2025-06-20 18:20:41 info: Balanceren zou zijn: False
2025-06-20 18:20:41 info: Grid set point: -429.0 W
2025-06-20 18:20:41 info: Cycle cost Delta2Max: 0.17 euro
2025-06-20 18:20:41 info: Netto vermogen naar(+)/uit(-) batterij Delta2Max zou zijn: 0 W
2025-06-20 18:20:41 info: Balanceren zou zijn: False

[ Voor 80% gewijzigd door diamanten op 20-06-2025 18:41 ]


Acties:
  • +1 Henk 'm!

  • f.welvering
  • Registratie: Oktober 2009
  • Laatst online: 23:04
KC27 schreef op vrijdag 20 juni 2025 @ 16:23:
[...]


Wat staat er in de entities die je hebt geconfigureerd:
code:
1
2
3
4
5
        "entity start window": "input_datetime.start_window_wasmachine",
        "entity end window": "input_datetime.eind_window_wasmachine",
        "entity selected program": "input_select.wasmachine_programma",
        "entity calculated start": "input_datetime.berekende_start_wasmachine",
        "entity calculated end": "input_datetime.berekende_stop_wasmachine"

Misschien kun je er een screenshot van maken, zoals deze(?):
[Afbeelding]
Ik snap na het zien van jou screenshot wat ik fout deed.
Ik had niet door dat het window ingesteld moest worden, ik had de aanname gedaan dat dit door DAO gedaan werd. Nu ik het window tussen 7 en 19 heb gezet krijg ik wel een berekende start en stop tijd

WP: DeWarmte PompAO 6.4Kw Hybrid, CV Intergas, Thermostaat Netatmo, 70m2 vvw, PV: 34x 325wp solaredge omvormer en optimizers,Wan ip adres weten? https://mijnips.eu


Acties:
  • 0 Henk 'm!

  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 07:43
zijn er hier DAO-gebruikers die ook Panasonic warmtepomp hebben en ook @edterbak zijn Node Red gebruiken i.c.m. DAO?

Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal


Acties:
  • +1 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
f.welvering schreef op vrijdag 20 juni 2025 @ 19:44:
[...]


Ik snap na het zien van jou screenshot wat ik fout deed.
Ik had niet door dat het window ingesteld moest worden, ik had de aanname gedaan dat dit door DAO gedaan werd. Nu ik het window tussen 7 en 19 heb gezet krijg ik wel een berekende start en stop tijd
Soms zegt een plaatje meer dan 100 woorden :)

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


Acties:
  • +2 Henk 'm!

  • sjampeter
  • Registratie: November 2021
  • Laatst online: 07-07 17:11
hemertje schreef op vrijdag 20 juni 2025 @ 21:22:
zijn er hier DAO-gebruikers die ook Panasonic warmtepomp hebben en ook @edterbak zijn Node Red gebruiken i.c.m. DAO?
jazeker. ik doe 1 run voor mijn boiler per dag. deze laat ik DAO uitrekenen en aansturen. werkt bijna perfect.

Acties:
  • 0 Henk 'm!

  • mightym
  • Registratie: Januari 2010
  • Laatst online: 06:27
@KC27 Ik maak al ruim een jaar gebruik van jouw addon en ik ben erg tevreden over de werking. Ik loop tegen een configuratie dingetje aan. Mijn accu wordt geladen door 3 multiplussen en via een victron smartsolar wordt er maximaal 6kW via DC direct geladen.
De BMS dicteert de maximale laad en ontlaad stroomsterktes.
Als de Smartsolar al met 6kW aan het laden is, en DAO wil graag met 10kW laden, dan wordt het laadvermogen van de multiplussen begrensd doordat de maximale laadstroom overschreden wordt. De regeling verwacht in totaal 16kWh de accu's in te stoppen, in werkelijkheid is dat dan bijvoorbeeld 12kWh.

Is hier in de configuratie iets aan te doen?

32 kWp PV + 54kWh ESS+ 7.5 kW Mitsubishi Ecodan


Acties:
  • +1 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
mightym schreef op zaterdag 21 juni 2025 @ 16:28:
@KC27 Ik maak al ruim een jaar gebruik van jouw addon en ik ben erg tevreden over de werking. Ik loop tegen een configuratie dingetje aan. Mijn accu wordt geladen door 3 multiplussen en via een victron smartsolar wordt er maximaal 6kW via DC direct geladen.
De BMS dicteert de maximale laad en ontlaad stroomsterktes.
Als de Smartsolar al met 6kW aan het laden is, en DAO wil graag met 10kW laden, dan wordt het laadvermogen van de multiplussen begrensd doordat de maximale laadstroom overschreden wordt. De regeling verwacht in totaal 16kWh de accu's in te stoppen, in werkelijkheid is dat dan bijvoorbeeld 12kWh.

Is hier in de configuratie iets aan te doen?
Je kunt met de instellingen bat_to_dc max power en dc_to_bat max power het maximale vermogen van en naar de batterij (de cellen) begrenzen zie DOCS.md. Als je die optionele instellingen opgeeft zal DAO die bij de berekening respecteren.
Ben je hiermee geholpen?

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


Acties:
  • 0 Henk 'm!

  • Impossibl3
  • Registratie: November 2012
  • Laatst online: 21:31
Ik ben vandaag ook gestart met de DOA installatie alleen loop ik bij het begin al tegen twee foutmeldingen aan.

1. mijn HA database is incorrect
2. mijn DOA database is incorrect.

Ik draai op HA MariaDB via add-on. Zo heb ik ook DOA geinstallerd. Ik begreep uit de handleiding dat ik dan niets hoefde aan te passen. Ik heb wat betreft punt 1 nog gecontroleerd of de gegevens uit de MariaDB config overeen komen (databasenaam en gebruikersnaam = homeassistant, password komt overeen met secrets.yaml). Ik begreep uit de handleiding dat ik "mysql" niet hoefde aan te passen als ik mariadb draaide. Is dat correct?

Hieronder de foutmeldingen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
=> directory dao_data made, files copied
=> /root/dao/data doesn't exist, made
=> /root/dao/webserver/app/static/data exist
Setting up watches.
Watches established.
[2025-06-21 16:02:56 +0200] [15] [INFO] Starting gunicorn 23.0.0
[2025-06-21 16:02:56 +0200] [15] [INFO] Listening at: http://0.0.0.0:5000 (15)
[2025-06-21 16:02:56 +0200] [15] [INFO] Using worker: sync
[2025-06-21 16:02:57 +0200] [25] [INFO] Booting worker with pid: 25
[2025-06-21 16:02:57 +0200] [26] [INFO] Booting worker with pid: 26
fout:root:Check your settings for Home Assistant database
fout:root:Check your settings for day_ahead database


En de 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
{
  "homeassistant": { },
  "database ha": {
    "engine": "mysql",
    "database": "homeassistant",
    "username": "homeassistant",
    "password": "!secret db_ha_password"
  },
   "database da": {
     "engine" : "mysql",
     "database": "day_ahead",
     "username": "day_ahead",
     "password": "!secret db_da_password"
  }, 
  "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": "2022-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.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": {
  },
  "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": [ ],
  "solar": [ ],
  "electric vehicle": [ ],
  "machines" : [ ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.grid_consumption_low",
      "sensor.grid_consumption_high"
    ],
    "entities grid production": [
      "sensor.grid_production_low",
      "sensor.grid_production_high"
    ],
    "entities solar production ac": [
      "sensor.solaredge_woning_ac_energy_kwh"
    ],
    "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": "false",
    "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"
  }
}



De db_da_password heb ik in de DOA secret config aangepast net als de aanpassingen voor db_ha_password.

Als ik meteogegevens ophalen doe onder run krijg ik de volgende foutmeldingen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Logging van bewerking "Meteoprognoses ophalen":
fout:root:Check your settings for day_ahead database
Traceback (most recent call last):
  File "/root/dao/webserver/../prog/day_ahead.py", line 3429, in <module>
    main()
  File "/root/dao/webserver/../prog/day_ahead.py", line 3392, in main
    da_calc = DaCalc("../data/options.json")
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/webserver/../prog/day_ahead.py", line 28, in __init__
    super().__init__(file_name=file_name)
  File "/root/dao/prog/da_base.py", line 202, in __init__
    self.db_da.log_pool_status()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'log_pool_status'


Nu suggereren de foutmeldingen dat mijn wachtwoord voor de DOA database niet correct zijn. Maar deze heb ik toch echt maar 1x ingesteld en later niet veranderd. Is er ergens een plek waar ik het wachtwoord voor de DOA database toch kan achterhalen of opnieuw kan instellen?

Ik heb DOA al een keer verwijder en HA opnieuw opgestart dat deed niet de truc

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


Acties:
  • 0 Henk 'm!

  • mightym
  • Registratie: Januari 2010
  • Laatst online: 06:27
KC27 schreef op zaterdag 21 juni 2025 @ 21:31:
[...]

Je kunt met de instellingen bat_to_dc max power en dc_to_bat max power het maximale vermogen van en naar de batterij (de cellen) begrenzen zie DOCS.md. Als je die optionele instellingen opgeeft zal DAO die bij de berekening respecteren.
Ben je hiermee geholpen?
Die had ik nog niet gevonden, ik ga het proberen!

32 kWp PV + 54kWh ESS+ 7.5 kW Mitsubishi Ecodan


Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
Impossibl3 schreef op zaterdag 21 juni 2025 @ 22:02:
Ik ben vandaag ook gestart met de DOA installatie alleen loop ik bij het begin al tegen twee foutmeldingen aan.

1. mijn HA database is incorrect
2. mijn DOA database is incorrect.

Ik draai op HA MariaDB via add-on. Zo heb ik ook DOA geinstallerd. Ik begreep uit de handleiding dat ik dan niets hoefde aan te passen. Ik heb wat betreft punt 1 nog gecontroleerd of de gegevens uit de MariaDB config overeen komen (databasenaam en gebruikersnaam = homeassistant, password komt overeen met secrets.yaml). Ik begreep uit de handleiding dat ik "mysql" niet hoefde aan te passen als ik mariadb draaide. Is dat correct?

Hieronder de foutmeldingen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
=> directory dao_data made, files copied
=> /root/dao/data doesn't exist, made
=> /root/dao/webserver/app/static/data exist
Setting up watches.
Watches established.
[2025-06-21 16:02:56 +0200] [15] [INFO] Starting gunicorn 23.0.0
[2025-06-21 16:02:56 +0200] [15] [INFO] Listening at: http://0.0.0.0:5000 (15)
[2025-06-21 16:02:56 +0200] [15] [INFO] Using worker: sync
[2025-06-21 16:02:57 +0200] [25] [INFO] Booting worker with pid: 25
[2025-06-21 16:02:57 +0200] [26] [INFO] Booting worker with pid: 26
fout:root:Check your settings for Home Assistant database
fout:root:Check your settings for day_ahead database


En de 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
{
  "homeassistant": { },
  "database ha": {
    "engine": "mysql",
    "database": "homeassistant",
    "username": "homeassistant",
    "password": "!secret db_ha_password"
  },
   "database da": {
     "engine" : "mysql",
     "database": "day_ahead",
     "username": "day_ahead",
     "password": "!secret db_da_password"
  }, 
  "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": "2022-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.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": {
  },
  "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": [ ],
  "solar": [ ],
  "electric vehicle": [ ],
  "machines" : [ ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.grid_consumption_low",
      "sensor.grid_consumption_high"
    ],
    "entities grid production": [
      "sensor.grid_production_low",
      "sensor.grid_production_high"
    ],
    "entities solar production ac": [
      "sensor.solaredge_woning_ac_energy_kwh"
    ],
    "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": "false",
    "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"
  }
}



De db_da_password heb ik in de DOA secret config aangepast net als de aanpassingen voor db_ha_password.

Als ik meteogegevens ophalen doe onder run krijg ik de volgende foutmeldingen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Logging van bewerking "Meteoprognoses ophalen":
fout:root:Check your settings for day_ahead database
Traceback (most recent call last):
  File "/root/dao/webserver/../prog/day_ahead.py", line 3429, in <module>
    main()
  File "/root/dao/webserver/../prog/day_ahead.py", line 3392, in main
    da_calc = DaCalc("../data/options.json")
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/webserver/../prog/day_ahead.py", line 28, in __init__
    super().__init__(file_name=file_name)
  File "/root/dao/prog/da_base.py", line 202, in __init__
    self.db_da.log_pool_status()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'log_pool_status'


Nu suggereren de foutmeldingen dat mijn wachtwoord voor de DOA database niet correct zijn. Maar deze heb ik toch echt maar 1x ingesteld en later niet veranderd. Is er ergens een plek waar ik het wachtwoord voor de DOA database toch kan achterhalen of opnieuw kan instellen?

Ik heb DOA al een keer verwijder en HA opnieuw opgestart dat deed niet de truc
Ik draai ook mariadb als addon.
In mijn dao-addon heb ik de volgende instellingen:
code:
1
2
3
4
5
6
  "database da": {
    "password": "!secret db_da_password"
  },
  "database ha": {
    "password": "!secret db_ha_password"
  },

Omdat alle instellingen (behalve natuurlijk het wachtwoord) zoals ik die heb (exact hetzelfde als de jouwe) default zijn.
Ik heb op mijn laptop een ontwikkelomgeving en daar moet ik wel alles invullen. Bijvoorbeeld:
code:
1
2
3
4
5
6
7
8
  "database da": {
    "engine": "mysql",
    "server": "192.168.178.36",
    "port": 3306,
    "database": "day_ahead",
    "username": "day_ahead",
    "password": "!secret db_da_password"
  },

Verder is het belangrijk dat je de rechten van de accounts in mariadb goed hebt staan.
Je kunt dat checken en goed zetten met de phpmyadmin-addon:
Afbeeldingslocatie: https://tweakers.net/i/8JikInLuFcU0gHzLtTH2Lu9orLQ=/800x/filters:strip_exif()/f/image/RE33mtHkdj6nEhxj4ZOtnoWf.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


Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
Oh ja en ook niet onbelangrijk:
Vul poort 3306 in de config van mariadb-addon in:
Afbeeldingslocatie: https://tweakers.net/i/TLN58vWWlSmF80IJOe68-cSsvds=/800x/filters:strip_exif()/f/image/tnNSidV5PJ03GYH5aZbRtZkN.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


Acties:
  • 0 Henk 'm!

  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 07:43
sjampeter schreef op zaterdag 21 juni 2025 @ 10:08:
[...]

jazeker. ik doe 1 run voor mijn boiler per dag. deze laat ik DAO uitrekenen en aansturen. werkt bijna perfect.
d:)b

zou je @edterbak kunnen helpen met het de manier van Helpers aanmaken ?
Ed (en ik ook niet) heeft geen ervaring met DAO en/of HACS

maar een mooie integratie tussen beide tools DAO en Ed's Node Red zou super gaaf zijn

zie zijn verzoek hier:

edterbak in "Heishamon <> Node Red voor Panasonic warmtepompen"

_/-\o_

Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal


Acties:
  • +1 Henk 'm!

  • Impossibl3
  • Registratie: November 2012
  • Laatst online: 21:31
KC27 schreef op zaterdag 21 juni 2025 @ 22:34:
[...]

Ik draai ook mariadb als addon.
In mijn dao-addon heb ik de volgende instellingen:
code:
1
2
3
4
5
6
  "database da": {
    "password": "!secret db_da_password"
  },
  "database ha": {
    "password": "!secret db_ha_password"
  },

Omdat alle instellingen (behalve natuurlijk het wachtwoord) zoals ik die heb (exact hetzelfde als de jouwe) default zijn.
Ik heb op mijn laptop een ontwikkelomgeving en daar moet ik wel alles invullen. Bijvoorbeeld:
code:
1
2
3
4
5
6
7
8
  "database da": {
    "engine": "mysql",
    "server": "192.168.178.36",
    "port": 3306,
    "database": "day_ahead",
    "username": "day_ahead",
    "password": "!secret db_da_password"
  },

Verder is het belangrijk dat je de rechten van de accounts in mariadb goed hebt staan.
Je kunt dat checken en goed zetten met de phpmyadmin-addon:
[Afbeelding]
Super bedankt! Bleek dat mijn homeassistant niet alle rechten had. Daarnaast handmatig maar even een database aangemaakt via phpmyadmin en toen deed die het goed met het ophalen van de weergegevens!

Nu weer verder puzzelen.

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


Acties:
  • +2 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
Vandaag hebben we een nieuwe productieversie van DAO gepubliceerd.
Dit staat er in de changelog:
2025.6.2
  • introduction new buildsystem (thanks @simnet )
  • repair vat delivery -> vat consumption, vat redelivery -> vat production
Verder:
Deprecating i386, coming breaking change
In the next coming version (2025.7.0) machines with i386-processor will not be supported anymore.
Some necessary modules (o.a. cryptography) are not available for the i386 architecture.
There are a few users with this processor (5 of ca 200).
Please look out for another machine with an amd64 or aarch64 processor (perhaps a separate Docker-container on your NAS).

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


Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 22:17
KC27 schreef op donderdag 19 juni 2025 @ 13:38:
@storeman
Bij een hybride omvormer heb je twee instellingen waarmee je het laden en ontladen kunt beperken:
De eerste heb je net genoemd
Er is nog een tweede: bat_to_dc max power en dc_to_bat max power, zie DOCS.md.
Ben je hiermee geholpen?
Dat is niet mijn use-case (of ik snap het niet). Ik zal proberen het duidelijker te noteren. Het gaat me hierbij niet om de exacte uitkomst van DAO vandaag, maar hoe een veld soms een gewenste en soms een ongewenste beperking is. Vandaag is een mooi voorbeeld:

Om 9u, iets hogere energieprijs
de accu zou geladen moeten met 1KW (hoger rendement in config), de rest mag terug het net in. Dus 'charge from PV' is dan 1KW.

Om 14 uur is de stroomprijs lager, DAO wil nog niet van AC laden, maar er is ook weinig zon voorspeld. DAO charge from PV is nu ook 1KW, maar dat komt door de verwachte instraling. Mocht de zon ineens doorbreken, dan wil ik alles in de accu stoppen, niet: slechts 1KW laden en de rest het net invoeden.

"Chaos kan niet uit de hand lopen"


Acties:
  • +1 Henk 'm!

  • sjampeter
  • Registratie: November 2021
  • Laatst online: 07-07 17:11
hemertje schreef op zaterdag 21 juni 2025 @ 22:45:
[...]


d:)b

zou je @edterbak kunnen helpen met het de manier van Helpers aanmaken ?
Ed (en ik ook niet) heeft geen ervaring met DAO en/of HACS

maar een mooie integratie tussen beide tools DAO en Ed's Node Red zou super gaaf zijn

zie zijn verzoek hier:

edterbak in "Heishamon <> Node Red voor Panasonic warmtepompen"

_/-\o_
ik ben ook (soort van) actief in dat draadje van edterbak, echter stel je eigen er niet teveel van voor hoor.
zeker niet van mijn programeercapaciteiten haha.
wat ik eigenlijk doe is het volgende.
ik geef in de instellingen van DAO aan, dat een dhw run ongeveer 9 kwartier duurt.
DAO rekent voor mij dan het beste tijdstip voor die run uit.
dit tijdstip komt in de entity "calculated start"

deze entitie lees ik in in Node-red, welke (met waarschijnlijk veel te veel omwegen) enkele external link nodes in "WP input" aciveert.
op manier wordt door DAO de dhw run aangestuurd.
qua verwarming doe ik helemaal niks, aangezien bij mij de wp, als het koud is, toch nagenoeg full-time moet draaien. enkel nachtverlaging pas ik soms toe, maar dat gaat gewoon via heishamon flow.

als je wil kan ik de node-red flow wel prive met je delen. moet wel nog opgepoetst worden eigenlijk. nog niet aan toegekomen. laat maar horen.

Acties:
  • 0 Henk 'm!

  • patatman12
  • Registratie: Maart 2011
  • Laatst online: 08-07 16:44
Ik ben sinds gisteren ook over op DAO, en heb DESS uitgezet.
Het was even puzzelen, maar volgens mij heb ik de setup nu werkend.

Even wat over de setup:
1x Victron MultiPlus-II 48/5000/70-48
1x JK BMS 200a i.c.m. 16x Envision ESS 72173207 305Ah - LiFePO4 - 3.2V B-grade (16Kwh)
10x op het Oosten Canadian solar 295wp met een SAJ omvormer
14x op het westen Jinko Solar 375wp met een KOPP omvormer
1x Victron EV charger
Zonneplan met dynamisch contract

Het huis zit op de AC-out van de Victron, alleen de PV west en de EV charger zitten op de non-critical loads.
de 10 panelen van het oosten bewust wel op de AC-out, zodat in island mode ik de accu nog kan laden met solar.

Verbruikers:
1x Tesla model Y standard range (60 kwh)
1x Elektrisch boiler Tesy bellislimo 100 (volgende week aangesloten)
2x Airco's (moeten nog in DAO worden)

Victron is via MQTT aan Home Assistant gekoppeld. En ik gebruik geen Node-red.
Reden voor gebruik DAO is voornamelijk het slimmer aansturen van de verbruikers, zonder zelf 100 automations te hoeven schrijven. DESS kwam hier toch wel te kort, als je ook je verbruikers op slimme momenten kan aanzetten. Nu had ik bij negatieve prijzen dat ik zelf handmatig (lees via de app) dingen ging aanzetten om stroom te verbruiken.

Vannacht zag ik alleen iets interessants, namelijk de GridSetpoint niet niet helemaal logisch in mijn ogen. Deze is s'nachts Negatief, terwijl volgens de strategie deze positief zou moeten zijn toch? Het enige wat ik kan verzinnen, is dat de SOC op 20% stond inplaats van 10%.
Ik had een verschil tussen de min SOC in victron, en DAO. Deze staan nu gelijk op 20% min soc. Zou DAO de accu alsnog naar de 10% willen krijgen?

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

Afbeeldingslocatie: https://tweakers.net/i/9xXbwanS9g0AWgLzBdBuL-8oA7s=/x800/filters:strip_exif()/f/image/eK5H18DEDguHcT2RGCadthbK.png?f=fotoalbum_large


Mijn DAO 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
{
  "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",
    "entsoe-api-key": "!secret entsoe-api-key",
    "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,
      "2025-01-01": 0.01653
    },
    "cost supplier production": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2025-01-01": 0.01653
    },
    "vat delivery": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
    "vat redelivery": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
    "vat": {
      "2025-01-01": 21
    },
    "last invoice": "2024-09-01",
    "tax refund": "True"
  },
  "logging level" : "info",
  "use_calc_baseload": "False",
  "baseload calc periode": 56,
  "baseload": [
    0.35,
    0.35,
    0.35,
    0.35,
    0.35,
    0.38,
    0.45,
    0.65,
    0.70,
    0.40,
    0.38,
    0.40,
    0.50,
    0.40,
    0.38,
    0.40,
    0.55,
    0.70,
    0.85,
    0.80,
    0.90,
    0.75,
    0.50,
    0.40
  ],
  "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": {
  },
  "grid": {
    "max_power": 9
  },
  "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": "JK Accu",
    "entity actual level": "sensor.battery_percent",
    "capacity": 16,
    "upper limit": 100,
    "lower limit": 10,
    "entity min soc end opt": "input_number.dao_min_soc_limit",
    "entity max soc end opt": "input_number.dao_max_soc_limit",
    "charge stages": [
        {
          "power": 0,
          "efficiency": 1
        },
        {
          "power": 500,
          "efficiency": 0.785
        },
        {
          "power": 1000,
          "efficiency": 0.872
        },
        {
          "power": 1500,
          "efficiency": 0.897
        },
        {
          "power": 2000,
          "efficiency": 0.899
        },
        {
          "power": 2500,
          "efficiency": 0.898
        },
        {
          "power": 3000,
          "efficiency": 0.892
        },
        {
          "power": 3500,
          "efficiency": 0.882
        },
        {
          "power": 4000,
          "efficiency": 0.865
        }
      ],
    "discharge stages": [
        {
          "power": 0,
          "efficiency": 1
        },
        {
          "power": 200,
          "efficiency": 0.891
        },
        {
          "power": 500,
          "efficiency": 0.935
        },
        {
          "power": 1000,
          "efficiency": 0.952
        },
        {
          "power": 1250,
          "efficiency": 0.962
        },
        {
          "power": 1500,
          "efficiency": 0.952
        },
        {
          "power": 2000,
          "efficiency": 0.950
        },
        {
          "power": 2500,
          "efficiency": 0.934
        },
        {
          "power": 3000,
          "efficiency": 0.925
        },
        {
          "power": 3500,
          "efficiency": 0.915
        },
        {
          "power": 4000,
          "efficiency": 0.900
        },
        {
          "power": 4350,
          "efficiency": 0.893
        }
      ],
    "minimum power": 100,
    "cycle cost": 0.01,
    "dc_to_bat efficiency": 0.98,
    "bat_to_dc efficiency": 0.99,
    "entity set power feedin": "input_number.dao_setpoint_jk",
    "solar": []
  }
],
  "solar": [
  {
    "name": "pv oost",
    "tilt": 35,
    "orientation": -90,
    "capacity": 2.95,
    "max power": 2.95,
    "yield": 0.0065,
    "entity pv switch": ""
  },
  {
    "name": "pv west",
    "tilt": 35,
    "orientation": 90,
    "capacity": 5.25,
    "max power": 5.25,
    "yield": 0.01116,
    "entity pv switch": ""
  }
],
  "electric vehicle": [],
  "machines" : [ ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.zonneplan_p1_electricity_consumption_today"
    ],
    "entities grid production": [
      "sensor.zonneplan_p1_electricity_returned_today"
    ],
    "entities solar production ac": [
      "sensor.energie_productie_oost",
      "sensor.energie_productie_west"
    ],
    "entities solar production dc": [],
    "entities ev consumption" : ["sensor.ev_charger_consumption"],
    "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"
  }
}

Acties:
  • 0 Henk 'm!

  • sjampeter
  • Registratie: November 2021
  • Laatst online: 07-07 17:11
over SOC gesproken, dit is inderdaad wel een dingetje.
ik heb zelf ook een victron.
SOC haal ik via modbus binnen in hass.
ik heb zelf ook nog wat accu beveiliging lopen via node-red.
feit is wel dat mijn SOC in principe niet lager kan dan 20 % en niet hoger als 95%.
vooral die ondergrens fluctureert wel wat, aangezien dit geen harde calculatie is.
ik houdt dus ook een marge aan betreffende SOC in DAO, wat wil zeggen een paar procent boven de eigenlijke onderste grens.
doe ik dit niet, blijft DAO proberen te ontladen in de berekeningen, waar echter de Victron/node-red dit blokkeert.
op dit moment nog niet mee bezig geweest om dit te fine-tunen.
iemand toevallig zelfde probleem/ oplossing?

Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
patatman12 schreef op zondag 22 juni 2025 @ 11:57:
Ik ben sinds gisteren ook over op DAO, en heb DESS uitgezet.
Het was even puzzelen, maar volgens mij heb ik de setup nu werkend.

Even wat over de setup:
1x Victron MultiPlus-II 48/5000/70-48
1x JK BMS 200a i.c.m. 16x Envision ESS 72173207 305Ah - LiFePO4 - 3.2V B-grade (16Kwh)
10x op het Oosten Canadian solar 295wp met een SAJ omvormer
14x op het westen Jinko Solar 375wp met een KOPP omvormer
1x Victron EV charger
Zonneplan met dynamisch contract

Het huis zit op de AC-out van de Victron, alleen de PV west en de EV charger zitten op de non-critical loads.
de 10 panelen van het oosten bewust wel op de AC-out, zodat in island mode ik de accu nog kan laden met solar.

Verbruikers:
1x Tesla model Y standard range (60 kwh)
1x Elektrisch boiler Tesy bellislimo 100 (volgende week aangesloten)
2x Airco's (moeten nog in DAO worden)

Victron is via MQTT aan Home Assistant gekoppeld. En ik gebruik geen Node-red.
Reden voor gebruik DAO is voornamelijk het slimmer aansturen van de verbruikers, zonder zelf 100 automations te hoeven schrijven. DESS kwam hier toch wel te kort, als je ook je verbruikers op slimme momenten kan aanzetten. Nu had ik bij negatieve prijzen dat ik zelf handmatig (lees via de app) dingen ging aanzetten om stroom te verbruiken.

Vannacht zag ik alleen iets interessants, namelijk de GridSetpoint niet niet helemaal logisch in mijn ogen. Deze is s'nachts Negatief, terwijl volgens de strategie deze positief zou moeten zijn toch? Het enige wat ik kan verzinnen, is dat de SOC op 20% stond inplaats van 10%.
Ik had een verschil tussen de min SOC in victron, en DAO. Deze staan nu gelijk op 20% min soc. Zou DAO de accu alsnog naar de 10% willen krijgen?

[Afbeelding]

[Afbeelding]


Mijn DAO 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
{
  "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",
    "entsoe-api-key": "!secret entsoe-api-key",
    "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,
      "2025-01-01": 0.01653
    },
    "cost supplier production": {
      "2022-01-01": 0.002,
      "2023-03-01": 0.018,
      "2024-04-01": 0.0175,
      "2025-01-01": 0.01653
    },
    "vat delivery": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
    "vat redelivery": {
      "2022-01-01": 21,
      "2022-07-01": 9,
      "2023-01-01": 21
    },
    "vat": {
      "2025-01-01": 21
    },
    "last invoice": "2024-09-01",
    "tax refund": "True"
  },
  "logging level" : "info",
  "use_calc_baseload": "False",
  "baseload calc periode": 56,
  "baseload": [
    0.35,
    0.35,
    0.35,
    0.35,
    0.35,
    0.38,
    0.45,
    0.65,
    0.70,
    0.40,
    0.38,
    0.40,
    0.50,
    0.40,
    0.38,
    0.40,
    0.55,
    0.70,
    0.85,
    0.80,
    0.90,
    0.75,
    0.50,
    0.40
  ],
  "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": {
  },
  "grid": {
    "max_power": 9
  },
  "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": "JK Accu",
    "entity actual level": "sensor.battery_percent",
    "capacity": 16,
    "upper limit": 100,
    "lower limit": 10,
    "entity min soc end opt": "input_number.dao_min_soc_limit",
    "entity max soc end opt": "input_number.dao_max_soc_limit",
    "charge stages": [
        {
          "power": 0,
          "efficiency": 1
        },
        {
          "power": 500,
          "efficiency": 0.785
        },
        {
          "power": 1000,
          "efficiency": 0.872
        },
        {
          "power": 1500,
          "efficiency": 0.897
        },
        {
          "power": 2000,
          "efficiency": 0.899
        },
        {
          "power": 2500,
          "efficiency": 0.898
        },
        {
          "power": 3000,
          "efficiency": 0.892
        },
        {
          "power": 3500,
          "efficiency": 0.882
        },
        {
          "power": 4000,
          "efficiency": 0.865
        }
      ],
    "discharge stages": [
        {
          "power": 0,
          "efficiency": 1
        },
        {
          "power": 200,
          "efficiency": 0.891
        },
        {
          "power": 500,
          "efficiency": 0.935
        },
        {
          "power": 1000,
          "efficiency": 0.952
        },
        {
          "power": 1250,
          "efficiency": 0.962
        },
        {
          "power": 1500,
          "efficiency": 0.952
        },
        {
          "power": 2000,
          "efficiency": 0.950
        },
        {
          "power": 2500,
          "efficiency": 0.934
        },
        {
          "power": 3000,
          "efficiency": 0.925
        },
        {
          "power": 3500,
          "efficiency": 0.915
        },
        {
          "power": 4000,
          "efficiency": 0.900
        },
        {
          "power": 4350,
          "efficiency": 0.893
        }
      ],
    "minimum power": 100,
    "cycle cost": 0.01,
    "dc_to_bat efficiency": 0.98,
    "bat_to_dc efficiency": 0.99,
    "entity set power feedin": "input_number.dao_setpoint_jk",
    "solar": []
  }
],
  "solar": [
  {
    "name": "pv oost",
    "tilt": 35,
    "orientation": -90,
    "capacity": 2.95,
    "max power": 2.95,
    "yield": 0.0065,
    "entity pv switch": ""
  },
  {
    "name": "pv west",
    "tilt": 35,
    "orientation": 90,
    "capacity": 5.25,
    "max power": 5.25,
    "yield": 0.01116,
    "entity pv switch": ""
  }
],
  "electric vehicle": [],
  "machines" : [ ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.zonneplan_p1_electricity_consumption_today"
    ],
    "entities grid production": [
      "sensor.zonneplan_p1_electricity_returned_today"
    ],
    "entities solar production ac": [
      "sensor.energie_productie_oost",
      "sensor.energie_productie_west"
    ],
    "entities solar production dc": [],
    "entities ev consumption" : ["sensor.ev_charger_consumption"],
    "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"
  }
}
Volgens de berekening van gisteren om 15:34 doet ie vannacht niks negatief met het grid-setpoint: allemaal kleine lichtblauwe (=levering) staafjes.
Heb je voor mij een grafiek van de berekening van vannacht om 4:00 uur dat het grid-setpoint toch negatief was in de nachtelijke uren?

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


Acties:
  • 0 Henk 'm!

  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 07:43
sjampeter schreef op zondag 22 juni 2025 @ 11:40:
[...]


ik ben ook (soort van) actief in dat draadje van edterbak, echter stel je eigen er niet teveel van voor hoor.
zeker niet van mijn programeercapaciteiten haha.
wat ik eigenlijk doe is het volgende.
ik geef in de instellingen van DAO aan, dat een dhw run ongeveer 9 kwartier duurt.
DAO rekent voor mij dan het beste tijdstip voor die run uit.
dit tijdstip komt in de entity "calculated start"

deze entitie lees ik in in Node-red, welke (met waarschijnlijk veel te veel omwegen) enkele external link nodes in "WP input" aciveert.
op manier wordt door DAO de dhw run aangestuurd.
qua verwarming doe ik helemaal niks, aangezien bij mij de wp, als het koud is, toch nagenoeg full-time moet draaien. enkel nachtverlaging pas ik soms toe, maar dat gaat gewoon via heishamon flow.

als je wil kan ik de node-red flow wel prive met je delen. moet wel nog opgepoetst worden eigenlijk. nog niet aan toegekomen. laat maar horen.
in de regel kan ik programmeertaal lezen en begrijpen
maar on zelf te programmeren gaat me een paar stappen te ver helaas

ben benieuwd naar je NR flow (y)

Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal


Acties:
  • 0 Henk 'm!

  • patatman12
  • Registratie: Maart 2011
  • Laatst online: 08-07 16:44
KC27 schreef op zondag 22 juni 2025 @ 13:49:
[...]

Volgens de berekening van gisteren om 15:34 doet ie vannacht niks negatief met het grid-setpoint: allemaal kleine lichtblauwe (=levering) staafjes.
Heb je voor mij een grafiek van de berekening van vannacht om 4:00 uur dat het grid-setpoint toch negatief was in de nachtelijke uren?
Ah, hierin zie je inderdaad dat hij probeert die laatste 10% uit de accu te duwen. Hij probeert het ook om 5:00 zie screenshots. En de daarop volgende uren, tot de zon weer gaat schijnen en de accu naar de 20% gaat.
In dit geval dus een PEBKAC :X

Afbeeldingslocatie: https://tweakers.net/i/7CFF3QRDVoeewItqjusfJR06Qec=/x800/filters:strip_exif()/f/image/YPeWnVYxfV6fMYUyQBEpjFrB.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/qz2lJZ_Eog-ATuTomlDWxn34M4c=/x800/filters:strip_exif()/f/image/4UAZx3ZVyVq4gAat9zHJdgsO.png?f=fotoalbum_large

Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
patatman12 schreef op zondag 22 juni 2025 @ 14:47:
[...]


Ah, hierin zie je inderdaad dat hij probeert die laatste 10% uit de accu te duwen. Hij probeert het ook om 5:00 zie screenshots. En de daarop volgende uren, tot de zon weer gaat schijnen en de accu naar de 20% gaat.
In dit geval dus een PEBKAC :X

[Afbeelding]

[Afbeelding]
Nou volgens de berekening van 15:34 zou de SoC al om 0:00 uur op 10% moeten zitten.
Dus de vraag is: wat was de SoC om 0:00 uur en zijn in de uren daarvoor ook de kWh uit de batterij gehaald zoals berekend/voorspeld door DAO.
De berekening/voorspelling van DAO moet kloppen met de werkelijkheid (mag een procent afwijken).
Als de voorspelling van het verloop van de SoC door DAO niet klopt dan zit er (denk ik) iets fout in je instellingen.
Dat kan op twee vlakken fout zitten:
  • de capaciteit is te laag ingesteld
  • de efficiency van het ontladen is te laag ingesteld
Als de capaciteit te laag is ingesteld zul je ook problemen hebben tijdens het laden: dat hij ook daar langer over doet dan voorspeld.
Ik denk niet dat de ontlaad-efficiency te laag is ingesteld, omdat hij al "hoog" staat in vergelijking met het laden.

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


Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
storeman schreef op zondag 22 juni 2025 @ 10:17:
[...]


Dat is niet mijn use-case (of ik snap het niet). Ik zal proberen het duidelijker te noteren. Het gaat me hierbij niet om de exacte uitkomst van DAO vandaag, maar hoe een veld soms een gewenste en soms een ongewenste beperking is. Vandaag is een mooi voorbeeld:

Om 9u, iets hogere energieprijs
de accu zou geladen moeten met 1KW (hoger rendement in config), de rest mag terug het net in. Dus 'charge from PV' is dan 1KW.

Om 14 uur is de stroomprijs lager, DAO wil nog niet van AC laden, maar er is ook weinig zon voorspeld. DAO charge from PV is nu ook 1KW, maar dat komt door de verwachte instraling. Mocht de zon ineens doorbreken, dan wil ik alles in de accu stoppen, niet: slechts 1KW laden en de rest het net invoeden.
Ik geloof dat ik het begin te begrijpen (corrigeer me als ik het mis heb).
Tussen de uurlijkse berekeningen door wil je - afhankelijk van de prijs - schommelingen in je pv-productie anders opvangen:
Bij hoge prijzen (bijv hoger dan gemiddeld):
- als pv productie hoger is dan verwacht: terugleveren
- als pv productie lager is: niks doen
Bij lage prijzen (lager dan gemiddeld):
- als pv productie hoger is dan verwacht: opslaan
- als pv productie lager is dan verwacht: inkopen van het net
Dit kan DAO (nog) niet voor je oplossen.
Maar dit kun je perfect oplossen met een automation of nodered-flow in HA.
Maar voordat ik die hier ga delen, wil ik eerst weten dat dit de weg is die je op wil gaan.

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


Acties:
  • +1 Henk 'm!

  • Torch1969
  • Registratie: Juni 2013
  • Laatst online: 22:26
@KC27 Zou DAO ook een vorm van "hybride" aansturing aankunnen? Dus niet volledig minimaliseren kosten of volledig maximaliseren eigen verbruik, maar iets daartussen in? Een soort hybride aansturing?

Ik stel me een configuratie instelling voor in een percentage (tientallen), waarmee het algoritme bepaald of het minimaliseren kosten is (0), maximaliseren eigen verbruik (1) of iets ertussenin (b.v. 0.5).

In mijn oude (zelf geautomatiseerde) aansturing ging ik voor maximaliseren eigen verbruik, maar wel binnen de grenzen van minimaliseren kosten. Dus het laden van de accu uitsmeren over de uren waarin de zonopbrengst groter is dan het eigen verbruik, maar de prijs ook laag genoeg om efficiency verliezen en cycle costs goed te maken (en andersom met ontladen).

Acties:
  • +2 Henk 'm!

  • diamanten
  • Registratie: Juli 2024
  • Laatst online: 22:39
Vraagje: met dit warme weer wil ik graag mijn airco's aansturen via DAO. Ik heb nu de volgende machine aangemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  "machines" : [ 
      { "name": "Airco",
        "programs":[
          {"name": "Uit",
           "power": []},
          {"name": "Auto",
           "power": [1000, 1000, 1000, 1000, 1000, 1000, 1000, 800]
           }
        ],
        "entity start window": "input_datetime.start_window_airco",
        "entity end window": "input_datetime.eind_window_airco",
        "entity selected program": "input_select.airco_programma",
        "entity calculated start": "input_datetime.berekende_start_airco",
        "entity calculated end": "input_datetime.berekende_stop_airco"
      }
  ],
Afbeeldingslocatie: https://tweakers.net/i/SMo8iLBrmGaUDh-04NpnOfIcfoY=/fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():strip_exif()/f/image/JJ1cPf6nVAsoGoNNyi4iN9n2.jpg?f=user_large
Dit werkt op zich wel, maar is er een betere manier hiervoor?

[ Voor 11% gewijzigd door diamanten op 22-06-2025 20:26 ]


Acties:
  • +1 Henk 'm!

  • patatman12
  • Registratie: Maart 2011
  • Laatst online: 08-07 16:44
KC27 schreef op zondag 22 juni 2025 @ 15:42:
[...]

Nou volgens de berekening van 15:34 zou de SoC al om 0:00 uur op 10% moeten zitten.
Dus de vraag is: wat was de SoC om 0:00 uur en zijn in de uren daarvoor ook de kWh uit de batterij gehaald zoals berekend/voorspeld door DAO.
De berekening/voorspelling van DAO moet kloppen met de werkelijkheid (mag een procent afwijken).
Als de voorspelling van het verloop van de SoC door DAO niet klopt dan zit er (denk ik) iets fout in je instellingen.
Dat kan op twee vlakken fout zitten:
  • de capaciteit is te laag ingesteld
  • de efficiency van het ontladen is te laag ingesteld
Als de capaciteit te laag is ingesteld zul je ook problemen hebben tijdens het laden: dat hij ook daar langer over doet dan voorspeld.
Ik denk niet dat de ontlaad-efficiency te laag is ingesteld, omdat hij al "hoog" staat in vergelijking met het laden.
SoC om 0:00 was 20% i.p.v. de door DAO verwacht 10%.
Dat kwam omdat ik bij DAO 10% had opgegeven, en in de Victron DVCC 20% minimum SoC had aangeven.
In dit geval was DAO tegen de Victron aan het vechten door 2 verschillende parameters.

Ik zal de Setpoint in de gaten houden vanavond, en morgen even een kleine update geven. Maar verwacht dat het door de afwijkende min. SoC kwam.
Bedankt voor je uitgebreide reactie, geeft ook meer inzicht in de werking van DAO!

Acties:
  • +1 Henk 'm!

  • balk
  • Registratie: Januari 2000
  • Laatst online: 06:10
Torch1969 schreef op zondag 22 juni 2025 @ 17:09:
@KC27 Zou DAO ook een vorm van "hybride" aansturing aankunnen? Dus niet volledig minimaliseren kosten of volledig maximaliseren eigen verbruik, maar iets daartussen in? Een soort hybride aansturing?

Ik stel me een configuratie instelling voor in een percentage (tientallen), waarmee het algoritme bepaald of het minimaliseren kosten is (0), maximaliseren eigen verbruik (1) of iets ertussenin (b.v. 0.5).

In mijn oude (zelf geautomatiseerde) aansturing ging ik voor maximaliseren eigen verbruik, maar wel binnen de grenzen van minimaliseren kosten. Dus het laden van de accu uitsmeren over de uren waarin de zonopbrengst groter is dan het eigen verbruik, maar de prijs ook laag genoeg om efficiency verliezen en cycle costs goed te maken (en andersom met ontladen).
Ik heb nu in Home Assistant de logica zitten die bepaalt wat er moet gebeuren indien DAO setpoint 0 is. Onderstaande tabel is nog niet perfect, en ik moet de logica ook nog eens goed doorlopen. Ik heb twee sensoren gemaakt die bepalen of de prijs hoog, medium, laag of negatief is. Simpelweg drie blokken van 33% van de prijs range van vandaag. Stijgend en dalend is met een derivative sensor, een sprong van 3 cent per kWh geeft stijging/daling aan. Anders vlak.

Kolom "Hoog" staat er 2 keer in, duplicaat.
SoCPrijs hoogMedium, dalendLaagMedium, stijgendHoog
100%XoM, discharge onlyXoM, discharge onlyidle
(wacht op betere prijzen)
idle
(wacht op betere prijzen)
XoM, discharge only
> 70%XoM, discharge only
(export zon)
XoM, discharge only (export zon)XoM, charge onlyIdle
(betere prijzen komen er aan)
XoM, discharge only
> 40%XoM, discharge only (export zon)XoM, discharge only (export zon)XoM, charge onlyXoM, charge onlyXoM, discharge only
> 10%idleXoM, discharge onlyXoM, charge only (?)XoM, discharge only (?)Idle
< 10%
(noodstroom)
idleXoM, charge onlyXoM, charge onlyXoM, charge onlyIdle

Dit voelt voor mij beter dan domweg idle wanneer DAO 0 zegt. Misschien niet financieel optimaal maar zeker niet ver er onder.

Ik heb twee Sessy's, en die stuur ik aan met de XoM automation van PimDoos.
+++ edit
nu ik weer zo naar de tabel kijk zie ik toch nog gekke dingen. Er wordt nog aan gewerkt :)
beetje uitleg toegevoegd aan tabel

[ Voor 3% gewijzigd door balk op 22-06-2025 22:07 ]


Acties:
  • +1 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
patatman12 schreef op zondag 22 juni 2025 @ 20:51:
[...]


SoC om 0:00 was 20% i.p.v. de door DAO verwacht 10%.
Dat kwam omdat ik bij DAO 10% had opgegeven, en in de Victron DVCC 20% minimum SoC had aangeven.
In dit geval was DAO tegen de Victron aan het vechten door 2 verschillende parameters.

Ik zal de Setpoint in de gaten houden vanavond, en morgen even een kleine update geven. Maar verwacht dat het door de afwijkende min. SoC kwam.
Bedankt voor je uitgebreide reactie, geeft ook meer inzicht in de werking van DAO!
Ik zou Victron DVCC en DAO op hetzelfde minimum zetten. Dan kan DAO daarmee de meest optimale inzet van je Victron berekenen.

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


Acties:
  • +2 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
Torch1969 schreef op zondag 22 juni 2025 @ 17:09:
@KC27 Zou DAO ook een vorm van "hybride" aansturing aankunnen? Dus niet volledig minimaliseren kosten of volledig maximaliseren eigen verbruik, maar iets daartussen in? Een soort hybride aansturing?

Ik stel me een configuratie instelling voor in een percentage (tientallen), waarmee het algoritme bepaald of het minimaliseren kosten is (0), maximaliseren eigen verbruik (1) of iets ertussenin (b.v. 0.5).

In mijn oude (zelf geautomatiseerde) aansturing ging ik voor maximaliseren eigen verbruik, maar wel binnen de grenzen van minimaliseren kosten. Dus het laden van de accu uitsmeren over de uren waarin de zonopbrengst groter is dan het eigen verbruik, maar de prijs ook laag genoeg om efficiency verliezen en cycle costs goed te maken (en andersom met ontladen).
Het is een interessante gedachte en de moeite waard om na te gaan of dit kan.
Jouw vraag is ook een mooie aanleiding om uiteen te zetten hoe DAO nu rekent met "minimize consumption" (is eigenlijk hetzelfde als maximalisering eigen verbruik, toch?).
Als je bij DAO de strategie "minimize consumption" kiest rekent het programma in twee stappen:
stap 1: het programma stuurt de mip optimalisatie aan met de functie:"minimize consumption". Dit levert een uitkomst op waarbij geen rekening is gehouden met de kosten, maar (zeker in de zomer) op zonnige dagen met pv vaak consumption die op nul uitkomt. Maar de teruglevering is dan niet geoptimaliseerd. De zo berekende consumption noem ik consumption_stap_1.
stap 2: ik voer een extra randvoorwaarde in het model: consumption <= maximum(0, consumption_stap_1) en voer wederom een optimaliseringsberekening uit nu met als functie "minimize cost".
Het programma gaat nu de teruglevering sturen naar de uren waar het het meeste oplevert.
De uitkomst die dit oplevert wordt gepresenteerd als het eindresultaat van een bewerking.
Dus eigenlijk doet het programma al een beetje wat jij voorstelt.

Als je die twee strategieën wilt combineren dan zul je - als je mip wilt gebruiken als optimaliseringsalgoritme - die twee eenheden moeten gaan wegen en optellen tot een gecombineerde eenheid en die gaan optimaliseren.
Bijvoorbeeld (dit is een theoretische exercitie) we gaan rekenen met strafpunten (je mag dan zelf de strafpunten instellen in de settings):
1 kWh consumption = 10 strafpunten
1 euro cost = 5 strafpunten
1 euro profit = - 5 strafpunten
Dat stop je als extra randvoorwaarden in het model en je gaat met het model zoeken naar "minimize strafpunten").
Op deze manier zouden we die twee strategieën kunnen combineren.

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


Acties:
  • 0 Henk 'm!

  • Torch1969
  • Registratie: Juni 2013
  • Laatst online: 22:26
balk schreef op zondag 22 juni 2025 @ 21:49:
[...]

Ik heb nu in Home Assistant de logica zitten die bepaalt wat er moet gebeuren indien DAO setpoint 0 is. Onderstaande tabel is nog niet perfect, en ik moet de logica ook nog eens goed doorlopen. Ik heb twee sensoren gemaakt die bepalen of de prijs hoog, medium, laag of negatief is. Simpelweg drie blokken van 33% van de prijs range van vandaag. Stijgend en dalend is met een derivative sensor, een sprong van 3 cent per kWh geeft stijging/daling aan. Anders vlak.

Kolom "Hoog" staat er 2 keer in, duplicaat.
SoCPrijs hoogMedium, dalendLaagMedium, stijgendHoog
100%XoM, discharge onlyXoM, discharge onlyidle
(wacht op betere prijzen)
idle
(wacht op betere prijzen)
XoM, discharge only
> 70%XoM, discharge only
(export zon)
XoM, discharge only (export zon)XoM, charge onlyIdle
(betere prijzen komen er aan)
XoM, discharge only
> 40%XoM, discharge only (export zon)XoM, discharge only (export zon)XoM, charge onlyXoM, charge onlyXoM, discharge only
> 10%idleXoM, discharge onlyXoM, charge only (?)XoM, discharge only (?)Idle
< 10%
(noodstroom)
idleXoM, charge onlyXoM, charge onlyXoM, charge onlyIdle

Dit voelt voor mij beter dan domweg idle wanneer DAO 0 zegt. Misschien niet financieel optimaal maar zeker niet ver er onder.

Ik heb twee Sessy's, en die stuur ik aan met de XoM automation van PimDoos.
+++ edit
nu ik weer zo naar de tabel kijk zie ik toch nog gekke dingen. Er wordt nog aan gewerkt :)
beetje uitleg toegevoegd aan tabel
Super interessant en ik zal het nog eens goed doornemen,
Nadeel is wel dat je buiten DAO om de accu gaat gebruiken. Denk dat het mooier is dat DAO dit bedenkt zodat die weet wat er gaat gebeuren en daar ook rekening mee houdt.
De XOM blueprint van Pimdoos heb ik op mijn todo staan om te integreren om ook NOM te kunnen draaien voor de balanceer optie van DAO (eventueel 2 varianten waar de ene alleen kan laden en de andere alleen kan ontladen).

[ Voor 4% gewijzigd door Torch1969 op 23-06-2025 08:18 ]


Acties:
  • +1 Henk 'm!

  • Torch1969
  • Registratie: Juni 2013
  • Laatst online: 22:26
KC27 schreef op zondag 22 juni 2025 @ 22:59:
[...]

Het is een interessante gedachte en de moeite waard om na te gaan of dit kan.
Jouw vraag is ook een mooie aanleiding om uiteen te zetten hoe DAO nu rekent met "minimize consumption" (is eigenlijk hetzelfde als maximalisering eigen verbruik, toch?).
Als je bij DAO de strategie "minimize consumption" kiest rekent het programma in twee stappen:
stap 1: het programma stuurt de mip optimalisatie aan met de functie:"minimize consumption". Dit levert een uitkomst op waarbij geen rekening is gehouden met de kosten, maar (zeker in de zomer) op zonnige dagen met pv vaak consumption die op nul uitkomt. Maar de teruglevering is dan niet geoptimaliseerd. De zo berekende consumption noem ik consumption_stap_1.
stap 2: ik voer een extra randvoorwaarde in het model: consumption <= maximum(0, consumption_stap_1) en voer wederom een optimaliseringsberekening uit nu met als functie "minimize cost".
Het programma gaat nu de teruglevering sturen naar de uren waar het het meeste oplevert.
De uitkomst die dit oplevert wordt gepresenteerd als het eindresultaat van een bewerking.
Dus eigenlijk doet het programma al een beetje wat jij voorstelt.

Als je die twee strategieën wilt combineren dan zul je - als je mip wilt gebruiken als optimaliseringsalgoritme - die twee eenheden moeten gaan wegen en optellen tot een gecombineerde eenheid en die gaan optimaliseren.
Bijvoorbeeld (dit is een theoretische exercitie) we gaan rekenen met strafpunten (je mag dan zelf de strafpunten instellen in de settings):
1 kWh consumption = 10 strafpunten
1 euro cost = 5 strafpunten
1 euro profit = - 5 strafpunten
Dat stop je als extra randvoorwaarden in het model en je gaat met het model zoeken naar "minimize strafpunten").
Op deze manier zouden we die twee strategieën kunnen combineren.
Ja, met maximaliseer eigen verbruik bedoelde ik inderdaad “minimize consumption”. Dank voor de uitleg (zal die ook toevoegen in de wiki 😀). Goed te lezen dat die eigenlijk al een soort van hybride vorm is. Ik zal in mijn testomgeving eens schaduwdraaien met die instelling. Klinkt inderdaad alsof dat eigenlijk al is wat ik wil. Werkt dit ook zo bij ontladen? Dus sturen naar uren met minste zon opbrengst en daarbinnen naar duurste uren?

De werking met strafpunten zou een alternatief kunnen zijn, maar die moeten we nog maar eens goed doorgronden.

Acties:
  • +1 Henk 'm!

  • Torch1969
  • Registratie: Juni 2013
  • Laatst online: 22:26
diamanten schreef op zondag 22 juni 2025 @ 20:20:
Vraagje: met dit warme weer wil ik graag mijn airco's aansturen via DAO. Ik heb nu de volgende machine aangemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  "machines" : [ 
      { "name": "Airco",
        "programs":[
          {"name": "Uit",
           "power": []},
          {"name": "Auto",
           "power": [1000, 1000, 1000, 1000, 1000, 1000, 1000, 800]
           }
        ],
        "entity start window": "input_datetime.start_window_airco",
        "entity end window": "input_datetime.eind_window_airco",
        "entity selected program": "input_select.airco_programma",
        "entity calculated start": "input_datetime.berekende_start_airco",
        "entity calculated end": "input_datetime.berekende_stop_airco"
      }
  ],
[Afbeelding]
Dit werkt op zich wel, maar is er een betere manier hiervoor?
Ik heb eigenlijk een soortgelijke vraag. Ik heb de airco nu voor de reports als WP (is het eigenlijk ook) geconfigureerd, maar dus alleen voor vastleggen energieverbruik ( om die uit de baseload te halen). Voor de aansturing ben ik er ook nog niet uit. Voelt vreemd om de airco als “heating” te configureren, afgezien van het feit dat ik de benodigde gegevens lastig kan achterhalen.

Acties:
  • +2 Henk 'm!

  • balk
  • Registratie: Januari 2000
  • Laatst online: 06:10
Torch1969 schreef op maandag 23 juni 2025 @ 07:56:
[...]


Super interessant en ik zal het nog eens goed doornemen,
Nadeel is wel dat je buiten DAO om de accu gaat gebruiken. Denk dat het mooier is dat DAO dit bedenkt zodat die weet wat er gaat gebeuren en daar ook rekening mee houdt.
De XOM blueprint van Pimdoos heb ik op mijn todo staan om te integreren om ook NOM te kunnen draaien voor de balanceer optie van DAO (eventueel 2 varianten waar de ene alleen kan laden en de andere alleen kan ontladen).
Zolang je zonnestroom hebt zal DAO nooit precies kunnen voorspellen wat er gaat gebeuren. Ook eigen gebruik is niet foutloos te voorspellen. Ik zie DAO als de strateeg die zich niet bemoeit met de directe uitvoering. Het is heel goed met het uitzetten van de grote lijnen maar kan niet op de seconde regelen. Home Assistant juist omgekeerd en daarom werkt het ook zo lekker samen.

Acties:
  • 0 Henk 'm!

  • patatman12
  • Registratie: Maart 2011
  • Laatst online: 08-07 16:44
KC27 schreef op zondag 22 juni 2025 @ 22:59:
[...]

Het is een interessante gedachte en de moeite waard om na te gaan of dit kan.
Jouw vraag is ook een mooie aanleiding om uiteen te zetten hoe DAO nu rekent met "minimize consumption" (is eigenlijk hetzelfde als maximalisering eigen verbruik, toch?).
Als je bij DAO de strategie "minimize consumption" kiest rekent het programma in twee stappen:
stap 1: het programma stuurt de mip optimalisatie aan met de functie:"minimize consumption". Dit levert een uitkomst op waarbij geen rekening is gehouden met de kosten, maar (zeker in de zomer) op zonnige dagen met pv vaak consumption die op nul uitkomt. Maar de teruglevering is dan niet geoptimaliseerd. De zo berekende consumption noem ik consumption_stap_1.
stap 2: ik voer een extra randvoorwaarde in het model: consumption <= maximum(0, consumption_stap_1) en voer wederom een optimaliseringsberekening uit nu met als functie "minimize cost".
Het programma gaat nu de teruglevering sturen naar de uren waar het het meeste oplevert.
De uitkomst die dit oplevert wordt gepresenteerd als het eindresultaat van een bewerking.
Dus eigenlijk doet het programma al een beetje wat jij voorstelt.

Als je die twee strategieën wilt combineren dan zul je - als je mip wilt gebruiken als optimaliseringsalgoritme - die twee eenheden moeten gaan wegen en optellen tot een gecombineerde eenheid en die gaan optimaliseren.
Bijvoorbeeld (dit is een theoretische exercitie) we gaan rekenen met strafpunten (je mag dan zelf de strafpunten instellen in de settings):
1 kWh consumption = 10 strafpunten
1 euro cost = 5 strafpunten
1 euro profit = - 5 strafpunten
Dat stop je als extra randvoorwaarden in het model en je gaat met het model zoeken naar "minimize strafpunten").
Op deze manier zouden we die twee strategieën kunnen combineren.
Dit is eigenlijk vergelijkbaar hoe DESS werkt met "Green Mode".
https://communityarchive....namic-ess-green-mode.html
Optimized Self-Consumption: With this mode enabled, your system first directs solar energy towards meeting your immediate consumption needs.
Battery Charging Priority: Once your consumption needs are met, any excess solar power is utilized to charge your batteries, ensuring they are charged sufficiently for hours without solar.
Grid trading: Only after your consumption and battery charging needs are fulfilled does the system consider selling surplus solar energy back to the grid.
Alleen met DAO zou je dan die laatste ook nog optimaliseren, dus alleen verkopen op de duurste momenten.

Acties:
  • 0 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
balk schreef op zondag 22 juni 2025 @ 21:49:
Ik heb nu in Home Assistant de logica zitten die bepaalt wat er moet gebeuren indien DAO setpoint 0 is.
Het mag dan misschien beter voelen, maar als DAO 0 als setpoint aanhoud is er kwa efficiency en kosten voor gebruik accu geen eer te behalen aan gebruik van die accu. Dan ben je volgens mij net zo goed of beter af door de laad/ontlaad efficiencies kunstmatig hoog te zetten en kosten voor gebruik accu kunstmatig laag.

Overigens: als DAO vind dat 0-op-meter de beste strategie is dan kiest-ie daar zelf ook voor. Sinds ik DAO (op de juiste manier) verteld heb dat ik 2 cent moet betalen voor het terugleveren van een kWh kiest-ie daar bij mij vrij vaak voor als de zon schijnt.

Een beetje lastig grafiekje als je 'm niet zelf ingesteld hebt, maar:

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

Waar de gele lijn (netbalans, vermogen op de P1 meter) redelijk strak op 0 zit is DAO aan het balanceren en aan het proberen de 'waardeloze' zonne-energie in de accu te krijgen.

Overigens is er ook goed te zien dat het niet handig is als DAO ergens niet vanaf weet. Om ca. 13.15 moet de auto nog even bijgeladen worden en wordt dat geforceerd door een van de familieleden (ze kiezen voor 'nu laden'). DAO weet daar niet van, en kiest vrolijk voor 'balanceren' met als gevolg dat veel van die autolaadenergie uit de accu komt.

(misschien moet ik 'nu laden' implementeren door de EV-moet-vol-zijn tijd aan te passen en DAO een schop te geven)
balk schreef op maandag 23 juni 2025 @ 08:32:
Ik zie DAO als de strateeg die zich niet bemoeit met de directe uitvoering. Het is heel goed met het uitzetten van de grote lijnen maar kan niet op de seconde regelen. Home Assistant juist omgekeerd en daarom werkt het ook zo lekker samen.
Ik ook, daarom laat ik 'm vaker draaien dan eens per uur zodat de strateeg de strategie bij kan werken als de praktijk wat afwijkt van de theorie. Zeker zinvol als HA buiten DAO om nog dingen met de 'door DAO beheerde apparatuur' doet.
DAO gaat er voorlopig nog wel vanuit dat zaken binnen het uur klaar moeten zijn en houd geen rekening met verkorte tijden tussen de runs.

@KC27: zo'n cost-gebaseerde optimalisatie, of strafpunten zo je wil, is wel wat als je het mij vraagt.

[ Voor 9% gewijzigd door DaBit op 23-06-2025 09:14 ]


Acties:
  • +1 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 22:17
KC27 schreef op zondag 22 juni 2025 @ 16:40:
[...]

Ik geloof dat ik het begin te begrijpen (corrigeer me als ik het mis heb).
Tussen de uurlijkse berekeningen door wil je - afhankelijk van de prijs - schommelingen in je pv-productie anders ...
Maar voordat ik die hier ga delen, wil ik eerst weten dat dit de weg is die je op wil gaan.
Dank voor je reactie KC27! Waar het bij mij schuurt is dat die entiteit dus eigenlijk twee functies heeft: begrenzing en planning.

Maar altijd goed om even te sparren. Ik heb nu bedacht dat als de `entity from ac` 0 is en `entity from pv` is dat niet, dat er onbeperkt geladen mag worden, volgens mij is dat de juiste logica.

"Chaos kan niet uit de hand lopen"


Acties:
  • 0 Henk 'm!

  • balk
  • Registratie: Januari 2000
  • Laatst online: 06:10
DaBit schreef op maandag 23 juni 2025 @ 09:06:
[...]

Overigens: als DAO vind dat 0-op-meter de beste strategie is dan kiest-ie daar zelf ook voor. Sinds ik DAO (op de juiste manier) verteld heb dat ik 2 cent moet betalen voor het terugleveren van een kWh kiest-ie daar bij mij vrij vaak voor als de zon schijnt.
Mee eens, ik ben dat ook nog aan het inrichten. Mijn logica is een aanvulling daarop. Stel DAO kiest voor NoM midden op de dag en dan gaat hier de wasmachine/Quooker/oid aan , dan wil ik niet dat het tekort uit de batterij komt maar vanaf het net. Op die momenten is het dus XoM met alleen laden. Omgekeerd zijn er ook scenarios waarbij je niet wil laden, en alleen ontladen.
+++
Aanvulling: mijn PV vermogen is kleiner dan accu laad vermogen

[ Voor 4% gewijzigd door balk op 23-06-2025 13:42 ]


Acties:
  • 0 Henk 'm!

  • simnet
  • Registratie: Januari 2020
  • Laatst online: 08-07 18:41
DaBit schreef op maandag 23 juni 2025 @ 09:06:
[...]

Overigens is er ook goed te zien dat het niet handig is als DAO ergens niet vanaf weet. Om ca. 13.15 moet de auto nog even bijgeladen worden en wordt dat geforceerd door een van de familieleden (ze kiezen voor 'nu laden'). DAO weet daar niet van, en kiest vrolijk voor 'balanceren' met als gevolg dat veel van die autolaadenergie uit de accu komt.

(misschien moet ik 'nu laden' implementeren door de EV-moet-vol-zijn tijd aan te passen en DAO een schop
Ik zit met een vergelijkbare uitdaging, in dat ik graag mijn vaatwasser wil meenemen in DOA als machine, maar hij is alleen niet slim te sturen (en de vrouw wil hem ook gewoon zelf kunnen starten wanner zij wil). Ik weet (aan de hand van een energysocket) wel wanneer hij start en heb zitten proberen om vergelijkbaar met jou DAO daar van op de hoogte te stellen. Ik heb nog niet een echt betrouwbare methode gevonden.

Dit is overigens ook een feature request aan @KC27 die ik nog aan het formulieren was... :)
Dus eigenlijk een endpoint binnen DAO om direct een machine te starten en een hercalculatie te doen. Mede omdat op dit soort momenten de batterij strategie flink kan wijzigen.

Acties:
  • +1 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
balk schreef op maandag 23 juni 2025 @ 13:30:
Mee eens, ik ben dat ook nog aan het inrichten. Mijn logica is een aanvulling daarop.
Ik liet precies zo'n moment liet zien in mijn grafiekje (en ook nog eens eentje waarvoor de accu relatief flink aan de bak moest want zo'n EV-met-voorrang lust meteen 11kW), maar heel erg is het niet:

- Normaal heb ik ruim >3kW aan zon als DAO gaat balanceren. Als er dan een vaatwasser oid aan gaat laad de accu tijdelijk even wat minder vlot. Dat wordt in de uren erna wel weer rechtgetrokken; je hebt al gauw meer opbrengst op een dag dan kWh-en aan accucapaciteit om te vullen.
- Die paar kWh die deze special case uit de accu komen zijn hoogstwaarschijnlijk goedkoop verkregen kWh-en, je 'betaalt' er alleen een procent of 15 aan laad/ontlaadverliezen voor en een paar cent aan apparatuurslijtage als je dat wil verrekenen. Eigenlijk niet of amper meer dan de inkoopvergoeding die je zou moeten betalen als het van het net af komt, dus accu of net is best wel lood om oud ijzer eigenlijk....
- Het is over tijdsspannes van maanden gemeten zo'n klein deel van de tijd dat dit euvel zich voordoet. Over het aantal kWh-en aan energiestromen gemeten ook.

De ene kant van het muntje is dat er winst te behalen is door de special case af te handelen, maar al met al is de winst die ik ermee kan halen door het aan te pakken erg klein.
De andere kant van het muntje is een hoop extra bitjes aan automaties toevoegen. En al die bitjes die je toevoegt kunnen omvallen en hebben onderhoud nodig om te voorkomen dat er bitrot ontstaat.

Mijn persoonlijke keuze: ik vind kosten vs baten te ongunstig uitvallen en pak mijn 'verlies' wel. Simpel, rechttoerechtaan en robuust heeft zo z'n charmes.

Dus of ik DAO in ga lichten dat de EV aan het laden is? Ik krijg net zoals jullie weer van die jeukende vingers om een automatie in elkaar te draaien die de auto-klaar tijd even aanpast, het gewenste percentage op 100 zet en DAO een schop geeft. Maar in werkelijkheid denk ik dat ik het lekker zo hou. KISS.

[ Voor 7% gewijzigd door DaBit op 23-06-2025 15:30 ]


Acties:
  • +1 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
Hier eenje van vandaag overdag. Een 'rotdag' voor de digitale kaboutertjes die het allemaal maar moeten zien te rooien met die sterk varierende zon en kinderen die thuis rondhangen:

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

Ik vind de schade wel meevallen. Meer dan 100% krijg ik toch niet in die accu en dat haalt-ie met gemak. En wat er in die dipjes uit de accu gehaald wordt is eerder opgeslagen zonne-energie. Daar heb ik geen belasting over betaald en geen 2 cent vergoeding voor aan de leverancier betaald dus dat is netzogoed goedkope stroom.

[ Voor 15% gewijzigd door DaBit op 23-06-2025 16:10 ]


Acties:
  • +1 Henk 'm!

  • Torch1969
  • Registratie: Juni 2013
  • Laatst online: 22:26
DaBit schreef op maandag 23 juni 2025 @ 16:07:
Hier eenje van vandaag overdag. Een 'rotdag' voor de digitale kaboutertjes die het allemaal maar moeten zien te rooien met die sterk varierende zon en kinderen die thuis rondhangen:

[Afbeelding]

Ik vind de schade wel meevallen. Meer dan 100% krijg ik toch niet in die accu en dat haalt-ie met gemak. En wat er in die dipjes uit de accu gehaald wordt is eerder opgeslagen zonne-energie. Daar heb ik geen belasting over betaald en geen 2 cent vergoeding voor aan de leverancier betaald dus dat is netzogoed goedkope stroom.
@DaBit en @balk dank :) voor jullie relativerende bespiegelingen en andere kijk op de zaak. Goed om eens in de overwegingen van aansturing mee te nemen. KISS is voor mij ook een belangrijk uitgangspunt, dat mag best ten koste van die paar laatste cent winst op een dag gaan. Kortom DAO bepaald de grote lijnen en in HA doe je de finetuning (op een zo eenvoudig mogelijke manier). DAO corrigeert de afwijkingen wel weer in het volgende uur (en moppert daar gelukkig niet over ;) )

Acties:
  • 0 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
Wat dat betreft zit ik toch 'met smart' te wachten op de kwartiers-variant van DAO :D
(je kunt 'm wel elk kwartier draaien, maar de berekeningresultaten zijn voor het komende uur)

Acties:
  • +1 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
@DaBit @simnet en anderen:
Als je een sensor hebt in HA waarvan de waarde verandert (state change) omdat iemand de auto gaat laden, de vaatwasser aanzet of anderszins dan kun je al vanuit HA een berekening van DAO initiëren (RTFM ;) ):

Maak in configuration.yaml van HA een restcommando aan (bijvoorbeeld)
YAML:
1
2
3
4
rest_command:
  start_dao_calc:
    url: http://192.168.178.36:5000/api/run/calc_zonder_debug
    verify_ssl: false


Maak een automation in HA die wordt getriggerd door de genoemde state-change(s) (hier door een input_button):
YAML:
1
2
3
4
5
6
7
8
9
10
11
alias: Start berekening DAO via rest
description: Start berekening DAO
mode: single
triggers:
  - entity_id:
      - input_button.start_day_ahead_berekening
    trigger: state
conditions: []
actions:
  - data: {}
    action: rest_command.start_dao_calc


Bij mij werkt ie.

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


Acties:
  • +1 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
@KC27 : Ja, dat ik at kan weet ik. Haal ik ook aan ergens in de posts.

Maar stel, plingpling op de app 'Wij kunnen niet naar het toernooi van de kinderen rijden want ziek. Kun jij het overnemen?' Ja, opzich wel, maar dan moet ik wel even rap de auto bijladen. Voor die gevallen heb ik een knopje 'Nu laden'. Die zet simpelweg de laadpaal op '3x16A gewenst'. Auto gaat laden, en als iemand de laadstekker eruit trekt gaat de boel weer terug naar normaal, oftewel DAO gestuurd.

Zou ik dat via DAO willen repliceren dan moet ik in een automatie:
- De gewenste lading op 100% zetten.
- De helper die aangeeft wanneer DAO klaar moet zijn met EV laden op een zinnige tijd zetten, die ook nog eens afhankelijk is van de SoC van de accu. Want als ik DAO meer tijd geef dan nodig dan zou-ie voor een lager vermogen kunnen kiezen
- een berekening zonder debug starten via REST.
- Als de auto losgekoppeld word het ladingspercentage en tijd-klaar weer herstellen.

Voordat dat feilloos werkt... 'Nu laden' is nu knap betrouwbaar. Of de communicatie naar de paal werkt en ik kan 3x16A, of de boel ligt op z'n gat en de paal doet 3x10A als fallback.
Hoe het bij jullie thuis zit weet ik niet, maar hier is de oepsmomentjes-tolerantie van de rondborstige directie exact 0.

Acties:
  • +1 Henk 'm!

  • mgroen81
  • Registratie: September 2010
  • Laatst online: 23:27
DaBit schreef op maandag 23 juni 2025 @ 22:55:
@KC27 : Ja, dat ik at kan weet ik. Haal ik ook aan ergens in de posts.

Maar stel, plingpling op de app 'Wij kunnen niet naar het toernooi van de kinderen rijden want ziek. Kun jij het overnemen?' Ja, opzich wel, maar dan moet ik wel even rap de auto bijladen. Voor die gevallen heb ik een knopje 'Nu laden'. Die zet simpelweg de laadpaal op '3x16A gewenst'. Auto gaat laden, en als iemand de laadstekker eruit trekt gaat de boel weer terug naar normaal, oftewel DAO gestuurd.

Zou ik dat via DAO willen repliceren dan moet ik in een automatie:
- De gewenste lading op 100% zetten.
- De helper die aangeeft wanneer DAO klaar moet zijn met EV laden op een zinnige tijd zetten, die ook nog eens afhankelijk is van de SoC van de accu. Want als ik DAO meer tijd geef dan nodig dan zou-ie voor een lager vermogen kunnen kiezen
- een berekening zonder debug starten via REST.
- Als de auto losgekoppeld word het ladingspercentage en tijd-klaar weer herstellen.

Voordat dat feilloos werkt... 'Nu laden' is nu knap betrouwbaar. Of de communicatie naar de paal werkt en ik kan 3x16A, of de boel ligt op z'n gat en de paal doet 3x10A als fallback.
Hoe het bij jullie thuis zit weet ik niet, maar hier is de oepsmomentjes-tolerantie van de rondborstige directie exact 0.
Ik had ook zo'n nu laden functie gemaakt. Maar als je 10 minuten voor het hele uur start wordt het laden vaak gestopt door DAO.
Om dat te voorkomen heb ik idd gemaakt wat je beschrijft. En dat werkt perfect.
Ik heb de volgende 2 sensoren gemaakt. De sensoren berekenen de vertrek tijd op basis van de huidige SOC. Een automatisering zet de berekende vertrektijd in de DAO helper.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- platform: template
  sensors:    
    ev_charge_time:
      friendly_name: "Estimated Charging Time"
      unit_of_measurement: "hours"
      value_template: >-
        {% set soc_remaining = 100 - states('sensor.zoe_state_of_charge') | int %}
        {% set energy_needed_kWh = soc_remaining * 4 / 10 %}
        {% set charging_power = 10 %}
        {{ (energy_needed_kWh / charging_power) | round(2) }}
    zoe_charge_now_time:
      friendly_name: "Zoe charge now time"
      value_template: >-
        {% set charge_time = states('sensor.ev_charge_time') | float %}
        {{ (now() + timedelta(hours=charge_time) + timedelta(hours=1)).strftime('%H:%M') }}

Mitsubishi PUHZ-W50VHA + EHPT20X-VM2C / 30x JASolar 265Wp oost/west + SolarEdge 7K


Acties:
  • 0 Henk 'm!

  • simnet
  • Registratie: Januari 2020
  • Laatst online: 08-07 18:41
@KC27
Ik heb die rest call inderdaad al geimplementeerd, echter moet ik de vaatwasser nogal omslacht inplannen:

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
alias: "DAO: trigger run by dishwasher"
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_select.dishwasher_status
    to: Running
    from: Idle
conditions: []
actions:
  - action: input_select.select_option
    metadata: {}
    data:
      option: eco
    target:
      entity_id: input_select.dao_program_vaatwasser
    enabled: true
  - data_template:
      entity_id: input_datetime.dao_calculated_start_vaatwasser
      date: >
        {% set date_time = as_timestamp(now()) | int %} {{ date_time |
        timestamp_custom("%Y-%m-%d", true) }}
      time: "00:00:00"
    action: input_datetime.set_datetime
    enabled: true
  - data_template:
      entity_id: input_datetime.dao_calculated_stop_vaatwasser
      date: >
        {% set date_time = as_timestamp(now()) | int %} {{ date_time |
        timestamp_custom("%Y-%m-%d", true) }}
      time: "23:59:00"
    action: input_datetime.set_datetime
    enabled: true
  - data_template:
      entity_id: input_datetime.dao_start_window_vaatwasser
      time: >
        {% set date_time = as_timestamp(now()) | int - 60 %} {{ date_time |
        timestamp_custom("%H:%M:00", true) }}
    action: input_datetime.set_datetime
  - data_template:
      entity_id: input_datetime.dao_end_window_vaatwasser
      time: >
        {% set date_time = as_timestamp(now()) | int + 3600 + 900 %} {{
        date_time | timestamp_custom("%H:%M:00", true) }}
    action: input_datetime.set_datetime
  - action: rest_command.dao_start_calc
    metadata: {}
    data: {}
    enabled: true
mode: single


Ik zou het fijner vinden om het hele rekenen met datums achterwege te laten en tegen DAO te zeggen, 'start vaatwasser nu'. (dito voor andere machines)

Acties:
  • +3 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
Ik heb jullie signalen begrepen en ben nu aan het puzzelen omdat te implementeren in DAO.
Als ik het goed begrijp zou het zoiets moeten worden (corrigeer me als ik het verkeerd zie of iets ben vergeten)
Je drukt in HA op een knop, daaronder zit een rest_commando met de volgende url en payload:
code:
1
http://<host>:<port>/api/start/?device=<device>&<param1>=<value1>&<param2>=<value2>

<host>: de dns-naam of het ip-adres van de machine waar DAO op draait
<port>: het poortnummer waar dao naar luistert (meestal 5000)
<device> de naam van je auto of van een van je machines (namen moeten uniek zijn) deze parameter is verplicht
als het een ev is:
<param1>="ampere", <value1>= het aantal ampère waarmee geladen moet gaan worden, default het hoogste aantal ampere uit je settings
<param2>="soc", <value2> = het gewenste eindniveau van de soc, default 100%

als het een machine:
<param1>="program", value1=de naam van het programma zoals genoemd in je settings voorbeeld program=eco, deze parameter is verplicht

Een paar voorbeelden:
Stel je wilt je Tesla direct "volgooien":
code:
1
url = http://192.168.178.xx:5000/api/start?device=tesla&ampere=16&soc=90

Of je wilt snel een wasje doen:
code:
1
url = http://192.168.178.xx:5000/api/start?device=wasmachine&program=eco

Wat er dan gebeurt als zo'n ev/machine op deze wijze via DAO wordt gestart:
  • het betreffende device wordt direct ingepland met eindtijdstip voor de noodzakelijke duur van het gebruik/laden van het device
  • er wordt een dao-berekening met de gewijzigde situatie uitgevoerd zodat eventueel meer/minder wordt geladen in de batterij, pv eventueel (tijdelijk) wordt aangezet enz
  • de helpers in HA worden met de juiste data geladen zodat de gevraagde actie ook daadwerkelijk wordt uitgevoerd.
Denken jullie dat dit zo kan werken?
Nogmaals kijk er kritisch naar en laat het me weten.

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


Acties:
  • 0 Henk 'm!

  • jvs1
  • Registratie: Oktober 2009
  • Laatst online: 08-07 11:17
ik krijg in de log iedere keer een KeyError: 'vat'

zie bijvoorbeeld hier:

Logging van bewerking "Meteoprognoses ophalen":

Traceback (most recent call last):
File "/root/dao/webserver/../prog/day_ahead.py", line 3429, in <module>
main()
File "/root/dao/webserver/../prog/day_ahead.py", line 3392, in main
da_calc = DaCalc("../data/options.json")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/dao/webserver/../prog/day_ahead.py", line 28, in __init__
super().__init__(file_name=file_name)
File "/root/dao/prog/da_base.py", line 161, in __init__
self.btw_l_def = self.prices_options["vat"]
~~~~~~~~~~~~~~~~~~~^^^^^^^
KeyError: 'vat'

wat is hieraan te doen?

Acties:
  • +1 Henk 'm!

  • Torch1969
  • Registratie: Juni 2013
  • Laatst online: 22:26
jvs1 schreef op woensdag 25 juni 2025 @ 07:05:
ik krijg in de log iedere keer een KeyError: 'vat'

zie bijvoorbeeld hier:

Logging van bewerking "Meteoprognoses ophalen":

Traceback (most recent call last):
File "/root/dao/webserver/../prog/day_ahead.py", line 3429, in <module>
main()
File "/root/dao/webserver/../prog/day_ahead.py", line 3392, in main
da_calc = DaCalc("../data/options.json")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/dao/webserver/../prog/day_ahead.py", line 28, in __init__
super().__init__(file_name=file_name)
File "/root/dao/prog/da_base.py", line 161, in __init__
self.btw_l_def = self.prices_options["vat"]
~~~~~~~~~~~~~~~~~~~^^^^^^^
KeyError: 'vat'

wat is hieraan te doen?
Zie https://github.com/corneel27/day-ahead/issues/288

Acties:
  • +1 Henk 'm!

  • simnet
  • Registratie: Januari 2020
  • Laatst online: 08-07 18:41
KC27 schreef op dinsdag 24 juni 2025 @ 23:07:
Denken jullie dat dit zo kan werken?
Nogmaals kijk er kritisch naar en laat het me weten.
Exact zoals ik het voor ogen had!

Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
@jvs1
Of verander het in je settings naar:
code:
1
2
3
4
5
6
7
8
9
10
    "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
    },

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


Acties:
  • +1 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
Denken jullie dat dit zo kan werken?
Nogmaals kijk er kritisch naar en laat het me weten.
Jazeker, dat klinkt heel goed!

Misschien nog een kleine additie: het is ook handig om aan te kunnen geven dat een apparaat al iets aan het doen is zodat DAO zijn strategie aan kan passen.

Fictief voorbeeld: een boiler zou een minimum-temperatuur aan kunnen houden om bevriezing in de winter te voorkomen of een legionella-run. Dat die boiler zelfstandig besluit om te gaan verwarmen kunnen we wel meten omdat het via een energysocket aangesloten zit, maar niet beinvloeden. We zouden dan aan DAO door kunnen geven dat die boiler met X ampere/watt bezig is.

Geen hoge prioriteit feature wat mij betreft overigens, maar ze lijken mischien voldoende op elkaar.

[ Voor 69% gewijzigd door DaBit op 26-06-2025 08:16 ]


Acties:
  • 0 Henk 'm!

  • Asclepius8
  • Registratie: Januari 2017
  • Laatst online: 08-07 12:43
Dat is gek, hij runt geen optimalisatie sinds vandaag (terwijl er morgen een mooie spread ligt van bijna 25c). Als ik hem handmatig run zie ik weinig spannende dingen..

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

Acties:
  • +1 Henk 'm!

  • sjampeter
  • Registratie: November 2021
  • Laatst online: 07-07 17:11
hmm. na 23 uur is je accu leeg, en na middernacht wordt ik niet echt warm of koud van de prijsverschillen. laat ik die accu niet voor draaien hoor.

Acties:
  • +3 Henk 'm!

  • Asclepius8
  • Registratie: Januari 2017
  • Laatst online: 08-07 12:43
Verkeerd gekeken idd, morgen te kleine spread om te werken, vandaag is juist de mooie spread..

Not a bug, feature.. :+

Acties:
  • +1 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
Hier is het ook enkel wat overtollige zonne-energie opslaan:
Afbeeldingslocatie: https://tweakers.net/i/ZfNNHADAsf4EBen2oodeR8m49E8=/x800/filters:strip_exif()/f/image/6xfxzZOAZjzQUvn3S2ACQJGB.png?f=fotoalbum_large

Prima beslissing van DAO als je het mij vraagt.

Ik vind dat jij je accu wel erg ver leeg laat staan voor de langere periode. Zou je dat niet beter richting de 20% brengen?

Acties:
  • +1 Henk 'm!

  • diamanten
  • Registratie: Juli 2024
  • Laatst online: 22:39
Helaas deze foutmelding (ondermeer Perhaps out of memory), nadat ik de dao addon een dag had gestopt en toen weer heb aangezet.
Wat kan ik hieraan 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
Watches established.
[2025-06-25 20:37:49 +0200] [12] [INFO] Starting gunicorn 23.0.0
[2025-06-25 20:37:49 +0200] [12] [INFO] Listening at: http://0.0.0.0:5000 (12)
[2025-06-25 20:37:49 +0200] [12] [INFO] Using worker: sync
[2025-06-25 20:37:49 +0200] [22] [INFO] Booting worker with pid: 22
[2025-06-25 20:37:49 +0200] [23] [INFO] Booting worker with pid: 23
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
[2025-06-25 20:46:01 +0200] [12] [CRITICAL] WORKER TIMEOUT (pid:23)
[2025-06-25 20:46:01 +0200] [23] [ERROR] Error handling request /
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.11/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.11/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.11/site-packages/flask/app.py", line 1498, in __call__
    return self.wsgi_app(environ, start_response)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.11/site-packages/flask/app.py", line 1473, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.11/site-packages/flask/app.py", line 880, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.11/site-packages/flask/app.py", line 865, 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.11/subprocess.py", line 550, in run
    stdout, stderr = process.communicate(input, timeout=timeout)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 1207, in communicate
    stdout, stderr = self._communicate(input, endtime, timeout)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 2059, in _communicate
    ready = selector.select(timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/selectors.py", line 415, in select
    fd_event_list = self._selector.poll(timeout)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.11/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
    sys.exit(1)
SystemExit: 1
[2025-06-25 20:46:01 +0200] [23] [INFO] Worker exiting (pid: 23)
[2025-06-25 20:46:02 +0200] [12] [ERROR] Worker (pid:23) was sent SIGKILL! Perhaps out of memory?
[2025-06-25 20:46:02 +0200] [627] [INFO] Booting worker with pid: 627

Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
diamanten schreef op woensdag 25 juni 2025 @ 20:53:
Helaas deze foutmelding (ondermeer Perhaps out of memory), nadat ik de dao addon een dag had gestopt en toen weer heb aangezet.
Wat kan ik hieraan 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
Watches established.
[2025-06-25 20:37:49 +0200] [12] [INFO] Starting gunicorn 23.0.0
[2025-06-25 20:37:49 +0200] [12] [INFO] Listening at: http://0.0.0.0:5000 (12)
[2025-06-25 20:37:49 +0200] [12] [INFO] Using worker: sync
[2025-06-25 20:37:49 +0200] [22] [INFO] Booting worker with pid: 22
[2025-06-25 20:37:49 +0200] [23] [INFO] Booting worker with pid: 23
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
../data/options.json MODIFY 
Setting up watches.
Watches established.
[2025-06-25 20:46:01 +0200] [12] [CRITICAL] WORKER TIMEOUT (pid:23)
[2025-06-25 20:46:01 +0200] [23] [ERROR] Error handling request /
Traceback (most recent call last):
  File "/root/dao/venv/day_ahead/lib/python3.11/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.11/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.11/site-packages/flask/app.py", line 1498, in __call__
    return self.wsgi_app(environ, start_response)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.11/site-packages/flask/app.py", line 1473, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.11/site-packages/flask/app.py", line 880, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.11/site-packages/flask/app.py", line 865, 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.11/subprocess.py", line 550, in run
    stdout, stderr = process.communicate(input, timeout=timeout)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 1207, in communicate
    stdout, stderr = self._communicate(input, endtime, timeout)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 2059, in _communicate
    ready = selector.select(timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/selectors.py", line 415, in select
    fd_event_list = self._selector.poll(timeout)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/dao/venv/day_ahead/lib/python3.11/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
    sys.exit(1)
SystemExit: 1
[2025-06-25 20:46:01 +0200] [23] [INFO] Worker exiting (pid: 23)
[2025-06-25 20:46:02 +0200] [12] [ERROR] Worker (pid:23) was sent SIGKILL! Perhaps out of memory?
[2025-06-25 20:46:02 +0200] [627] [INFO] Booting worker with pid: 627
Dit vind ik een een interessante foutmelding.
Ik ben benieuwd hoeveel geheugen je aan HA en zijn add-ons hebt toebedeeld en hoeveel daarvan in gebruik is. Bij mij (ik draai sinds een paar maanden op een RPi5) staat het geheugengebruik en het vrije geheugen hierop:
Afbeeldingslocatie: https://tweakers.net/i/gKktg2cZaRFPNHZm5wy4l8gNWTc=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/eKdeU3PqjNqRTZw36vBIA2k4.png?f=user_large
Je kunt dit plaatje (en de informatie daarop) krijgen door in HA de integratie "System monitor" te installeren.

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


Acties:
  • 0 Henk 'm!

  • diamanten
  • Registratie: Juli 2024
  • Laatst online: 22:39
KC27 schreef op woensdag 25 juni 2025 @ 23:33:
[...]

Dit vind ik een een interessante foutmelding.
Ik ben benieuwd hoeveel geheugen je aan HA en zijn add-ons hebt toebedeeld en hoeveel daarvan in gebruik is. Bij mij (ik draai sinds een paar maanden op een RPi5) staat het geheugengebruik en het vrije geheugen hierop:
[Afbeelding]
Je kunt dit plaatje (en de informatie daarop) krijgen door in HA de integratie "System monitor" te installeren.
Afbeeldingslocatie: https://tweakers.net/i/rc8bvhoXNM2AXQ5_zQn_ESo-mWE=/fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():strip_exif()/f/image/NwNqYEphhcY7VHJsOT5WSzmD.jpg?f=user_large
Memory houdt niet over (ik draai op een oude laptop - Generic x86-64).
Nu krijg ik trouwens deze foutmelding met een simpelere 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
2025-06-26 07:29:17 info: Day Ahead Optimalisering versie: 2025.6.2
2025-06-26 07:29:17 info: Day Ahead Optimalisering gestart op: 26-06-2025 07:29:17
2025-06-26 07:29:17 info: Day Ahead Optimalisatie gestart: 26-06-2025 07:29:17 taak: calc_optimum_met_debug
2025-06-26 07:29:18 info: Debug = True
2025-06-26 07:29:18 info: Baseload uit instellingen
2025-06-26 07:29:18 fout: Er is een fout opgetreden, zie de fout-tracering
Traceback (most recent call last):
  File "/root/dao/prog/da_base.py", line 539, in run_task_function
    getattr(self, run_task["function"])()
  File "/root/dao/prog/da_base.py", line 469, in calc_optimum_met_debug
    dacalc.calc_optimum()
  File "/root/dao/prog/day_ahead.py", line 154, in calc_optimum
    solar_num = len(self.solar)
                ^^^^^^^^^^^^^^^
TypeError: object of type 'NoneType' has no len()
Traceback (most recent call last):
  File "/root/dao/webserver/../prog/day_ahead.py", line 3429, in <module>
    main()
  File "/root/dao/webserver/../prog/day_ahead.py", line 3403, in main
    da_calc.run_task_function("calc_optimum_met_debug")
  File "/root/dao/prog/da_base.py", line 539, in run_task_function
    getattr(self, run_task["function"])()
  File "/root/dao/prog/da_base.py", line 469, in calc_optimum_met_debug
    dacalc.calc_optimum()
  File "/root/dao/prog/day_ahead.py", line 154, in calc_optimum
    solar_num = len(self.solar)
                ^^^^^^^^^^^^^^^
TypeError: object of type 'NoneType' has no len()
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
{
  "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": "entsoe",
    "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
    },
    "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-04-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.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",
    "prices consumption": "True",
    "prices production": "True",
    "average consumption": "True"
  },
  "strategy": "minimize cost",
  "notifications": {
    "notification entity": "input_text.dao_notificatie",
    "opstarten": "True",
    "berekening": "True",
    "last activity entity": "input_datetime.dao_laatste_activiteit"
  },
  "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": [],
 

  "electric vehicle": [
    {
      "name": "Kia Niro EV",
      "capacity": 55,
      "entity position": "input_select.kia_locatie_dao",
      "entity max amperage": "input_number.niro_ac_max_ampere",
      "charge three phase": "True",
      "charge stages": [
        { "ampere": 0, "efficiency": 1.00 },
        { "ampere": 16, "efficiency": 0.95 }
      ],
      "entity actual level": "input_number.dummy_kia_soc",
      "entity plugged in": "input_boolean.kia_ingeplugd_dao",
      "entity stop charging": "input_datetime.stop_laden_ev",
      "charge scheduler": {
        "entity set level": "number.ev_smart_charging_minimum_ev_soc",
        "level margin": 2,
        "entity ready datetime": "input_datetime.kia_niro_ready_time"
      },
      "charge switch": "input_boolean.kia_niro_charge_enable",
      "entity set charging ampere": "input_number.kia_niro_set_charging_ampere"
    }
  ],


  "machines" : [ 
      { "name": "Airco",
        "programs":[
          {"name": "Uit",
           "power": []},
          {"name": "Auto",
           "power": [1000, 1000, 1000, 1000, 1000, 1000, 1000, 800]
           }
        ],
        "entity start window": "input_datetime.start_window_airco",
        "entity end window": "input_datetime.eind_window_airco",
        "entity selected program": "input_select.airco_programma",
        "entity calculated start": "input_datetime.berekende_start_airco",
        "entity calculated end": "input_datetime.berekende_stop_airco"
      }
  ],
  "tibber": {
    "api_token": "!secret tibber_api_token"
  },
  "report": {
    "entities grid consumption": [
      "sensor.energy_consumed_tariff_1",
      "sensor.energy_consumed_tariff_2"
    ],
    "entities grid production": [
      "sensor.energy_produced_tariff_1",
      "sensor.energy_produced_tariff_2"
    ],
    "entities solar production ac": [
      "sensor.envoy_current_energy_production_kwh"
    ],
    "entities solar production dc": [],
    "entities ev consumption" : ["sensor.ev_laadsessie_simulatie_kwh"],
    "entities wp consumption" : ["sensor.airco_e8165626d04f_energy_usage_cycle"],
    "entities boiler consumption": [],
    "entities battery consumption": ["sensor.totaal_batterij_consumption_dao"],
    "entities battery production": ["sensor.totaal_batterij_production_dao"]
  },
  "scheduler": {
    "active": "false",
    "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"
  }
}

[ Voor 102% gewijzigd door diamanten op 26-06-2025 07:37 ]


Acties:
  • +1 Henk 'm!

  • RudolfR
  • Registratie: Maart 2011
  • Laatst online: 23:40
@diamanten

Iets teveel weggehaald?

Zoiets is wel vereist.
JSON:
1
"solar": [],

[ Voor 13% gewijzigd door RudolfR op 26-06-2025 08:55 ]


Acties:
  • +1 Henk 'm!

  • diamanten
  • Registratie: Juli 2024
  • Laatst online: 22:39
RudolfR schreef op donderdag 26 juni 2025 @ 08:49:
@diamanten

Iets teveel weggehaald?

Zoiets is wel vereist.
JSON:
1
"solar": [],
Dank, de simpele versie werkt weer.
Deze steeds verder uitgebreid en nu werkt de complete versie ook weer! :)
Weet niet wat er aan de hand was.

Acties:
  • +1 Henk 'm!

  • patatman12
  • Registratie: Maart 2011
  • Laatst online: 08-07 16:44
bladebla schreef op vrijdag 6 juni 2025 @ 17:35:
Wat een fantastisch project, @KC27 – dank daarvoor. Het is duidelijk dat hier veel denkwerk en uitwerking in zit. _/-\o_ Sinds ik je oplossing toepas, zijn mijn Multiplussen ook merkbaar stiller geworden. Ze draaien nu efficiënter bij een bepaald vermogen, in plaats van continu op vol vermogen zoals bij DESS.

Ik ben me de afgelopen dagen aan het verdiepen in de werking, maar loop nog tegen een punt aan:
Wat doe je in een Victron-systeem precies met de entity set power feedin (battery setpoint)? Deze bepaalt het laad-/ontlaadvermogen van de accu’s, terwijl Victron je toelaat om het grid setpoint van Victron ESS in te stellen.

In dit topic zag ik dat @tonvanboven, @thys en @georgeboot hier ook mee bezig zijn, maar ik kon nergens terugvinden hoe ze dit precies aanpakken.

Wat ik nu gebouwd heb:
Ik gebruik de set power feedin uit DAO als basis en corrigeer de grid setpoint continu zodat er een kloppende energiebalans ontstaat:

code:
1
Grid setpoint = (DAO power feedin + house load) – PV production


Mijn pv installatie bestaat uit een DC Victron MPPT charger en een AC Fronius inverter. Ik heb mijn gehele huis achter AC-out1 hangen.

Ik doe het volgende via Node-RED naar MQTT-server van de Cerbo en HA:

[Afbeelding]

DAO power feedin = homeassistant/dao/set_power_feedin

House load L1 = N/#####/system/0/Ac/Consumption/L1/Power
House load L2 = N/#####/system/0/Ac/Consumption/L2/Power
House load L3 = N/#####/system/0/Ac/Consumption/L3/Power

Fronius inverter = N/#####/pvinverter/20/Ac/Power
Victron charger = N/#####/solarcharger/279/Yield/Power


De resulterende Grit setpoint schrijf ik dan naar:
Grid setpoint = W/#####/settings/0/Settings/CGwacs/AcPowerSetPoint

De berekening wordt continu herhaald bij elke nieuwe input van een van de componenten.

Mijn volledige woning hangt achter AC-out1. 's Nachts, wanneer er geen PV is en de accu’s in rust zijn, zie ik dat het verschil tussen house load en grid zichtbaar wordt: bijvoorbeeld 400W load tegenover 433W uit het net. Dus ~33W eigen verbruik door de drie Multiplussen.

Is deze aanpak logisch volgens jullie?
En is het zinvol (en haalbaar) om die ~33W eigen verbruik van de Multiplussen ook mee te nemen in de berekening?
Dank voor jou post trouwens! Ik heb nu DAO een week draaien, en door middel van een template sensor in Hass heb ik hetzelfde resultaat.
Mijn Helper template:
code:
1
{{ (states('input_number.dao_setpoint_jk') | float(0) + states('sensor.cerbo_gx_total_consumption_l1') | float(0)) - states('sensor.total_solar') | float(0) }}

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

Werkt perfect. Je ziet in de data dat hij netjes bij een onverwacht overschot aan zonne energie gaat terug leveren. Iets wat ik eigenlijk nog wilt optimaliseren, want dat is natuurlijk sonde. Heeft iemand daar nog een tip voor? Ik zit eraan te denken om DAO ieder kwartier te laten draaien, zoals iemand anders in dit topic ook doet. Dan kan hij sneller optimaliseren.

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


P.S. Ik was bang dat mijn automation die de setpoint zetten iets oververhit raakte (de sensor update meerdere keren per seconden). Heb dus een kleine condition toegevoegd dat het berekende setpoint wel 50 watt moet schelen met de vorige:
code:
1
2
3
4
5
6
{# Sla de nieuwe en huidige waarde op in variabelen voor leesbaarheid #}
        {% set new_setpoint = trigger.to_state.state | float(0) %}
        {% set current_setpoint = states('number.cerbo_gx_grid_setpoint') | float(0) %}
        
        {# Bereken het absolute verschil en kijk of het groter is dan 10 Watt #}
        {{ (new_setpoint - current_setpoint) | abs > 50 }}

Waarschijnlijk overkill, en kan HASS het makkelijk aan. Maar puur vanuit mijn eigen perspectief sloeg het nergens op om de Cerbo mqtt zo te bombarderen met berichten.

Acties:
  • +1 Henk 'm!

  • patatman12
  • Registratie: Maart 2011
  • Laatst online: 08-07 16:44
Vanavond ben ik er toch mee bezig geweest, en heb ik een mogelijk oplossing voor de onverwachte momenten dat het bewolkt is, of zonniger dan verwacht.
Heb Gemini als rubber ducky gebruikt, dus ik copy paste even zijn antwoord (sorry als dit niet word gewaardeerd)
We moeten de logica aanpassen zodat de "agressieve begrenzing" alleen wordt toegepast wanneer DAO daadwerkelijk een handelsactie opgeeft (dus als DAO_setpoint niet nul is).

Als DAO_setpoint > 0 (Actief kopen): Voorkom terugleveren. De ondergrens is 0. (max functie)

Als DAO_setpoint < 0 (Actief verkopen): Voorkom afname. De bovengrens is 0. (min functie)

Als DAO_setpoint == 0 (Neutraal / Geen handel): Laat de berekening ongemoeid. Het grid-setpoint wordt dan simpelweg huisverbruik - zonneproductie. Hierdoor zal het systeem stroom van het net afnemen als dat nodig is om de basislast te dekken, precies zoals de DAO-grafiek het bedoelt.
De template sensor word dan:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
          {% set dao_setpoint = states('input_number.dao_setpoint_jk') | float(0) %}
          {% set house_load = states('sensor.cerbo_gx_total_consumption_l1') | float(0) %}
          {% set pv_production = states('sensor.total_solar') | float(0) %}
          
          {% set calculated_setpoint = dao_setpoint + house_load - pv_production %}
          
          {% if dao_setpoint > 0 %}
            {# INTENTIE: Actief kopen (bv. batterij laden).
               Voorkom ongewenst terugleveren. Setpoint mag niet negatief worden. #}
            {{ max(0, calculated_setpoint) }}

          {% elif dao_setpoint < 0 %}
            {# INTENTIE: Actief verkopen (bv. batterij ontladen naar net).
               Voorkom ongewenste afname. Setpoint mag niet positief worden. #}
            {{ min(0, calculated_setpoint) }}

          {% else %}
            {# INTENTIE: Neutraal (DAO setpoint is 0).
               Geen actieve handel. Volg de basislast.
               Setpoint wordt wat nodig is: positief bij verbruik, negatief bij overschot. #}
            {{ calculated_setpoint }}
          {% endif %}


Heb een test sensor aangemaakt die ik morgen in de gaten houd, en het gewenste gedrag vertoond. Op basis daarvan kan ik hem uiteindelijk volledig omzetten.

Acties:
  • +1 Henk 'm!

  • bladebla
  • Registratie: November 2001
  • Laatst online: 08-07 19:27

bladebla

<Piéééép>

patatman12 schreef op donderdag 26 juni 2025 @ 20:52:
[...]


Dank voor jou post trouwens! Ik heb nu DAO een week draaien, en door middel van een template sensor in Hass heb ik hetzelfde resultaat.
Mijn Helper template:
code:
1
{{ (states('input_number.dao_setpoint_jk') | float(0) + states('sensor.cerbo_gx_total_consumption_l1') | float(0)) - states('sensor.total_solar') | float(0) }}
Heel mooi dat je dat met native Hass is gelukt. Ik dacht dat de standaard Hass Victron intergratie niet zo vaak waardes ververst, of komen de waardes uit MQTT?

Ik update het setpoint op de Cerbo meerdere keren per seconde. Ik heb in Victron OS gemonitord wat de load is maar dat is geen probleem. Ook geen onnodige schrijfacties naar de opslag met beperkte levensduur. (Mijn energiemeter op de hoofdaansluiting wordt standaard niet in Victron OS ondersteund loopt daarom via een MQTT-driver en gooit ook zo vaak als hij kan, meerdere keren per seconden, het huisverbruik naar de MQTT server van de Cerbo en ook dat brengt hem echt niet op zijn knieën.)
Werkt perfect. Je ziet in de data dat hij netjes bij een onverwacht overschot aan zonne energie gaat terug leveren. Iets wat ik eigenlijk nog wilt optimaliseren, want dat is natuurlijk sonde. Heeft iemand daar nog een tip voor? Ik zit eraan te denken om DAO ieder kwartier te laten draaien, zoals iemand anders in dit topic ook doet. Dan kan hij sneller optimaliseren.
Draai je dan strategy = minimize consumption"? Ik draai minimize costs en dan is PV-opbrengst iets wat je gewoon op het net wil zetten.

Ik herbereken overigens ieder kwartier. Daar gaan we toch naar toe en de balanceeract loopt toch altijd een beetje anders dan gepland en dan stel je daar gewoon ieder kwartier op bij. Het script is sinds een van de laatste versies toch een stuk sneller geworden.

WP: Kronoterm Versi-I | ESS: Victron MP-II 3f 5000VA + 5× Pylontech US5000 | PV: 8.3kWp Trina glas/glas + Fronius Symo 8.2-3-M + Victron MPPT 250/60


Acties:
  • +2 Henk 'm!

  • patatman12
  • Registratie: Maart 2011
  • Laatst online: 08-07 16:44
bladebla schreef op donderdag 26 juni 2025 @ 22:54:
[...]

Heel mooi dat je dat met native Hass is gelukt. Ik dacht dat de standaard Hass Victron intergratie niet zo vaak waardes ververst, of komen de waardes uit MQTT?

Ik update het setpoint op de Cerbo meerdere keren per seconde. Ik heb in Victron OS gemonitord wat de load is maar dat is geen probleem. Ook geen onnodige schrijfacties naar de opslag met beperkte levensduur. (Mijn energiemeter op de hoofdaansluiting wordt standaard niet in Victron OS ondersteund loopt daarom via een MQTT-driver en gooit ook zo vaak als hij kan, meerdere keren per seconden, het huisverbruik naar de MQTT server van de Cerbo en ook dat brengt hem echt niet op zijn knieën.)
Ik doe het via een MQTT verbinding met de Victron. Een mqtt relay (https://gist.github.com/K...b340cf3ad513f9415b20ed5fa) Deze update super snel.

Toevallig kreeg ik een ping van iemand vanochtend, die een custom integratie heeft gebouwd naar de Victron MQTT: https://github.com/tomer-w/ha-victron-mqtt
Die zal ik straks even proberen, en kan interessant zijn voor de mensen in dit topic. Het grote voordeel van de MQTT integratie is de snelheid.
bladebla schreef op donderdag 26 juni 2025 @ 22:54:

[...]


Draai je dan strategy = minimize consumption"? Ik draai minimize costs en dan is PV-opbrengst iets wat je gewoon op het net wil zetten.

Ik herbereken overigens ieder kwartier. Daar gaan we toch naar toe en de balanceeract loopt toch altijd een beetje anders dan gepland en dan stel je daar gewoon ieder kwartier op bij. Het script is sinds een van de laatste versies toch een stuk sneller geworden.
Nee ik draai ook Minimize costs. PV opbrengst mag ook wel het net op, alleen niet op de momenten dat DAO actief aan het inkopen is.
Als DAO berekend dat energie ingekocht moet worden, dan zal de prijs wel dusdanig laag zijn (of zelfs negatief) dat je ook overtollig PV niet wilt terug leveren, en dus zelf in je accu stopt of andere verbruikers. In de praktijk zal het wel meevallen hoeveel impact dit heeft, gezien dit korte momenten zijn, en gespreid over een uur het totaal wel mee valt. Maar toch een kleine optimalisatie in mijn ogen.

Acties:
  • 0 Henk 'm!

  • patatman12
  • Registratie: Maart 2011
  • Laatst online: 08-07 16:44
Na vandaag ben ik overtuig van de nieuwe template, en dit zie je netjes terug in de grafieken.
Afbeeldingslocatie: https://tweakers.net/i/tRfgz4iKTDutvf_3z0MG7mkcjT8=/800x/filters:strip_exif()/f/image/gTYHF6aBDzna7dj6x1O7XAwd.png?f=fotoalbum_large

Hier zie je dat de eerdere sensor netjes negatief (dus gaat terugleveren) terwijl DAO duidelijk de status inkopen heeft. De nieuwe Sensor heeft een hard limiet van 0, dus de overtollige energie zou in de accu zijn gegaan in plaats van terug geleverd.
Als mijn boiler aanspringt, en ik dus meer energie nodig hebt, gaat de nieuwe sensor netjes mee naar het positieve om actief in te kopen.

Onderstaand in meer detail.Afbeeldingslocatie: https://tweakers.net/i/soStscVBcOqIvGGWBfhBAzv4dN8=/800x/filters:strip_exif()/f/image/V5iqENp3Jkl08NMs9RXjcgjJ.png?f=fotoalbum_large

Acties:
  • 0 Henk 'm!

  • Asclepius8
  • Registratie: Januari 2017
  • Laatst online: 08-07 12:43
DaBit schreef op woensdag 25 juni 2025 @ 16:55:
Hier is het ook enkel wat overtollige zonne-energie opslaan:
[Afbeelding]

Prima beslissing van DAO als je het mij vraagt.

Ik vind dat jij je accu wel erg ver leeg laat staan voor de langere periode. Zou je dat niet beter richting de 20% brengen?
Dit mis ik dan wel, ik zou verwachten dat hij de overtollige stroom zou opslaan?

Waarom zou ik die low % niet zo houden?

Acties:
  • +1 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
Asclepius8 schreef op zaterdag 28 juni 2025 @ 14:49:
Dit mis ik dan wel, ik zou verwachten dat hij de overtollige stroom zou opslaan?
Als jij DAO vertelt dat terugleveren van stroom geld kost (bij mij/Nextenergy dus ~2ct/kWh) dan is-ie al sneller geneigd om overtollige zonnestroom in de accu te stoppen.
Waarom zou ik die low % niet zo houden?
Eerste probleem: Li-ion batterijen degraderen relatief vlot als ze langdurig op hele lage SoC gehouden worden. Dat geld voor alle kathodematerialen, dus ook voor LFP. Langdurig 100% vol en hogere temperaturen is ook zo'n situatie die je wil vermijden als je daar geen verdere nadelen van ondervind.
Ik laat de wellesnietes-discussie of je daar tijdens de levensduur van je batterij last van hebt even in het midden; google wat rond en maak je eigen keus.

Tweede probleem met lage SOC is dat je makkelijk onder de 0% grens schiet. Stel, je ontlaad naar 0% en laad alleen bij als er overschot aan zon is. Dat kan ooit weken duren, en in die tijd sippen de verbruikers op die batterij (BMS, omvormer, bla) de cellen onder de 0%. Dat geeft onmiddelijke en onomkeerbare schade. Dit effect is doodsoorzaak nummer 1 van Li-ion cellen.
Dat heb je bij 3-5% ook nog wel; vroeg of laat slijt 1 cel iets harder dan z'n broertjes dus als het hele pack dan nog op 5% zit kan het best zijn dat er 1 cel tegen 0 zit. Bij LFP kun je dat aan de celspanning niet zo goed zien.

Derde probleem: als je een keer stroomuitval krijgt en je batterij is zo ketsleeg dat je nog geen lampje kunt laten branden dan ga je dat de komende 30 jaar op elk familiefeestje te horen krijgen :+


Persoonlijk laad ik wel naar 100% want daar blijft het pack toch nooit heel lang op staan en alles naar 100% is een reset van alle tellertjes en eventuele onbalans. Maar aan de onderkant van de SoC vind ik persoonlijk 20% kortdurend / 25% langdurend wel een mooie grens. Geen risico dat er cellen diepontladen worden, worstcase nog zo'n 6kWh over om een lampje te kunnen laten branden, telefoon te laden en eten te koken.
Iets lager kan imho ook nog wel, zeg 10%/15%. Maar daaronder ben je te gulzig als je het mij vraagt.

Acties:
  • +1 Henk 'm!

  • simnet
  • Registratie: Januari 2020
  • Laatst online: 08-07 18:41
eea hangt denk ik enorm af van de batterij die je hebt.
Ik heb een relatief kleine (5kWh) batterij die vanuit zichzelf al stopt met ontladen bij 11% soc. Ik heb mijn minimum dus ook op 11% gezet.

Acties:
  • +3 Henk 'm!

  • mgroen81
  • Registratie: September 2010
  • Laatst online: 23:27
De Sessy kan je ook prima op 0% laten staan. 0% is niet helemaal leeg en de Sessy BMS zal de batterij ook bijladen als dat nodig is om hem op de juiste spanning te houden.

Mitsubishi PUHZ-W50VHA + EHPT20X-VM2C / 30x JASolar 265Wp oost/west + SolarEdge 7K


Acties:
  • +1 Henk 'm!

  • firecaps30
  • Registratie: September 2011
  • Laatst online: 20:02
Sinds gisteren DAO op de HA-pi geïnstalleerd en druk bezig om alles te configureren. Wellicht een simpele vraag, als ik in de run zie:

2025-06-30 13:33:56 info: Niet geoptimaliseerd, kosten met day ahead tarieven: -10.22
2025-06-30 13:33:56 info: Geoptimaliseerd, kosten met day ahead tarieven: -12.45

En de grafiek toont de winst bij strategie minimale kosten 2.23, dan interpreteer ik dat als: Bij ‘niks doen’ verdien ik morgen 10.22, maar als ik de DAO strategie overneem dan haal ik er nog 2.23 extra uit.

Klopt dat?

EDIT: nog een vraag over de accu cycle kosten:

2025-06-30 14:15:46 info: Cycle cost Accu1: 1.49 euro

Deze moeten er nog van afgetrokken worden?

[ Voor 12% gewijzigd door firecaps30 op 30-06-2025 14:18 ]


Acties:
  • +1 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
firecaps30 schreef op maandag 30 juni 2025 @ 13:48:
Sinds gisteren DAO op de HA-pi geïnstalleerd en druk bezig om alles te configureren. Wellicht een simpele vraag, als ik in de run zie:

2025-06-30 13:33:56 info: Niet geoptimaliseerd, kosten met day ahead tarieven: -10.22
2025-06-30 13:33:56 info: Geoptimaliseerd, kosten met day ahead tarieven: -12.45

En de grafiek toont de winst bij strategie minimale kosten 2.23, dan interpreteer ik dat als: Bij ‘niks doen’ verdien ik morgen 10.22, maar als ik de DAO strategie overneem dan haal ik er nog 2.23 extra uit.

Klopt dat?

EDIT: nog een vraag over de accu cycle kosten:

2025-06-30 14:15:46 info: Cycle cost Accu1: 1.49 euro

Deze moeten er nog van afgetrokken worden?
Ja .die 2,23 is het verschil tussen 12,45 en 10,22.
Dat is de netto winst en daar zijn cycle costs al vanaf.
Dus je bruto winst is 2,23 + 1,49 = 3,72.

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


Acties:
  • 0 Henk 'm!

  • Torch1969
  • Registratie: Juni 2013
  • Laatst online: 22:26
Ik ben de strategy “minimise consumption” eens aan het proberen. Vorige week bij weinig zonopbrengst gaf dat niet het gewenste resultaat (tussendoor bijladen bij hogere prijs en later weer ontladen bij lagere prijs).
Deze week bij hoge zonopbrengst lijkt het beter, maar 2 dingen vallen mij op.
1. De thuisbatterij wordt gedurende een aantal uren ontladen met lager vermogen (360W) dan ik als minimum hebt ingesteld (440W).
2. De PHEV wordt geladen met lagere vermogens (en dus vele uren) dan ik heb ingesteld (0 of 15A) (dit kan ook niet anders met mijn laadpaal en PHEV, gewoon 1 fase vol vermogen)

Mis ik iets qua instellingen?

Configuratie thuisbatterij:
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
 "battery": [
    {
      "name": "Sessy_dllu",
      "entity actual level": "sensor.sessy_dllu_state_of_charge",
      "capacity": 5.5,
      "upper limit": 100,
      "lower limit": 0,
      "optimal lower level": 0,
      "entity min soc end opt": "input_number.dao_sessy_dllu_min_soc_end",
      "entity max soc end opt": "input_number.dao_sessy_dllu_max_soc_end",
      "charge stages": [
        {"power": 0.0,
         "efficiency": 1},
        {"power": 60.0,
         "efficiency": 0.7},
        {"power": 110.0,
         "efficiency": 0.758},
        {"power": 220.0,
         "efficiency": 0.850},
        {"power": 330.0,
         "efficiency": 0.892},
        {"power": 440.0,
         "efficiency": 0.912},
        {"power": 660.0,
         "efficiency": 0.933},
        {"power": 880.0,
         "efficiency": 0.942},
        {"power": 1100.0,
         "efficiency": 0.946},
        {"power": 1320.0,
         "efficiency": 0.942},
        {"power": 1540.0,
         "efficiency": 0.938},
        {"power": 1760.0,
         "efficiency": 0.929},
        {"power": 1980.0,
         "efficiency": 0.921},
        {"power": 2200.0,
         "efficiency": 0.908}
      ],
      "discharge stages": [
        {"power": 0.0,
         "efficiency": 1},
        {"power": 60.0,
         "efficiency": 0.7},
        {"power": 85.0,
         "efficiency": 0.735},
        {"power": 170.0,
         "efficiency": 0.829},
        {"power": 255.0,
         "efficiency": 0.882},
        {"power": 340.0,
         "efficiency": 0.921},
        {"power": 510.0,
         "efficiency": 0.943},
        {"power": 680.0,
         "efficiency": 0.957},
        {"power": 850.0,
         "efficiency": 0.957},
        {"power": 1020.0,
         "efficiency": 0.953},
        {"power": 1190.0,
         "efficiency": 0.943},
        {"power": 1360.0,
         "efficiency": 0.936},
        {"power": 1530.0,
         "efficiency": 0.929},
        {"power": 1700.0,
         "efficiency": 0.925}
      ],
      "reduced hours":
       {  "1": 2200,
          "2": 2200,
         "18": 2200,
         "19": 2200
       },
      "minimum power": 440,
      "dc_to_bat efficiency": 1,
      "bat_to_dc efficiency": 1,
      "cycle cost": 0.01,
      "entity set power feedin": "input_number.dao_sessy_dllu_set_power_feedin",
      "entity set operating mode": "input_select.dao_sessy_dllu_set_operating_mode",
      "entity stop inverter": "input_datetime.dao_sessy_dllu_stop_inverter",
      "entity balance switch": "input_boolean.dao_sessy_dllu_balance_switch",
      "entity calculated soc": "input_number.dao_sessy_dllu_calculated_soc",
      "solar": []
    }


Configuratie EV:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 "electric vehicle": [
    {
      "name": "Kia",
      "capacity": 11.1,
      "entity position": "input_select.dao_ev_position",
      "charge three phase": "False",
      "charge stages" : [
        {"ampere": 0, "efficiency": 0.00},
        {"ampere": 15, "efficiency": 0.89}
      ],      
      "entity actual level": "sensor.dao_ev_actual_level",
      "entity plugged in": "input_boolean.dao_ev_plugged_in",
      "entity stop charging": "input_datetime.dao_stop_laden_ev",
      "charge scheduler": {
        "entity set level": "input_number.dao_ev_set_level",
        "level margin": 2,
        "entity ready datetime": "input_datetime.dao_ev_ready_time"
      },
      "charge switch": "input_boolean.dao_ev_charge_switch",
      "entity set charging ampere": "input_number.dao_ev_set_charging_ampere"
    }
  ],

Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
De thuisbatterij wordt gedurende een aantal uren ontladen met lager vermogen (360W) dan ik als minimum hebt ingesteld (440W).
Zou het niet zo kunnen zijn dat DAO wel ging ontladen met 440W, maar dat er een eindtijd is gecommuniceerd zodat er uiteindelijk 0,36 kWh is ontladen?
Dat kun je terugvinden in de logging van de berekening en de historie van de entity "stop inverter"
De PHEV wordt geladen met lagere vermogens (en dus vele uren) dan ik heb ingesteld (0 of 15A) (dit kan ook niet anders met mijn laadpaal en PHEV, gewoon 1 fase vol vermogen)
Hier misschien hetzelfde verhaal: laden met 15A maar slechts een deel van het uur en tussentijds stoppen met laden (zie logging berekening en historie van entity "stop laden ev").

Ik hoor het graag.
Als mijn veronderstellingen niet kloppen dan zie ik graag de logging van de berekening.

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


Acties:
  • +5 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
Vandaag is er een nieuwe test-versie van DAO gepubliceerd: 2025.7.0.rc1.
Belangrijkste nieuws:
  • BREAKING : geen ondersteuning meer voor i386-processors
  • cryptography-package is toegevoegd, zodat gebruikers met mysql-database (niet te verwarren met mariadb) kunnen inloggen met encrypted wachtwoord
  • een heleboel packages zijn geupdate dankzij het toevoegen van een dependabot-workflow die dat dagelijks checkt (met veel dank aan @simnet )
  • bij gebruikers met een postgresql-database wordt de timezone gezet naar de lokale timezone (reported by @balk )

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


Acties:
  • +1 Henk 'm!

  • balk
  • Registratie: Januari 2000
  • Laatst online: 06:10
KC27 schreef op dinsdag 1 juli 2025 @ 16:35:
  • bij gebruikers met een postgresql-database wordt de timezone gezet naar de lokale timezone (reported by @balk )
Getest, lijkt niet te werken helaas. Volgens ChatGPT kan je deze bewerking niet uitvoeren wanneer je verbonden bent met de database. Of dat waar is weet ik niet :) maar het werkt niet in ieder geval. En ik krijg ook niet de melding in de addon log van "logging.info(f'Database "day_ahead" timezone gezet naar {timezone}')", maar ik weet niet of die daar terecht moet komen. Ik ga wat testen.
++edit++
hij komt niet bij de code dankzij 'if l_version < 20250700:' ; l_version is namelijk 20250700
++edit2++
en dan werkt de ALTER niet, wellicht door bovenstaande beperking.
++edit3++
Ik stel voor om tot we een programmatische oplossing hebben, iets in de documentatie op te nemen zodat die enkele postgres gebruiker dit handmatig kan doen :)

[ Voor 21% gewijzigd door balk op 01-07-2025 22:07 ]


Acties:
  • +1 Henk 'm!

  • Torch1969
  • Registratie: Juni 2013
  • Laatst online: 22:26
KC27 schreef op maandag 30 juni 2025 @ 23:00:
[...]


[...]

Zou het niet zo kunnen zijn dat DAO wel ging ontladen met 440W, maar dat er een eindtijd is gecommuniceerd zodat er uiteindelijk 0,36 kWh is ontladen?
Dat kun je terugvinden in de logging van de berekening en de historie van de entity "stop inverter"


[...]

Hier misschien hetzelfde verhaal: laden met 15A maar slechts een deel van het uur en tussentijds stoppen met laden (zie logging berekening en historie van entity "stop laden ev").

Ik hoor het graag.
Als mijn veronderstellingen niet kloppen dan zie ik graag de logging van de berekening.
Vwb de accu:
De daadwerkelijke aansturing is met het (te) lage vermogen. Het attribuut "stop inverter" is niet gewijzigd (ongewijzigd waarde 2000-01-01).

Ik heb een GitHub issue aangemaakt om alle logging met je te delen: https://github.com/corneel27/day-ahead/issues/316

Voor de laadpaal kan ik het niet goed achterhalen. De entiteit "stop laden ev" heb ik niet aangemaakt. Maar ik begrijp niet zo goed waarom het slimmer is om gedurende een uur b.v. 1 kwartier te laden. Zolang we salderen hebben kun je daarmee binnen een uur de opgewekte zonne energie wegstrepen tegen de laadstroom, maar als salderen weg is, dan gaat die vlieger niet meer op.

Acties:
  • 0 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
Torch1969 schreef op woensdag 2 juli 2025 @ 20:40:
Maar ik begrijp niet zo goed waarom het slimmer is om gedurende een uur b.v. 1 kwartier te laden.
Stel, je hebt ingesteld dat je met 0kW of 4kW kunt laden. En dat er op een gegeven moment nog 1kWh bij moet om op het ingestelde percentage +/- de marge uit te komen.

Dan heb je drie opties voor dat uur:
- Niet laden. Dan haal je het gewenste percentage niet
- Een uur laden met 4kW. Dan schiet je er overheen.
- Die stop entity gebruiken om 1/4 van een uur te laden. Dan kom je precies goed uit.

Persoonlijk vind ik die stop entiteiten een hoop extra logica voor weinig winst. Ik doe liever de botte-bijl methode en draai de DAO optimalisatie wat vaker. Maar ik vind het ook niet zo erg dat een ingestelde 80% uitkomt op bijvoorbeeld 83%, en ik heb al vaker aangegeven dat ik terughoudend ben met logica implementeren omdat de tijd voor testen/optimalisatie exponentieel toeneemt met de hoeveelheid logica en minder logica betrouwbaardere systemen oplevert. Jouw mening hierover kan en mag best afwijken.

Acties:
  • 0 Henk 'm!

  • mgroen81
  • Registratie: September 2010
  • Laatst online: 23:27
Ik heb in de config verschillende laadstromen voor de EV ingesteld met allemaal dezelfde efficiency. Ik had nog nooit gezien dat DAO een ander amperage kiest. edit: Na wat aanpassingen werkt dit.

Ik laad de auto met een SmartEVSE en kan iedere amperage instellen om te laden.
Is een betere methode dan tijdens het laden te stoppen.

[ Voor 15% gewijzigd door mgroen81 op 03-07-2025 10:39 ]

Mitsubishi PUHZ-W50VHA + EHPT20X-VM2C / 30x JASolar 265Wp oost/west + SolarEdge 7K


Acties:
  • +1 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
mgroen81 schreef op maandag 30 juni 2025 @ 12:42:
De Sessy kan je ook prima op 0% laten staan. 0% is niet helemaal leeg en de Sessy BMS zal de batterij ook bijladen als dat nodig is om hem op de juiste spanning te houden.
Sessy geeft inderdaad aan dat je dat mag doen en ze hebben er ook geen uitzondering voor in hun 10 jaar/6000 cycli garantie. Die zullen dus intern wel wat marge aanhouden, net zoals EV-fabrikanten ook doen.
Deye/Victron zelfbouwers moeten wat meer opletten.

Wat dat betreft is het geweldig dat je bij DAO op kunt geven wat de tijdelijke minimale SoC en langdurigere minimale SoC mag zijn. Dat heeft @KC27 mooi verzonnen.

Acties:
  • +1 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
mgroen81 schreef op donderdag 3 juli 2025 @ 09:23:
Ik heb in de config verschillende laadstromen voor de EV ingesteld met allemaal dezelfde efficiency. Ik heb nog nooit gezien dat DAO een ander amperage kiest. Hoe krijg ik dit werkend?
Ik heb een aardig aantal laadstromen ingesteld:

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
"electric vehicle": [ 
    {
      "name": "Corsa-E",
      "capacity": 47.0,
      "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":  6, "efficiency": 0.95},
            {"ampere":  7, "efficiency": 0.95},
            {"ampere":  8, "efficiency": 0.95},
            {"ampere":  9, "efficiency": 0.95},
            {"ampere": 10, "efficiency": 0.95},
            {"ampere": 11, "efficiency": 0.95},
      {"ampere": 12, "efficiency": 0.95},
            {"ampere": 13, "efficiency": 0.95},
            {"ampere": 14, "efficiency": 0.95},
            {"ampere": 15, "efficiency": 0.95},
            {"ampere": 16, "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.80},
            {"ampere": 48, "efficiency": 0.70}


Verder draai ik DAO per kwartier. Het werkt bij mij. 90% wordt ooit 92% of 89%, maar dat komt ook omdat ik de SoC zelf moet interpoleren; die auto communiceert die maar zelden. Eigenlijk alleen als je de stekker erin stopt, eruit haalt of na enkele uren.
De lage efficiency bij 45+ ampere is niet echt maar gefoezel van mijn kant; ik heb liever niet dat DAO die kiest tenzij het echt goed uitkomt.

[ Voor 3% gewijzigd door DaBit op 03-07-2025 09:50 ]


Acties:
  • 0 Henk 'm!

  • Dogooder
  • Registratie: April 2004
  • Laatst online: 00:09

Dogooder

dus...

Ik ben gisteren begonnen met DAO in een eigen docker, so far so good.
Ik heb thuis een warmtepomp die ook warm water maakt met een boiler. Dit is alleen niet regelbaar. Ik weet dat de boiler wordt verwarmd tussen 12 en 14 's middags. De warmtepomp doet vloerkoeling of verwarming wanneer nodig.

Aangezien dit apparaat dus niet te sturen valt. Moet ik dat dan meenemen in de baseload? Of kan DAO het verbruik van de warmtepomp wel meenemen om er voor te zorgen dat de SOC van de accu wel geschikt is om 0 op de meter te blijven draaien?

Acties:
  • 0 Henk 'm!

  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 07:43
DaBit schreef op maandag 30 juni 2025 @ 11:48:
[...]


Als jij DAO vertelt dat terugleveren van stroom geld kost (bij mij/Nextenergy dus ~2ct/kWh) dan is-ie al sneller geneigd om overtollige zonnestroom in de accu te stoppen.


[...]


Eerste probleem: Li-ion batterijen degraderen relatief vlot als ze langdurig op hele lage SoC gehouden worden. Dat geld voor alle kathodematerialen, dus ook voor LFP. Langdurig 100% vol en hogere temperaturen is ook zo'n situatie die je wil vermijden als je daar geen verdere nadelen van ondervind.
Ik laat de wellesnietes-discussie of je daar tijdens de levensduur van je batterij last van hebt even in het midden; google wat rond en maak je eigen keus.

Tweede probleem met lage SOC is dat je makkelijk onder de 0% grens schiet. Stel, je ontlaad naar 0% en laad alleen bij als er overschot aan zon is. Dat kan ooit weken duren, en in die tijd sippen de verbruikers op die batterij (BMS, omvormer, bla) de cellen onder de 0%. Dat geeft onmiddelijke en onomkeerbare schade. Dit effect is doodsoorzaak nummer 1 van Li-ion cellen.
Dat heb je bij 3-5% ook nog wel; vroeg of laat slijt 1 cel iets harder dan z'n broertjes dus als het hele pack dan nog op 5% zit kan het best zijn dat er 1 cel tegen 0 zit. Bij LFP kun je dat aan de celspanning niet zo goed zien.

Derde probleem: als je een keer stroomuitval krijgt en je batterij is zo ketsleeg dat je nog geen lampje kunt laten branden dan ga je dat de komende 30 jaar op elk familiefeestje te horen krijgen :+


Persoonlijk laad ik wel naar 100% want daar blijft het pack toch nooit heel lang op staan en alles naar 100% is een reset van alle tellertjes en eventuele onbalans. Maar aan de onderkant van de SoC vind ik persoonlijk 20% kortdurend / 25% langdurend wel een mooie grens. Geen risico dat er cellen diepontladen worden, worstcase nog zo'n 6kWh over om een lampje te kunnen laten branden, telefoon te laden en eten te koken.
Iets lager kan imho ook nog wel, zeg 10%/15%. Maar daaronder ben je te gulzig als je het mij vraagt.
hoe zit dit bij zogenaamde loodgel accu's die bv Qurmit gebruikt?

https://qurmit.com/

Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal


Acties:
  • +1 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
hemertje schreef op donderdag 3 juli 2025 @ 20:52:
hoe zit dit bij zogenaamde loodgel accu's die bv Qurmit gebruikt?
Bedoel je kwa SoC limieten? Volgens mij gebruiken ze loodaccu's, dus dan zou ik zeggen 100% bovengrens, 50% ondergrens, 60-80% landurigere ondergrens. Loodaccu's vinden regelmatig diep ontladen worden niet leuk, en daar kun je met gel, glasmatten, calcium, etcetera maar deels wat aan doen.
Maar ik zou het even bij die mensen zelf navragen, want als ze vinden dat een thuisaccu op basis van lood-zuur anno 2025 levensvatbaar is dan hebben ze vast wat bijzonders. Een heel goed marketingbureau in de arm genomen ofzo.

Kwa DAO-gedrag: DAO weet niks van chemie. Het gedrag van DAO verandert hooguit omdat je 75% laad/ontlaad efficientie en vrij hoge kosten per cyclus in gaat voeren. Qurmit is op basis van Victron, dus samenwerken met HA/DAO zou geen probleem moeten zijn.

Acties:
  • +1 Henk 'm!

  • Torch1969
  • Registratie: Juni 2013
  • Laatst online: 22:26
DaBit schreef op donderdag 3 juli 2025 @ 09:12:
[...]


Stel, je hebt ingesteld dat je met 0kW of 4kW kunt laden. En dat er op een gegeven moment nog 1kWh bij moet om op het ingestelde percentage +/- de marge uit te komen.

Dan heb je drie opties voor dat uur:
- Niet laden. Dan haal je het gewenste percentage niet
- Een uur laden met 4kW. Dan schiet je er overheen.
- Die stop entity gebruiken om 1/4 van een uur te laden. Dan kom je precies goed uit.

Persoonlijk vind ik die stop entiteiten een hoop extra logica voor weinig winst. Ik doe liever de botte-bijl methode en draai de DAO optimalisatie wat vaker. Maar ik vind het ook niet zo erg dat een ingestelde 80% uitkomt op bijvoorbeeld 83%, en ik heb al vaker aangegeven dat ik terughoudend ben met logica implementeren omdat de tijd voor testen/optimalisatie exponentieel toeneemt met de hoeveelheid logica en minder logica betrouwbaardere systemen oplevert. Jouw mening hierover kan en mag best afwijken.
Ja ik begrijp dat je op deze manier 1kWh kunt laden met vol vermogen (omdat die niet is terug te regelen), maar wat ik zag dat dit in de strategie voor komende nacht stond gepland voor meerdere uren. Dus er moet b.v. nog 4kWh geladen worden en dit stond als 4 x een kwartier gepland. Ik zou verwachten dat dit gewoon in één uur (het goedkoopste) gepland zou worden. Zal wel komen omdat dao in het minimize consumption algoritme probeert het laden uit te smeren over een langere periode en daarna kijkt hoe dit aan te sturen is en dan erachter komt dat er maar met één vermogen geladen kan worden en het dus over een deel van het uur plant…. En dat is dan niet logisch volgens mij, want per saldo ben je dan dus duurder uit (afgezien van het meerdere keren aan/uitschakelen van de laadpaal)

Edit: heb de grafiek en report er nog even bij gezocht (gaat mij dus om dat lang uitgesmeerde EV laden, terwijl ik alleen met 15A kan laden…):
Afbeeldingslocatie: https://tweakers.net/i/JSo6XU--hc4rFTSo3qLuvdKQhLI=/800x/filters:strip_exif()/f/image/0CTxgibwk3TWLSR1tGjpVFr0.png?f=fotoalbum_large
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
 2025-06-30 18:02:46 info: Inzet-factor laden Kia per stap
uur   0.0A  15.0A 
18    0.46   0.54   
19    0.66   0.34   
20    0.90   0.10   
21    0.84   0.16   
22    0.87   0.13   
23    0.91   0.09   
 0    0.96   0.04   
 1    0.91   0.09   
 2    0.91   0.09   
 3    0.31   0.69   
 4    0.96   0.04   
 5    0.93   0.07   
 6    0.96   0.04   
 7    0.79   0.21   
 8    0.51   0.49   
2025-06-30 18:02:46 info: Berekeningsuitkomst voor opladen van Kia:
2025-06-30 18:02:46 info: - aantal ampere 15A (was 0.0A)
2025-06-30 18:02:46 info: - stand schakelaar 'on' (was 'off')
2025-06-30 18:02:46 info: - stop laden op 2025-06-30 18:35
2025-06-30 18:02:46 info: - positie: home
2025-06-30 18:02:46 info: - ingeplugd: True
2025-06-30 18:02:46 info: Laden van Kia aangezet met 15 ampere via 'input_number.dao_ev_set_charging_ampere'
2025-06-30 18:02:46 info: Evaluatie status laden Kia op 2025-06-30 18:02
2025-06-30 18:02:46 info: - schakelaar laden: on
2025-06-30 18:02:46 info: - aantal ampere: 15.0
2025-06-30 18:02:46 info: Grid set point: 0.0 W

[ Voor 29% gewijzigd door Torch1969 op 04-07-2025 12:55 ]


Acties:
  • +1 Henk 'm!

  • DaBit
  • Registratie: Januari 2000
  • Laatst online: 08-07 09:46
Torch1969 schreef op vrijdag 4 juli 2025 @ 11:59:
Dus er moet b.v. nog 4kWh geladen worden en dit stond als 4 x een kwartier gepland. Ik zou verwachten dat dit gewoon in één uur (het goedkoopste) gepland zou worden.
Ik zie dat soort dingen ook gebeuren inderdaad:

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

Het ene kwartier is DAO de accu aan het bijladen (03.45-04.00 vannacht) om daarna nul-op-meter te vragen (04.00-04.30). Enzovoorts.
DAO is er toch nog niet helemaal voor gemaakt om elk kwartier een optimalisatie te draaien met uitkomsten die voor het komende uur bedoeld zijn lijkt het.

@KC27 : heb je toevallig al een kwartiers-testversie?

Acties:
  • +1 Henk 'm!

  • Impossibl3
  • Registratie: November 2012
  • Laatst online: 21:31
Ik heb een gebruikersvraag mbt het onderdeel warmtepomp.

Onze warmtepomp kan zowel verwarmen als koelen. Hoe kan ik deze het beste invoeren? Ik kan dit doen als 1 warmtepomp met een lijst van COP's onder heating maar de COP's (of eigenslijk EER's) zijn anders bij koelen dan verwarmen. Kan ik twee warmtepompen toevoegen? Of hoe moet ik dit invullen?

Ik ben namelijk ook een aantal kWh sensoren aan het maken die het verbruik van mijn WP totaal splits in WP - DHW, WP - Verwarmen/Koelen of dus WP - Verwarmen, WP - Koelen. De warmtepomp stuurt naar HA in welke status die staat (verwarmen, koelen, tapwater, rust). Zeker als verwarmen/koelen losgaat moet ik bedenken waar het verbruik van rust bij geteld moet worden om een correct beeld te krijgen.

Ik hoor graag jullie ideeën.

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


Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
Torch1969 schreef op vrijdag 4 juli 2025 @ 11:59:
[...]


Ja ik begrijp dat je op deze manier 1kWh kunt laden met vol vermogen (omdat die niet is terug te regelen), maar wat ik zag dat dit in de strategie voor komende nacht stond gepland voor meerdere uren. Dus er moet b.v. nog 4kWh geladen worden en dit stond als 4 x een kwartier gepland. Ik zou verwachten dat dit gewoon in één uur (het goedkoopste) gepland zou worden. Zal wel komen omdat dao in het minimize consumption algoritme probeert het laden uit te smeren over een langere periode en daarna kijkt hoe dit aan te sturen is en dan erachter komt dat er maar met één vermogen geladen kan worden en het dus over een deel van het uur plant…. En dat is dan niet logisch volgens mij, want per saldo ben je dan dus duurder uit (afgezien van het meerdere keren aan/uitschakelen van de laadpaal)

Edit: heb de grafiek en report er nog even bij gezocht (gaat mij dus om dat lang uitgesmeerde EV laden, terwijl ik alleen met 15A kan laden…):
[Afbeelding]
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-06-30 18:02:46 info: Inzet-factor laden Kia per stap
uur   0.0A  15.0A 
18    0.46   0.54   
19    0.66   0.34   
20    0.90   0.10   
21    0.84   0.16   
22    0.87   0.13   
23    0.91   0.09   
 0    0.96   0.04   
 1    0.91   0.09   
 2    0.91   0.09   
 3    0.31   0.69   
 4    0.96   0.04   
 5    0.93   0.07   
 6    0.96   0.04   
 7    0.79   0.21   
 8    0.51   0.49   
2025-06-30 18:02:46 info: Berekeningsuitkomst voor opladen van Kia:
2025-06-30 18:02:46 info: - aantal ampere 15A (was 0.0A)
2025-06-30 18:02:46 info: - stand   2025-06-30 18:35
2025-06-30 18:02:46 info: - positie: home
2025-06-30 18:02:46 info: - ingeplugd: True
2025-06-30 18:02:46 info: Laden van Kia aangezet met 15 ampere via 'input_number.dao_ev_set_charging_ampere'
2025-06-30 18:02:46 info: Evaluatie status laden Kia op 2025-06-30 18:02
2025-06-30 18:02:46 info: - schakelaar laden: on
2025-06-30 18:02:46 info: - aantal ampere: 15.0
2025-06-30 18:02:46 info: Grid set point: 0.0 W
Er is een dilemma in deze situatie:
- enerzijds wil jij "minimize consumption", want dat is je gekozen strategie
- anderzijds wil je in het goedkoopste uur laden, maar dan moet er ingekocht worden
De situatie wordt nog meer op scherp gezet omdat je alleen maar met 16A kunt laden.
Ik weet dat het heel vreemd klinkt, maar zou je een proef-berekening (calc met debug) willen doen waarbij je of salderen op "false" of je zet "energy taxes production" op nul (bijna hetzelfde).
Waarschijnlijk rekent ie dan precies zoals jij zou willen (nl zoveel mogelijk eigen gebruik).
Ik wil ook wel iets aan de instellingen toevoegen/veranderen om aan je wens tegemoet te komen, maar hoe zou je het dan willen?

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


Acties:
  • 0 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
DaBit schreef op vrijdag 4 juli 2025 @ 18:53:
[...]


Ik zie dat soort dingen ook gebeuren inderdaad:

[Afbeelding]

Het ene kwartier is DAO de accu aan het bijladen (03.45-04.00 vannacht) om daarna nul-op-meter te vragen (04.00-04.30). Enzovoorts.
DAO is er toch nog niet helemaal voor gemaakt om elk kwartier een optimalisatie te draaien met uitkomsten die voor het komende uur bedoeld zijn lijkt het.

@KC27 : heb je toevallig al een kwartiers-testversie?
Ik stuur een je dm.

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


Acties:
  • +1 Henk 'm!

  • KC27
  • Registratie: December 2009
  • Niet online
Impossibl3 schreef op vrijdag 4 juli 2025 @ 23:07:
Ik heb een gebruikersvraag mbt het onderdeel warmtepomp.

Onze warmtepomp kan zowel verwarmen als koelen. Hoe kan ik deze het beste invoeren? Ik kan dit doen als 1 warmtepomp met een lijst van COP's onder heating maar de COP's (of eigenslijk EER's) zijn anders bij koelen dan verwarmen. Kan ik twee warmtepompen toevoegen? Of hoe moet ik dit invullen?
.....
Voor koeling heeft DAO helemaal nog geen mogelijkheid.
Als daar veel behoefte naar is wil ik daar graag met jullie naar kijken hoe dat is te implementeren.
Want koelen met een wp of met een of meer airco's werkt waarschijnlijk vergelijkbaar.
Ik heb zelf een grondgebonden wp en die koelt "passief" met 50W, dus voor mijzelf is het niet interessant. maar gebruikers met een lucht/water wp of met airco('s) (lucht/lucht) kan het interessant zijn.
Ik hoor graag hoe jullie hier over denken en ik hoor ook graag ideeën en suggesties hoe we dat kunnen implementeren.

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

Pagina: 1 ... 8 9 Laatste