Alvast de beste wensen voor 2026 het laatste jaar voor het einde van de salderingsregeling.
Hier mijn zo goed als volledig aangepaste code voor het laden en ontladen van de batterijen. Langzaam aan ga ik de auto hier ook in verwerken. Voor nu houd de code rekening mee of de auto aan het laden is voordat de batterijen gaan ontladen.
Onder voorbehoud van fouten, ik ben nog aan het testen, alles lijkt te werken.
Benodigd
SoC Eventueel in een nieuwe template sensor zoals ik gedaan heb, de State of Charge van al je batterijen
Hoogste prijs dynamisch
Huidige prijs dynamisch
Laagste prijs dynamisch
Gewenste spread inputnumber cent en euro
Opwek
BatteryGroupMode
Eventueel Telegram notify of notify.notify
Altijd als een actie wordt uitgevoerd wordt de BatteryGroupMode gecontroleerd als de BatteryGroupMode niet actief is wordt deze pas getriggered.
Logging in het begin staat standaard aan voor de variabelen, deze kan je in de code laten en in- of uitschakelen waneer nodig.
ToDo
Laagste prijs, hoogste prijs en huidige prijs netjes verwerken in een automatisering in plaats van een sjabloon
Auto laden verwerken
Iets verzinnen met opladen als de spread gehaald wordt anders dan huidigeprijs = hoogste prijs - 0.01 en 0.02. Ik zit te denken aan Current percentage of highest price - today van Energy Zero.
Korte uitleg
Als het uur begint (binnenkort ws elke 15 minuten)
Als de spread wordt aangepast
Als opwek boven x uitkomt
Dan
Variabelen defineren
Kiezen tussen vier opties
Optie 1:
Als opwek is boven en SoC onder 100
Ga naar nul modus (binnenkort naar alleen laden modus)
Optie 2:
Als huidigeprijs = hoogsteprijs
of
huidigeprijs = hoogsteprijs - 0.01
of
huidigeprijs = hoogsteprijs - 0.02
en soc hoger dan 0
en auto laad niet
Ga naar nul modus
Optie 3:
hoogsteprijs - huidigeprijs >= gewenste_spread_eur
en soc lager dan 100
handmatig laden
Optie 4:
hoogsteprijs - huidigeprijs <= gewenste_spread_eur
of
soc hoger dan 99
ga naar standby
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
| alias: HomeWizard PIBS dynamisch laden en ontladen
description: Opladen tijdens goedkoopste uren, ontlaadt na goedkoopste uren
triggers:
- minutes: "0"
trigger: time_pattern
- entity_id: input_number.gewenste_dynamische_spread_hw_pib
trigger: state
- alias: Wanneer SolarEdge Current power hoger is dan...
trigger: numeric_state
entity_id:
- sensor.solaredge_current_power
above: 499
conditions: []
actions:
- variables:
soc1: "{{ states('sensor.plug_in_battery_state_of_charge') | float(0) }}"
soc2: "{{ states('sensor.plug_in_battery_state_of_charge_2') | float(0) }}"
soc3: "{{ states('sensor.plug_in_battery_3_state_of_charge') | float(0) }}"
gemiddelde_soc: "{{ states('sensor.combined_battery_soc') }}"
gewenste_spread_ct: >-
{{ states('input_number.gewenste_dynamische_spread_hw_pib') | float(0)
}}
gewenste_spread_eur: "{{ gewenste_spread_ct / 100 }}"
huidigeprijs: "{{ states('sensor.energyzero_all_in_current_price') }}"
laagsteprijs: "{{ states('sensor.energyzero_lowest_price_today') }}"
hoogsteprijs: "{{ states('sensor.energyzero_highest_price_today') }}"
SolarEdge: "{{ states('sensor.solaredge_current_power') }}"
BatteryGroupMode: "{{ states('select.p1_meter_XXX_XXX#Change_battery_group_mode') }}"
- action: notify.send_message
metadata: {}
data:
message: >+
Huidige Battery Group Mode= {{ BatteryGroupMode }}
soc1={{ soc1 }}
soc2={{ soc2 }}
soc2={{ soc3 }}
gemiddelde soc ={{ gemiddelde_soc }}
State of Charge lager dan 100 = {{ gemiddelde_soc }} < 100
State of Charge hoger dan 0 = {{ gemiddelde_soc }} > 0
gewenste_spread_ct={{ gewenste_spread_ct }}
gewenste_spread_eur={{ gewenste_spread_eur }}
hooghuidig {{ hoogsteprijs }} - {{ huidigeprijs }}
huidigeprijs {{ huidigeprijs }}
laagsteprijs {{ laagsteprijs }}
hoogsteprijs {{ hoogsteprijs }}
SolarEdge={{ SolarEdge }}
Berekening spread gehaald= (hoogsteprijs - huidigeprijs) >=
gewenste_spread_eur
Berekening nu= ({{ hoogsteprijs }} - {{ huidigeprijs }}) >= {{
gewenste_spread_eur }}
Spread gehaald= {{ (hoogsteprijs - huidigeprijs) >= gewenste_spread_eur
}}
Berekening spread niet gehaald= (hoogsteprijs - huidigeprijs) <=
gewenste_spread_eur
Berekening nu= ({{ hoogsteprijs }} - {{ huidigeprijs }}) <= {{
gewenste_spread_eur }}
Spread niet gehaald= {{ (hoogsteprijs - huidigeprijs) <=
gewenste_spread_eur }}
target:
entity_id: notify.telegram_bot_XXX_XXX#Change
enabled: true
- choose:
- conditions:
- condition: and
conditions:
- condition: numeric_state
entity_id: sensor.solaredge_current_power
above: 499
- condition: numeric_state
entity_id: sensor.combined_battery_soc
below: 100
sequence:
- if:
- condition: state
entity_id: select.p1_meter_XXX_XXX#Change_battery_group_mode
state:
- to_full
- standby
then:
- action: select.select_option
metadata: {}
data:
option: zero
target:
entity_id: select.p1_meter_XXX_XXX#Change_battery_group_mode
- action: notify.send_message
metadata: {}
data:
message: >
Optie 1HW batterij gaat naar nul modus.
soc1={{ soc1 }}
soc2={{ soc2 }}
soc2={{ soc3 }}
gemiddelde soc ={{ gemiddelde_soc }}
State of Charge lager dan 100 = {{ gemiddelde_soc }} < 100
State of Charge hoger dan 0 = {{ gemiddelde_soc }} > 0
gewenste_spread_ct={{ gewenste_spread_ct }}
gewenste_spread_eur={{ gewenste_spread_eur }}
hooghuidig {{ hoogsteprijs }} - {{ huidigeprijs }}
huidigeprijs {{ huidigeprijs }}
laagsteprijs {{ laagsteprijs }}
hoogsteprijs {{ hoogsteprijs }}
SolarEdge={{ SolarEdge }}
Berekening spread gehaald= (hoogsteprijs - huidigeprijs) >=
gewenste_spread_eur
Berekening nu= ({{ hoogsteprijs }} - {{ huidigeprijs }}) >=
{{ gewenste_spread_eur }}
Spread gehaald= {{ (hoogsteprijs - huidigeprijs) >=
gewenste_spread_eur }}
Berekening spread niet gehaald= (hoogsteprijs -
huidigeprijs) <= gewenste_spread_eur
Berekening nu= ({{ hoogsteprijs }} - {{ huidigeprijs }}) <=
{{ gewenste_spread_eur }}
Spread niet gehaald= {{ (hoogsteprijs - huidigeprijs) <=
gewenste_spread_eur }}
target:
entity_id: notify.telegram_bot_XXX_XXX#Change
- conditions:
- condition: and
conditions:
- condition: or
conditions:
- condition: template
value_template: "{{ huidigeprijs }} = {{ hoogsteprijs }} "
- condition: template
value_template: "{{ huidigeprijs }} = {{ hoogsteprijs }} - 0.01"
- condition: template
value_template: "{{ huidigeprijs }} = {{ hoogsteprijs }} - 0.02"
- condition: numeric_state
entity_id: sensor.combined_battery_soc
above: 0
sequence:
- if:
- condition: and
conditions:
- condition: state
entity_id: select.p1_meter_XXX_XXX#Change_battery_group_mode
state:
- standby
- to_full
- condition: numeric_state
entity_id: sensor.auto_power
below: 50
then:
- action: select.select_option
metadata: {}
data:
option: zero
target:
entity_id: select.p1_meter_XXX_XXX#Change_battery_group_mode
- action: notify.send_message
metadata: {}
data:
message: >-
Optie 2,1
HW batterij naar nul-modus tijdens dure uren als de auto
niet laad.
soc1={{ soc1 }}
soc2={{ soc2 }}
soc2={{ soc3 }}
gemiddelde soc ={{ gemiddelde_soc }}
huidigeprijs={{ huidigeprijs }}
gewenste_spread_ct={{ gewenste_spread_ct }}
gewenste_spread_eur={{ gewenste_spread_eur }}
laagsteprijs={{ laagsteprijs }}
hoogsteprijs={{ hoogsteprijs }}
SolarEdge={{ SolarEdge }}
target:
entity_id: notify.telegram_bot_XXX_XXX#Change
- conditions:
- condition: and
conditions:
- condition: template
value_template: "{{ (hoogsteprijs - huidigeprijs) >= gewenste_spread_eur }}"
- condition: numeric_state
entity_id: sensor.combined_battery_soc
below: 100
sequence:
- if: []
then:
- if:
- condition: state
entity_id: select.p1_meter_XXX_XXX#Change_battery_group_mode
state:
- standby
- zero
then:
- action: select.select_option
metadata: {}
data:
option: to_full
target:
entity_id: select.p1_meter_XXX_XXX#Change_battery_group_mode
- action: notify.send_message
metadata: {}
data:
message: >
Optie 3
HW batterij start met laden als de batterijen niet vol
zijn, tijdens goedkoopste uren rekening houdend met de
spread.
soc1={{ soc1 }}
soc2={{ soc2 }}
soc2={{ soc3 }}
gemiddelde soc ={{ gemiddelde_soc }}
gewenste_spread_ct={{ gewenste_spread_ct }}
gewenste_spread_eur={{ gewenste_spread_eur }}
hooghuidig {{ hoogsteprijs }} - {{ huidigeprijs }}
huidigeprijs {{ huidigeprijs }}
laagsteprijs {{ laagsteprijs }}
hoogsteprijs {{ hoogsteprijs }}
SolarEdge={{ SolarEdge }}
Berekening spread gehaald= (hoogsteprijs - huidigeprijs)
>= gewenste_spread_eur
Berekening nu= ({{ hoogsteprijs }} - {{ huidigeprijs }})
>= {{ gewenste_spread_eur }}
Spread gehaald= {{ (hoogsteprijs - huidigeprijs) >=
gewenste_spread_eur }}
target:
entity_id: notify.telegram_bot_XXX_XXX#Change
- conditions:
- condition: or
conditions:
- condition: template
value_template: "{{ (hoogsteprijs - huidigeprijs) <= gewenste_spread_eur }}"
- condition: numeric_state
entity_id: sensor.combined_battery_soc
above: 99
sequence:
- if:
- condition: state
entity_id: select.p1_meter_XXX_XXX#Change_battery_group_mode
state:
- to_full
- zero
then:
- action: select.select_option
metadata: {}
data:
option: standby
target:
entity_id: select.p1_meter_XXX_XXX#Change_battery_group_mode
- action: notify.send_message
metadata: {}
data:
message: >
Optie 4
HW batterij gaat op standby spread wordt niet gehaald of de
batterijen zitten vol.
soc1={{ soc1 }}
soc2={{ soc2 }}
soc2={{ soc3 }}
gemiddelde soc ={{ gemiddelde_soc }}
hooghuidig {{ hoogsteprijs }} - {{ huidigeprijs }}
huidigeprijs {{ huidigeprijs }}
laagsteprijs {{ laagsteprijs }}
hoogsteprijs {{ hoogsteprijs }}
gewenste_spread_ct={{ gewenste_spread_ct }}
gewenste_spread_eur={{ gewenste_spread_eur }}
SolarEdge={{ SolarEdge }}
Berekening spread niet gehaald= (hoogsteprijs -
huidigeprijs) <= gewenste_spread_eur
Berekening nu= ({{ hoogsteprijs }} - {{ huidigeprijs }}) <=
{{ gewenste_spread_eur }}
Spread niet gehaald= {{ (hoogsteprijs - huidigeprijs) <=
gewenste_spread_eur }}
target:
entity_id: notify.telegram_bot_XXX_XXX#Change
mode: single |
77 kWh EV | 3,38 kWp SolarEdge SE3000 | 2x Technaxx 300W Solar | Drie HomeWizard PiBs | LG 3,5 kW Standaard Plus | 100 liter QH Boiler