• ctrl-tab
  • Registratie: Maart 2001
  • Laatst online: 19:47
RemmyB83 schreef op vrijdag 17 april 2026 @ 23:55:
[...]

Klinkt goed
Heb je dit al getest?
En hoe is het resultaat?
Heb het als zodanig draaien inderdaad. Heb het idee dat hij wat rustiger reageert nu maar het is wat lastig vergelijken gezien er vrij veel activiteit was vanavond.
Maar je kan er donder op zeggen dat hij sneller zal reageren op fluctuaties.
Met bv een 5 seconden interval heb je kans dat je voor langere tijd eindigt op iets tegen de 5 seconden delay, en hoe hoger je interval hoe groter het potentiele delay. (had hem zelf op 11 staan, dat is helemaal erg, dan kan je tot 10 seconden extra achter lopen..)

[ Voor 15% gewijzigd door ctrl-tab op 18-04-2026 00:18 ]

WP: Panasonic KIT-WC07L3E5 7kw , buffer PAW-BTANK50L-2, Boiler PAW-TD20C1E5-1 | Solar: Goodwe SDT G2 GW6K-DT 6 kW | Battery: 2x Zendure SF 2400 AC totaal 17.2 kW


  • RemmyB83
  • Registratie: Augustus 2018
  • Laatst online: 19:35
ctrl-tab schreef op zaterdag 18 april 2026 @ 00:08:
[...]


Heb het als zodanig draaien inderdaad. Heb het idee dat hij wat rustiger reageert nu maar het is wat lastig vergelijken gezien er vrij veel activiteit was vanavond.
Maar je kan er donder op zeggen dat hij sneller zal reageren op fluctuaties.
Met bv een 5 seconden interval heb je kans dat je voor langere tijd eindigt op iets tegen de 5 seconden delay, en hoe hoger je interval hoe groter het potentiele delay. (had hem zelf op 11 staan, dat is helemaal erg, dan kan je tot 10 seconden extra achter lopen..)
Ik heb het er tussen gezet, en de standaard 5sec interval uitgeschakkeld.
Mooie test in iedergeval 🤗

🇳🇱Pijnacker Oost/West


  • ctrl-tab
  • Registratie: Maart 2001
  • Laatst online: 19:47
RemmyB83 schreef op zaterdag 18 april 2026 @ 00:32:
[...]

Ik heb het er tussen gezet, en de standaard 5sec interval uitgeschakkeld.
Mooie test in iedergeval 🤗
Top ben benieuwd naar je ervaring.

Zat even wat te zoeken en indirect kan zowel de timebased trigger, als een state based trigger , configurabel gemaakt worden.
Dus een veldje met de tijd in seconden, of een DSMR4 vinkje zou moeten kunnen binnen de configuratie.
Misschien een idee voor een pr

WP: Panasonic KIT-WC07L3E5 7kw , buffer PAW-BTANK50L-2, Boiler PAW-TD20C1E5-1 | Solar: Goodwe SDT G2 GW6K-DT 6 kW | Battery: 2x Zendure SF 2400 AC totaal 17.2 kW


  • gast777
  • Registratie: Februari 2023
  • Laatst online: 28-05 21:01
Gramser schreef op vrijdag 17 april 2026 @ 21:55:
Helder! En nu geeft hij bij mij 1 temperatuur weer - ik heb twee inverters. Laat hij de warmste zien?
Klopt. De hoogste van de twee temperaturen wordt aan HA doorgegeven.

6 kWp solar | Daikin Intergas Hybride 8kW | Tesla Model Y RWD 2023 | Fiat 500e 2014 | Zendure SF2400AC 17 kWh


  • Henkoes
  • Registratie: Juni 2022
  • Laatst online: 13:31
gast777 schreef op zaterdag 18 april 2026 @ 00:53:
[...]


Klopt. De hoogste van de twee temperaturen wordt aan HA doorgegeven.
En soc level, wordt de laagste of hoogste doorgegeven aan Gielz?

  • Aardedraadje
  • Registratie: Mei 2013
  • Laatst online: 19:53

Aardedraadje

Met kabelschoen

ctrl-tab schreef op vrijdag 17 april 2026 @ 22:59:
@gielz Ik heb mogelijk een zinnige suggestie voor een toekomstige versie.
Ik heb zelf een DSMR4 meter en die update dus maar om de 10 seconden.
In de docs wordt 5 seconden als trigger geadviseerd in de automation.
Dit kan resulteren in een forse extra delay als je op het verkeerde moment in time zit, die ook even kan aanhouden. Eigenlijk met elke time based trigger heb je problemen met een DSMR 4 meter.

Om deze toch zo adequaat mogelijk te laten werken heb ik de time based trigger vervangen door onderstaande.
Nu weet je zeker dat hij op het juiste moment een change door voert op de baterij (namelijk als de homewizard daadwerkelijk iets nieuws rapporteert).
code:
1
2
3
4
5
6
7
8
9
- trigger: state
    entity_id: sensor.homewizard_p1_power
    id: aansturing_trigger
    not_from:
      - unknown
      - unavailable
    not_to:
      - unknown
      - unavailable
Ik heb het ook zo draaien, aansturing Gielz synchroon met P1, ook op DSMR4. Ik kan beamen dat dit goed werkt.

Maar aangezien DSMR4 zijn uittrede aan het doen is en DSMR5 hier al redelijk de standaard lijkt te zijn, kan ik me voorstellen dat @gielz er geen zin in heeft een manier te zoeken om dit te laten werken voor zowel DSMR4 én DSMR5 gebruikers, aangezien de batterij enigszins langzaam reageert werkt synchroniseren van P1 en de automatisering op DSMR5 namelijk juist averechts.

  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Henkoes schreef op zaterdag 18 april 2026 @ 05:45:
[...]


En soc level, wordt de laagste of hoogste doorgegeven aan Gielz?
Volgens mij is dat dan weer het gemiddelde van je stapels.

  • ctrl-tab
  • Registratie: Maart 2001
  • Laatst online: 19:47
Aardedraadje schreef op zaterdag 18 april 2026 @ 06:23:
[...]

Ik heb het ook zo draaien, aansturing Gielz synchroon met P1, ook op DSMR4. Ik kan beamen dat dit goed werkt.

Maar aangezien DSMR4 zijn uittrede aan het doen is en DSMR5 hier al redelijk de standaard lijkt te zijn, kan ik me voorstellen dat @gielz er geen zin in heeft een manier te zoeken om dit te laten werken voor zowel DSMR4 én DSMR5 gebruikers, aangezien de batterij enigszins langzaam reageert werkt synchroniseren van P1 en de automatisering op DSMR5 namelijk juist averechts.
Ja daar heb je wel een punt. Wellicht een opmerking in de docs waard.

WP: Panasonic KIT-WC07L3E5 7kw , buffer PAW-BTANK50L-2, Boiler PAW-TD20C1E5-1 | Solar: Goodwe SDT G2 GW6K-DT 6 kW | Battery: 2x Zendure SF 2400 AC totaal 17.2 kW

ctrl-tab schreef op vrijdag 17 april 2026 @ 22:59:
@gielz Ik heb mogelijk een zinnige suggestie voor een toekomstige versie.
Ik heb zelf een DSMR4 meter en die update dus maar om de 10 seconden.
In de docs wordt 5 seconden als trigger geadviseerd in de automation.
Dit kan resulteren in een forse extra delay als je op het verkeerde moment in time zit, die ook even kan aanhouden. Eigenlijk met elke time based trigger heb je problemen met een DSMR 4 meter.

Om deze toch zo adequaat mogelijk te laten werken heb ik de time based trigger vervangen door onderstaande.
Nu weet je zeker dat hij op het juiste moment een change door voert op de baterij (namelijk als de homewizard daadwerkelijk iets nieuws rapporteert).
code:
1
2
3
4
5
6
7
8
9
- trigger: state
    entity_id: sensor.homewizard_p1_power
    id: aansturing_trigger
    not_from:
      - unknown
      - unavailable
    not_to:
      - unknown
      - unavailable
Bij een slimme meter die per seconden meting heeft zal de aansturing volledig uit het lood gaan en nooit meer NOM kunnen draaien.

Dit is de reden dat er 5 sec interval gebruikt word. De batterij heeft namelijk 4 sec nodig om te reageren.

Zendure-HA.com | Run Zendure your way — in Home Assistant


  • Henkoes
  • Registratie: Juni 2022
  • Laatst online: 13:31
gielz schreef op zaterdag 18 april 2026 @ 08:02:
[...]


Bij een slimme meter die per seconden meting heeft zal de aansturing volledig uit het lood gaan en nooit meer NOM kunnen draaien.

Dit is de reden dat er 5 sec interval gebruikt word. De batterij heeft namelijk 4 sec nodig om te reageren.
Bedoel je met reageren: opbouwen/afbouwen naar de nieuwe input/output? Of bedoel je uberhaupt 4 seconden voordat de zendure weet dat hij iets moet doen?
Henkoes schreef op zaterdag 18 april 2026 @ 08:26:
[...]


Bedoel je met reageren: opbouwen/afbouwen naar de nieuwe input/output? Of bedoel je uberhaupt 4 seconden voordat de zendure weet dat hij iets moet doen?
De hele cyclus; ontvangen, verwerken en eventueel nog opstarten. Dit kan soms net binnen 4 sec. Maar daarom dus een 5 sec interval.

Ziet er dan zo uit;
Afbeeldingslocatie: https://tweakers.net/i/5_TBJN7w1aWJfRQVubr25Fwryv8=/800x/filters:strip_exif()/f/image/KpJbzMlzy0bbHV2PJUoqi4cb.png?f=fotoalbum_large

Zendure-HA.com | Run Zendure your way — in Home Assistant


  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-05 16:07
Gramser schreef op vrijdag 17 april 2026 @ 23:05:
[...]

Dat hebben ze zelf gedaan… heb ik geen rol in gehad. Overgenomen uit het overzicht van de Experiabox.
In dezelfde experiabox kan je de ip-adressen vastzetten of wijzigen en vastzetten zodat ze na een herstart weer hetzelfde ip-adres krijgen als voorheen, dit regelt de zogenaamde DNS server van je Experiabox.

Kijk eens bij ‘Leases’ of ‘MAC\ IP Routing’

Zo kan je zelf een overzicht maken en je up-adressen in huis logisch beheren

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


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Dat is -denk ik- hetzelfde als toewijzen van een statisch IP adres? Heb ik met de HA Green wel gedaan.

  • DrNickB
  • Registratie: Juli 2017
  • Laatst online: 29-05 20:14
Gramser schreef op zaterdag 18 april 2026 @ 09:02:
Dat is -denk ik- hetzelfde als toewijzen van een statisch IP adres? Heb ik met de HA Green wel gedaan.
Ja, hierdoor hoef je op je apparaten niks in te stellen en regelt je router het.
Enige wat je even moet onthouden dat als er een nieuw modem/router komt en/of een reset krijgt,
je dus ook alles weer opnieuw moet instellen.

Mini Server - PiHole, Backups, Nextcloud | NUC - HomeAssistant (docker), Zigbee2Mqtt (docker), ZwaveJSUI (docker), mqtt, P1-USB | Zendure SF800Pro | 1350Wp PV

Gramser schreef op vrijdag 17 april 2026 @ 23:05:
[...]

Dat hebben ze zelf gedaan… heb ik geen rol in gehad. Overgenomen uit het overzicht van de Experiabox.
Heb je ze wel als vast IP adres in de experiabox gezet? Anders kun je nog wel eens verrast worden als DHCP ze een ander IP adres gaat geven. Gebeurd vlgs mij o.a. al bij modem restart.
De tip is je al gegeven zie ik.

[ Voor 4% gewijzigd door Devke op 18-04-2026 10:11 ]

Denk in kansen, niet in problemen. Homewizard Plug-In Battery 5.4 kWh. Zendure 2400 AC 17.2 kWh. Testen Accumate 4.8 kWh Plug-In Battery. 3330 Wp zonnepanelen. EV 77 kWh. Peblar Business Laadpaal.


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Devke schreef op zaterdag 18 april 2026 @ 10:09:
[...]

Heb je ze wel als vast IP adres in de experiabox gezet? Anders kun je nog wel eens verrast worden als DHCP ze een ander IP adres gaat geven. Gebeurd vlgs mij o.a. al bij modem restart.
De tip is je al gegeven zie ik.
Ja maar ik heb de zendures nog niet vastgezet. Alleen de HA Green. Dus alsnog goede tip!

  • Maarten60
  • Registratie: Oktober 2009
  • Laatst online: 12:23
Gramser schreef op zaterdag 18 april 2026 @ 10:17:
[...]

Ja maar ik heb de zendures nog niet vastgezet. Alleen de HA Green. Dus alsnog goede tip!
Ter overweging (en iets geavanceeerder)
Je router kent statische (vast) en dynamische adressen (die kunnen veranderen). Je telefoon heeft meestal een dynamisch adres en meer ‘vaste’ apparaten als server (ha green), batterijen, tv en sensors een statisch adres.
Dynamische adressen worden door een dhcp server op je router uitgegeven. Die komen uit een zogenaamde pool. In je experia box kan je waarschijnlijk de reeks van de pool vinden of instellen.
Waarom vaste adressen? Sommige apparaten bv sensors of batterijen wil je besturen. Als je batterij of p1 sensor een dynamisch adres heeft en dat veranderd werken je automatiseringen niet meer, immers HA wil een commando naar je batterij sturen maar het adres is veranderd en de ‘verbinding’ verbroken. ( en zoek je jezelf kleurenblind waarom). Bijvoorbeeld ip-adres van P1 sensor in Gielz integratie.
Maar voor jezelf een indeling van de vaste adressen. Ik heb bijvoorbeeld een reeks voor alles wat met WP te maken heeft (192.168.x.220 tot .240) en een andere reeks voor alles wat met Zendure te maken heeft.
Als laatste het beste is de vaste adressen door je router uit te laten geven. Anders loop je risico dat een apparaat een vast ip-adres in de dhcp pool heeft en de router dit adres aan ander apparaat uitgeeft en je dus twee apparaten met zelfde adres hebt.
Dat maakt fout zoeken later ook weer makkelijker.
Succes met je HA reis.

  • Refl
  • Registratie: Februari 2008
  • Laatst online: 29-05 08:59
Maarten60 schreef op zaterdag 18 april 2026 @ 11:20:
[...]

Ter overweging (en iets geavanceeerder)
Je router kent statische (vast) en dynamische adressen (die kunnen veranderen). Je telefoon heeft meestal een dynamisch adres en meer ‘vaste’ apparaten als server (ha green), batterijen, tv en sensors een statisch adres.
Dynamische adressen worden door een dhcp server op je router uitgegeven. Die komen uit een zogenaamde pool. In je experia box kan je waarschijnlijk de reeks van de pool vinden of instellen.
Waarom vaste adressen? Sommige apparaten bv sensors of batterijen wil je besturen. Als je batterij of p1 sensor een dynamisch adres heeft en dat veranderd werken je automatiseringen niet meer, immers HA wil een commando naar je batterij sturen maar het adres is veranderd en de ‘verbinding’ verbroken. ( en zoek je jezelf kleurenblind waarom). Bijvoorbeeld ip-adres van P1 sensor in Gielz integratie.
Maar voor jezelf een indeling van de vaste adressen. Ik heb bijvoorbeeld een reeks voor alles wat met WP te maken heeft (192.168.x.220 tot .240) en een andere reeks voor alles wat met Zendure te maken heeft.
Als laatste het beste is de vaste adressen door je router uit te laten geven. Anders loop je risico dat een apparaat een vast ip-adres in de dhcp pool heeft en de router dit adres aan ander apparaat uitgeeft en je dus twee apparaten met zelfde adres hebt.
Dat maakt fout zoeken later ook weer makkelijker.
Succes met je HA reis.
Kleine toevoeging hierop voor @Gramser , ook al is het offtopic, nagenoeg alle apparaten starten dynamisch (dhcp). Dan kun je namelijk altijd verbinding maken: hoi ik ben nieuw hier, welk IP mag ik hebben?

De onderverdeling moet je ZELF maken in de router, je koppelt dan het mac adres van een zendure, HA server, etc. aan een vast IP. Dus als dan je Zendure met mac adres 00:00:00:00:00:00 aanklopt bij je netwerk dan weet je router, oh die krijgt altijd IP 192.168.1.100 als je dat instelt.

Ryzen 7600 | 7800XT | Mustang Mach-E & ID.3 | Peblar Business | 4860wp | SolarFlow 2400 AC+ (16,8kWh)


  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-05 16:07
Wai_AM schreef op vrijdag 17 april 2026 @ 10:07:
[...]


heb je nordpool ook op EN gezet ? anders heb je een mix van NL en EN 8)
het ging mij meer hierom
gielz schreef op donderdag 16 april 2026 @ 07:29:
[...]


Ik zou voor engelstalige gaan.
De werking van beide is 1-1 maar het voordeel is dat de engelse zendure. entiteiten heeft.

Vind je de entiteiten geen groot issue dan zijn beide een prima keuze.

Releases zijn altijd identiek ook in de testperiode.

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


  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-05 16:07
gielz schreef op zaterdag 18 april 2026 @ 08:32:
[...]


De hele cyclus; ontvangen, verwerken en eventueel nog opstarten. Dit kan soms net binnen 4 sec. Maar daarom dus een 5 sec interval.

Ziet er dan zo uit;
[Afbeelding]
vanuit je readme:
Dynamisch NOM (Duur)
Wanneer sensor.dynamisch_duurste_periode op JA staat zal hij NOM gaan ontladen en de rest van de tijd staat de batterij in standby.
betekent dit dat je tijdens de grijze periodes geen NOM houdt?

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

[ Voor 18% gewijzigd door hemertje op 18-04-2026 12:52 ]

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


  • edjes
  • Registratie: December 2025
  • Laatst online: 26-05 20:36
Ik heb inmiddels een zeer uitgebreide ROI geschreven voor mijn batterij, panelen en opbrengst in de grid.

Onderdeel hiervan zou gemakkelijk in @gielz Gielz dashboard kunnen, namelijk het aantal gedraaide cycli van de batterij en de daarmee gepaard gaande kosten van slijtage. Beetje pijnlijk, wel realistisch ;-)
De capaciteit haal je op uit de Gielz zelf, de investeringskosten van de batterij middels een inputnumber.

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

De code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
template:
  # ----------------------------------------------------------------
  # Cyclus-monitor — batterij slijtage
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id: sensor.solarflow_2400_ac_aggr_charge_total
    sensor:
      - name: "Batterij Totaal Aantal Cycli"
        unique_id: battery_total_cycles
        unit_of_measurement: "cycli"
        icon: mdi:sync
        state: >
          {% set totaal_geladen = trigger.to_state.state | float(0) %}
          {% set capaciteit = states('sensor.zendure_2400_ac_totale_capaciteit') | float(8.64) %}
          {{ (totaal_geladen / capaciteit) | round(1) if totaal_geladen > 0 else 0 }}
 
      - name: "Batterij Slijtage Kosten Totaal"
        unique_id: battery_wear_cost_total
        unit_of_measurement: "€"
        icon: mdi:cash-clock
        state: >
          {% set cycli       = states('sensor.batterij_totaal_aantal_cycli') | float(0) %}
          {% set investering = states('input_number.battery_investment')        | float(2600) %}
          {# Slijtage per cyclus = investering / 6000 cycli (LiFePO4 levensduur) #}
          {% set slijtage_per_cyclus = investering / 6000 %}
          {{ (cycli * slijtage_per_cyclus) | round(2) }}
Het inputnumber:
code:
1
2
3
4
5
6
7
8
9
10
input_number:
  battery_investment:
    mode: box
    name: "Investering batterij"
    min: 0
    max: 10000
    step: 1
    initial: 2600
    unit_of_measurement: "€"
    icon: mdi:battery-charging

  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Mag ik hier een vraag stellen over Zendure in HA, icm EVCC? Ik moet voor de thuisbatterij het IP-adres/de hostname opgeven, maar de @gast777 maakt meerdere zendures mogelijk. Wat vul ik daar in? Ik heb nu "localhost:1880" ingevuld maar daarmee leest EVCC de batetrijcapaciteit niet... maak ik een denkfout?

Ik krijg deze foutmelding:
battery 1 soc: unexpected status: 404 (Not Found) GET http://localhost:1880/properties/report

en

battery 1 power: unexpected status: 404 (Not Found) GET http://localhost:1880/properties/report

[ Voor 27% gewijzigd door Gramser op 18-04-2026 15:26 ]


  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-05 16:07
edjes schreef op zaterdag 18 april 2026 @ 15:14:
Ik heb inmiddels een zeer uitgebreide ROI geschreven voor mijn batterij, panelen en opbrengst in de grid.

Onderdeel hiervan zou gemakkelijk in @gielz Gielz dashboard kunnen, namelijk het aantal gedraaide cycli van de batterij en de daarmee gepaard gaande kosten van slijtage. Beetje pijnlijk, wel realistisch ;-)
De capaciteit haal je op uit de Gielz zelf, de investeringskosten van de batterij middels een inputnumber.

[Afbeelding]

De code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
template:
  # ----------------------------------------------------------------
  # Cyclus-monitor — batterij slijtage
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id: sensor.solarflow_2400_ac_aggr_charge_total
    sensor:
      - name: "Batterij Totaal Aantal Cycli"
        unique_id: battery_total_cycles
        unit_of_measurement: "cycli"
        icon: mdi:sync
        state: >
          {% set totaal_geladen = trigger.to_state.state | float(0) %}
          {% set capaciteit = states('sensor.zendure_2400_ac_totale_capaciteit') | float(8.64) %}
          {{ (totaal_geladen / capaciteit) | round(1) if totaal_geladen > 0 else 0 }}
 
      - name: "Batterij Slijtage Kosten Totaal"
        unique_id: battery_wear_cost_total
        unit_of_measurement: "€"
        icon: mdi:cash-clock
        state: >
          {% set cycli       = states('sensor.batterij_totaal_aantal_cycli') | float(0) %}
          {% set investering = states('input_number.battery_investment')        | float(2600) %}
          {# Slijtage per cyclus = investering / 6000 cycli (LiFePO4 levensduur) #}
          {% set slijtage_per_cyclus = investering / 6000 %}
          {{ (cycli * slijtage_per_cyclus) | round(2) }}
Het inputnumber:
code:
1
2
3
4
5
6
7
8
9
10
input_number:
  battery_investment:
    mode: box
    name: "Investering batterij"
    min: 0
    max: 10000
    step: 1
    initial: 2600
    unit_of_measurement: "€"
    icon: mdi:battery-charging
even omdenken, dan kan je ook je opbrengsten weergeven toch?

ONGETEST!

Alle sensoren voor ROI berekening
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
# ----------------------------------------------------------------
# Zendure ROI Calculator - Complete batterij economie
# ----------------------------------------------------------------
template:
  # ----------------------------------------------------------------
  # Cyclus-monitor - batterij slijtage (origineel van edjes)
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id: sensor.solarflow_2400_ac_aggr_charge_total
    sensor:
      - name: "Batterij Totaal Aantal Cycli"
        unique_id: battery_total_cycles
        unit_of_measurement: "cycli"
        icon: mdi:sync
        state: >
          {% set totaal_geladen = trigger.to_state.state | float(0) %}
          {% set capaciteit = states('sensor.zendure_2400_ac_totale_capaciteit') | float(8.64) %}
          {{ (totaal_geladen / capaciteit) | round(1) if totaal_geladen > 0 else 0 }}
 
      - name: "Batterij Slijtage Kosten Totaal"
        unique_id: battery_wear_cost_total
        unit_of_measurement: "EUR"
        icon: mdi:cash-clock
        state: >
          {% set cycli       = states('sensor.batterij_totaal_aantal_cycli') | float(0) %}
          {% set investering = states('input_number.battery_investment')        | float(2600) %}
          {# Slijtage per cyclus = investering / 6000 cycli (LiFePO4 levensduur) #}
          {% set slijtage_per_cyclus = investering / 6000 %}
          {{ (cycli * slijtage_per_cyclus) | round(2) }}

  # ----------------------------------------------------------------
  # Opbrengsten - energie besparingen en inkomsten
  # ----------------------------------------------------------------
  - sensor:
      - name: "Batterij Totaal Opgeladen"
        unique_id: battery_total_charged
        unit_of_measurement: "kWh"
        icon: mdi:battery-charging-100
        state: >
          {{ states('sensor.solarflow_2400_ac_aggr_charge_total') | float(0) | round(2) }}

      - name: "Batterij Totaal Ontladen"
        unique_id: battery_total_discharged
        unit_of_measurement: "kWh"
        icon: mdi:battery-discharging-100
        state: >
          {{ states('sensor.solarflow_2400_ac_aggr_discharge_total') | float(0) | round(2) }}

      - name: "Batterij Efficiëntie"
        unique_id: battery_efficiency
        unit_of_measurement: "%"
        icon: mdi:percent
        state: >
          {% set opgeladen = states('sensor.batterij_totaal_opgeladen') | float(0) %}
          {% set ontladen = states('sensor.batterij_totaal_ontladen') | float(0) %}
          {% if opgeladen > 0 %}
            {{ ((ontladen / opgeladen) * 100) | round(1) }}
          {% else %}
            0
          {% endif %}

      - name: "Batterij Besparing Laadtarief"
        unique_id: battery_savings_low_tariff
        unit_of_measurement: "EUR"
        icon: mdi:cash-plus
        state: >
          {% set ontladen = states('sensor.batterij_totaal_ontladen') | float(0) %}
          {% set laad_tarief = states('input_number.electricity_price_low') | float(0.25) %}
          {% set piek_tarief = states('input_number.electricity_price_peak') | float(0.45) %}
          {% set besparing_per_kwh = piek_tarief - laad_tarief %}
          {{ (ontladen * besparing_per_kwh) | round(2) }}

      - name: "Batterij Zonnestroom Besparing"
        unique_id: battery_solar_savings
        unit_of_measurement: "EUR"
        icon: mdi:weather-sunny
        state: >
          {% set solar_opgeladen = states('sensor.zendure_solar_charge_total') | float(0) %}
          {% set feed_in_tarief = states('input_number.solar_feed_in_price') | float(0.09) %}
          {% set piek_tarief = states('input_number.electricity_price_peak') | float(0.45) %}
          {% set besparing_per_kwh = piek_tarief - feed_in_tarief %}
          {{ (solar_opgeladen * besparing_per_kwh) | round(2) }}

  # ----------------------------------------------------------------
  # ROI Berekeningen
  # ----------------------------------------------------------------
  - sensor:
      - name: "Batterij Totale Besparingen"
        unique_id: battery_total_savings
        unit_of_measurement: "EUR"
        icon: mdi:cash-multiple
        state: >
          {% set laad_tarief_besparing = states('sensor.batterij_besparing_laadtarief') | float(0) %}
          {% set solar_besparing = states('sensor.batterij_zonnestroom_besparing') | float(0) %}
          {{ (laad_tarief_besparing + solar_besparing) | round(2) }}

      - name: "Batterij Netto ROI"
        unique_id: battery_net_roi
        unit_of_measurement: "EUR"
        icon: mdi:trending-up
        state: >
          {% set totale_besparingen = states('sensor.batterij_totale_besparingen') | float(0) %}
          {% set slijtage_kosten = states('sensor.batterij_slijtage_kosten_totaal') | float(0) %}
          {{ (totale_besparingen - slijtage_kosten) | round(2) }}

      - name: "Batterij ROI Percentage"
        unique_id: battery_roi_percentage
        unit_of_measurement: "%"
        icon: mdi:percent
        state: >
          {% set netto_roi = states('sensor.batterij_netto_roi') | float(0) %}
          {% set investering = states('input_number.battery_investment') | float(2600) %}
          {% if investering > 0 %}
            {{ ((netto_roi / investering) * 100) | round(1) }}
          {% else %}
            0
          {% endif %}

      - name: "Batterij Terugverdientijd"
        unique_id: battery_payback_period
        unit_of_measurement: "jaar"
        icon: mdi:calendar-clock
        state: >
          {% set netto_roi = states('sensor.batterij_netto_roi') | float(0) %}
          {% set jaarlijkse_besparing = states('sensor.batterij_jaarlijkse_besparing') | float(0) %}
          {% if jaarlijkse_besparing > 0 %}
            {{ ((2600 - netto_roi) / jaarlijkse_besparing) | round(1) }}
          {% else %}
            999
          {% endif %}

      - name: "Batterij Jaarlijkse Besparing"
        unique_id: battery_annual_savings
        unit_of_measurement: "EUR/jaar"
        icon: mdi:calendar-today
        state: >
          {% set totale_besparingen = states('sensor.batterij_totale_besparingen') | float(0) %}
          {% set slijtage_kosten = states('sensor.batterij_slijtage_kosten_totaal') | float(0) %}
          {% set dagen_actief = (now().timestamp() - states('input_datetime.battery_install_date').timestamp()) / 86400 %}
          {% if dagen_actief > 0 %}
            {{ (((totale_besparingen - slijtage_kosten) / dagen_actief) * 365) | round(0) }}
          {% else %}
            0
          {% endif %}

  # ----------------------------------------------------------------
  - sensor:
      - name: "Batterij Resterende Levensduur"
        unique_id: battery_remaining_life
        unit_of_measurement: "jaar"
        icon: mdi:heart-pulse
        state: >
          {% set cycli = states('sensor.batterij_totaal_aantal_cycli') | float(0) %}
          {% set resterende_cycli = (6000 - cycli) %}
          {% set cycli_per_jaar = states('sensor.batterij_cycli_per_jaar') | float(365) %}
          {% if cycli_per_jaar > 0 %}
            {{ (resterende_cycli / cycli_per_jaar) | round(1) }}
          {% else %}
            20
          {% endif %}

      - name: "Batterij Cycli per Jaar"
        unique_id: battery_cycles_per_year
        unit_of_measurement: "cycli/jaar"
        icon: mdi:calendar-sync
        state: >
          {% set cycli = states('sensor.batterij_totaal_aantal_cycli') | float(0) %}
          {% set dagen_actief = (now().timestamp() - states('input_datetime.battery_install_date').timestamp()) / 86400 %}
          {% if dagen_actief > 0 %}
            {{ ((cycli / dagen_actief) * 365) | round(0) }}
          {% else %}
            0
          {% endif %}
Input helpers voor tarieven en investering
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
# ----------------------------------------------------------------
# Zendure ROI Calculator - Input helpers
# ----------------------------------------------------------------
input_number:
  battery_investment:
    mode: box
    name: "Investering Batterij"
    min: 0
    max: 15000
    step: 50
    initial: 2600
    unit_of_measurement: "EUR"
    icon: mdi:cash

  electricity_price_low:
    mode: box
    name: "Stroomtarief Laag"
    min: 0
    max: 1
    step: 0.01
    initial: 0.25
    unit_of_measurement: "EUR/kWh"
    icon: mdi:currency-eur

  electricity_price_peak:
    mode: box
    name: "Stroomtarief Piek"
    min: 0
    max: 1
    step: 0.01
    initial: 0.45
    unit_of_measurement: "EUR/kWh"
    icon: mdi:currency-eur

  solar_feed_in_price:
    mode: box
    name: "Zonnestroom Teruglever Tarief"
    min: 0
    max: 1
    step: 0.01
    initial: 0.09
    unit_of_measurement: "EUR/kWh"
    icon: mdi:solar-power

input_datetime:
  battery_install_date:
    name: "Batterij Installatie Datum"
    has_time: true
    has_date: true
    icon: mdi:calendar-plus
Dashboard met alle metrics
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
# ----------------------------------------------------------------
# Zendure ROI Dashboard - Complete economie overzicht
# ----------------------------------------------------------------
type: grid
square: false
columns: 2
cards:
  # ----------------------------------------------------------------
  # Header - Investering en ROI
  # ----------------------------------------------------------------
  - type: entities
    title: "Zendure Batterij ROI"
    show_header_toggle: false
    entities:
      - entity: input_number.battery_investment
        name: "Investering"
      - entity: sensor.batterij_netto_roi
        name: "Netto ROI"
      - entity: sensor.batterij_roi_percentage
        name: "ROI %"
      - entity: sensor.batterij_terugverdientijd
        name: "Terugverdientijd"
      - entity: sensor.batterij_jaarlijkse_besparing
        name: "Jaarlijkse Besparing"

  # ----------------------------------------------------------------
  # Cycli en Slijtage
  # ----------------------------------------------------------------
  - type: entities
    title: "Batterij Gebruik"
    show_header_toggle: false
    entities:
      - entity: sensor.batterij_totaal_aantal_cycli
        name: "Totale Cycli"
      - entity: sensor.batterij_slijtage_kosten_totaal
        name: "Slijtage Kosten"
      - entity: sensor.batterij_resterende_levensduur
        name: "Resterende Levensduur"
      - entity: sensor.batterij_cycli_per_jaar
        name: "Cycli per Jaar"
      - entity: sensor.batterij_efficiëntie
        name: "Efficiëntie"

  # ----------------------------------------------------------------
  # Energie en Opbrengsten
  # ----------------------------------------------------------------
  - type: entities
    title: "Energie & Opbrengsten"
    show_header_toggle: false
    entities:
      - entity: sensor.batterij_totaal_opgeladen
        name: "Totaal Opgeladen"
      - entity: sensor.batterij_totaal_ontladen
        name: "Totaal Ontladen"
      - entity: sensor.batterij_besparing_laadtarief
        name: "Laadtarief Besparing"
      - entity: sensor.batterij_zonnestroom_besparing
        name: "Zonnestroom Besparing"
      - entity: sensor.batterij_totale_besparingen
        name: "Totale Besparingen"

  # ----------------------------------------------------------------
  # Tarief Instellingen
  # ----------------------------------------------------------------
  - type: entities
    title: "Tarief Instellingen"
    show_header_toggle: false
    entities:
      - entity: input_number.electricity_price_low
        name: "Laag Tarief"
      - entity: input_number.electricity_price_peak
        name: "Piek Tarief"
      - entity: input_number.solar_feed_in_price
        name: "Teruglever Tarief"
      - entity: input_datetime.battery_install_date
        name: "Installatie Datum"

  # ----------------------------------------------------------------
  # ROI Grafiek
  # ----------------------------------------------------------------
  - type: history-graph
    title: "ROI Ontwikkeling"
    hours_to_show: 168  # 1 week
    refresh_interval: 60
    entities:
      - entity: sensor.batterij_netto_roi
        name: "Netto ROI"
      - entity: sensor.batterij_totale_besparingen
        name: "Totale Besparingen"
      - entity: sensor.batterij_slijtage_kosten_totaal
        name: "Slijtage Kosten"

  # ----------------------------------------------------------------
  # Energie Grafiek
  # ----------------------------------------------------------------
  - type: history-graph
    title: "Energie Stromen"
    hours_to_show: 168  # 1 week
    refresh_interval: 60
    entities:
      - entity: sensor.batterij_totaal_opgeladen
        name: "Opgeladen"
      - entity: sensor.batterij_totaal_ontladen
        name: "Ontladen"
🔢 Nieuwe Sensoren:
Economie:
  • sensor.batterij_netto_roi - Netto winst/verlies
  • sensor.batterij_roi_percentage - ROI in %
  • sensor.batterij_terugverdientijd - Jaar om terug te verdienen
  • sensor.batterij_jaarlijkse_besparing - Besparing per jaar
Energie:
  • sensor.batterij_totaal_opgeladen/ontladen - kWh totals
  • sensor.batterij_efficiëntie - Round-trip efficiëntie
  • sensor.batterij_besparing_laadtarief - Besparing door piek/laag tarief
  • sensor.batterij_zonnestroom_besparing - Besparing door zonnestroom
Levensduur:
  • sensor.batterij_resterende_levensduur - Jaar resterend
  • sensor.batterij_cycli_per_jaar - Gebruiksintensiteit
📊 Dashboard Features:
  • ROI Overzicht - Investering, netto ROI, percentage, terugverdientijd
  • Batterij Gebruik - Cycli, slijtage, efficiëntie, levensduur
  • Energie & Opbrengsten - Opladen/ontladen, besparingen
  • Tarief Instellingen - Aanpasbare tarieven
  • Grafieken - ROI en energie trends
🛠️ Installatie:
Voeg templates toe aan configuration.yaml:
code:
1
template: !include zendure_roi_templates.yaml
Voeg inputs toe aan configuration.yaml:
code:
1
2
input_number: !include zendure_roi_inputs.yaml
input_datetime: !include zendure_roi_inputs.yaml
Importeer dashboard via Settings → Dashboards
Configureer tarieven en installatie datum

💡 Voorbeeld Berekening:
  • Investering: €2600
  • Jaarlijkse besparing: €400
  • Slijtage: €65/jaar
  • Netto besparing: €335/jaar
  • Terugverdientijd: 7.8 jaar
  • ROI na 10 jaar: €750 winst
Deze setup geeft je compleet inzicht in de economie van je Zendure batterij!

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


  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-05 16:07
Gramser schreef op zaterdag 18 april 2026 @ 15:23:
Mag ik hier een vraag stellen over Zendure in HA, icm EVCC? Ik moet voor de thuisbatterij het IP-adres/de hostname opgeven, maar de @gast777 maakt meerdere zendures mogelijk. Wat vul ik daar in? Ik heb nu "localhost:1880" ingevuld maar daarmee leest EVCC de batetrijcapaciteit niet... maak ik een denkfout?

Ik krijg deze foutmelding:
battery 1 soc: unexpected status: 404 (Not Found) GET http://localhost:1880/properties/report

en

battery 1 power: unexpected status: 404 (Not Found) GET http://localhost:1880/properties/report
volgens mij moet je in EVCC iedere batterij apart ingeven
2 stuks dus bij jou

in het EVCC draadje kunnen ze je daar beter bij helpen dan hier....

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


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
hemertje schreef op zaterdag 18 april 2026 @ 16:55:
[...]


volgens mij moet je in EVCC iedere batterij apart ingeven
2 stuks dus bij jou

in het EVCC draadje kunnen ze je daar beter bij helpen dan hier....
Ik denk dat je gelijk hebt, en ik denk dat ik sowieso een denkfout maak. Denk dat ik het IP adres van mijn HA instantie moet hebben. Maar ik ga me even melden in het EVCC topic.

  • RemmyB83
  • Registratie: Augustus 2018
  • Laatst online: 19:35
ctrl-tab schreef op zaterdag 18 april 2026 @ 00:46:
[...]

Top ben benieuwd naar je ervaring.
Mijn ervaring (DSMR4)is dat dit nog net iets beter werkt, dan de 5 of 10sec interval. Hij kan hem tot nu toe goed op 0 houden(als het gevraagde vermogen binnen zijn bereik zit).
🤗👍

🇳🇱Pijnacker Oost/West


  • ralphkeb
  • Registratie: December 2010
  • Laatst online: 29-05 21:12
[/quote]Voor nieuwe HA gebruikers die een makkelijk manier willen voor dynamische prijzen en Gielz integratie via packages methode hebben geinstalleerd:

1. Installeer nordpool HACS integratie.
2. maak een bestand aan in de packages directory, bv. nordpool.yaml
3. plaats de volgende code erin:
4. Herstart Home Assistant

er worden 3 Nummer input gemaakt voor
btw_percentage
opslag_energieleverancier
energiebelasting

en 2 nordpool prijzen sensors
- sensor.nordpool_kwh_nl_eur_5_09_0
Dit is de sensor voor de totaal prijs ( vul de 3 input variabele in met je eigen dynamische leverancier kosten)

- sensor.nordpool_kwh_nl_eur_5_10_0
Dit is de sensor voor de kale marktprijs
Eenmaal aangemaakt dan wordt de totaal prijs pas zichtbaar na de komende kwartier na je invoer van de input variabelen.
[/quote]

Ik heb alles zo geinstalleerd en werkend, maar toch kloppen mijn prijzen niet ten opzichte van de prijzen in de Zonneplan app, ja ik heb voor zover ik weet de Zonneplan prijzen gepakt:
btw_percentage : 0,21
opslag_energieleverancier : 0,1108
energiebelasting : 0,022

Verschil is dan Zonneplan: 24,24 cent, Nordpool 24,56 cent
Zonneplan werkt nog met uurprijzen, Nordpool met kwartierprijzen, kan hier het verschil inzitten?

  • remcoXP
  • Registratie: Februari 2002
  • Laatst online: 10:19
Zeer interresant hemeltjer en edjes. Uiteindelijk doen we het hier ook voor ;)
@gielz ben jij bereid beide in je dashboard / package te verwerken? dat zou wel heel gaaf zijn,

Gadget-freakz.com. Feedback en tips zijn welkom.


  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 18:39

Hippe Lip

Er valt altijd wat te leren

hemertje schreef op zaterdag 18 april 2026 @ 09:00:
In dezelfde experiabox kan je de ip-adressen vastzetten of wijzigen en vastzetten zodat ze na een herstart weer hetzelfde ip-adres krijgen als voorheen, dit regelt de zogenaamde DNS server van je Experiabox.

Kijk eens bij ‘Leases’ of ‘MAC\ IP Routing’

Zo kan je zelf een overzicht maken en je up-adressen in huis logisch beheren
En weet je toevallig of dit met de Fritzbox ook kan?
Ik zou mijn 2 Zundures erg graag een zelfgekozen en dus statisch IP-adres geven, maar ben er nog niet achter hoe ik dat zou moeten doen…

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • DrNickB
  • Registratie: Juli 2017
  • Laatst online: 29-05 20:14
Hippe Lip schreef op zaterdag 18 april 2026 @ 17:35:
[...]

En weet je toevallig of dit met de Fritzbox ook kan?
Ik zou mijn 2 Zundures erg graag een zelfgekozen en dus statisch IP-adres geven, maar ben er nog niet achter hoe ik dat zou moeten doen…
Google: https://ekiwi-blog.de/en/...p-address-for-the-device/
Maar niet 123 relevant voor dit toppic verder.

Mini Server - PiHole, Backups, Nextcloud | NUC - HomeAssistant (docker), Zigbee2Mqtt (docker), ZwaveJSUI (docker), mqtt, P1-USB | Zendure SF800Pro | 1350Wp PV


  • edjes
  • Registratie: December 2025
  • Laatst online: 26-05 20:36
hemertje schreef op zaterdag 18 april 2026 @ 16:54:
[...]

even omdenken, dan kan je ook je opbrengsten weergeven toch?
Ik heb zes kantjes en maanden werk in een ROI. 8)

Hier, kan je spelen.
Uitgangspunt: zonnepanelen (solaredge), tibber
Het is erg complex, maar zeer volledig.
Plaats roi.yaml in packages
ROI.yaml: https://www.dropbox.com/s...hfemrk8dxxsb35xuyksi&dl=0

of hier is de hele code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
## ROI 1.02 ##
################################
##        INPUT NUMBER        ##
################################
input_number:
  battery_efficiency:
    mode: box
    name: "Batterij efficiëntie"
    min: 50
    max: 100
    step: 1
    initial: 90
    unit_of_measurement: "%"
    icon: mdi:battery-heart-outline

  sell_price_fixed:
    mode: box
    name: "Verkoopprijs vast (EUR/kWh)"
    min: 0.0000
    max: 0.5000
    step: 0.0001
    initial: 0.0248
    unit_of_measurement: "€/kWh"
    icon: mdi:currency-eur

  battery_investment:
    mode: box
    name: "Investering batterij"
    min: 0
    max: 10000
    step: 1
    initial: 1500
    unit_of_measurement: "€"
    icon: mdi:battery-charging

################################
##       UTILITY METER        ##
################################
# Bronnen van waarheid:
#   grid import/export → Tibber last_meter (cumulatief, reset nooit)
#   solar productie    → SolarEdge energy_today (dagelijks, reset ~02:08)
#   batterij           → Zendure AC import/export
#   kosten/opbrengst   → Tibber accumulated (dagelijks, reset middernacht)
utility_meter:
  # --- 15-minuut meters ---
  grid_import_15m:
    source: sensor.tibber_pulse_edwin_last_meter_consumption
    cycle: quarter-hourly

  grid_export_15m:
    source: sensor.tibber_pulse_edwin_last_meter_production
    cycle: quarter-hourly

  battery_charge_15m:
    source: sensor.zendure_2400_ac_energie_import
    cycle: quarter-hourly

  battery_discharge_15m:
    source: sensor.zendure_2400_ac_energie_export
    cycle: quarter-hourly

  solar_production_15m:
    source: sensor.solar_production_interval
    cycle: quarter-hourly

  # --- Dagelijkse solar productie ---
  solar_production_daily:
    source: sensor.sensor_solaredge_energy_today_kwh
    cycle: daily

  # --- Batterij besparing (informatief) ---
  battery_profit_daily:
    source: sensor.battery_profit_15m
    cycle: daily

  battery_profit_monthly:
    source: sensor.battery_profit_15m
    cycle: monthly

  battery_profit_yearly:
    source: sensor.battery_profit_15m
    cycle: yearly

  # --- Arbitrage winst (informatief) ---
  battery_arbitrage_daily:
    source: sensor.battery_arbitrage_profit_15m
    cycle: daily

  battery_arbitrage_monthly:
    source: sensor.battery_arbitrage_profit_15m
    cycle: monthly

  battery_arbitrage_yearly:
    source: sensor.battery_arbitrage_profit_15m
    cycle: yearly

  # --- Solar export opbrengst (informatief) ---
  roi_solar_export_profit_daily:
    source: sensor.solar_export_profit_15m
    cycle: daily

  roi_solar_export_profit_monthly:
    source: sensor.solar_export_profit_15m
    cycle: monthly

  roi_solar_export_profit_yearly:
    source: sensor.solar_export_profit_15m
    cycle: yearly

  # --- Tibber kosten/opbrengst — bron van waarheid ---
  # accumulated reset dagelijks — yearly meter telt deltas op
  tibber_reward_monthly:
    source: sensor.tibber_reward_daily
    cycle: monthly

  tibber_reward_yearly:
    source: sensor.tibber_reward_daily
    cycle: yearly

  tibber_cost_monthly:
    source: sensor.tibber_cost_daily
    cycle: monthly

  tibber_cost_yearly:
    source: sensor.tibber_cost_daily
    cycle: yearly

  # --- System totaal yearly ---
  # Hernoemd om conflict met oude database entries te vermijden
  roi_system_profit_yearly:
    source: sensor.system_total_profit_daily
    cycle: yearly

  roi_system_profit_monthly:
    source: sensor.system_total_profit_daily
    cycle: monthly

  # --- Solar winst (direct verbruik + export, exclusief batterijlading) ---
  solar_profit_daily:
    source: sensor.solar_profit_15m
    cycle: daily

  solar_profit_yearly:
    source: sensor.solar_profit_15m
    cycle: yearly

################################
##         TEMPLATE           ##
################################
template:
  # ----------------------------------------------------------------
  # Solar interval: delta per update van SolarEdge dagelijkse teller
  # Reset om ~02:08 → negatieve delta = 0
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id: sensor.sensor_solaredge_energy_today_kwh
    sensor:
      - name: "Solar Production Interval"
        unique_id: solar_production_interval
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        state: >
          {% set current  = trigger.to_state.state  | float(0) %}
          {% set previous = trigger.from_state.state | float(0) if trigger.from_state else 0 %}
          {% set delta = current - previous %}
          {{ (delta if delta >= 0 else 0) | round(3) }}

  # ----------------------------------------------------------------
  # Tibber dagelijkse kosten en opbrengst — bron van waarheid
  # Getriggerd op Tibber accumulated sensoren
  # Reset dagelijks om middernacht door Tibber zelf
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id:
          - sensor.tibber_pulse_edwin_accumulated_cost
          - sensor.tibber_pulse_edwin_accumulated_reward
    sensor:
      - name: "Tibber Cost Daily"
        unique_id: tibber_cost_daily_sensor
        unit_of_measurement: "€"
        icon: mdi:cash-minus
        state: >
          {{ states('sensor.tibber_pulse_edwin_accumulated_cost') | float(0) | round(4) }}

      - name: "Tibber Reward Daily"
        unique_id: tibber_reward_daily_sensor
        unit_of_measurement: "€"
        icon: mdi:cash-plus
        state: >
          {{ states('sensor.tibber_pulse_edwin_accumulated_reward') | float(0) | round(4) }}

      - name: "Tibber Net Daily"
        unique_id: tibber_net_daily
        unit_of_measurement: "€"
        icon: mdi:cash-sync
        state: >
          {# Netto stroomkosten vandaag: wat je betaald hebt min wat je ontvangen hebt #}
          {% set cost   = states('sensor.tibber_pulse_edwin_accumulated_cost')   | float(0) %}
          {% set reward = states('sensor.tibber_pulse_edwin_accumulated_reward') | float(0) %}
          {{ (cost - reward) | round(4) }}

  # ----------------------------------------------------------------
  # Prijssensoren — inkoop én verkoop apart
  # Trigger elke 5 minuten én bij wijziging van bronentiteit
  # ----------------------------------------------------------------
  - trigger:
      - platform: time_pattern
        minutes: "/5"
      - platform: state
        entity_id:
          - sensor.edwin_electricity_price
          - input_number.sell_price_fixed
    sensor:
      - name: "Electricity Buy Price EUR"
        unique_id: electricity_buy_price_eur
        unit_of_measurement: "€/kWh"
        icon: mdi:lightning-bolt
        state: >
          {# Handrem: als Tibber wegvalt bewaar de laatste bekende prijs #}
          {% set prijs = states('sensor.edwin_electricity_price') | float(-1) %}
          {% if prijs < 0 %}
            {{ states('sensor.electricity_buy_price_eur') | float(0) }}
          {% else %}
            {{ prijs | round(4) }}
          {% endif %}

      - name: "Electricity Sell Price EUR"
        unique_id: electricity_sell_price_eur
        unit_of_measurement: "€/kWh"
        icon: mdi:lightning-bolt-outline
        state: >
          {# Handrem: als Tibber wegvalt bewaar de laatste bekende prijs #}
          {# Na 2026: pas input_number.sell_price_fixed aan #}
          {% set buy    = states('sensor.edwin_electricity_price') | float(-1) %}
          {% set aftrek = states('input_number.sell_price_fixed')  | float(0.0248) %}
          {% if buy < 0 %}
            {{ states('sensor.electricity_sell_price_eur') | float(0) }}
          {% else %}
            {{ [buy - aftrek, 0] | max | round(4) }}
          {% endif %}

  # ----------------------------------------------------------------
  # ROI sensoren — getriggerd op 15m meters én prijswijzigingen
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id:
          - sensor.grid_import_15m
          - sensor.grid_export_15m
          - sensor.solar_production_15m
          - sensor.battery_charge_15m
          - sensor.battery_discharge_15m
          - sensor.electricity_buy_price_eur
          - sensor.electricity_sell_price_eur
          - input_number.battery_efficiency
    sensor:
      # --- Waarde zonnepanelen direct verbruik + export (exclusief batterijlading) ---
      #
      # solar_to_grid = echte solar export (zonder batterij arbitrage)
      # direct_home_auto = solar minus export minus batterijlading
      # Batterijlading telt niet mee: die kun je ook in de winter met netstroom vullen
      - name: "Solar Profit 15m"
        unique_id: solar_profit_15m
        unit_of_measurement: "€"
        icon: mdi:solar-power
        state: >
          {# Puur de besparing van zon → huis/auto direct verbruik #}
          {# Export naar net zit al bij Tibber reward — geen dubbeltelling #}
          {# Batterijlading uitgefilterd — die stroom zetten we later in #}
          {% set solar    = states('sensor.solar_production_15m') | float(0) %}
          {% set grid_exp = states('sensor.grid_export_15m')      | float(0) %}
          {% set bat_chg  = states('sensor.battery_charge_15m')   | float(0) %}
          {% set bat_dis  = states('sensor.battery_discharge_15m')| float(0) %}
          {% set buy      = states('sensor.electricity_buy_price_eur') | float(0) %}
          {% set bat_to_grid      = [bat_dis, grid_exp] | min %}
          {% set solar_to_grid    = [grid_exp - bat_to_grid, 0] | max %}
          {% set direct_home_auto = [solar - solar_to_grid - bat_chg, 0] | max %}
          {{ (direct_home_auto * buy) | round(5) }}

      # --- Werkelijke kosten MET batterij ---
      #
      # + grid_import * inkoopprijs
      # - grid_export * verkoopprijs
      # + laadverlies als gewogen gemiddelde van solar/net aandeel
      - name: "Cost with battery"
        unique_id: cost_with_battery
        unit_of_measurement: "€"
        icon: mdi:battery-charging
        state: >
          {% set import_kwh = states('sensor.grid_import_15m')            | float(-1) %}
          {% set export_kwh = states('sensor.grid_export_15m')            | float(-1) %}
          {% set bat_chg    = states('sensor.battery_charge_15m')         | float(-1) %}
          {% set buy        = states('sensor.electricity_buy_price_eur')  | float(-1) %}
          {% set sell       = states('sensor.electricity_sell_price_eur') | float(-1) %}
          {% set eff        = states('input_number.battery_efficiency')   | float(90) / 100 %}

          {% if import_kwh < 0 or export_kwh < 0 or bat_chg < 0 or buy < 0 or sell < 0 %}
            {{ states('sensor.cost_with_battery') | float(0) }}
          {% else %}
            {% set grid_cost    = import_kwh * buy %}
            {% set grid_revenue = export_kwh * sell %}
            {% set solar_15m   = states('sensor.solar_production_15m') | float(0) %}
            {% set total_in    = import_kwh + solar_15m %}
            {% set solar_ratio = (solar_15m / total_in) if total_in > 0 else 0 %}
            {% set grid_ratio  = (import_kwh / total_in) if total_in > 0 else 1 %}
            {% set loss_price  = solar_ratio * sell + grid_ratio * buy %}
            {% set loss_cost   = bat_chg * (1 - eff) * loss_price %}
            {{ (grid_cost - grid_revenue + loss_cost) | round(5) }}
          {% endif %}

      # --- Virtuele kosten ZONDER batterij ---
      #
      # Werkelijk huisverbruik = solar + grid_imp + bat_dis - grid_exp - bat_chg
      # Zonder batterij dekt solar dit verbruik direct:
      #   virtual_import  = max(load - solar, 0) → inkoopprijs
      #   virtual_export  = max(solar - load, 0) → verkoopprijs
      - name: "Cost without battery"
        unique_id: cost_without_battery
        unit_of_measurement: "€"
        icon: mdi:home-lightning-bolt
        state: >
          {% set solar    = states('sensor.solar_production_15m')        | float(-1) %}
          {% set grid_imp = states('sensor.grid_import_15m')             | float(-1) %}
          {% set grid_exp = states('sensor.grid_export_15m')             | float(-1) %}
          {% set bat_chg  = states('sensor.battery_charge_15m')          | float(-1) %}
          {% set bat_dis  = states('sensor.battery_discharge_15m')       | float(-1) %}
          {% set buy      = states('sensor.electricity_buy_price_eur')   | float(-1) %}
          {% set sell     = states('sensor.electricity_sell_price_eur')  | float(-1) %}

          {% if solar < 0 or grid_imp < 0 or grid_exp < 0 or bat_chg < 0 or bat_dis < 0 or buy < 0 or sell < 0 %}
            {{ states('sensor.cost_without_battery') | float(0) }}
          {% else %}
            {% set real_load      = [solar + grid_imp + bat_dis - grid_exp - bat_chg, 0] | max %}
            {% set virtual_import = [real_load - solar, 0] | max %}
            {% set virtual_export = [solar - real_load, 0] | max %}
            {{ ((virtual_import * buy) - (virtual_export * sell)) | round(5) }}
          {% endif %}

      # --- Besparing per 15 minuten dankzij de batterij ---
      #
      # Positief = batterij bespaart geld
      # Negatief = batterij kost geld (bv. laden uit net op hoge prijs)
      # FIX: als batterij niets doet én vol is → 0 (voorkomt SolarEdge buffering artefact)
      - name: "Battery Profit 15m"
        unique_id: battery_profit_15m
        unit_of_measurement: "€"
        icon: mdi:cash-plus
        state: >
          {% set without = states('sensor.cost_without_battery') | float(-999) %}
          {% set with_b  = states('sensor.cost_with_battery')    | float(-999) %}
          {% set bat_chg = states('sensor.battery_charge_15m')   | float(0) %}
          {% set bat_dis = states('sensor.battery_discharge_15m') | float(0) %}
          {% set soc     = states('sensor.solarflow_2400_ac_electric_level') | float(0) %}
          {% if bat_chg <= 0.002 and bat_dis <= 0.002 and soc >= 98.5 %}
            0
          {% elif without == -999 or with_b == -999 %}
            {{ states('sensor.battery_profit_15m') | float(0) }}
          {% else %}
            {{ (without - with_b) | round(5) }}
          {% endif %}

  # ----------------------------------------------------------------
  # Solar export opbrengst per 15 minuten (informatief)
  #
  # solar_to_grid = max(grid_exp - bat_to_grid, 0)
  # bat_to_grid   = min(bat_dis, grid_exp)
  # Geen overlap met arbitrage
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id:
          - sensor.grid_export_15m
          - sensor.battery_discharge_15m
          - sensor.electricity_sell_price_eur
    sensor:
      - name: "Solar Export Profit 15m"
        unique_id: solar_export_profit_15m
        unit_of_measurement: "€"
        icon: mdi:transmission-tower-export
        state: >
          {% set grid_exp = states('sensor.grid_export_15m')            | float(-1) %}
          {% set bat_dis  = states('sensor.battery_discharge_15m')      | float(-1) %}
          {% set sell     = states('sensor.electricity_sell_price_eur') | float(-1) %}
          {% if grid_exp < 0 or bat_dis < 0 or sell < 0 %}
            {{ states('sensor.solar_export_profit_15m') | float(0) }}
          {% else %}
            {% set bat_to_grid   = [bat_dis, grid_exp] | min %}
            {% set solar_to_grid = [grid_exp - bat_to_grid, 0] | max %}
            {{ (solar_to_grid * sell) | round(5) }}
          {% endif %}

  # ----------------------------------------------------------------
  # Arbitrage-winst per 15 minuten (informatief)
  #
  # bat_to_grid  = min(bat_dis, grid_exp)
  # cost_basis   = buy als geladen vanuit net, 0 als geladen vanuit solar
  # winst        = omzet - kostenbasis (gecorrigeerd voor efficiëntie)
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id:
          - sensor.battery_discharge_15m
          - sensor.grid_export_15m
          - sensor.grid_import_15m
          - sensor.electricity_buy_price_eur
          - sensor.electricity_sell_price_eur
          - input_number.battery_efficiency
    sensor:
      - name: "Battery Arbitrage Profit 15m"
        unique_id: battery_arbitrage_profit_15m
        unit_of_measurement: "€"
        icon: mdi:lightning-bolt-circle
        state: >
          {% set bat_dis  = states('sensor.battery_discharge_15m')      | float(-1) %}
          {% set grid_exp = states('sensor.grid_export_15m')            | float(-1) %}
          {% set grid_imp = states('sensor.grid_import_15m')            | float(-1) %}
          {% set buy      = states('sensor.electricity_buy_price_eur')  | float(-1) %}
          {% set sell     = states('sensor.electricity_sell_price_eur') | float(-1) %}
          {% set eff      = states('input_number.battery_efficiency')   | float(90) / 100 %}
          {% if bat_dis < 0 or grid_exp < 0 or grid_imp < 0 or buy < 0 or sell < 0 %}
            {{ states('sensor.battery_arbitrage_profit_15m') | float(0) }}
          {% else %}
            {% set bat_to_grid = [bat_dis, grid_exp] | min %}
            {% set cost_basis  = buy if grid_imp > 0 else 0 %}
            {% set revenue     = bat_to_grid * sell %}
            {% set cost        = (bat_to_grid / eff) * cost_basis %}
            {{ [revenue - cost, 0] | max | round(5) }}
          {% endif %}

  # ----------------------------------------------------------------
  # ROI totaaloverzicht
  # Direct van bronnen — geen race condition
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id:
          - sensor.tibber_reward_daily
          - sensor.tibber_cost_daily
          - sensor.battery_profit_daily
          - sensor.battery_profit_yearly
          - sensor.battery_arbitrage_daily
          - sensor.battery_arbitrage_yearly
          - sensor.solar_profit_daily
          - input_number.battery_investment
    sensor:
      - name: "Battery ROI"
        unique_id: battery_roi
        unit_of_measurement: "%"
        icon: mdi:chart-line
        state: >
          {# ROI op battery_profit_yearly alleen #}
          {# Arbitrage zit er al in via cost_with_battery (zie FAQ) #}
          {% set investering = states('input_number.battery_investment') | float(0) %}
          {% set winst       = states('sensor.battery_profit_yearly')    | float(0) %}
          {% if investering == 0 %}
            0
          {% else %}
            {{ ((winst / investering) * 100) | round(2) }}
          {% endif %}

      - name: "System Total Profit Daily"
        unique_id: system_total_profit_daily
        unit_of_measurement: "€"
        icon: mdi:solar-power-variant
        state: >
          {# Drie unieke winststromen zonder overlap: #}
          {# 1. tibber_reward  = solar export + arbitrage opbrengst (Tibber, exact) #}
          {# 2. battery_profit = batterij besparing zelfverbruik (- arbitrage correctie) #}
          {# 3. solar_profit   = zon direct naar huis/auto besparing #}
          {% set reward    = states('sensor.tibber_reward_daily')     | float(0) %}
          {% set besparing = states('sensor.battery_profit_daily')    | float(0) %}
          {% set arbitrage = states('sensor.battery_arbitrage_daily') | float(0) %}
          {% set solar_win = states('sensor.solar_profit_daily')      | float(0) %}
          {{ (reward + besparing - arbitrage + solar_win) | round(4) }}

      - name: "Battery Payback Years"
        unique_id: battery_payback_years
        unit_of_measurement: "jaar"
        icon: mdi:calendar-clock
        state: >
          {# Terugverdientijd op battery_profit_yearly — arbitrage zit er al in #}
          {% set investering = states('input_number.battery_investment') | float(0) %}
          {% set winst_jaar  = states('sensor.battery_profit_yearly')   | float(0) %}
          {% if winst_jaar <= 0 or investering <= 0 %}
            0
          {% else %}
            {% set jaren = (investering / winst_jaar) | round(1) %}
            {{ [jaren, 99] | min }}
          {% endif %}

      - name: "Battery Payback Years Extrapolated"
        unique_id: battery_payback_years_extrapolated
        unit_of_measurement: "jaar"
        icon: mdi:calendar-clock-outline
        state: >
          {# Extrapolatie op basis van maandwinst × 12 #}
          {% set investering = states('input_number.battery_investment') | float(0) %}
          {% set maand_winst = states('sensor.battery_profit_monthly')   | float(0) %}
          {% set jaar_extrap = maand_winst * 12 %}
          {% if jaar_extrap <= 0 or investering <= 0 %}
            0
          {% else %}
            {% set jaren = (investering / jaar_extrap) | round(1) %}
            {{ [jaren, 99] | min }}
          {% endif %}

  # ----------------------------------------------------------------
  # Cyclus-monitor — batterij slijtage
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id: sensor.solarflow_2400_ac_aggr_charge_total
    sensor:
      - name: "Batterij Totaal Aantal Cycli"
        unique_id: battery_total_cycles
        unit_of_measurement: "cycli"
        icon: mdi:sync
        state: >
          {% set totaal_geladen = trigger.to_state.state | float(0) %}
          {% set capaciteit = states('sensor.zendure_2400_ac_totale_capaciteit') | float(8.64) %}
          {{ (totaal_geladen / capaciteit) | round(1) if totaal_geladen > 0 else 0 }}

      - name: "Batterij Slijtage Kosten Totaal"
        unique_id: battery_wear_cost_total
        unit_of_measurement: "€"
        icon: mdi:cash-clock
        state: >
          {% set cycli       = states('sensor.batterij_totaal_aantal_cycli') | float(0) %}
          {% set investering = states('input_number.battery_investment')        | float(2600) %}
          {# Slijtage per cyclus = investering / 6000 cycli (LiFePO4 levensduur) #}
          {% set slijtage_per_cyclus = investering / 6000 %}
          {{ (cycli * slijtage_per_cyclus) | round(2) }}
Dit is het dashboard, wel wat van mijn verwijzingen verwijderen ;-)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
title: Batterij ROI
path: batterij-roi
icon: mdi:cash-fast
type: sections
max_columns: 2
sections:
  - cards:
      - square: false
        columns: 5
        type: grid
        cards:
          - type: custom:button-card
            entity: sensor.zendure_p1_power_kw
            show_state: true
            show_icon: false
            name: Stroom
            state_display: |
              [[[
                const v = parseFloat(entity.state);
                if (isNaN(v)) return entity.state;
                if (v >= -0.1 && v <= 0.1) {
                  if (v < 0) return `v ${Math.abs(v).toFixed(2)}`;
                  if (v > 0) return `^ ${v.toFixed(2)}`;
                  return `${v.toFixed(2)}`;
                }
                if (v < -0.1) return `${Math.abs(v).toFixed(2)}`;
                return `${v.toFixed(2)} kW`;
              ]]]
            state:
              - operator: <
                value: -0.1
                styles:
                  card:
                    - color: white
                    - background-color: green
              - operator: ">"
                value: 0.1
                styles:
                  card:
                    - color: white
                    - background-color: tomato
              - operator: ">="
                value: -0.1
                styles:
                  card:
                    - color: black
                    - background-color: white
          - type: custom:button-card
            entity: sensor.p1_actueel_kw
            show_state: true
            show_icon: false
            name: Stroom
            state_display: |
              [[[
                const v = parseFloat(entity.state);
                if (isNaN(v)) return entity.state;
                if (v >= -0.1 && v <= 0.1) {
                  if (v < 0) return `v ${Math.abs(v).toFixed(2)}`;
                  if (v > 0) return `^ ${v.toFixed(2)}`;
                  return `${v.toFixed(2)}`;
                }
                if (v < -0.1) return `${Math.abs(v).toFixed(2)}`;
                return `${v.toFixed(2)} kW`;
              ]]]
            state:
              - operator: <
                value: -0.1
                styles:
                  card:
                    - color: white
                    - background-color: green
              - operator: ">"
                value: 0.1
                styles:
                  card:
                    - color: white
                    - background-color: tomato
              - operator: ">="
                value: -0.1
                styles:
                  card:
                    - color: black
                    - background-color: white
          - type: custom:button-card
            entity: sensor.solarflow_2400_ac_electric_level
            show_state: true
            show_icon: false
            name: Batterij
            triggers_update:
              - sensor.zendure_2400_ac_modus
            styles:
              card:
                - color: white
                - background-color: |
                    [[[
                      const state = states['sensor.zendure_2400_ac_modus']?.state;
                      if (state === 'Opladen') return 'green';
                      if (state === 'Ontladen') return 'tomato';
                      return 'gray';
                    ]]]
            state_display: |
              [[[
                return entity.state + ' %';
              ]]]
          - type: custom:button-card
            entity: sensor.sensor_solaredge_current_power_kwh
            show_state: true
            show_icon: false
            name: Zon
            state:
              - operator: ">"
                value: 0
                styles:
                  card:
                    - color: white
                    - background-color: green
              - operator: "="
                value: 0
                styles:
                  card:
                    - background-color: white
          - type: custom:button-card
            entity: sensor.sensor_tibberprijs
            show_state: true
            show_icon: false
            name: Prijs
            state_display: |
              [[[
                const v = parseFloat(entity.state);
                if (isNaN(v)) return entity.state;
                return `${v.toFixed(1)} C`;
              ]]]
            state:
              - operator: <
                value: 23
                styles:
                  card:
                    - color: white
                    - background-color: green
              - operator: ">"
                value: 23
                styles:
                  card:
                    - color: white
                    - background-color: tomato
          - type: custom:button-card
            entity: sensor.dynamisch_duurste_periode
            show_state: false
            show_name: false
            icon: mdi:cash-clock
            state:
              - value: Ja
                styles:
                  card:
                    - background-color: green
                    - color: white
                  icon:
                    - color: white
              - value: Nee
                styles:
                  card:
                    - background-color: var(--card-background-color)
                    - color: var(--primary-text-color)
          - show_name: false
            show_icon: true
            type: button
            entity: input_button.update_roi
            tap_action:
              action: toggle
          - type: custom:gap-card
          - show_name: true
            show_icon: true
            type: button
            tap_action:
              action: navigate
              navigation_path: /lovelace/energie
            name: Panelen
          - show_name: true
            show_icon: true
            type: button
            tap_action:
              action: navigate
              navigation_path: /lovelace/tesla
            name: Autos
      - square: false
        type: grid
        columns: 3
        cards:
          - type: gauge
            name: Vermogen
            entity: sensor.zendure_2400_ac_vermogen_aansturing
            needle: true
            min: -2400
            max: 2400
            severity:
              green: -2400
              yellow: -100
              red: 100
          - type: gauge
            name: Laad%
            entity: sensor.zendure_2400_ac_laadpercentage
            needle: true
            min: 0
            max: 100
            severity:
              green: 50
              yellow: 15
              red: 0
          - type: gauge
            entity: sensor.zendure_2400_ac_omvormer_temperatuur
            needle: true
            severity:
              green: 0
              yellow: 55
              red: 60
            name: Omvormer
      - type: entities
        entities:
          - entity: automation.zendure_zomer_winter_goedkoopst_duurst
          - entity: input_select.zendure_2400_ac_modus_selecteren
      - type: entities
        entities:
          - entity: sensor.electricity_buy_price_eur
            name: Inkoopprijs
            icon: mdi:lightning-bolt
          - entity: sensor.electricity_sell_price_eur
            name: Verkoopprijs
            icon: mdi:lightning-bolt-outline
        show_header_toggle: false
      - type: heading
        heading: Batterij
        heading_style: title
        icon: mdi:home-battery-outline
      - type: entities
        title: Besparing (zelfverbruik + arbitrage)
        entities:
          - entity: sensor.battery_profit_daily
            name: Vandaag
            icon: mdi:battery-charging
          - entity: sensor.battery_profit_monthly
            name: Deze maand
            icon: mdi:battery-charging
          - entity: sensor.battery_profit_yearly
            name: Dit jaar
            icon: mdi:battery-charging
        show_header_toggle: false
      - type: entities
        title: Arbitrage (zit al in besparing)
        entities:
          - entity: sensor.battery_arbitrage_daily
            name: Vandaag
            icon: mdi:lightning-bolt-circle
          - entity: sensor.battery_arbitrage_monthly
            name: Deze maand
            icon: mdi:lightning-bolt-circle
          - entity: sensor.battery_arbitrage_yearly
            name: Dit jaar
            icon: mdi:lightning-bolt-circle
        show_header_toggle: false
      - type: history-graph
        title: Batterij besparing (24u)
        hours_to_show: 24
        entities:
          - entity: sensor.battery_profit_daily
      - type: custom:apexcharts-card
        apex_config:
          chart:
            height: 150px
        header:
          show: true
          title: Batterij besparing — 30 dagen
          show_states: true
          colorize_states: true
        graph_span: 30d
        series:
          - entity: sensor.battery_profit_monthly
            name: Besparing (EUR)
            color: "#378ADD"
            show:
              in_chart: false
              in_header: true
          - entity: sensor.battery_profit_daily
            name: Besparing (EUR)
            color: "#378ADD"
            stroke_width: 0
            type: column
            show:
              in_chart: true
              in_header: false
            group_by:
              func: max
              duration: 1d
      - type: custom:apexcharts-card
        apex_config:
          chart:
            height: 150px
        header:
          show: true
          title: Opbrengst & besparing per maand — 12 maanden
          show_states: true
          colorize_states: true
        graph_span: 365d
        series:
          - entity: sensor.tibber_reward_monthly
            name: Tibber opbrengst (EUR)
            color: "#EF9F27"
            stroke_width: 0
            type: column
            group_by:
              func: max
              duration: 30d
          - entity: sensor.battery_profit_monthly
            name: Besparing (EUR)
            color: "#378ADD"
            stroke_width: 0
            type: column
            group_by:
              func: max
              duration: 30d
  - cards:
      - type: entities
        entities:
          - entity: sensor.battery_profit_daily
            name: Batterij besparing
            icon: mdi:battery-plus-variant
          - entity: sensor.solar_profit_daily
            icon: mdi:solar-power-variant
            name: Solar → grid
          - entity: sensor.roi_solar_export_profit_daily
            name: Solar export
            icon: mdi:export-variant
          - entity: sensor.tibber_reward_daily
            name: Tibber opbrengst (solar + arbitr)
          - entity: sensor.tibber_cost_daily
            name: Tibber kosten
          - type: divider
          - entity: sensor.tibber_net_daily
          - entity: sensor.battery_arbitrage_daily
            name: Batterij arbitrage
            icon: mdi:swap-vertical-circle-outline
          - type: divider
          - entity: sensor.system_total_profit_daily
            name: Totaal systeem opbrengst
            icon: mdi:piggy-bank
        title: Vandaag totalen
      - type: heading
        heading: Zonnepanelen & Net
        heading_style: title
        icon: mdi:solar-power-variant
      - type: entities
        title: SolarEdge — productie
        entities:
          - entity: sensor.solar_production_daily
            name: Productie vandaag
            icon: mdi:solar-power
          - entity: sensor.sensor_solaredge_energy_today_kwh
            name: Productie vandaag (live)
            icon: mdi:solar-power-variant
          - entity: sensor.solar_production_15m
            name: Productie afgelopen kwartier
            icon: mdi:solar-power
        show_header_toggle: false
      - type: entities
        title: Tibber — net vandaag
        entities:
          - entity: sensor.tibber_pulse_edwin_accumulated_production
            name: Teruggeleverd aan net
            icon: mdi:transmission-tower-export
          - entity: sensor.tibber_pulse_edwin_accumulated_consumption
            name: Afgenomen van net
            icon: mdi:transmission-tower-import
        show_header_toggle: false
      - type: entities
        title: Tibber vandaag — €€€
        entities:
          - entity: sensor.tibber_reward_daily
            name: Opbrengst teruglevering
            icon: mdi:cash-plus
          - entity: sensor.tibber_cost_daily
            name: Stroomkosten
            icon: mdi:cash-minus
          - entity: sensor.tibber_net_daily
            name: Netto stroomkosten
            icon: mdi:cash-sync
          - entity: sensor.edwin_monthly_cost
            name: Maandrekening Tibber
            icon: mdi:calendar-month
        show_header_toggle: false
      - type: entities
        title: Tibber — teruglevering €
        entities:
          - entity: sensor.tibber_reward_daily
            name: Vandaag
            icon: mdi:cash-plus
          - entity: sensor.tibber_reward_monthly
            name: Deze maand
            icon: mdi:cash-plus
          - entity: sensor.tibber_reward_yearly
            name: Dit jaar
            icon: mdi:cash-plus
        show_header_toggle: false
      - type: entities
        entities:
          - entity: sensor.solar_profit_15m
            icon: mdi:transmission-tower-off
          - entity: sensor.solar_profit_daily
            name: Solar - Grid dagelijks
            icon: mdi:transmission-tower-off
          - entity: sensor.solar_profit_yearly
            name: Solar - Grid jaarlijks
            icon: mdi:transmission-tower-off
        title: Solar → Grid (geschat)
      - type: heading
        heading: Totalen
        heading_style: title
      - type: entities
        title: ROI + Panelen export + Panelen grid
        entities:
          - entity: sensor.system_total_profit_daily
            name: Totaal winst vandaag
            icon: mdi:solar-power-variant
          - entity: sensor.roi_system_profit_yearly
            name: Totaal winst dit jaar
            icon: mdi:solar-power-variant
          - type: divider
          - entity: sensor.battery_roi
            name: Batterij ROI % (cumulatief)
            icon: mdi:chart-line
          - entity: sensor.battery_payback_years
            name: Terugverdientijd (werkelijk)
            icon: mdi:calendar-clock
          - entity: sensor.battery_payback_years_extrapolated
            name: Terugverdientijd (schatting obv huidige maand)
            icon: mdi:calendar-clock-outline
          - type: divider
          - entity: sensor.batterij_totaal_aantal_cycli
            name: Totaal aantal cycli (van 6000)
          - entity: sensor.batterij_slijtage_kosten_totaal
        show_header_toggle: false
      - type: heading
        heading: Instellingen
        heading_style: title
      - type: entities
        entities:
          - entity: input_number.battery_efficiency
            name: Efficiëntie batterij
            icon: mdi:battery-heart-outline
          - entity: input_number.sell_price_fixed
            name: Verkoopaftrek (EUR/kWh)
            icon: mdi:currency-eur
          - entity: input_number.battery_investment
            name: Investering batterij (EUR)
            icon: mdi:cash
        show_header_toggle: false
      - type: markdown
        content: >-
          **Batterij installatie 8-12-2025

          Betrouwbare ROI vanaf 12-4-2026**



          *Arbitrage* = 'handelen' middels extra teruggeleverde stroom naar het
          net met dynamisch ontladen 


          *Gemaakt met Claude.ai*

          Bij problemen upload:

          roi.yaml

          roi_dashboard.yaml

          roi_faq.md
cards: []

  • RemmyB83
  • Registratie: Augustus 2018
  • Laatst online: 19:35
ralphkeb schreef op zaterdag 18 april 2026 @ 17:29:
[/quote]Voor nieuwe HA gebruikers die een makkelijk manier willen voor dynamische prijzen en Gielz integratie via packages methode hebben geinstalleerd:

1. Installeer nordpool HACS integratie.
2. maak een bestand aan in de packages directory, bv. nordpool.yaml
3. plaats de volgende code erin:
4. Herstart Home Assistant

er worden 3 Nummer input gemaakt voor
btw_percentage
opslag_energieleverancier
energiebelasting

en 2 nordpool prijzen sensors
- sensor.nordpool_kwh_nl_eur_5_09_0
Dit is de sensor voor de totaal prijs ( vul de 3 input variabele in met je eigen dynamische leverancier kosten)

- sensor.nordpool_kwh_nl_eur_5_10_0
Dit is de sensor voor de kale marktprijs
Eenmaal aangemaakt dan wordt de totaal prijs pas zichtbaar na de komende kwartier na je invoer van de input variabelen.
[/quote]

Ik heb alles zo geinstalleerd en werkend, maar toch kloppen mijn prijzen niet ten opzichte van de prijzen in de Zonneplan app, ja ik heb voor zover ik weet de Zonneplan prijzen gepakt:
btw_percentage : 0,21
opslag_energieleverancier : 0,1108
energiebelasting : 0,022

Verschil is dan Zonneplan: 24,24 cent, Nordpool 24,56 cent
Zonneplan werkt nog met uurprijzen, Nordpool met kwartierprijzen, kan hier het verschil inzitten?
Je bent vergeten de code te plakken 😉

Edit: ik dacht dat je een code wilde posten.
Maar omdat je 'quote tekens' niet goed staan, zag ik niet dat je een vraag had.

[ Voor 4% gewijzigd door RemmyB83 op 18-04-2026 18:26 ]

🇳🇱Pijnacker Oost/West


  • Wai_AM
  • Registratie: April 2010
  • Laatst online: 08:51
ralphkeb schreef op zaterdag 18 april 2026 @ 17:29:

Ik heb alles zo geinstalleerd en werkend, maar toch kloppen mijn prijzen niet ten opzichte van de prijzen in de Zonneplan app, ja ik heb voor zover ik weet de Zonneplan prijzen gepakt:
btw_percentage : 0,21
opslag_energieleverancier : 0,1108
energiebelasting : 0,022

Verschil is dan Zonneplan: 24,24 cent, Nordpool 24,56 cent
Zonneplan werkt nog met uurprijzen, Nordpool met kwartierprijzen, kan hier het verschil inzitten?
Zonneplan volgens jeroen.nl
btw: 0,21
opslag energieleverancier: 0,0165
energiebelasting = 0,0916

Als ik dat gebruik dan komt het precies overeen.

[ Voor 3% gewijzigd door Wai_AM op 18-04-2026 18:49 ]

10x270Wp, 6x365Wp, 4x450Wp, WeHeat Flint P40, Green Energy Smartboiler 60L Mono, Home Wizard PIB, Zendure SF2400AC 11,52 kWh


  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 18:39

Hippe Lip

Er valt altijd wat te leren

Dank je, @DrNickB. Eigenlijk ging het me meer om de (hier wel relevante) vragen

1. hoe je de Zendure een zelfgekozen IP-adres kunt geven en

2. of je het IP-adres van een bestaande Zendure kunt wijzigen, of dat een eenmaal ‘gekozen’ adres altijd hetzelfde blijft?

Dat laatste ws niet omdat elke Zendure via DHCP een IP-adres toegewezen krijgt.
Maar ik zou ze dus heel graag een zelfgekozen adres geven.

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
@gielz er valt me iets op: in HEMS zal het laadvermogen altijd gelijkmatig over de aansturende zendures worden verdeeld. Dus als er 1000W wordt geladen krijgt - bij twee torens - elke toren 500.

Is dat in de gielz automatisering anders? Er komt bij mij nu bij een toren een bepaald wattage binnen, maar bij de andere niks. En die ander is nog niet vol.

Afbeeldingslocatie: https://tweakers.net/i/lU-8CXjTDv0iJAyQXXTs8X5oYLc=/x800/filters:strip_icc():strip_exif()/f/image/0sHNjy0ksgTLwGXl1V5RHsfH.jpg?f=fotoalbum_large
Gramser schreef op zaterdag 18 april 2026 @ 19:13:
@gielz er valt me iets op: in HEMS zal het laadvermogen altijd gelijkmatig over de aansturende zendures worden verdeeld. Dus als er 1000W wordt geladen krijgt - bij twee torens - elke toren 500.

Is dat in de gielz automatisering anders? Er komt bij mij nu bij een toren een bepaald wattage binnen, maar bij de andere niks. En die ander is nog niet vol.

[Afbeelding]
De verdeling bepaald node-red @gast777. Het word iig zo optimaal mogelijk verdeelt voor je RTE en SOC.

Zendure-HA.com | Run Zendure your way — in Home Assistant


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Daar had ik wel vertrouwen in hoor - maar dit viel me in elk geval op als een verschil met HEMS…

  • Tortelli
  • Registratie: Juli 2004
  • Laatst online: 29-05 16:42

Tortelli

mixing gas and haulin ass

Heb het eea aan speelgoed binnen gekregen vandaag, nu staan:
2x Zendure 2400AC+ met 2x de 3000 accu erbij
1x Zendure 2400AC+ zonder accu (die komen in de loop vd week)

Daarom de proxy voor nu ingesteld met de 2 systemen, ze worden herkend en hij ontlaad. Echter heb ik een vrij fors verbruik nu (~2kw) omdat de warmtepomp loopt (tapwater, allemaal onder de douche gestaan). Echter ontlaad hij max maar met 1200 watt en het lijkt erop of het 2e systeem helemaal niet bijschakelt: krijg dus geen NOM. Wat doe ik verkeerd?

PS: systemen zitten nog in beide in volledig ongebruikte groepen in stopcontact nu (veranda), heb ze limited op 1600 laden en 1200 ontladen. Worden in de loop vd week vast aangesloten.

PS2: de max vermogensinstellingen: als ik bijvoorbeeld 3000 instel, is dit dan 1500 w per apparaat?

PS3: is Zendure 2400 AC Energie Import en Zendure 2400 AC Energie Export de juiste sensor om in het energy dashboard te stoppen als je een proxy gebruik?

[ Voor 38% gewijzigd door Tortelli op 18-04-2026 20:57 ]


  • Maarten60
  • Registratie: Oktober 2009
  • Laatst online: 12:23
Hippe Lip schreef op zaterdag 18 april 2026 @ 19:06:
[...]

1. hoe je de Zendure een zelfgekozen IP-adres kunt geven en
Het zelfgekozen ip-adres wordt door de router verstrekt. Dus daar vastleggen conform handleiding @DrNickB
2. of je het IP-adres van een bestaande Zendure kunt wijzigen, of dat een eenmaal ‘gekozen’ adres altijd hetzelfde blijft?
Ja je kunt een (vast) ip altijd wijzigen. Nieuw adres in router aanmaken, daarna activeren door of device een reset te geven waardoor hij zich bij router meldt voor een ip adres en dan het nieuwe ip-adres krijgt. Of door je router te rebooten (kies wel een goed moment want alle internetverbindingen vervallen tijdelijk.)

  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 18:39

Hippe Lip

Er valt altijd wat te leren

Maarten60 schreef op zaterdag 18 april 2026 @ 21:56:
[...]
Het zelfgekozen ip-adres wordt door de router verstrekt. Dus daar vastleggen conform handleiding @DrNickB
Ja, die methode was me eigenlijk al bekend…
Ja je kunt een (vast) ip altijd wijzigen. Nieuw adres in router aanmaken, daarna activeren door of device een reset te geven waardoor hij zich bij router meldt voor een ip adres en dan het nieuwe ip-adres krijgt. Of door je router te rebooten (kies wel een goed moment want alle internetverbindingen vervallen tijdelijk.)
… maar dit punt kan ik niet helemaal volgen: wat bedoel je met “nieuw adres in router aanmaken”? Je kunt een adres niet ‘aanmaken’, het is er al. En ik kan me niet bedenken hoe ik aan een device dat met DHCP zijn adres krijgt toegewezen, een ander adres kan toewijzen.
Hoe bedoel je dat, @Maarten60?

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • Maarten60
  • Registratie: Oktober 2009
  • Laatst online: 12:23
@Hippe Lip ik stuur je dm wordt hier off topic.

  • Pakhaas
  • Registratie: Juli 2016
  • Nu online
Gramser schreef op zaterdag 18 april 2026 @ 19:13:
@gielz er valt me iets op: in HEMS zal het laadvermogen altijd gelijkmatig over de aansturende zendures worden verdeeld. Dus als er 1000W wordt geladen krijgt - bij twee torens - elke toren 500.

Is dat in de gielz automatisering anders? Er komt bij mij nu bij een toren een bepaald wattage binnen, maar bij de andere niks. En die ander is nog niet vol.

[Afbeelding]
Dit staat in de readme van de proxy:
Automatische Standby mode bij lagere vermogens
Bij lage belasting wordt een van de Zendures eerst in standby en dan na 5 minuten in een slaap modus gezet, ten behoeve van de efficiëntie.

Bij 2 Zendures achter de Proxy zijn de standaard grenzen 40% en 100% van het als maximum ingestelde vermogen van 1 device (wat verschillend kan zijn voor opladen en ontladen). Normaliter is dat bij een SF2400AC dus 40% en 100% van 2400 Watt (960W en 2400W):

onder 960W - altijd 1 device
boven 2400W - altijd 2 devices
Daar tussenin blijft het zoals het is.

Bij 3 Zendures hetzelfde, maar wat ingewikkelder:

onder 960W - altijd 1 device
boven 4800W - altijd 3 devices
als 1 actief is, boven de 2400W naar 2 devices
als 3 actief zijn, onder de 1920W (40% van 4800W) naar 2 devices

Daarnaast wisselen ze van actief device als het verschil in SoC >=5% wordt. En als ze tegelijk laden/ontladen, balanceert het vermogen, zodat de SoC dicht bij elkaar blijft.

  • gast777
  • Registratie: Februari 2023
  • Laatst online: 28-05 21:01
Tortelli schreef op zaterdag 18 april 2026 @ 20:40:
Echter ontlaad hij max maar met 1200 watt en het lijkt erop of het 2e systeem helemaal niet bijschakelt: krijg dus geen NOM. Wat doe ik verkeerd?

PS: systemen zitten nog in beide in volledig ongebruikte groepen in stopcontact nu (veranda), heb ze limited op 1600 laden en 1200 ontladen. Worden in de loop vd week vast aangesloten.

PS2: de max vermogensinstellingen: als ik bijvoorbeeld 3000 instel, is dit dan 1500 w per apparaat?
Je, het vermogen dat je instelt is voor het gehele apparaat dat HA ziet. Dus al je Zendures samen. Als je 3000 instelt en je hebt 2 Zendures, dan zal elke Zendure op max 1500 ingesteld worden.

6 kWp solar | Daikin Intergas Hybride 8kW | Tesla Model Y RWD 2023 | Fiat 500e 2014 | Zendure SF2400AC 17 kWh


  • TCMR
  • Registratie: December 2009
  • Laatst online: 06:48
Hippe Lip schreef op zaterdag 18 april 2026 @ 22:02:
[...]
… maar dit punt kan ik niet helemaal volgen: wat bedoel je met “nieuw adres in router aanmaken”?
Veel, maar zeker niet alle routers denk ik, kunnen een MAC-adres aan een IP-adres binnen je DHCP-range koppelen. Dus: meldt zich dat apparaat (MAC-adres) op je router aan, dan geeft je router niet een random DHCP-adres, maar precies dat (gereserveerde) IP-adres dat je in je router hebt ingesteld voor dat apparaat (IP/MAC binding).

Op die manier 'dwing' je dus een vast IP-adres af, maar vanuit de router, niet vanuit het apparaat (Zendure).

Is idd. off-topic, en nogal router-specifiek hoe je dat moet instellen.
Voor vragen over modems, routers etc is dit wellicht een handige groep mogelijkheden. Zelf even zoeken welke sublink je nodig hebt. Kunnen we het hier weer over Zendure i.c.m. HA hebben.
categorie: Modems en routers

[ Voor 11% gewijzigd door Devke op 19-04-2026 08:39 ]

Denk in kansen, niet in problemen. Homewizard Plug-In Battery 5.4 kWh. Zendure 2400 AC 17.2 kWh. Testen Accumate 4.8 kWh Plug-In Battery. 3330 Wp zonnepanelen. EV 77 kWh. Peblar Business Laadpaal.


  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-05 16:07
Hippe Lip schreef op zaterdag 18 april 2026 @ 17:35:
[...]

En weet je toevallig of dit met de Fritzbox ook kan?
Ik zou mijn 2 Zundures erg graag een zelfgekozen en dus statisch IP-adres geven, maar ben er nog niet achter hoe ik dat zou moeten doen…
Ja ook de fritzbox

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


  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-05 16:07
edjes schreef op zaterdag 18 april 2026 @ 17:53:
[...]


Ik heb zes kantjes en maanden werk in een ROI. 8)

Hier, kan je spelen.
Uitgangspunt: zonnepanelen (solaredge), tibber
Het is erg complex, maar zeer volledig.
Plaats roi.yaml in packages
ROI.yaml: https://www.dropbox.com/s...hfemrk8dxxsb35xuyksi&dl=0

of hier is de hele code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
## ROI 1.02 ##
################################
##        INPUT NUMBER        ##
################################
input_number:
  battery_efficiency:
    mode: box
    name: "Batterij efficiëntie"
    min: 50
    max: 100
    step: 1
    initial: 90
    unit_of_measurement: "%"
    icon: mdi:battery-heart-outline

  sell_price_fixed:
    mode: box
    name: "Verkoopprijs vast (EUR/kWh)"
    min: 0.0000
    max: 0.5000
    step: 0.0001
    initial: 0.0248
    unit_of_measurement: "€/kWh"
    icon: mdi:currency-eur

  battery_investment:
    mode: box
    name: "Investering batterij"
    min: 0
    max: 10000
    step: 1
    initial: 1500
    unit_of_measurement: "€"
    icon: mdi:battery-charging

################################
##       UTILITY METER        ##
################################
# Bronnen van waarheid:
#   grid import/export → Tibber last_meter (cumulatief, reset nooit)
#   solar productie    → SolarEdge energy_today (dagelijks, reset ~02:08)
#   batterij           → Zendure AC import/export
#   kosten/opbrengst   → Tibber accumulated (dagelijks, reset middernacht)
utility_meter:
  # --- 15-minuut meters ---
  grid_import_15m:
    source: sensor.tibber_pulse_edwin_last_meter_consumption
    cycle: quarter-hourly

  grid_export_15m:
    source: sensor.tibber_pulse_edwin_last_meter_production
    cycle: quarter-hourly

  battery_charge_15m:
    source: sensor.zendure_2400_ac_energie_import
    cycle: quarter-hourly

  battery_discharge_15m:
    source: sensor.zendure_2400_ac_energie_export
    cycle: quarter-hourly

  solar_production_15m:
    source: sensor.solar_production_interval
    cycle: quarter-hourly

  # --- Dagelijkse solar productie ---
  solar_production_daily:
    source: sensor.sensor_solaredge_energy_today_kwh
    cycle: daily

  # --- Batterij besparing (informatief) ---
  battery_profit_daily:
    source: sensor.battery_profit_15m
    cycle: daily

  battery_profit_monthly:
    source: sensor.battery_profit_15m
    cycle: monthly

  battery_profit_yearly:
    source: sensor.battery_profit_15m
    cycle: yearly

  # --- Arbitrage winst (informatief) ---
  battery_arbitrage_daily:
    source: sensor.battery_arbitrage_profit_15m
    cycle: daily

  battery_arbitrage_monthly:
    source: sensor.battery_arbitrage_profit_15m
    cycle: monthly

  battery_arbitrage_yearly:
    source: sensor.battery_arbitrage_profit_15m
    cycle: yearly

  # --- Solar export opbrengst (informatief) ---
  roi_solar_export_profit_daily:
    source: sensor.solar_export_profit_15m
    cycle: daily

  roi_solar_export_profit_monthly:
    source: sensor.solar_export_profit_15m
    cycle: monthly

  roi_solar_export_profit_yearly:
    source: sensor.solar_export_profit_15m
    cycle: yearly

  # --- Tibber kosten/opbrengst — bron van waarheid ---
  # accumulated reset dagelijks — yearly meter telt deltas op
  tibber_reward_monthly:
    source: sensor.tibber_reward_daily
    cycle: monthly

  tibber_reward_yearly:
    source: sensor.tibber_reward_daily
    cycle: yearly

  tibber_cost_monthly:
    source: sensor.tibber_cost_daily
    cycle: monthly

  tibber_cost_yearly:
    source: sensor.tibber_cost_daily
    cycle: yearly

  # --- System totaal yearly ---
  # Hernoemd om conflict met oude database entries te vermijden
  roi_system_profit_yearly:
    source: sensor.system_total_profit_daily
    cycle: yearly

  roi_system_profit_monthly:
    source: sensor.system_total_profit_daily
    cycle: monthly

  # --- Solar winst (direct verbruik + export, exclusief batterijlading) ---
  solar_profit_daily:
    source: sensor.solar_profit_15m
    cycle: daily

  solar_profit_yearly:
    source: sensor.solar_profit_15m
    cycle: yearly

################################
##         TEMPLATE           ##
################################
template:
  # ----------------------------------------------------------------
  # Solar interval: delta per update van SolarEdge dagelijkse teller
  # Reset om ~02:08 → negatieve delta = 0
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id: sensor.sensor_solaredge_energy_today_kwh
    sensor:
      - name: "Solar Production Interval"
        unique_id: solar_production_interval
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        state: >
          {% set current  = trigger.to_state.state  | float(0) %}
          {% set previous = trigger.from_state.state | float(0) if trigger.from_state else 0 %}
          {% set delta = current - previous %}
          {{ (delta if delta >= 0 else 0) | round(3) }}

  # ----------------------------------------------------------------
  # Tibber dagelijkse kosten en opbrengst — bron van waarheid
  # Getriggerd op Tibber accumulated sensoren
  # Reset dagelijks om middernacht door Tibber zelf
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id:
          - sensor.tibber_pulse_edwin_accumulated_cost
          - sensor.tibber_pulse_edwin_accumulated_reward
    sensor:
      - name: "Tibber Cost Daily"
        unique_id: tibber_cost_daily_sensor
        unit_of_measurement: "€"
        icon: mdi:cash-minus
        state: >
          {{ states('sensor.tibber_pulse_edwin_accumulated_cost') | float(0) | round(4) }}

      - name: "Tibber Reward Daily"
        unique_id: tibber_reward_daily_sensor
        unit_of_measurement: "€"
        icon: mdi:cash-plus
        state: >
          {{ states('sensor.tibber_pulse_edwin_accumulated_reward') | float(0) | round(4) }}

      - name: "Tibber Net Daily"
        unique_id: tibber_net_daily
        unit_of_measurement: "€"
        icon: mdi:cash-sync
        state: >
          {# Netto stroomkosten vandaag: wat je betaald hebt min wat je ontvangen hebt #}
          {% set cost   = states('sensor.tibber_pulse_edwin_accumulated_cost')   | float(0) %}
          {% set reward = states('sensor.tibber_pulse_edwin_accumulated_reward') | float(0) %}
          {{ (cost - reward) | round(4) }}

  # ----------------------------------------------------------------
  # Prijssensoren — inkoop én verkoop apart
  # Trigger elke 5 minuten én bij wijziging van bronentiteit
  # ----------------------------------------------------------------
  - trigger:
      - platform: time_pattern
        minutes: "/5"
      - platform: state
        entity_id:
          - sensor.edwin_electricity_price
          - input_number.sell_price_fixed
    sensor:
      - name: "Electricity Buy Price EUR"
        unique_id: electricity_buy_price_eur
        unit_of_measurement: "€/kWh"
        icon: mdi:lightning-bolt
        state: >
          {# Handrem: als Tibber wegvalt bewaar de laatste bekende prijs #}
          {% set prijs = states('sensor.edwin_electricity_price') | float(-1) %}
          {% if prijs < 0 %}
            {{ states('sensor.electricity_buy_price_eur') | float(0) }}
          {% else %}
            {{ prijs | round(4) }}
          {% endif %}

      - name: "Electricity Sell Price EUR"
        unique_id: electricity_sell_price_eur
        unit_of_measurement: "€/kWh"
        icon: mdi:lightning-bolt-outline
        state: >
          {# Handrem: als Tibber wegvalt bewaar de laatste bekende prijs #}
          {# Na 2026: pas input_number.sell_price_fixed aan #}
          {% set buy    = states('sensor.edwin_electricity_price') | float(-1) %}
          {% set aftrek = states('input_number.sell_price_fixed')  | float(0.0248) %}
          {% if buy < 0 %}
            {{ states('sensor.electricity_sell_price_eur') | float(0) }}
          {% else %}
            {{ [buy - aftrek, 0] | max | round(4) }}
          {% endif %}

  # ----------------------------------------------------------------
  # ROI sensoren — getriggerd op 15m meters én prijswijzigingen
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id:
          - sensor.grid_import_15m
          - sensor.grid_export_15m
          - sensor.solar_production_15m
          - sensor.battery_charge_15m
          - sensor.battery_discharge_15m
          - sensor.electricity_buy_price_eur
          - sensor.electricity_sell_price_eur
          - input_number.battery_efficiency
    sensor:
      # --- Waarde zonnepanelen direct verbruik + export (exclusief batterijlading) ---
      #
      # solar_to_grid = echte solar export (zonder batterij arbitrage)
      # direct_home_auto = solar minus export minus batterijlading
      # Batterijlading telt niet mee: die kun je ook in de winter met netstroom vullen
      - name: "Solar Profit 15m"
        unique_id: solar_profit_15m
        unit_of_measurement: "€"
        icon: mdi:solar-power
        state: >
          {# Puur de besparing van zon → huis/auto direct verbruik #}
          {# Export naar net zit al bij Tibber reward — geen dubbeltelling #}
          {# Batterijlading uitgefilterd — die stroom zetten we later in #}
          {% set solar    = states('sensor.solar_production_15m') | float(0) %}
          {% set grid_exp = states('sensor.grid_export_15m')      | float(0) %}
          {% set bat_chg  = states('sensor.battery_charge_15m')   | float(0) %}
          {% set bat_dis  = states('sensor.battery_discharge_15m')| float(0) %}
          {% set buy      = states('sensor.electricity_buy_price_eur') | float(0) %}
          {% set bat_to_grid      = [bat_dis, grid_exp] | min %}
          {% set solar_to_grid    = [grid_exp - bat_to_grid, 0] | max %}
          {% set direct_home_auto = [solar - solar_to_grid - bat_chg, 0] | max %}
          {{ (direct_home_auto * buy) | round(5) }}

      # --- Werkelijke kosten MET batterij ---
      #
      # + grid_import * inkoopprijs
      # - grid_export * verkoopprijs
      # + laadverlies als gewogen gemiddelde van solar/net aandeel
      - name: "Cost with battery"
        unique_id: cost_with_battery
        unit_of_measurement: "€"
        icon: mdi:battery-charging
        state: >
          {% set import_kwh = states('sensor.grid_import_15m')            | float(-1) %}
          {% set export_kwh = states('sensor.grid_export_15m')            | float(-1) %}
          {% set bat_chg    = states('sensor.battery_charge_15m')         | float(-1) %}
          {% set buy        = states('sensor.electricity_buy_price_eur')  | float(-1) %}
          {% set sell       = states('sensor.electricity_sell_price_eur') | float(-1) %}
          {% set eff        = states('input_number.battery_efficiency')   | float(90) / 100 %}

          {% if import_kwh < 0 or export_kwh < 0 or bat_chg < 0 or buy < 0 or sell < 0 %}
            {{ states('sensor.cost_with_battery') | float(0) }}
          {% else %}
            {% set grid_cost    = import_kwh * buy %}
            {% set grid_revenue = export_kwh * sell %}
            {% set solar_15m   = states('sensor.solar_production_15m') | float(0) %}
            {% set total_in    = import_kwh + solar_15m %}
            {% set solar_ratio = (solar_15m / total_in) if total_in > 0 else 0 %}
            {% set grid_ratio  = (import_kwh / total_in) if total_in > 0 else 1 %}
            {% set loss_price  = solar_ratio * sell + grid_ratio * buy %}
            {% set loss_cost   = bat_chg * (1 - eff) * loss_price %}
            {{ (grid_cost - grid_revenue + loss_cost) | round(5) }}
          {% endif %}

      # --- Virtuele kosten ZONDER batterij ---
      #
      # Werkelijk huisverbruik = solar + grid_imp + bat_dis - grid_exp - bat_chg
      # Zonder batterij dekt solar dit verbruik direct:
      #   virtual_import  = max(load - solar, 0) → inkoopprijs
      #   virtual_export  = max(solar - load, 0) → verkoopprijs
      - name: "Cost without battery"
        unique_id: cost_without_battery
        unit_of_measurement: "€"
        icon: mdi:home-lightning-bolt
        state: >
          {% set solar    = states('sensor.solar_production_15m')        | float(-1) %}
          {% set grid_imp = states('sensor.grid_import_15m')             | float(-1) %}
          {% set grid_exp = states('sensor.grid_export_15m')             | float(-1) %}
          {% set bat_chg  = states('sensor.battery_charge_15m')          | float(-1) %}
          {% set bat_dis  = states('sensor.battery_discharge_15m')       | float(-1) %}
          {% set buy      = states('sensor.electricity_buy_price_eur')   | float(-1) %}
          {% set sell     = states('sensor.electricity_sell_price_eur')  | float(-1) %}

          {% if solar < 0 or grid_imp < 0 or grid_exp < 0 or bat_chg < 0 or bat_dis < 0 or buy < 0 or sell < 0 %}
            {{ states('sensor.cost_without_battery') | float(0) }}
          {% else %}
            {% set real_load      = [solar + grid_imp + bat_dis - grid_exp - bat_chg, 0] | max %}
            {% set virtual_import = [real_load - solar, 0] | max %}
            {% set virtual_export = [solar - real_load, 0] | max %}
            {{ ((virtual_import * buy) - (virtual_export * sell)) | round(5) }}
          {% endif %}

      # --- Besparing per 15 minuten dankzij de batterij ---
      #
      # Positief = batterij bespaart geld
      # Negatief = batterij kost geld (bv. laden uit net op hoge prijs)
      # FIX: als batterij niets doet én vol is → 0 (voorkomt SolarEdge buffering artefact)
      - name: "Battery Profit 15m"
        unique_id: battery_profit_15m
        unit_of_measurement: "€"
        icon: mdi:cash-plus
        state: >
          {% set without = states('sensor.cost_without_battery') | float(-999) %}
          {% set with_b  = states('sensor.cost_with_battery')    | float(-999) %}
          {% set bat_chg = states('sensor.battery_charge_15m')   | float(0) %}
          {% set bat_dis = states('sensor.battery_discharge_15m') | float(0) %}
          {% set soc     = states('sensor.solarflow_2400_ac_electric_level') | float(0) %}
          {% if bat_chg <= 0.002 and bat_dis <= 0.002 and soc >= 98.5 %}
            0
          {% elif without == -999 or with_b == -999 %}
            {{ states('sensor.battery_profit_15m') | float(0) }}
          {% else %}
            {{ (without - with_b) | round(5) }}
          {% endif %}

  # ----------------------------------------------------------------
  # Solar export opbrengst per 15 minuten (informatief)
  #
  # solar_to_grid = max(grid_exp - bat_to_grid, 0)
  # bat_to_grid   = min(bat_dis, grid_exp)
  # Geen overlap met arbitrage
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id:
          - sensor.grid_export_15m
          - sensor.battery_discharge_15m
          - sensor.electricity_sell_price_eur
    sensor:
      - name: "Solar Export Profit 15m"
        unique_id: solar_export_profit_15m
        unit_of_measurement: "€"
        icon: mdi:transmission-tower-export
        state: >
          {% set grid_exp = states('sensor.grid_export_15m')            | float(-1) %}
          {% set bat_dis  = states('sensor.battery_discharge_15m')      | float(-1) %}
          {% set sell     = states('sensor.electricity_sell_price_eur') | float(-1) %}
          {% if grid_exp < 0 or bat_dis < 0 or sell < 0 %}
            {{ states('sensor.solar_export_profit_15m') | float(0) }}
          {% else %}
            {% set bat_to_grid   = [bat_dis, grid_exp] | min %}
            {% set solar_to_grid = [grid_exp - bat_to_grid, 0] | max %}
            {{ (solar_to_grid * sell) | round(5) }}
          {% endif %}

  # ----------------------------------------------------------------
  # Arbitrage-winst per 15 minuten (informatief)
  #
  # bat_to_grid  = min(bat_dis, grid_exp)
  # cost_basis   = buy als geladen vanuit net, 0 als geladen vanuit solar
  # winst        = omzet - kostenbasis (gecorrigeerd voor efficiëntie)
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id:
          - sensor.battery_discharge_15m
          - sensor.grid_export_15m
          - sensor.grid_import_15m
          - sensor.electricity_buy_price_eur
          - sensor.electricity_sell_price_eur
          - input_number.battery_efficiency
    sensor:
      - name: "Battery Arbitrage Profit 15m"
        unique_id: battery_arbitrage_profit_15m
        unit_of_measurement: "€"
        icon: mdi:lightning-bolt-circle
        state: >
          {% set bat_dis  = states('sensor.battery_discharge_15m')      | float(-1) %}
          {% set grid_exp = states('sensor.grid_export_15m')            | float(-1) %}
          {% set grid_imp = states('sensor.grid_import_15m')            | float(-1) %}
          {% set buy      = states('sensor.electricity_buy_price_eur')  | float(-1) %}
          {% set sell     = states('sensor.electricity_sell_price_eur') | float(-1) %}
          {% set eff      = states('input_number.battery_efficiency')   | float(90) / 100 %}
          {% if bat_dis < 0 or grid_exp < 0 or grid_imp < 0 or buy < 0 or sell < 0 %}
            {{ states('sensor.battery_arbitrage_profit_15m') | float(0) }}
          {% else %}
            {% set bat_to_grid = [bat_dis, grid_exp] | min %}
            {% set cost_basis  = buy if grid_imp > 0 else 0 %}
            {% set revenue     = bat_to_grid * sell %}
            {% set cost        = (bat_to_grid / eff) * cost_basis %}
            {{ [revenue - cost, 0] | max | round(5) }}
          {% endif %}

  # ----------------------------------------------------------------
  # ROI totaaloverzicht
  # Direct van bronnen — geen race condition
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id:
          - sensor.tibber_reward_daily
          - sensor.tibber_cost_daily
          - sensor.battery_profit_daily
          - sensor.battery_profit_yearly
          - sensor.battery_arbitrage_daily
          - sensor.battery_arbitrage_yearly
          - sensor.solar_profit_daily
          - input_number.battery_investment
    sensor:
      - name: "Battery ROI"
        unique_id: battery_roi
        unit_of_measurement: "%"
        icon: mdi:chart-line
        state: >
          {# ROI op battery_profit_yearly alleen #}
          {# Arbitrage zit er al in via cost_with_battery (zie FAQ) #}
          {% set investering = states('input_number.battery_investment') | float(0) %}
          {% set winst       = states('sensor.battery_profit_yearly')    | float(0) %}
          {% if investering == 0 %}
            0
          {% else %}
            {{ ((winst / investering) * 100) | round(2) }}
          {% endif %}

      - name: "System Total Profit Daily"
        unique_id: system_total_profit_daily
        unit_of_measurement: "€"
        icon: mdi:solar-power-variant
        state: >
          {# Drie unieke winststromen zonder overlap: #}
          {# 1. tibber_reward  = solar export + arbitrage opbrengst (Tibber, exact) #}
          {# 2. battery_profit = batterij besparing zelfverbruik (- arbitrage correctie) #}
          {# 3. solar_profit   = zon direct naar huis/auto besparing #}
          {% set reward    = states('sensor.tibber_reward_daily')     | float(0) %}
          {% set besparing = states('sensor.battery_profit_daily')    | float(0) %}
          {% set arbitrage = states('sensor.battery_arbitrage_daily') | float(0) %}
          {% set solar_win = states('sensor.solar_profit_daily')      | float(0) %}
          {{ (reward + besparing - arbitrage + solar_win) | round(4) }}

      - name: "Battery Payback Years"
        unique_id: battery_payback_years
        unit_of_measurement: "jaar"
        icon: mdi:calendar-clock
        state: >
          {# Terugverdientijd op battery_profit_yearly — arbitrage zit er al in #}
          {% set investering = states('input_number.battery_investment') | float(0) %}
          {% set winst_jaar  = states('sensor.battery_profit_yearly')   | float(0) %}
          {% if winst_jaar <= 0 or investering <= 0 %}
            0
          {% else %}
            {% set jaren = (investering / winst_jaar) | round(1) %}
            {{ [jaren, 99] | min }}
          {% endif %}

      - name: "Battery Payback Years Extrapolated"
        unique_id: battery_payback_years_extrapolated
        unit_of_measurement: "jaar"
        icon: mdi:calendar-clock-outline
        state: >
          {# Extrapolatie op basis van maandwinst × 12 #}
          {% set investering = states('input_number.battery_investment') | float(0) %}
          {% set maand_winst = states('sensor.battery_profit_monthly')   | float(0) %}
          {% set jaar_extrap = maand_winst * 12 %}
          {% if jaar_extrap <= 0 or investering <= 0 %}
            0
          {% else %}
            {% set jaren = (investering / jaar_extrap) | round(1) %}
            {{ [jaren, 99] | min }}
          {% endif %}

  # ----------------------------------------------------------------
  # Cyclus-monitor — batterij slijtage
  # ----------------------------------------------------------------
  - trigger:
      - platform: state
        entity_id: sensor.solarflow_2400_ac_aggr_charge_total
    sensor:
      - name: "Batterij Totaal Aantal Cycli"
        unique_id: battery_total_cycles
        unit_of_measurement: "cycli"
        icon: mdi:sync
        state: >
          {% set totaal_geladen = trigger.to_state.state | float(0) %}
          {% set capaciteit = states('sensor.zendure_2400_ac_totale_capaciteit') | float(8.64) %}
          {{ (totaal_geladen / capaciteit) | round(1) if totaal_geladen > 0 else 0 }}

      - name: "Batterij Slijtage Kosten Totaal"
        unique_id: battery_wear_cost_total
        unit_of_measurement: "€"
        icon: mdi:cash-clock
        state: >
          {% set cycli       = states('sensor.batterij_totaal_aantal_cycli') | float(0) %}
          {% set investering = states('input_number.battery_investment')        | float(2600) %}
          {# Slijtage per cyclus = investering / 6000 cycli (LiFePO4 levensduur) #}
          {% set slijtage_per_cyclus = investering / 6000 %}
          {{ (cycli * slijtage_per_cyclus) | round(2) }}
Dit is het dashboard, wel wat van mijn verwijzingen verwijderen ;-)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
title: Batterij ROI
path: batterij-roi
icon: mdi:cash-fast
type: sections
max_columns: 2
sections:
  - cards:
      - square: false
        columns: 5
        type: grid
        cards:
          - type: custom:button-card
            entity: sensor.zendure_p1_power_kw
            show_state: true
            show_icon: false
            name: Stroom
            state_display: |
              [[[
                const v = parseFloat(entity.state);
                if (isNaN(v)) return entity.state;
                if (v >= -0.1 && v <= 0.1) {
                  if (v < 0) return `v ${Math.abs(v).toFixed(2)}`;
                  if (v > 0) return `^ ${v.toFixed(2)}`;
                  return `${v.toFixed(2)}`;
                }
                if (v < -0.1) return `${Math.abs(v).toFixed(2)}`;
                return `${v.toFixed(2)} kW`;
              ]]]
            state:
              - operator: <
                value: -0.1
                styles:
                  card:
                    - color: white
                    - background-color: green
              - operator: ">"
                value: 0.1
                styles:
                  card:
                    - color: white
                    - background-color: tomato
              - operator: ">="
                value: -0.1
                styles:
                  card:
                    - color: black
                    - background-color: white
          - type: custom:button-card
            entity: sensor.p1_actueel_kw
            show_state: true
            show_icon: false
            name: Stroom
            state_display: |
              [[[
                const v = parseFloat(entity.state);
                if (isNaN(v)) return entity.state;
                if (v >= -0.1 && v <= 0.1) {
                  if (v < 0) return `v ${Math.abs(v).toFixed(2)}`;
                  if (v > 0) return `^ ${v.toFixed(2)}`;
                  return `${v.toFixed(2)}`;
                }
                if (v < -0.1) return `${Math.abs(v).toFixed(2)}`;
                return `${v.toFixed(2)} kW`;
              ]]]
            state:
              - operator: <
                value: -0.1
                styles:
                  card:
                    - color: white
                    - background-color: green
              - operator: ">"
                value: 0.1
                styles:
                  card:
                    - color: white
                    - background-color: tomato
              - operator: ">="
                value: -0.1
                styles:
                  card:
                    - color: black
                    - background-color: white
          - type: custom:button-card
            entity: sensor.solarflow_2400_ac_electric_level
            show_state: true
            show_icon: false
            name: Batterij
            triggers_update:
              - sensor.zendure_2400_ac_modus
            styles:
              card:
                - color: white
                - background-color: |
                    [[[
                      const state = states['sensor.zendure_2400_ac_modus']?.state;
                      if (state === 'Opladen') return 'green';
                      if (state === 'Ontladen') return 'tomato';
                      return 'gray';
                    ]]]
            state_display: |
              [[[
                return entity.state + ' %';
              ]]]
          - type: custom:button-card
            entity: sensor.sensor_solaredge_current_power_kwh
            show_state: true
            show_icon: false
            name: Zon
            state:
              - operator: ">"
                value: 0
                styles:
                  card:
                    - color: white
                    - background-color: green
              - operator: "="
                value: 0
                styles:
                  card:
                    - background-color: white
          - type: custom:button-card
            entity: sensor.sensor_tibberprijs
            show_state: true
            show_icon: false
            name: Prijs
            state_display: |
              [[[
                const v = parseFloat(entity.state);
                if (isNaN(v)) return entity.state;
                return `${v.toFixed(1)} C`;
              ]]]
            state:
              - operator: <
                value: 23
                styles:
                  card:
                    - color: white
                    - background-color: green
              - operator: ">"
                value: 23
                styles:
                  card:
                    - color: white
                    - background-color: tomato
          - type: custom:button-card
            entity: sensor.dynamisch_duurste_periode
            show_state: false
            show_name: false
            icon: mdi:cash-clock
            state:
              - value: Ja
                styles:
                  card:
                    - background-color: green
                    - color: white
                  icon:
                    - color: white
              - value: Nee
                styles:
                  card:
                    - background-color: var(--card-background-color)
                    - color: var(--primary-text-color)
          - show_name: false
            show_icon: true
            type: button
            entity: input_button.update_roi
            tap_action:
              action: toggle
          - type: custom:gap-card
          - show_name: true
            show_icon: true
            type: button
            tap_action:
              action: navigate
              navigation_path: /lovelace/energie
            name: Panelen
          - show_name: true
            show_icon: true
            type: button
            tap_action:
              action: navigate
              navigation_path: /lovelace/tesla
            name: Autos
      - square: false
        type: grid
        columns: 3
        cards:
          - type: gauge
            name: Vermogen
            entity: sensor.zendure_2400_ac_vermogen_aansturing
            needle: true
            min: -2400
            max: 2400
            severity:
              green: -2400
              yellow: -100
              red: 100
          - type: gauge
            name: Laad%
            entity: sensor.zendure_2400_ac_laadpercentage
            needle: true
            min: 0
            max: 100
            severity:
              green: 50
              yellow: 15
              red: 0
          - type: gauge
            entity: sensor.zendure_2400_ac_omvormer_temperatuur
            needle: true
            severity:
              green: 0
              yellow: 55
              red: 60
            name: Omvormer
      - type: entities
        entities:
          - entity: automation.zendure_zomer_winter_goedkoopst_duurst
          - entity: input_select.zendure_2400_ac_modus_selecteren
      - type: entities
        entities:
          - entity: sensor.electricity_buy_price_eur
            name: Inkoopprijs
            icon: mdi:lightning-bolt
          - entity: sensor.electricity_sell_price_eur
            name: Verkoopprijs
            icon: mdi:lightning-bolt-outline
        show_header_toggle: false
      - type: heading
        heading: Batterij
        heading_style: title
        icon: mdi:home-battery-outline
      - type: entities
        title: Besparing (zelfverbruik + arbitrage)
        entities:
          - entity: sensor.battery_profit_daily
            name: Vandaag
            icon: mdi:battery-charging
          - entity: sensor.battery_profit_monthly
            name: Deze maand
            icon: mdi:battery-charging
          - entity: sensor.battery_profit_yearly
            name: Dit jaar
            icon: mdi:battery-charging
        show_header_toggle: false
      - type: entities
        title: Arbitrage (zit al in besparing)
        entities:
          - entity: sensor.battery_arbitrage_daily
            name: Vandaag
            icon: mdi:lightning-bolt-circle
          - entity: sensor.battery_arbitrage_monthly
            name: Deze maand
            icon: mdi:lightning-bolt-circle
          - entity: sensor.battery_arbitrage_yearly
            name: Dit jaar
            icon: mdi:lightning-bolt-circle
        show_header_toggle: false
      - type: history-graph
        title: Batterij besparing (24u)
        hours_to_show: 24
        entities:
          - entity: sensor.battery_profit_daily
      - type: custom:apexcharts-card
        apex_config:
          chart:
            height: 150px
        header:
          show: true
          title: Batterij besparing — 30 dagen
          show_states: true
          colorize_states: true
        graph_span: 30d
        series:
          - entity: sensor.battery_profit_monthly
            name: Besparing (EUR)
            color: "#378ADD"
            show:
              in_chart: false
              in_header: true
          - entity: sensor.battery_profit_daily
            name: Besparing (EUR)
            color: "#378ADD"
            stroke_width: 0
            type: column
            show:
              in_chart: true
              in_header: false
            group_by:
              func: max
              duration: 1d
      - type: custom:apexcharts-card
        apex_config:
          chart:
            height: 150px
        header:
          show: true
          title: Opbrengst & besparing per maand — 12 maanden
          show_states: true
          colorize_states: true
        graph_span: 365d
        series:
          - entity: sensor.tibber_reward_monthly
            name: Tibber opbrengst (EUR)
            color: "#EF9F27"
            stroke_width: 0
            type: column
            group_by:
              func: max
              duration: 30d
          - entity: sensor.battery_profit_monthly
            name: Besparing (EUR)
            color: "#378ADD"
            stroke_width: 0
            type: column
            group_by:
              func: max
              duration: 30d
  - cards:
      - type: entities
        entities:
          - entity: sensor.battery_profit_daily
            name: Batterij besparing
            icon: mdi:battery-plus-variant
          - entity: sensor.solar_profit_daily
            icon: mdi:solar-power-variant
            name: Solar → grid
          - entity: sensor.roi_solar_export_profit_daily
            name: Solar export
            icon: mdi:export-variant
          - entity: sensor.tibber_reward_daily
            name: Tibber opbrengst (solar + arbitr)
          - entity: sensor.tibber_cost_daily
            name: Tibber kosten
          - type: divider
          - entity: sensor.tibber_net_daily
          - entity: sensor.battery_arbitrage_daily
            name: Batterij arbitrage
            icon: mdi:swap-vertical-circle-outline
          - type: divider
          - entity: sensor.system_total_profit_daily
            name: Totaal systeem opbrengst
            icon: mdi:piggy-bank
        title: Vandaag totalen
      - type: heading
        heading: Zonnepanelen & Net
        heading_style: title
        icon: mdi:solar-power-variant
      - type: entities
        title: SolarEdge — productie
        entities:
          - entity: sensor.solar_production_daily
            name: Productie vandaag
            icon: mdi:solar-power
          - entity: sensor.sensor_solaredge_energy_today_kwh
            name: Productie vandaag (live)
            icon: mdi:solar-power-variant
          - entity: sensor.solar_production_15m
            name: Productie afgelopen kwartier
            icon: mdi:solar-power
        show_header_toggle: false
      - type: entities
        title: Tibber — net vandaag
        entities:
          - entity: sensor.tibber_pulse_edwin_accumulated_production
            name: Teruggeleverd aan net
            icon: mdi:transmission-tower-export
          - entity: sensor.tibber_pulse_edwin_accumulated_consumption
            name: Afgenomen van net
            icon: mdi:transmission-tower-import
        show_header_toggle: false
      - type: entities
        title: Tibber vandaag — €€€
        entities:
          - entity: sensor.tibber_reward_daily
            name: Opbrengst teruglevering
            icon: mdi:cash-plus
          - entity: sensor.tibber_cost_daily
            name: Stroomkosten
            icon: mdi:cash-minus
          - entity: sensor.tibber_net_daily
            name: Netto stroomkosten
            icon: mdi:cash-sync
          - entity: sensor.edwin_monthly_cost
            name: Maandrekening Tibber
            icon: mdi:calendar-month
        show_header_toggle: false
      - type: entities
        title: Tibber — teruglevering €
        entities:
          - entity: sensor.tibber_reward_daily
            name: Vandaag
            icon: mdi:cash-plus
          - entity: sensor.tibber_reward_monthly
            name: Deze maand
            icon: mdi:cash-plus
          - entity: sensor.tibber_reward_yearly
            name: Dit jaar
            icon: mdi:cash-plus
        show_header_toggle: false
      - type: entities
        entities:
          - entity: sensor.solar_profit_15m
            icon: mdi:transmission-tower-off
          - entity: sensor.solar_profit_daily
            name: Solar - Grid dagelijks
            icon: mdi:transmission-tower-off
          - entity: sensor.solar_profit_yearly
            name: Solar - Grid jaarlijks
            icon: mdi:transmission-tower-off
        title: Solar → Grid (geschat)
      - type: heading
        heading: Totalen
        heading_style: title
      - type: entities
        title: ROI + Panelen export + Panelen grid
        entities:
          - entity: sensor.system_total_profit_daily
            name: Totaal winst vandaag
            icon: mdi:solar-power-variant
          - entity: sensor.roi_system_profit_yearly
            name: Totaal winst dit jaar
            icon: mdi:solar-power-variant
          - type: divider
          - entity: sensor.battery_roi
            name: Batterij ROI % (cumulatief)
            icon: mdi:chart-line
          - entity: sensor.battery_payback_years
            name: Terugverdientijd (werkelijk)
            icon: mdi:calendar-clock
          - entity: sensor.battery_payback_years_extrapolated
            name: Terugverdientijd (schatting obv huidige maand)
            icon: mdi:calendar-clock-outline
          - type: divider
          - entity: sensor.batterij_totaal_aantal_cycli
            name: Totaal aantal cycli (van 6000)
          - entity: sensor.batterij_slijtage_kosten_totaal
        show_header_toggle: false
      - type: heading
        heading: Instellingen
        heading_style: title
      - type: entities
        entities:
          - entity: input_number.battery_efficiency
            name: Efficiëntie batterij
            icon: mdi:battery-heart-outline
          - entity: input_number.sell_price_fixed
            name: Verkoopaftrek (EUR/kWh)
            icon: mdi:currency-eur
          - entity: input_number.battery_investment
            name: Investering batterij (EUR)
            icon: mdi:cash
        show_header_toggle: false
      - type: markdown
        content: >-
          **Batterij installatie 8-12-2025

          Betrouwbare ROI vanaf 12-4-2026**



          *Arbitrage* = 'handelen' middels extra teruggeleverde stroom naar het
          net met dynamisch ontladen 


          *Gemaakt met Claude.ai*

          Bij problemen upload:

          roi.yaml

          roi_dashboard.yaml

          roi_faq.md
cards: []
Gaaf! En wat een werk (y)
Heb je een paar screenshots hoe dat in HA eruit ziet?

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


  • edjes
  • Registratie: December 2025
  • Laatst online: 26-05 20:36
hemertje schreef op zondag 19 april 2026 @ 08:50:
[...]
Gaaf! En wat een werk (y)
Heb je een paar screenshots hoe dat in HA eruit ziet?
Afbeeldingslocatie: https://tweakers.net/i/fHPmVmFGztZ_6Vr3aczAgObVPXU=/800x/filters:strip_exif()/f/image/B9AFwpZaheUlXaad7bwhx06I.png?f=fotoalbum_large

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

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

Afbeeldingslocatie: https://tweakers.net/i/H1Rp4hDPi4OdiQfBN-98sjuHzyg=/800x/filters:strip_exif()/f/image/v1lcG6kfshioMfSGIa3nQinC.png?f=fotoalbum_large

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

  • Flexiilex
  • Registratie: September 2011
  • Laatst online: 19:59
Ik heb nu een weekje 8,16 kWh staan waarvan dit eerst aangestuurd werd door HEMS. Toch wilde ik voor 2026 niet NOM gaan draaien maar een modus waarin dit jaar meer winst valt te halen. Ik heb de integratie nu sinds gisteren draaien maar ik snap dus nog niet echt welke modus dit jaar rendabel is. Zelf vermoed ik dynamisch NOM (duur) ivm veel opwek op de dag en eigenlijk weinig momenten waarbij de accu zou moeten bijspringen om het huis op NOM te krijgen.

Ik snap alleen even niet zo goed hoe je dit goed werkend krijgt en misschien zit ik er wel naast wat in mijn situatie dan beter is, maar ook in de duren uren wilt de batterij gaan laden terwijl dit niet nodig is lijkt mij. In de TS staat hier verder ook niks over. Heb wel de verschillende faq gelezen op github en de modussen enz.

Iemand die mij hierbij een zetje in de juiste richting kan geven? Ik zag net ook dat @edjes een yaml had gedeeld om te zien hoeveel je verdient hebt etc etc. Is daar ergens een stappenplan van? Dat ziet er namelijk ook heel nice uit!

  • hemertje
  • Registratie: Juli 2015
  • Laatst online: 29-05 16:07
deze heb je nu in het Giel dashboard geintegreerd zie ik?
of toch een los dashboard?

wat doet die zomer-winter-viagielz? heb je een linkje?

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


  • edjes
  • Registratie: December 2025
  • Laatst online: 26-05 20:36
hemertje schreef op zondag 19 april 2026 @ 10:32:
[...]


deze heb je nu in het Giel dashboard geintegreerd zie ik?
of toch een los dashboard?

wat doet die zomer-winter-viagielz? heb je een linkje?
Die zomer-winter stuurt Gielz weer aan wat hij moet doen volgens onderstaand schema.
Ik heb een zomer modus, dan gooit hij de batterij vol met zon, en dan NOM+dyn (met opladen uit net uit; goedkope periodes = 0).
Voorts een helper om te bepalen of de batterij goed vol 2 uur voor zonsondergang, dan gaat hij de hele nacht NOMMEN. En anders gooit hij de batterij leeg wat er is op de dure momenten.
En heel belangrijk, als de auto laadt, dan moet hij naar standby, daar is ook een kleine automation voor die een helper aanstuurt.

Afbeeldingslocatie: https://tweakers.net/i/LjE74pnKC4ERHOdLeynw-87fUyg=/x800/filters:strip_exif()/f/image/z0ADxzzMh7yOA99Xv2NalCk0.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/_ciP21W5AMqFrCfr8WPW7frrMFo=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/1F0zil2OBkl3apqEds3qmRRT.png?f=user_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
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
alias: Zendure - zomer-winter-viagielz
description: >
  Stuurt Zendure 2400 AC, prijs, Nul op de meter, zomernacht-helper, PV-drempel
  bij goedkope periodes, spread-check en status feedback. Gebruik geen andere
  start-stop automations hiernaast!
triggers:
  - trigger: state
    entity_id:
      - sensor.dynamisch_goedkoopste_periode
      - sensor.dynamisch_duurste_periode
      - input_boolean.zendure_zomernacht_nom_toegestaan
      - sensor.sensor_tibberprijs
      - input_boolean.zendure_zomer_mode
      - input_boolean.autoisaanhetladen
  - trigger: numeric_state
    entity_id:
      - sensor.sensor_solaredge_current_power_kwh
    above: 0.2
    for:
      hours: 0
      minutes: 5
      seconds: 0
  - trigger: numeric_state
    entity_id:
      - sensor.sensor_solaredge_current_power_kwh
    below: 0.8
    for:
      hours: 0
      minutes: 5
      seconds: 0
  - trigger: numeric_state
    entity_id: sensor.zendure_p1_power_kw
    above: 5
    for: "00:02:00"
  - trigger: sun
    event: sunset
    offset: "-02:30:00"
  - trigger: sun
    event: sunrise
    offset: "02:30:00"
actions:
  - choose:
      - conditions:
          - condition: or
            conditions:
              - condition: numeric_state
                entity_id: sensor.zendure_p1_power_kw
                above: 5
              - condition: state
                entity_id: switch.nicolaas_charge
                state: "on"
                enabled: false
              - condition: state
                entity_id: binary_sensor.renault5_charging
                state: charging
                enabled: false
              - condition: state
                entity_id: input_boolean.autoisaanhetladen
                state: "on"
        sequence:
          - choose:
              - conditions:
                  - condition: state
                    entity_id: input_select.zendure_2400_ac_modus_selecteren
                    state: Standby
                sequence: []
            default:
              - target:
                  entity_id: input_select.zendure_2400_ac_modus_selecteren
                data:
                  option: Standby
                action: input_select.select_option
          - target:
              entity_id: input_text.zendure_automation_status
            data:
              value: Auto laden → batterij in Standby
            action: input_text.set_value
      - conditions:
          - condition: state
            entity_id: input_boolean.zendure_zomer_mode
            state: "on"
        sequence:
          - choose:
              - conditions:
                  - condition: state
                    entity_id: input_select.zendure_2400_ac_modus_selecteren
                    state:
                      - Dynamisch Handelen + NOM
                sequence: []
            default:
              - action: input_select.select_option
                target:
                  entity_id: input_select.zendure_2400_ac_modus_selecteren
                data:
                  option: Dynamisch Handelen + NOM
          - action: input_text.set_value
            target:
              entity_id: input_text.zendure_automation_status
            data:
              value: Zomer modus actief — Dynamisch Handelen + NOM
      - conditions:
          - condition: state
            entity_id: sensor.dynamisch_duurste_periode
            state: Ja
          - condition: numeric_state
            entity_id: sensor.zendure_2400_ac_laadpercentage
            above: 15
        sequence:
          - choose:
              - conditions:
                  - condition: state
                    entity_id: input_select.zendure_2400_ac_modus_selecteren
                    state: Nul op de meter
                sequence: []
            default:
              - target:
                  entity_id: input_select.zendure_2400_ac_modus_selecteren
                data:
                  option: Nul op de meter
                action: input_select.select_option
          - target:
              entity_id: input_text.zendure_automation_status
            data:
              value: "Dure periode: ontladen via NOM"
            action: input_text.set_value
      - conditions:
          - condition: state
            entity_id: sensor.dynamisch_goedkoopste_periode
            state: Ja
          - condition: numeric_state
            entity_id: sensor.sensor_solaredge_current_power_kwh
            below: 0.5
          - condition: numeric_state
            entity_id: sensor.dynamisch_spread_indicatie
            above: input_number.dynamisch_minimale_spread
          - condition: numeric_state
            entity_id: sensor.zendure_2400_ac_laadpercentage
            below: 99
        sequence:
          - choose:
              - conditions:
                  - condition: state
                    entity_id: input_select.zendure_2400_ac_modus_selecteren
                    state: Snel opladen
                sequence: []
            default:
              - target:
                  entity_id: input_select.zendure_2400_ac_modus_selecteren
                data:
                  option: Snel opladen
                action: input_select.select_option
          - target:
              entity_id: input_text.zendure_automation_status
            data:
              value: "Goedkope periode: snel opladen"
            action: input_text.set_value
      - conditions:
          - condition: numeric_state
            entity_id: sensor.sensor_solaredge_current_power_kwh
            above: 0.79
          - condition: state
            entity_id: sensor.dynamisch_goedkoopste_periode
            state: Nee
            enabled: false
        sequence:
          - target:
              entity_id: input_select.zendure_2400_ac_modus_selecteren
            data:
              option: Nul op de meter
            action: input_select.select_option
          - target:
              entity_id: input_text.zendure_automation_status
            data:
              value: "Goede zon: laden via NOM"
            action: input_text.set_value
      - conditions:
          - condition: numeric_state
            entity_id: sensor.sensor_solaredge_current_power_kwh
            above: 0.3
          - condition: numeric_state
            entity_id: sensor.sensor_solaredge_current_power_kwh
            below: 0.79
        sequence:
          - target:
              entity_id: input_select.zendure_2400_ac_modus_selecteren
            data:
              option: Alleen slim opladen
            action: input_select.select_option
          - target:
              entity_id: input_text.zendure_automation_status
            data:
              value: "Matige zon: alleen slim opladen"
            action: input_text.set_value
      - conditions:
          - condition: sun
            after: sunset
            after_offset: "-02:30:00"
            before: sunrise
            before_offset: "02:30:00"
          - condition: state
            entity_id: input_boolean.zendure_zomernacht_nom_toegestaan
            state: "on"
        sequence:
          - target:
              entity_id: input_select.zendure_2400_ac_modus_selecteren
            data:
              option: Nul op de meter
            action: input_select.select_option
          - target:
              entity_id: input_text.zendure_automation_status
            data:
              value: "Zomernacht: hele nacht NOM"
            action: input_text.set_value
      - conditions:
          - condition: numeric_state
            entity_id: sensor.zendure_p1_power_kw
            below: -0.8
        sequence:
          - target:
              entity_id: input_select.zendure_2400_ac_modus_selecteren
            data:
              option: Nul op de meter
            action: input_select.select_option
          - target:
              entity_id: input_text.zendure_automation_status
            data:
              value: Error SolarEdge? Genoeg zon → NOM
            action: input_text.set_value
    default:
      - target:
          entity_id: input_select.zendure_2400_ac_modus_selecteren
        data:
          option: Standby
        action: input_select.select_option
      - target:
          entity_id: input_text.zendure_automation_status
        data:
          value: Neutraal – standby
        action: input_text.set_value
mode: restart

  • koboy
  • Registratie: Juni 2001
  • Laatst online: 20:14

koboy

Heb een idee voor een icon

Flexiilex schreef op zondag 19 april 2026 @ 10:16:
Ik heb nu een weekje 8,16 kWh staan waarvan dit eerst aangestuurd werd door HEMS. Toch wilde ik voor 2026 niet NOM gaan draaien maar een modus waarin dit jaar meer winst valt te halen. Ik heb de integratie nu sinds gisteren draaien maar ik snap dus nog niet echt welke modus dit jaar rendabel is. Zelf vermoed ik dynamisch NOM (duur) ivm veel opwek op de dag en eigenlijk weinig momenten waarbij de accu zou moeten bijspringen om het huis op NOM te krijgen.

Ik snap alleen even niet zo goed hoe je dit goed werkend krijgt en misschien zit ik er wel naast wat in mijn situatie dan beter is, maar ook in de duren uren wilt de batterij gaan laden terwijl dit niet nodig is lijkt mij. In de TS staat hier verder ook niks over. Heb wel de verschillende faq gelezen op github en de modussen enz.

Iemand die mij hierbij een zetje in de juiste richting kan geven? Ik zag net ook dat @edjes een yaml had gedeeld om te zien hoeveel je verdient hebt etc etc. Is daar ergens een stappenplan van? Dat ziet er namelijk ook heel nice uit!
Voor dit jaar is dynamisch handelen meest rendabele optie.
Voor volgend jaar moet ik nog even kijken welke modus van Gielz op welk moment moet worden ingeschakeld. Wordt een langere termijn projectje omdat ik naast uitgesteld terugleveren ook op termijn opbrengst voorspelling er in wil betrekken.
Maar ik start waarschijnlijk met een aantal goedkope en dure uren ingesteld. Tot start goedkoop alleen slim ontladen, dan vanaf start goedkoop NOM, vanaf start duur maximaal ontladen tot 30% (restcapaciteit tot de zon weer op gang is) en tenslotte alleen slim ontladen.
Daarbovenop een trigger die bij verbruik boven 7kW (of boven 12A op L3) de standby modus selecteert omdat ik dan de auto aan het laden ben.

Edit: winter stand is natuurlijk gewoon NOM...

Ik zie ik zie wat jij niet ziet, en het is....... ach laat ook maar je ziet het toch niet!


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Ik heb toch het idee dat er iets niet helemaal lekker loopt bij Smart Charging. Er komt heel veel vermogen van de panelen, dus de beide zendures zouden met elk 2400W mogen laden. Maar dat doen ze niet, slechts een van de twee is aan het laden en de ander doet niks. Wat gaat hier verkeerd?

Afbeeldingslocatie: https://tweakers.net/i/YbiGPGg2jKK0mYelQihLtF48XlI=/x800/filters:strip_icc():strip_exif()/f/image/c0Ho8Y72MVIkTrULgUbuCknD.jpg?f=fotoalbum_large

Op deze manier gaat er erg veel terug het net op.

Edit: net even de batterijen op standby gezet en daarna weer op smart matching. Nu lijken zelfs alle sensoren niet beschikbaar en wordt er ook niet geladen. Hulp is welkom 🙂

Edit 2: na een herstart van de batterijen en eerst even HEMS geactiveerd te hebben, lijkt de boel het weer te doen. Opvallend was dat in HEMS hetzelfde beeld te zien was. Wat dat nou getriggerd heeft…. Ik hou het in de gaten.

[ Voor 22% gewijzigd door Gramser op 19-04-2026 12:12 ]


  • Tortelli
  • Registratie: Juli 2004
  • Laatst online: 29-05 16:42

Tortelli

mixing gas and haulin ass

Ik had dit gister ook, na een reboot (update van HA zelf) werkte alles ineens probleemloos.

  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 18:39

Hippe Lip

Er valt altijd wat te leren

edjes schreef op zaterdag 18 april 2026 @ 17:53:
Ik heb zes kantjes en maanden werk in een ROI. 8)

Hier, kan je spelen.
Uitgangspunt: zonnepanelen (solaredge), tibber
Het is erg complex, maar zeer volledig.
Plaats roi.yaml in packages
ROI.yaml: https://www.dropbox.com/s...hfemrk8dxxsb35xuyksi&dl=0
Je uitgangspunten lijken in te houden dat dit alleen werkt als je een contract bij Tibber hebt? Ik zit ergens anders (en wil daar niet weg), maar zou dit graag gebruiken.

Informatiehonger... :henk

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • Hippe Lip
  • Registratie: Februari 2011
  • Laatst online: 18:39

Hippe Lip

Er valt altijd wat te leren

@gielz
Ik gebruik tot nu toe je Dynamisch-HA integratie, maar voor de Zendure heb ik de Zendure-HA-zenSDK nodig, als ik het goed begrijp.

Kunnen die twee naast elkaar draaien, of moet ik die Dynamisch-HA eerst verwijderen voordat ik de Zendure-HA-zenSDK kan installeren?

Verdraagzaamheid is het hoogste gebod
en wie dat niet eert die schoppen we rot.
<John O`Mill>


  • edjes
  • Registratie: December 2025
  • Laatst online: 26-05 20:36
Hippe Lip schreef op zondag 19 april 2026 @ 13:21:
[...]

Je uitgangspunten lijken in te houden dat dit alleen werkt als je een contract bij Tibber hebt? Ik zit ergens anders (en wil daar niet weg), maar zou dit graag gebruiken.

Informatiehonger... :henk
Klopt en zonnepanelen van solaredge hebt.
Maar met wat puzzelen waar al jouw sensoren vandaan komen kan je dit toch prima vertimmeren?
Bij elke berekening staat wat het doel is en als je zonnepanelen info weg laat is het een stuk beknopter.

De basisberekening is welke kosten heb je nu met batterij versus welke virtuele kosten zou je hebben zonder batterij. De rest erom heen is heel veel info met name over hoe rendabel de solars zijn.
Gooi deze yaml en faq in claude.ai bijvoorbeeld en pas aan op je eigen situatie.

Ik heb ook een FAQ, die kan je meeposten naar de AI:
https://www.dropbox.com/s...2v67z40pryulq1ch778p&dl=0

[ Voor 3% gewijzigd door edjes op 19-04-2026 14:35 ]


  • RemmyB83
  • Registratie: Augustus 2018
  • Laatst online: 19:35
edjes schreef op zondag 19 april 2026 @ 14:32:
[...]


Klopt en zonnepanelen van solaredge hebt.
Maar met wat puzzelen waar al jouw sensoren vandaan komen kan je dit toch prima vertimmeren?
Bij elke berekening staat wat het doel is en als je zonnepanelen info weg laat is het een stuk beknopter.

De basisberekening is welke kosten heb je nu met batterij versus welke virtuele kosten zou je hebben zonder batterij. De rest erom heen is heel veel info met name over hoe rendabel de solars zijn.
Gooi deze yaml en faq in claude.ai bijvoorbeeld en pas aan op je eigen situatie.

Ik heb ook een FAQ, die kan je meeposten naar de AI:
https://www.dropbox.com/s...2v67z40pryulq1ch778p&dl=0
Ik vind het knap dat je dit allemaal voor elkaar hebt gekregen, en met ons wil delen.

Maar het is mijn net even te complex om dit allemaal na te lopen en aan te passen.
Misschien is net als bij gielz integratie, het mogelijk om een instellingen tab te maken?
Dan kunnen andere mensen met minder ervaring net als ik, het ook makkelijker aanpassen.

In iedergeval mijn complimenten voor je dashboard 👌

🇳🇱Pijnacker Oost/West


  • gast777
  • Registratie: Februari 2023
  • Laatst online: 28-05 21:01
Gramser schreef op zondag 19 april 2026 @ 11:46:
Ik heb toch het idee dat er iets niet helemaal lekker loopt bij Smart Charging. Er komt heel veel vermogen van de panelen, dus de beide zendures zouden met elk 2400W mogen laden. Maar dat doen ze niet, slechts een van de twee is aan het laden en de ander doet niks. Wat gaat hier verkeerd?

[Afbeelding]

Op deze manier gaat er erg veel terug het net op.

Edit: net even de batterijen op standby gezet en daarna weer op smart matching. Nu lijken zelfs alle sensoren niet beschikbaar en wordt er ook niet geladen. Hulp is welkom 🙂

Edit 2: na een herstart van de batterijen en eerst even HEMS geactiveerd te hebben, lijkt de boel het weer te doen. Opvallend was dat in HEMS hetzelfde beeld te zien was. Wat dat nou getriggerd heeft…. Ik hou het in de gaten.
Op je screenshot is te zien dat de Proxy naar beide Zendures de opdracht stuurt om met 2400 Watt te laden, dus dat ziet er goed uit.

Maar om een of andere reden doen de Zendures dat niet. De vraag is wat de reden hiervoor is.

Is je wifi verbinding naar de beide Zendures "Uitstekend"? Misschien vallen er opdrachten weg?

6 kWp solar | Daikin Intergas Hybride 8kW | Tesla Model Y RWD 2023 | Fiat 500e 2014 | Zendure SF2400AC 17 kWh


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
gast777 schreef op zondag 19 april 2026 @ 15:02:
[...]


Op je screenshot is te zien dat de Proxy naar beide Zendures de opdracht stuurt om met 2400 Watt te laden, dus dat ziet er goed uit.

Maar om een of andere reden doen de Zendures dat niet. De vraag is wat de reden hiervoor is.

Is je wifi verbinding naar de beide Zendures "Uitstekend"? Misschien vallen er opdrachten weg?
Dank voor je reactie! Ja ik denk dat dit niet aan jouw werk lag - dit moet iets in de zendures geweest zijn. Ik zag dat het ook in HEMS gebeurde toen ik dat weer activeerde. Het laden van de ene Zendure bleef op 728W staan terwijl de andere standby stond - met 4kW teruglevering… WiFi verbinding heb ik altijd op uitstekend zien staan - maar nu niet specifiek op gelet.

  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Overigens heb ik net met succes mijn seat phev in evcc opgenomen en laten samenwerken met gielz/gast777: de grannycharger is nu “slim”, en volgt het PV-overschot maar houdt een minimum vermogen aan. De Zendures mogen bijspringen tot 30% lading, daaronder doen ze niet meer mee. En ondertussen stuurt smart matching op nulmop de meter. Ik vind het helemaal mooi!

  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
En dan een laatste observatie die ik niet helemaal kan plaatsen: ik ben aan het laden en ontladen tegelijk, aan Power te zien…?

Afbeeldingslocatie: https://tweakers.net/i/opr8Uz_PzH-Ytfi14l2jnWjwuuw=/800x/filters:strip_icc():strip_exif()/f/image/qehgNlgnb5deMDKWq2wss53u.jpg?f=fotoalbum_large
Hippe Lip schreef op zondag 19 april 2026 @ 13:26:
@gielz
Ik gebruik tot nu toe je Dynamisch-HA integratie, maar voor de Zendure heb ik de Zendure-HA-zenSDK nodig, als ik het goed begrijp.

Kunnen die twee naast elkaar draaien, of moet ik die Dynamisch-HA eerst verwijderen voordat ik de Zendure-HA-zenSDK kan installeren?
Je kunt Dynamisch-HA verwijderen in de configuration.yaml of je package. Naast elkaar laten werken heeft weinig zin.

Zendure-HA.com | Run Zendure your way — in Home Assistant


  • gast777
  • Registratie: Februari 2023
  • Laatst online: 28-05 21:01
Gramser schreef op zondag 19 april 2026 @ 15:33:
En dan een laatste observatie die ik niet helemaal kan plaatsen: ik ben aan het laden en ontladen tegelijk, aan Power te zien…?

[Afbeelding]
Dit weet ik wel wat het is en dat is opgelost in de laatste Proxy versie.

Wat er gebeurt is het volgende. Je hebt twee Zendures. Bij lagere vermogens is er 1 daarvan aktief, de andere in standby. Als er gewisseld wordt van device of als je van 2 naar 1 device gaat, wordt er dus een op 0 Watt gezet. Na 5 minuten zet de proxy die op 'slaapmode' oftewel smartmode=0 oftewel 'opslaan in Flash'. Daarna heb ik hier ook gezien dat "outputPackPower" een laag vermogen aangeeft, rond de 20 Watt. Dit is Zendure gedrag en is niets aan te doen en op zichzelf geen probleem.

De huidige versie van Gielz ziet dat als Opladen met 20W, terwijl de andere Zendure aan het Ontladen is. De proxy combineert deze waarden in een device. Zo krijg je het beeld in je screenshot met laden en ontladen tegelijk.

Dat alleen is nog niet echt een probleem eigenlijk, hoewel het er wat raar uitziet. Maar ik heb gezien dat dit ook kan leiden tot wat ander incorrect gedrag omdat Gielz HA dit ziet als Opladen terwijl je eigenlijk aan het ontladen bent. Daardoor kreeg ik het fenomeen dat na een device wissel weer een wissel terug gedaan werd, wat niet de bedoeling is.

In de nieuwste Proxy versie is dit dus opgelost. De Proxy houdt nu rekening met dit Zendure gedrag en zorgt ervoor dat altijd laden of ontladen op 0 Watt is. In bovenstaande situatie wordt nu het kleine 'oplaad' getal van het grote 'ontlaad' getal afgetrokken en dan aan HA doorgegeven.

Dus ik zou aanraden om de laatste Proxy versie op je node-RED te zetten.

6 kWp solar | Daikin Intergas Hybride 8kW | Tesla Model Y RWD 2023 | Fiat 500e 2014 | Zendure SF2400AC 17 kWh


  • RemmyB83
  • Registratie: Augustus 2018
  • Laatst online: 19:35
gast777 schreef op zondag 19 april 2026 @ 17:37:
[...]


Dit weet ik wel wat het is en dat is opgelost in de laatste Proxy versie.

Wat er gebeurt is het volgende. Je hebt twee Zendures. Bij lagere vermogens is er 1 daarvan aktief, de andere in standby. Als er gewisseld wordt van device of als je van 2 naar 1 device gaat, wordt er dus een op 0 Watt gezet. Na 5 minuten zet de proxy die op 'slaapmode' oftewel smartmode=0 oftewel 'opslaan in Flash'. Daarna heb ik hier ook gezien dat "outputPackPower" een laag vermogen aangeeft, rond de 20 Watt. Dit is Zendure gedrag en is niets aan te doen en op zichzelf geen probleem.

De huidige versie van Gielz ziet dat als Opladen met 20W, terwijl de andere Zendure aan het Ontladen is. De proxy combineert deze waarden in een device. Zo krijg je het beeld in je screenshot met laden en ontladen tegelijk.

Dat alleen is nog niet echt een probleem eigenlijk, hoewel het er wat raar uitziet. Maar ik heb gezien dat dit ook kan leiden tot wat ander incorrect gedrag omdat Gielz HA dit ziet als Opladen terwijl je eigenlijk aan het ontladen bent. Daardoor kreeg ik het fenomeen dat na een device wissel weer een wissel terug gedaan werd, wat niet de bedoeling is.

In de nieuwste Proxy versie is dit dus opgelost. De Proxy houdt nu rekening met dit Zendure gedrag en zorgt ervoor dat altijd laden of ontladen op 0 Watt is. In bovenstaande situatie wordt nu het kleine 'oplaad' getal van het grote 'ontlaad' getal afgetrokken en dan aan HA doorgegeven.

Dus ik zou aanraden om de laatste Proxy versie op je node-RED te zetten.
Via jouw NR heb ik 2x een sf800plus draaien.
En op 1 van de 2 batterijen heb ik zonnepanelen aangesloten, en ivm terugleverkosten heb ik de export geblokkeerd. Dus alleen opwekken wat ik nodig heb.

Zou het kunnen dat als de batterij met zonnepanelen vol is, dat die zonnepanelen ook stoppen met leveren voor dat de andere batterij vol is omdat je ze ombeurten laat laden?

🇳🇱Pijnacker Oost/West


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
gast777 schreef op zondag 19 april 2026 @ 17:37:
[...]


Dit weet ik wel wat het is en dat is opgelost in de laatste Proxy versie.

Wat er gebeurt is het volgende. Je hebt twee Zendures. Bij lagere vermogens is er 1 daarvan aktief, de andere in standby. Als er gewisseld wordt van device of als je van 2 naar 1 device gaat, wordt er dus een op 0 Watt gezet. Na 5 minuten zet de proxy die op 'slaapmode' oftewel smartmode=0 oftewel 'opslaan in Flash'. Daarna heb ik hier ook gezien dat "outputPackPower" een laag vermogen aangeeft, rond de 20 Watt. Dit is Zendure gedrag en is niets aan te doen en op zichzelf geen probleem.

De huidige versie van Gielz ziet dat als Opladen met 20W, terwijl de andere Zendure aan het Ontladen is. De proxy combineert deze waarden in een device. Zo krijg je het beeld in je screenshot met laden en ontladen tegelijk.

Dat alleen is nog niet echt een probleem eigenlijk, hoewel het er wat raar uitziet. Maar ik heb gezien dat dit ook kan leiden tot wat ander incorrect gedrag omdat Gielz HA dit ziet als Opladen terwijl je eigenlijk aan het ontladen bent. Daardoor kreeg ik het fenomeen dat na een device wissel weer een wissel terug gedaan werd, wat niet de bedoeling is.

In de nieuwste Proxy versie is dit dus opgelost. De Proxy houdt nu rekening met dit Zendure gedrag en zorgt ervoor dat altijd laden of ontladen op 0 Watt is. In bovenstaande situatie wordt nu het kleine 'oplaad' getal van het grote 'ontlaad' getal afgetrokken en dan aan HA doorgegeven.

Dus ik zou aanraden om de laatste Proxy versie op je node-RED te zetten.
Helder! Maar, ik heb jouw proxy twee dagen terug geinstalleerd - is dat niet de nieuwste versie dan?

Edit: ik geloof dat ik inderdaad een oude heb. Is het een kwestie van de huidige flow deleten en de nieuwe downloaden en deployen? En de ip-adressen weer ingeven?

Ik ga maar even een backup maken… blijven alle proxysensoren en het overzicht in het giekz dashboard wel intact?

[ Voor 7% gewijzigd door Gramser op 19-04-2026 18:19 ]


  • gast777
  • Registratie: Februari 2023
  • Laatst online: 28-05 21:01
Gramser schreef op zondag 19 april 2026 @ 18:08:
[...]


Helder! Maar, ik heb jouw proxy twee dagen terug geinstalleerd - is dat niet de nieuwste versie dan?

Edit: ik geloof dat ik inderdaad een oude heb. Is het een kwestie van de huidige flow deleten en de nieuwe downloaden en deployen? En de ip-adressen weer ingeven?

Ik ga maar even een backup maken… blijven alle proxysensoren en het overzicht in het giekz dashboard wel intact?
Toevallig heb ik gisteren en vandaag een nieuwe versie gepost (huidige is 20260419, de fix zit er in vanaf 20260418).

6 kWp solar | Daikin Intergas Hybride 8kW | Tesla Model Y RWD 2023 | Fiat 500e 2014 | Zendure SF2400AC 17 kWh


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Haha, zul je altijd zien 🙂. Mooi werk dat je het zo bijhoudt. Klopt mijn “update-aanpak”…?
Gramser schreef op zondag 19 april 2026 @ 18:08:
[...]


Helder! Maar, ik heb jouw proxy twee dagen terug geinstalleerd - is dat niet de nieuwste versie dan?

Edit: ik geloof dat ik inderdaad een oude heb. Is het een kwestie van de huidige flow deleten en de nieuwe downloaden en deployen? En de ip-adressen weer ingeven?

Ik ga maar even een backup maken… blijven alle proxysensoren en het overzicht in het giekz dashboard wel intact?
Idd flow verwijderen. Nieuwe toevoegen. IP adressen toevoegen en deploy. Als het goed is gaat hij direct verder. Backup maken kan voor de zekerheid. Alle sensoren blijven intact. Alleen als je gielz gaat updaten wel de proxy sensoren weer terugzetten in je package van gielz.

Denk in kansen, niet in problemen. Homewizard Plug-In Battery 5.4 kWh. Zendure 2400 AC 17.2 kWh. Testen Accumate 4.8 kWh Plug-In Battery. 3330 Wp zonnepanelen. EV 77 kWh. Peblar Business Laadpaal.


  • Flexiilex
  • Registratie: September 2011
  • Laatst online: 19:59
koboy schreef op zondag 19 april 2026 @ 11:32:
[...]


Voor dit jaar is dynamisch handelen meest rendabele optie.
Voor volgend jaar moet ik nog even kijken welke modus van Gielz op welk moment moet worden ingeschakeld. Wordt een langere termijn projectje omdat ik naast uitgesteld terugleveren ook op termijn opbrengst voorspelling er in wil betrekken.
Maar ik start waarschijnlijk met een aantal goedkope en dure uren ingesteld. Tot start goedkoop alleen slim ontladen, dan vanaf start goedkoop NOM, vanaf start duur maximaal ontladen tot 30% (restcapaciteit tot de zon weer op gang is) en tenslotte alleen slim ontladen.
Daarbovenop een trigger die bij verbruik boven 7kW (of boven 12A op L3) de standby modus selecteert omdat ik dan de auto aan het laden ben.

Edit: winter stand is natuurlijk gewoon NOM...
Wat gebruik je nu? Of gebruik je de integratie nog niet? Denk dat ik vanmorgen teveel gewisseld heb van modussen. Iemand een tip hoe je dan een “reset” kan geven? Naar een andere modus gaan stopte niet het gedrag om te laden.

En, iedereen gebruik 1 uur ipv 15 min denk ik? De omvormer doet er namelijk 10 minuten over om van stand-by naar 2400 watt te gaan. Beetje zonde dus om op 15 min dynamisch handelen te gaan doen

  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Devke schreef op zondag 19 april 2026 @ 18:53:
[...]

Idd flow verwijderen. Nieuwe toevoegen. IP adressen toevoegen en deploy. Als het goed is gaat hij direct verder. Backup maken kan voor de zekerheid. Alle sensoren blijven intact. Alleen als je gielz gaat updaten wel de proxy sensoren weer terugzetten in je package van gielz.
Thanks @Devke ! Dan gaan we dat binnenkort ook maar even doen.

Ik heb nog een vraag voor de kenners: het aantal relay switches - is dat het totaal van het aantal aansturende zendures? Dus als je twee torens hebt, zo’n beetje door twee delen voor het aantal per zendure?

  • ..Christiaan..
  • Registratie: April 2009
  • Laatst online: 18:23

..Christiaan..

..zwll..

Dinsdag ben ik eigenaar van een Zendure 2400AC+. Is het beter om het gelijk via HA te laten lopen? Of eerst de standaard installatie en daarna de handleiding hier?

Samsung Qled | Sonos Arc Ultra; Sub 2nd; 2x Era100 | PS5 | DS218+ | DIRIGERA | Iptv | B&W 607s3 | NAD C338 | Argon Audio TT4SE | Streetfishing |


  • koboy
  • Registratie: Juni 2001
  • Laatst online: 20:14

koboy

Heb een idee voor een icon

Flexiilex schreef op zondag 19 april 2026 @ 18:54:
[...]


Wat gebruik je nu? Of gebruik je de integratie nog niet? Denk dat ik vanmorgen teveel gewisseld heb van modussen. Iemand een tip hoe je dan een “reset” kan geven? Naar een andere modus gaan stopte niet het gedrag om te laden.

En, iedereen gebruik 1 uur ipv 15 min denk ik? De omvormer doet er namelijk 10 minuten over om van stand-by naar 2400 watt te gaan. Beetje zonde dus om op 15 min dynamisch handelen te gaan doen
Hij staat nu op dynamisch handelen in Gielz. 2400AC met 4x AB3000X. 6 uur goedkoop, 5 uur duur, minimale spread 25%.
Ontladen duurt dik 4 uur, opladen net een paar minuten meer dan 5 met de laatste update.

Wat ik zie is dat hij in een paar tellen naar vol vermogen gaat en terug, alleen het einde van het (ont)laden wordt teruggeregeld. Ik zou dus prima kwartier tarieven kunnen gebruiken, maar Zonneplan doet daar nog niet aan en rekent nog in uren.

Ik zie ik zie wat jij niet ziet, en het is....... ach laat ook maar je ziet het toch niet!


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Ik heb eerst de standaard installatie gedaan, met de zendure p1 meter en daarna hems geactiveerd. Kon ik een beetje begrijpen hoe dat werkte, voor ik me aan Gielz waagde. Was (is) een steile leercurve voor mij dus ik ben blij dat ik het zo gedaan heb.
Gramser schreef op zondag 19 april 2026 @ 18:58:
[...]

Thanks @Devke ! Dan gaan we dat binnenkort ook maar even doen.

Ik heb nog een vraag voor de kenners: het aantal relay switches - is dat het totaal van het aantal aansturende zendures? Dus als je twee torens hebt, zo’n beetje door twee delen voor het aantal per zendure?
5 minuten werk, heb net de boel even weer naar de laatste versie gebracht.

Denk in kansen, niet in problemen. Homewizard Plug-In Battery 5.4 kWh. Zendure 2400 AC 17.2 kWh. Testen Accumate 4.8 kWh Plug-In Battery. 3330 Wp zonnepanelen. EV 77 kWh. Peblar Business Laadpaal.


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Devke schreef op zondag 19 april 2026 @ 19:48:
[...]

5 minuten werk, heb net de boel even weer naar de laatste versie gebracht.
Ik ook, viel mee 🙂

Weet je toevallig ook hoe dat werkt met die relay switches?
Gramser schreef op zondag 19 april 2026 @ 19:59:
[...]

Ik ook, viel mee 🙂

Weet je toevallig ook hoe dat werkt met die relay switches?
Die begrijp ik ook niet helemaal eerlijk gezegd. Daar kan @gast777 wel iets over zeggen. Staan er 6 schakelingen dan is dat volgens mij over de hele Virtuele Zendure. Of ze nu bij Set 1, Set 2 of verdeeld zijn gevallen kun je er niet uithalen. Weet dit niet zeker dus @gast777 correct me if i am wrong.

Denk in kansen, niet in problemen. Homewizard Plug-In Battery 5.4 kWh. Zendure 2400 AC 17.2 kWh. Testen Accumate 4.8 kWh Plug-In Battery. 3330 Wp zonnepanelen. EV 77 kWh. Peblar Business Laadpaal.


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Devke schreef op zondag 19 april 2026 @ 20:12:
[...]

Die begrijp ik ook niet helemaal eerlijk gezegd. Daar kan @gast777 wel iets over zeggen. Staan er 6 schakelingen dan is dat volgens mij over de hele Virtuele Zendure. Of ze nu bij Set 1, Set 2 of verdeeld zijn gevallen kun je er niet uithalen. Weet dit niet zeker dus @gast777 correct me if i am wrong.
In de help/info staat dat 100 op een deels bewolkte dag normaal is. Ik heb er 189 nu. Twee torens dus ik dacht zo’n 90 per stuk.
Gramser schreef op zondag 19 april 2026 @ 20:33:
[...]

In de help/info staat dat 100 op een deels bewolkte dag normaal is. Ik heb er 189 nu. Twee torens dus ik dacht zo’n 90 per stuk.
Vergelijken kan ik even niet met je. Hij staat hier veel op Dynamisch Handelen en dat zijn er maar een paar per dag.

Denk in kansen, niet in problemen. Homewizard Plug-In Battery 5.4 kWh. Zendure 2400 AC 17.2 kWh. Testen Accumate 4.8 kWh Plug-In Battery. 3330 Wp zonnepanelen. EV 77 kWh. Peblar Business Laadpaal.


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Snap ik. Op dagen als vandaag met zon/wolk/zon/wolk/etc en NoM, switcht hij blijkbaar veel 🙂

  • RemmyB83
  • Registratie: Augustus 2018
  • Laatst online: 19:35
Gramser schreef op zondag 19 april 2026 @ 19:59:
[...]

Ik ook, viel mee 🙂

Weet je toevallig ook hoe dat werkt met die relay switches?
Als ik kijk in gielz integratie zou ik er 515 hebben gehad.
Als ik in de Zendure integratie kijk zou batterij 1 er 150 hebben gehad en batterij 2 er 300.
Ik vind het verschil tussen tussen beide dan ook best wel opmerkelijk.

🇳🇱Pijnacker Oost/West


  • Flexiilex
  • Registratie: September 2011
  • Laatst online: 19:59
Devke schreef op zondag 19 april 2026 @ 20:36:
[...]

Vergelijken kan ik even niet met je. Hij staat hier veel op Dynamisch Handelen en dat zijn er maar een paar per dag.
Bekijk jij dagelijks of je dynamisch wilt handelen of heb je notificatie ingesteld oid als er geen grote spread is voor dynamisch handelen zodat je hem op een andere modus kan zetten? Zo ja, welke modus dan?
Flexiilex schreef op zondag 19 april 2026 @ 20:38:
[...]


Bekijk jij dagelijks of je dynamisch wilt handelen of heb je notificatie ingesteld oid als er geen grote spread is voor dynamisch handelen zodat je hem op een andere modus kan zetten? Zo ja, welke modus dan?
Ik kijk dagelijks even. Bepaal dan voor die dag hoeveel uur laden en ontladen. Kijk daarbij naar spread indicatie. Boven de 30% dan vaak Dynamisch Handelen. Mocht er nog stroom overzijn in de batterij dan heb je kans dat ik hem na de handel nog even op NOM zet. Leeg voor de nieuwe dag. Dynamisch Handelen NOM dan vaak. Mocht ik vergeten terug te schakelen dan zorgt deze stand toch voor Dynamische handel.

[ Voor 8% gewijzigd door Devke op 19-04-2026 20:43 ]

Denk in kansen, niet in problemen. Homewizard Plug-In Battery 5.4 kWh. Zendure 2400 AC 17.2 kWh. Testen Accumate 4.8 kWh Plug-In Battery. 3330 Wp zonnepanelen. EV 77 kWh. Peblar Business Laadpaal.


  • slvans
  • Registratie: April 2011
  • Laatst online: 18:15
Ik ben al een tijdje bezig en kom er helaas echt niet uit. Ik heb de Zendure 2400 AC+ gisteren ontvangen. Ik gebruik deze tot nu met de p1 meter via HEMS. Nu wil ik hem in Home Assistant krijgen. Dit wilde ik eerst doen via de Zendure integratie via HACS. Dit ging niet goed. Hij verbond wel, maar ik kreeg geen data door. Deze heb ik uiteindelijk uitgezet in Home Assistant. Ik wilde later naar de Gielz1986 ZenSDk gaan. Daar ben ik gister avond aan begonnen. Maar ik kom niet verder. Tot de stap dat je Automation moet plakken in de automatisering gaat alles goed. Daarna krijg ik de volgende foutmelding. (zie afbeelding onderaan)

Belangrijk om te weten:
Ik draai Home Assistant via Docker op een Synology NAS.
Mijn Zendure kan ik niet update verder dan firmware 1.03, dat lijken meer mensen te hebben die er sinds kort mee zijn gestart las ik in forums van Zendure zelf.
Ik gebruik de Homewizard P1 meter.

Wat heb ik al gedaan:
Al drie keer alles verwijderd en volledig opnieuw gestart met wat ik moet doen volgens https://github.com/Gielz1...DK/blob/main/README.nl.md
Via Chatgpt geprobeerd tot een antwoord te komen.

Ik start met HEMS uitzetten in de app op mijn telefoon. Ik zet het vinkje om bij de accu "toevoegen aan HEMS", maar verwijder het niet of iets dergelijks. Vervolgens pas in de configuration file aan en zet ik de bestanden over.
Het lijkt maar niet te lukken. Heeft iemand anders een goed idee?


Afbeeldingslocatie: https://tweakers.net/i/LxcK9bhAZJrn4sNB3mQr4tP4CB4=/800x/filters:strip_icc():strip_exif()/f/image/GsN58b546ujeBwGLHgiRU20J.jpg?f=fotoalbum_large

[ Voor 0% gewijzigd door slvans op 19-04-2026 20:48 . Reden: kleine aanpassingen ]


  • Pakhaas
  • Registratie: Juli 2016
  • Nu online
Gramser schreef op zondag 19 april 2026 @ 20:38:
Snap ik. Op dagen als vandaag met zon/wolk/zon/wolk/etc en NoM, switcht hij blijkbaar veel 🙂
Waarom niet Dynamisch Handelen? Dat levert dit jaar met salderen nog het meeste op.

Met 2 omvormers kan je mooi wat kwh's verplaatsen in korte tijd.

[ Voor 12% gewijzigd door Pakhaas op 19-04-2026 20:51 ]


  • Flexiilex
  • Registratie: September 2011
  • Laatst online: 19:59
Devke schreef op zondag 19 april 2026 @ 20:42:
[...]

Ik kijk dagelijks even. Bepaal dan voor die dag hoeveel uur laden en ontladen. Kijk daarbij naar spread indicatie. Boven de 30% dan vaak Dynamisch Handelen. Mocht er nog stroom overzijn in de batterij dan heb je kans dat ik hem na de handel nog even op NOM zet. Leeg voor de nieuwe dag. Dynamisch Handelen NOM dan vaak. Mocht ik vergeten terug te schakelen dan zorgt deze stand toch voor Dynamische handel.
Aah slim, op hoeveel uur goedkoop en duur staan je instellingen? Gebaseerd op hoeveel kWh je hebt vermoed ik? Dus na dynamisch handelen zet je hem vaak nog dynamisch handelen + NOM zodat hij verder NOM gaat doen omdat er geen dure/goedkope uren meer zijn? Begrijp ik dat goed. En door Dynamisch handelen + NOM gaat hij wel weer de volgende dag handelen.

Kom net kijken met de integratie dus moet t nog ff een beetje begrijpen. Er is ook niet echt een wiki in de TS of verzameling met info o.i.d.

Ohja, 25 of 30% dat komt door de laad en ontlaadverliezen anders verdien je niks natuurlijk maar mis ik daar nog iets over het hoofd? Morgen is bijvoorbeeld de spread niet zo enorm groot

Heeft iemand ook al iets moois gebouwd in HA waardoor je ke verdiensten per dag kan zien o.i.d? Ik zag paar posts terug wel iets voorbij komen dacht ik

[ Voor 13% gewijzigd door Flexiilex op 19-04-2026 20:54 ]


  • Pakhaas
  • Registratie: Juli 2016
  • Nu online
Devke schreef op zondag 19 april 2026 @ 20:42:
[...]

Ik kijk dagelijks even. Bepaal dan voor die dag hoeveel uur laden en ontladen. Kijk daarbij naar spread indicatie. Boven de 30% dan vaak Dynamisch Handelen. Mocht er nog stroom overzijn in de batterij dan heb je kans dat ik hem na de handel nog even op NOM zet. Leeg voor de nieuwe dag. Dynamisch Handelen NOM dan vaak. Mocht ik vergeten terug te schakelen dan zorgt deze stand toch voor Dynamische handel.
Zo doe ik het ook, maar zorg altijd wel dat de batterijen leeg zijn, of ik ontlaad de volgende ochtend als dan de tarieven hoger zijn (zoals vandaag en morgen ochtend).

Op dagen met te weinig spread heb ik een automatisering die bij goedkope uren hem op alleen slim laden zet en max ontladen bij dure uren of NOM.

  • Pakhaas
  • Registratie: Juli 2016
  • Nu online
Flexiilex schreef op zondag 19 april 2026 @ 20:51:
[...]


Aah slim, op hoeveel uur goedkoop en duur staan je instellingen? Gebaseerd op hoeveel kWh je hebt vermoed ik? Dus na dynamisch handelen zet je hem vaak nog dynamisch handelen + NOM zodat hij verder NOM gaat doen omdat er geen dure/goedkope uren meer zijn? Begrijp ik dat goed. En door Dynamisch handelen + NOM gaat hij wel weer de volgende dag handelen.

Kom net kijken met de integratie dus moet t nog ff een beetje begrijpen. Er is ook niet echt een wiki in de TS of verzameling met info o.i.d.

Ohja, 25 of 30% dat komt door de laad en ontlaadverliezen anders verdien je niks natuurlijk maar mis ik daar nog iets over het hoofd? Morgen is bijvoorbeeld de spread niet zo enorm groot

Heeft iemand ook al iets moois gebouwd in HA waardoor je ke verdiensten per dag kan zien o.i.d? Ik zag paar posts terug wel iets voorbij komen dacht ik
Je hebt een modus Dynamisch Handelen + NOM, dus hoef je overdag niets te wijzigen.

  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Pakhaas schreef op zondag 19 april 2026 @ 20:50:
[...]

Waarom niet Dynamisch Handelen? Dat levert dit jaar met salderen nog het meeste op.

Met 2 omvormers kan je mooi wat kwh's verplaatsen in korte tijd.
Ik heb gewoon nog een vast contract. Geen dynamische tarieven. En nog 11,5 TLV. Ik ben gewoon lekker aan het spelen :+
Flexiilex schreef op zondag 19 april 2026 @ 20:51:
[...]


Aah slim, op hoeveel uur goedkoop en duur staan je instellingen? Gebaseerd op hoeveel kWh je hebt vermoed ik? Dus na dynamisch handelen zet je hem vaak nog dynamisch handelen + NOM zodat hij verder NOM gaat doen omdat er geen dure/goedkope uren meer zijn? Begrijp ik dat goed. En door Dynamisch handelen + NOM gaat hij wel weer de volgende dag handelen.

Kom net kijken met de integratie dus moet t nog ff een beetje begrijpen. Er is ook niet echt een wiki in de TS of verzameling met info o.i.d.

Ohja, 25 of 30% dat komt door de laad en ontlaadverliezen anders verdien je niks natuurlijk maar mis ik daar nog iets over het hoofd? Morgen is bijvoorbeeld de spread niet zo enorm groot

Heeft iemand ook al iets moois gebouwd in HA waardoor je ke verdiensten per dag kan zien o.i.d? Ik zag paar posts terug wel iets voorbij komen dacht ik
Ik probeer altijd alle uren te pakken. Standaard is 3. Vandaag waren er meer uren laag. Wat ik dan doe is die allemaal selecteren en het laadvermogen te verlagen. Bij 2400 Watt is de efficiency een 91%. Bij 1800 Watt is die 93%. Dus vandaag op 1800 gezet gezien de uren. Ontladen is altijd 3. Dan zijn ze een eind leeg. Wat je zegt, je moet wel zo plannen dat de batterijen vol komen.

Afbeeldingslocatie: https://tweakers.net/i/yPEA19i0orfOTEsspyrRHJLyFJI=/800x/filters:strip_icc():strip_exif()/f/image/cv0iFaHlMvV3TtECU8bpDMeq.jpg?f=fotoalbum_large

Vandaag dus deze instelling. Genoeg goedkope uren. Duur maar 1. Waarom? Morgenochtend een betere prijs.

Afbeeldingslocatie: https://tweakers.net/i/q9DH2yCNDqg-NhViUOG-1nUYPLo=/800x/filters:strip_icc():strip_exif()/f/image/YiTSOCaFGXC8D3KTeLjFNexX.jpg?f=fotoalbum_large

Dynamisch Handelen NOM zet ik hem dus neer als ik leeg wil zijn voor de nieuwe handel. Dan loopt de batterij dus verder leeg op NOM en zal bij de volgende goedkope uren weer laden.

Die 30% is idd voor het afdekken van laad- en ontlaadverliezen.

Denk in kansen, niet in problemen. Homewizard Plug-In Battery 5.4 kWh. Zendure 2400 AC 17.2 kWh. Testen Accumate 4.8 kWh Plug-In Battery. 3330 Wp zonnepanelen. EV 77 kWh. Peblar Business Laadpaal.


  • Pakhaas
  • Registratie: Juli 2016
  • Nu online
Gramser schreef op zondag 19 april 2026 @ 20:57:
[...]

Ik heb gewoon nog een vast contract. Geen dynamische tarieven. En nog 11,5 TLV. Ik ben gewoon lekker aan het spelen :+
En teruglever boete? Dan is NOM idd wel goed. Maar is je batterij de volgende dag wel leeg?
slvans schreef op zondag 19 april 2026 @ 20:46:
Ik ben al een tijdje bezig en kom er helaas echt niet uit. Ik heb de Zendure 2400 AC+ gisteren ontvangen. Ik gebruik deze tot nu met de p1 meter via HEMS. Nu wil ik hem in Home Assistant krijgen. Dit wilde ik eerst doen via de Zendure integratie via HACS. Dit ging niet goed. Hij verbond wel, maar ik kreeg geen data door. Deze heb ik uiteindelijk uitgezet in Home Assistant. Ik wilde later naar de Gielz1986 ZenSDk gaan. Daar ben ik gister avond aan begonnen. Maar ik kom niet verder. Tot de stap dat je Automation moet plakken in de automatisering gaat alles goed. Daarna krijg ik de volgende foutmelding. (zie afbeelding onderaan)

Belangrijk om te weten:
Ik draai Home Assistant via Docker op een Synology NAS.
Mijn Zendure kan ik niet update verder dan firmware 1.03, dat lijken meer mensen te hebben die er sinds kort mee zijn gestart las ik in forums van Zendure zelf.
Ik gebruik de Homewizard P1 meter.

Wat heb ik al gedaan:
Al drie keer alles verwijderd en volledig opnieuw gestart met wat ik moet doen volgens https://github.com/Gielz1...DK/blob/main/README.nl.md
Via Chatgpt geprobeerd tot een antwoord te komen.

Ik start met HEMS uitzetten in de app op mijn telefoon. Ik zet het vinkje om bij de accu "toevoegen aan HEMS", maar verwijder het niet of iets dergelijks. Vervolgens pas in de configuration file aan en zet ik de bestanden over.
Het lijkt maar niet te lukken. Heeft iemand anders een goed idee?


[Afbeelding]
Kun je überhaupt wel een eigen andere nieuwe automatisering via Home Assistant zelf aanmaken?

Zendure-HA.com | Run Zendure your way — in Home Assistant


  • gast777
  • Registratie: Februari 2023
  • Laatst online: 28-05 21:01
Devke schreef op zondag 19 april 2026 @ 20:12:
[...]

Die begrijp ik ook niet helemaal eerlijk gezegd. Daar kan @gast777 wel iets over zeggen. Staan er 6 schakelingen dan is dat volgens mij over de hele Virtuele Zendure. Of ze nu bij Set 1, Set 2 of verdeeld zijn gevallen kun je er niet uithalen. Weet dit niet zeker dus @gast777 correct me if i am wrong.
De schakelingen die Gielz telt met Proxy gaan over het virtuele device. Normaliter zullen je beide Zendures altijd tegelijk schakelen. Ze gaan immers tegelijk laden of ontladen. Er is wel een uitzondering: als er een Zendure in 'slaap mode' (a.k.a. 'opslag in Flash') staat, dan stuurt de Proxy in die periode geen commando's naar dat device. Dus dan zal dat device ook niet schakelen op dat moment en lekker door blijven slapen. Zodra hij weer wakker gemaakt wordt krijgt hij direct een opdracht met daarin de dan geldende acMode (relais stand) door.

Kort gezegd, de relaisschakeningen zullen in principe op beide devices hetzelfde zijn als wat Gielz aangeeft, als je de slaapstand niet meerekent. Vanwege de slaapstand zullen echter niet alle schakelingen op beide devices toegepast worden. Overall zal het dus per device wat minder zijn dan voor het virtuele device waar Gielz het voor bijhoudt.

6 kWp solar | Daikin Intergas Hybride 8kW | Tesla Model Y RWD 2023 | Fiat 500e 2014 | Zendure SF2400AC 17 kWh


  • slvans
  • Registratie: April 2011
  • Laatst online: 18:15
gielz schreef op zondag 19 april 2026 @ 21:08:
[...]


Kun je überhaupt wel een eigen andere nieuwe automatisering via Home Assistant zelf aanmaken?
Goede vraag. Ik zie nu dat ik überhaupt geen automatisering kan aanmaken. Ik heb al mijn automatiseringen nog in Homey zitten. Toevallig een idee hoe ik dit ga oplossen?
slvans schreef op zondag 19 april 2026 @ 21:13:
[...]

Goede vraag. Ik zie nu dat ik überhaupt geen automatisering kan aanmaken. Ik heb al mijn automatiseringen nog in Homey zitten. Toevallig een idee hoe ik dit ga oplossen?
@Devke had jij ook niet exact hetzelfde probleem (lang geleden)?

Zendure-HA.com | Run Zendure your way — in Home Assistant


  • Gramser
  • Registratie: Juli 2020
  • Laatst online: 14:46
Pakhaas schreef op zondag 19 april 2026 @ 21:03:
[...]

En teruglever boete? Dan is NOM idd wel goed. Maar is je batterij de volgende dag wel leeg?
Ik heb geen terugleverboete. Batterij kan in deze periode inderdaad leeg zijn als de warmtepomp aanspringt. Dat verwacht ik komende week nog wel. En anders is er ook nog een auto die geladen wordt.

En wat is “goed”? Ik wil eerst zien hoe NoM gaat, dus vind ik dit “goed” 😄
slvans schreef op zondag 19 april 2026 @ 21:13:
[...]

Goede vraag. Ik zie nu dat ik überhaupt geen automatisering kan aanmaken. Ik heb al mijn automatiseringen nog in Homey zitten. Toevallig een idee hoe ik dit ga oplossen?
En @gielz. Klopt. Ff nadenken hoor dit is al ff terug. Zorg dat je automations.yaml in de hoofd directory van HA staat. Ik had in mijn configuration.yaml een verwijzing naar een subdirectory gezet. Een map waar al mijn automatiseringen bijelkaar stonden. Iedere automatisering in een apart bestand. Als je dan via de GUI ook automatiseringen wilt toevoegen dan werkt dit niet lekker. Beste is de de automatiseringen via de GUI toe te voegen. Dan krijg je wel 1 automations.yaml maar werkt wel.

Denk in kansen, niet in problemen. Homewizard Plug-In Battery 5.4 kWh. Zendure 2400 AC 17.2 kWh. Testen Accumate 4.8 kWh Plug-In Battery. 3330 Wp zonnepanelen. EV 77 kWh. Peblar Business Laadpaal.


  • Kaaf
  • Registratie: November 2002
  • Laatst online: 29-05 16:30
Vandaag ging hij helemaal niet laden of ontladen op dynamisch. Nou zag ik dat mijn spread vandaag negatief was. Komt dat daardoor? En hoe voorkom ik dat?
Gisteren werkt het prima
Afbeeldingslocatie: https://tweakers.net/i/mznFNhoubvZezzg90QYWGlvyBAQ=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/Ixjq54YOyvpmqVMZBI7XHVHU.png?f=user_large

I don't care if I feel Better as long as you feel worse


  • nrewillemsen
  • Registratie: Juli 2013
  • Laatst online: 14:33
-edit

[ Voor 166% gewijzigd door nrewillemsen op 19-04-2026 23:11 ]


  • pasmanm
  • Registratie: November 2007
  • Laatst online: 29-05 15:25
pasmanm schreef op vrijdag 17 april 2026 @ 20:48:
[...]


Goede tip, ga ik mee aan de slag. De uitdaging zit in de Quooker die kortstondig 2000W trekt; ik zoek dus die 10 seconden vertraging voordat de Zendure reageert.

Gezien de P1-meter elke seconde data pusht, test ik nu zowel een sample size van 10 als 20. Ik neem dit samen met mijn eigen logica mee in een vergelijking en koppel de resultaten van de drie varianten hier terug.
Na verdere tests heb ik de configuratie verder geoptimaliseerd. Ik heb nu een oplossing die korte pieken in de vermogensvraag (vanuit de batterij) effectief negeert.

De logica werkt als volgt: bij een plotselinge P1-piek tussen de 300W en 1000W wordt de vraag gedurende 4 seconden genegeerd. Bij pieken boven de 1000W is dit 40 seconden. Deze tijdsintervallen zijn gebaseerd op een analyse van de historische P1-data; Ik heb ook geëxperimenteerd met de ingebouwde 'filter-outlier' functionaliteit, maar dit leverde met verschillende sample-sizes niet het gewenste resultaat op.

Zie hieronder de code voor in de configuration.yaml. Op de bijgevoegde grafiek is te zien hoe de gele lijn (gefilterd) de blauwe lijn (P1-vraag) volgt, waarbij korte pieken succesvol worden opgevangen."
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
# 1. Two Helper Sensors for absolute power thresholds
  - binary_sensor:
    - name: "P1 Medium Power Spike"
      state: "{{ states('sensor.homewizard_p1_vermogen') | float(0) >= 300 }}"
      delay_on: "00:00:04"

    - name: "P1 Large Power Spike"
      state: "{{ states('sensor.homewizard_p1_vermogen') | float(0) >= 1000 }}"
      delay_on: "00:00:40"

# 2. The Smart Filtered Sensor
  - sensor:
    - name: "P1 Filtered Power"
      unique_id: p1_filtered_power_smoothed
      unit_of_measurement: "W"
      device_class: power
      state_class: measurement
      state: >
        {% set p1_raw = states('sensor.homewizard_p1_vermogen') | float(0) %}
        {% set zendure_ac = states('sensor.zendure_2400_ac_vermogen_aansturing') | float(0) %}
        
        {% set is_medium = p1_raw >= 300 and p1_raw < 1000 %}
        {% set is_large = p1_raw >= 1000 %}

        {# 1. Bypass: If the Zendure is charging/active ( >0), we trust the P1 meter #}
        {% if zendure_ac > 0 %}
          {{ p1_raw }}

        {# 2. Rule: Medium spike logic #}
        {% elif is_medium and is_state('binary_sensor.p1_medium_power_spike', 'off') %}
          0

        {# 3. Rule: Large spike logic #}
        {% elif is_large and is_state('binary_sensor.p1_large_power_spike', 'off') %}
          0

        {# 4. Default: Show raw power #}
        {% else %}
          {{ p1_raw }}
        {% endif %}
Afbeeldingslocatie: https://tweakers.net/i/LHOC8OzbHKEphGpy1Bu9eAZwWjw=/800x/filters:strip_icc():strip_exif()/f/image/JFftztlQI07rt5esfy8rIoAw.jpg?f=fotoalbum_large
Pagina: 1 ... 37 ... 52 Laatste

Let op:
Dit topic is alleen voor de integratie met Home Assistant.

Zie voor algemeen: Het grote Zendure plug-and-play thuisaccu systemen topic
Voor integratie met Homey: Zendure Batterijen Slim aansturen met Athom Homey

Zoek voor andere zaken het juiste topic.