
In mijn eerste blog over de thuisbatterij liet ik de batterij laden op het goedkoopste uur en ontladen op het duurste uur. Dat werkte, maar niet zo goed als ik hoopte. Daarom stuur ik de batterijen nu anders aan, met één automation die de hele dag op de stroomprijs let.
In deze blog lees je hoe die nieuwe aanpak werkt, waarom hij beter is, en hoe je hem stap voor stap zelf bouwt. Ook als je net met Home Assistant begint.
Snel: wat je kopieert en wat je invult
Alle code staat in deze blog en kun je met de kopieerknop overnemen. Je vult alleen je eigen batterij-entiteiten in.
| Stap | Wat je doet | Wat je zelf invult |
|---|---|---|
| 1 | Back-up maken | Niets |
| 2 | Batterij, Marstek-integratie en Zonneplan koppelen (Voorbereiding) | Het IP-adres van je batterij |
| 3 | Je batterij-entiteiten opzoeken (stap 0) | Opschrijven: zes per batterij |
| 4 | Helper Batterij prijsdrempel aanmaken (stap 1) | De velden uit de tabel, en je ondergrens |
| 5 | Helper Goedkoopste 2 uur stroom aanmaken en het sjabloon plakken (stap 2) | Niets. Alleen uren = 2 als je een ander laadblok wilt |
| 6 | Helper Batterij dynamische drempel aanmaken (stap 3) | Je SoC-sensoren, de capaciteit en je verbruik per uur |
| 7 | Helper Batterij laaddoel aanmaken (stap 4) | De totale capaciteit en je verbruik per uur |
| 8 | De automation plakken (stap 5) | Je opgeschreven entiteiten op de plekken met JOUW_ |
| 9 | Testen (stap 7) | Niets |
Elke stap staat hieronder uitgeschreven, inclusief waar je klikt. De automation en de sjablonen heb ik precies zo, met mijn eigen entiteiten ingevuld, in Home Assistant geladen om te controleren dat de code klopt.
In het kort
De automation kent drie standen. Hij kijkt elk kwartier en bij elke prijswissel welke stand nu geldt.
| Stand | Wanneer | Wat de batterij doet |
|---|---|---|
| Laden van het net | In de goedkoopste 2 aaneengesloten uren van de dag, tot het laaddoel | Laadt geforceerd met vol vermogen. Komt er later die dag nog flink zon, dan houdt hij ruimte vrij voor die zonnestroom |
| Sparen | Stroomprijs onder de dynamische drempel | Ontlaadt niet. Je huis gebruikt stroom van het net, want die is nu relatief goedkoop. Zonne-overschot laadt de batterij wel bij |
| Leveren | Stroomprijs op of boven de dynamische drempel | Levert stroom aan je huis, precies zoveel als je verbruikt, en niets aan het net |
Het idee: je koopt stroom in als hij het goedkoopst is, en je gebruikt die opgeslagen stroom alleen in de duurste uren tot het volgende laadmoment. Zoveel uren als de batterij kan volhouden, niet meer. Zo is de batterij niet leeg net voordat de echte piek komt.
Wat er beter is dan de eerste versie
| Eerste versie | Nieuwe versie | |
|---|---|---|
| Laden | Op het goedkoopste uur, alleen onder 60% | In de goedkoopste 2 uur, tot een laaddoel dat rekening houdt met de zonverwachting |
| Ontladen | Geforceerd op het duurste uur, alleen boven 90% | In de duurste uren tot het volgende laadmoment, zoveel als de batterij kan dekken |
| Rest van de dag | De batterij ontlaadt altijd naar het huis, ook als stroom goedkoop is | De batterij spaart zijn stroom voor de dure uren |
| Opbouw | Vijf blueprints die elkaar aansturen | Eén automation, vier helpers |
Wat ik leerde van de eerste versie:
- Ontladen op het duurste uur gebeurde bijna nooit. De batterij zat op dat moment zelden boven de 90%, dus de voorwaarde klopte niet.
- De batterij was vaak leeg op het verkeerde moment. Hij leverde ’s middags stroom toen die goedkoop was, en was ’s avonds leeg toen stroom duur was.
- Eén uur laden is te kort. Een Marstek Venus E van 5,12 kWh laadt met 2500 W ongeveer 2 uur van leeg naar vol.
En van een tussenversie met een vaste prijsdrempel:
- Een vaste drempel kijkt niet vooruit. Met een drempel van €0,15 ontlaadt de batterij ’s nachts gewoon door op uren van €0,16 tot €0,18. Komt er dan een ochtend met stroom van €0,47, zoals bij mij eind oktober, dan is de batterij al leeg. Bij mij zat hij in één week bijna elke dag op zijn ondergrens van 12%.
- Op zonnige dagen laadt de batterij eerst van het net. Het goedkoopste blok valt dan vaak midden op de dag, precies als de zonnepanelen het meest leveren. Is de batterij al vol van het net, dan gaat het zonne-overschot het net op.
Hoe het werkt
De batterij-instellingen die de automation gebruikt
De Marstek Venus Modbus-integratie maakt per batterij een reeks entiteiten aan. De automation en de helpers gebruiken er zes.
| Entiteit | Soort | Wat het doet |
|---|---|---|
| Battery SoC | Sensor (%) | Hoe vol de batterij is. Hieruit rekenen de helpers hoeveel stroom er nog in zit |
| Force mode | Keuzelijst: standby, charge, discharge |
Laat de batterij geforceerd laden of ontladen. Werkt alleen als RS485-besturing aan staat |
| User work mode | Keuzelijst: manual, anti_feed, trade_mode |
De normale werkstand. anti_feed betekent: lever precies zoveel als het huis verbruikt, en niets terug aan het net |
| RS485 control mode | Schakelaar | Aan: Home Assistant stuurt de batterij met de force mode. Uit: de batterij volgt zijn eigen werkstand |
| Set charge power | Getal (0–2500 W) | Het laadvermogen bij geforceerd laden |
| Max discharge power | Getal (0–2500 W) | Het maximale ontlaadvermogen in de normale werkstand. Op 0 ontlaadt de batterij dus niet, maar laden op zonne-overschot gaat gewoon door |
De truc zit in die laatste. In plaats van de batterij steeds geforceerd te laten ontladen, laat de automation hem gewoon in anti_feed staan. Hij zet alleen de ontlaadkraan open (2500 W) of dicht (0 W). De batterij regelt zelf hoeveel hij levert: precies wat je huis verbruikt.
De vier helpers
- Batterij prijsdrempel (
input_number.batterij_prijsdrempel). Een getal in €/kWh dat je zelf instelt: de ondergrens. Onder deze prijs levert de batterij nooit, hoe vol hij ook is. - Goedkoopste 2 uur stroom (
binary_sensor.goedkoopste_2_uur_stroom). Een sensor dieaanis tijdens de goedkoopste 2 aaneengesloten uren van vandaag. Hij leest de uurprijzen van vandaag uit de Zonneplan-integratie. - Batterij dynamische drempel (
sensor.batterij_dynamische_drempel). De prijs waarboven de batterij nu mag leveren. Die rekent hij steeds opnieuw uit, zie hieronder. - Batterij laaddoel (
sensor.batterij_laaddoel). Tot hoeveel procent de batterij in het goedkoopste blok van het net laadt. Op een zonnige dag minder dan 100%, zodat de zon de rest kan vullen.
Hoe de dynamische drempel rekent
De sensor stelt zich steeds de vraag: welke uren tot het volgende laadmoment zijn het duurst, en hoeveel daarvan kan de batterij dekken?
- Hoeveel zit er in de batterij? De SoC van elke batterij, min de ondergrens waar de Marstek stopt met ontladen (bij mij 12%), maal de capaciteit. Daar gaat nog 8% af voor het verlies in de omvormer. Twee volle batterijen van 5,12 kWh geven zo ongeveer 8,3 kWh die echt bij je huis aankomt.
- Tot wanneer moet het duren? Tot het begin van het volgende goedkoopste blok. Dat kan vandaag zijn, maar ook morgen om 02:00. Zijn de prijzen van morgen nog niet bekend (die komen in de loop van de middag), dan kijkt hij tot middernacht.
- Hoeveel verbruik je per uur? Uit een vast profiel dat je zelf invult, met 15% marge erbovenop. Liever iets overhouden dan te vroeg leeg.
- De verdeling. Hij zet alle uren tot het volgende laadmoment op volgorde, van duur naar goedkoop, en deelt de batterij-energie uit: eerst aan het duurste uur, dan het op één na duurste, tot de batterij op is. De prijs van het laatste uur dat nog energie kreeg, is de drempel.
Een voorbeeld: zit er genoeg in voor 8 van de 12 uren tot het volgende laadblok, dan dekt de batterij de 8 duurste uren. De 4 goedkoopste komen van het net. Is er genoeg voor alle uren, dan valt de drempel terug op je ondergrens.
De sensor rekent elke minuut opnieuw, met de echte SoC. Verbruik je meer dan verwacht, dan schuift de drempel vanzelf omhoog.
Hoe het laaddoel rekent
- Laadblok ’s nachts, of de zon is al onder? Dan is het laaddoel altijd 100%. De zon komt pas ná de dure ochtenduren, dus de batterij moet vol.
- Negatieve prijs? Ook 100%. Dan word je betaald om af te nemen.
- Laadblok overdag? Dan kijkt hij hoeveel zonnestroom er vandaag nog komt (uit Forecast.Solar, en voor de zekerheid maar 80% daarvan). Daar trekt hij je verwachte verbruik tot zonsondergang van af. Wat overblijft is zonne-overschot, en daarvoor houdt hij ruimte vrij. Verwacht hij 4 kWh overschot bij 10,24 kWh capaciteit, dan laadt hij van het net tot ongeveer 60%.
Heb je geen Forecast.Solar, dan is het laaddoel gewoon altijd 100%. De rest werkt dan hetzelfde.
De automation, stap voor stap
Wanneer hij kijkt (triggers):
- als de sensor Goedkoopste 2 uur aan of uit gaat;
- als de stroomprijs verandert;
- als de prijsdrempel, de dynamische drempel of het laaddoel verandert;
- als een batterij het laaddoel bereikt, zodat het netladen direct stopt;
- elk kwartier, als controle;
- na een herstart van Home Assistant (dan wacht hij eerst 2 minuten, zodat de batterij-integratie verbinding heeft).
Wat hij dan doet:
-
Is het nu het goedkoopste blok, en zit een batterij onder het laaddoel? Dan zet hij de batterijen op geforceerd laden:
- force mode op
standby, werkstand opanti_feed, RS485-besturing uit; - 10 seconden wachten, zodat de batterij de nieuwe stand verwerkt;
- laadvermogen op 2500 W, force mode op
charge, RS485-besturing aan.
Laden de batterijen al geforceerd, dan doet hij niets. Zo stuurt hij niet elk kwartier opnieuw dezelfde opdrachten.
- force mode op
-
Geen goedkoopste blok, of het laaddoel is al bereikt? Dan zorgt hij eerst dat de batterijen in de normale stand staan: force mode
standby, werkstandanti_feed, RS485-besturing uit. Dat gebeurt alleen als ze nog niet zo staan, bijvoorbeeld direct na het laadblok. Daarna kijkt hij naar de prijs:- Prijs onder de dynamische drempel: maximaal ontlaadvermogen op 0 W. De batterij spaart, en zonne-overschot vult hem verder aan.
- Prijs gelijk aan of boven de dynamische drempel: maximaal ontlaadvermogen op 2500 W. De batterij levert aan het huis.
Ook hier past hij alleen iets aan als het nog niet goed staat.
De automation draait in de modus queued. Komen er twee triggers vlak na elkaar, dan voert hij ze netjes na elkaar uit in plaats van tegelijk. Dat voorkomt dat twee runs elkaars opdrachten aan de batterij doorkruisen.
Nieuw met Home Assistant? Begin hier
Je hebt geen ervaring met programmeren of Home Assistant nodig. Wel moet Home Assistant al draaien en kun je het openen in je browser of de app. Nog niet zo ver? Volg dan eerst de officiële installatie.
| Woord | Wat het is |
|---|---|
| Integratie | Een koppeling met een apparaat of dienst, zoals je batterij of je energieleverancier. Je voegt hem toe via Instellingen → Apparaten & diensten |
| Entiteit | Eén meetwaarde, keuzelijst of schakelaar van een apparaat, bijvoorbeeld de werkstand van je batterij |
| Entiteit-ID | De technische naam van een entiteit, zoals select.marstek_force_mode. Die vul je in de code in |
| Helper | Een zelfgemaakte entiteit, zoals de prijsdrempel die je zelf instelt |
| Sjabloon (template) | Een stukje rekenwerk in Home Assistant. Herken je aan {{ … }} en {% … %} |
| YAML | De tekstvorm waarin Home Assistant instellingen opslaat. Inspringen met spaties is belangrijk |
| Automatisering | Een regel die iets doet bij een gebeurtenis, zoals de batterij laten laden als stroom goedkoop is |
| HACS | Een winkel voor extra integraties die niet standaard in Home Assistant zitten |
Voor je begint:
- Maak een back-up. Ga naar Instellingen → Systeem → Back-ups en klik op Nu back-up maken. Gaat er iets mis, dan zet je Home Assistant zo terug.
- Kopieer codeblokken helemaal, met de kopieerknop rechtsboven het blok.
- Laat de spaties aan het begin van regels staan. YAML gebruikt inspringen om te weten wat bij elkaar hoort.
- Vervang alleen wat met
JOUW_begint. De rest laat je staan.
Wat je nodig hebt
- Home Assistant met HACS.
- Een of meer Marstek Venus-batterijen met de Marstek Venus Modbus-integratie (via HACS). Deze automation is gemaakt voor Marstek; andere merken hebben andere instellingen.
- De Zonneplan ONE-integratie (via HACS). De sensor voor de goedkoopste uren leest de prijzen van vandaag uit het attribuut
forecastvansensor.zonneplan_current_electricity_tariff. Heb je een andere leverancier, dan moet je die sensor aanpassen aan hoe jouw integratie de prijzen doorgeeft. - Forecast.Solar (optioneel, als je zonnepanelen hebt). Gratis en standaard in Home Assistant. Je voegt hem toe via Instellingen → Apparaten & diensten → Integratie toevoegen → Forecast.Solar en vult hellingshoek, richting en piekvermogen van je panelen in. Het laaddoel gebruikt de zonverwachting om ruimte vrij te houden voor zonnestroom.
- Een eigen groep per batterij. Een batterij die met 2500 W laadt of ontlaadt, trekt ruim 10 A. Zet elke batterij daarom op een eigen groep in de meterkast, en niet op een groep waar ook de wasmachine, oven of droger op zit. Bij mij heeft elke batterij zijn eigen groep, zodat ze allebei de volle 2500 W kunnen doen. Twijfel je over je meterkast, laat dan een installateur meekijken.
- Een aansluiting die het totaal aankan. Twee batterijen op 2500 W vragen samen 5000 W. Bij een 1x35A-aansluiting (maximaal ongeveer 8000 W) blijft er weinig over voor de rest van je huis. Kies dan een lager laadvermogen.
Voorbereiding: batterij en integraties koppelen
Heb je de batterij en Zonneplan al in Home Assistant? Ga dan door naar stap 0.
De batterij op je netwerk
De Marstek Venus E 3.0 (derde generatie) heeft een netwerkaansluiting en spreekt zelf Modbus TCP. Je hebt dan geen extra adapter nodig:
- Sluit de batterij met een netwerkkabel (UTP) aan op je router of switch. Mijn Venus E 3.0 heeft twee netwerkpoorten; ik gebruik er één, de andere blijft leeg.
- Geef de batterij in je router een vast IP-adres (vaak heet dat DHCP-reservering of vast IP toewijzen). Zo blijft Home Assistant hem vinden, ook na een herstart van de router.
- Zet in de Marstek-app bij de instellingen van de batterij de Local API aan. Zonder die instelling reageert de batterij niet op Home Assistant. De app toont daar ook een poort (standaard 30000); die kun je laten staan.
- Schrijf het IP-adres op. Heb je twee batterijen, doe dit dan voor allebei, en zet bij allebei de Local API aan.
Heb je een oudere Venus E (eerste of tweede generatie)? Die heeft geen Modbus via het netwerk. Je hebt dan een RS485-adapter nodig, bijvoorbeeld een RS485-naar-wifi- of ethernet-module. De generaties gebruiken ook andere Modbus-instellingen. Kijk in de documentatie van de integratie welke adapter en instellingen bij jouw versie horen.
HACS
Heb je HACS nog niet, volg dan de installatie van HACS. Daarmee installeer je de twee integraties hieronder.
Marstek Venus Modbus
- Open HACS, zoek Marstek Venus Modbus, klik op Downloaden en start Home Assistant opnieuw op.
- Ga naar Instellingen → Apparaten & diensten → Integratie toevoegen en kies Marstek Venus Modbus.
- Vul het vaste IP-adres van de batterij in. De poort is 502, de standaardpoort voor Modbus TCP; meestal staat die al ingevuld. Krijg je geen verbinding, controleer dan eerst of de Local API in de Marstek-app aan staat.
- Heb je twee batterijen? Voeg de integratie dan een tweede keer toe, met het IP-adres van de tweede batterij. Elke batterij wordt een eigen apparaat met eigen entiteiten.
- Controleer bij het apparaat de entiteit Modbus Connection. Staat die op Verbonden, dan praat Home Assistant met de batterij. Staat hij op Niet verbonden, controleer dan het IP-adres, de poort en of de Local API in de app aan staat.
Zonneplan ONE
- Open HACS, zoek Zonneplan ONE, klik op Downloaden en start Home Assistant opnieuw op.
- Ga naar Instellingen → Apparaten & diensten → Integratie toevoegen, kies Zonneplan ONE en log in met het e-mailadres van je Zonneplan-account. Volg de stappen die de integratie geeft.
- Controleer bij Ontwikkelhulpmiddelen → Toestanden dat
sensor.zonneplan_current_electricity_tariffeen prijs laat zien, met onder de attributen een lijstforecast.
Stap 0: je batterij-entiteiten opzoeken
Ga naar Instellingen → Apparaten & diensten → Marstek Venus Modbus en klik op je batterij. Je ziet nu alle entiteiten. Zoek deze zes op en klik er telkens op; via het tandwiel zie je het entiteit-ID.
| Wat | Zoek naar | Begint met |
|---|---|---|
| Laadniveau | Battery SoC | sensor. |
| Force mode | Force Mode | select. |
| Werkstand | User Work Mode | select. |
| RS485-besturing | RS485 Control Mode | switch. |
| Laadvermogen | Set Charge Power | number. |
| Maximaal ontlaadvermogen | Max Discharge Power | number. |
Heb je twee batterijen, schrijf ze dan voor allebei op. Zie je een van deze entiteiten niet, dan staat hij mogelijk uitgeschakeld. Klik bij het apparaat op + … entiteiten niet weergegeven en schakel hem in.
Stap 1: de prijsdrempel aanmaken
Dit is de ondergrens: onder deze prijs levert de batterij nooit. De dynamische drempel uit stap 3 komt nooit lager uit dan dit getal.
- Ga naar Instellingen → Apparaten & diensten → Helpers → Helper aanmaken → Getal.
- Vul in:
| Veld | Waarde |
|---|---|
| Naam | Batterij prijsdrempel |
| Pictogram | mdi:cash-lock |
| Minimale waarde | 0 |
| Maximale waarde | 1 |
| Weergavemodus | Invoerveld |
| Stapgrootte | 0,01 |
| Meeteenheid | €/kWh |
- Klik op Aanmaken. Home Assistant maakt
input_number.batterij_prijsdrempel. - Zet de waarde voorlopig op 0,20. Verderop lees je hoe je de juiste ondergrens voor jouw situatie kiest.
Stap 2: de sensor voor de goedkoopste uren
- Ga naar Instellingen → Apparaten & diensten → Helpers → Helper aanmaken → Template → Een binaire sensor maken met een template.
- Naam: Goedkoopste 2 uur stroom.
- Plak dit in het veld Statussjabloon:
{% set uren = 2 %}
{% set fc = state_attr('sensor.zonneplan_current_electricity_tariff', 'forecast') or [] %}
{% set v = fc | selectattr('start_date', 'search', '^' ~ (now().date() | string)) | list %}
{% set ns = namespace(i=-1, s=10**12) %}
{% for i in range(0, (v | count) - uren + 1) %}
{% set s = v[i:i + uren] | sum(attribute='electricity_price') %}
{% if s < ns.s %}{% set ns.i = i %}{% set ns.s = s %}{% endif %}
{% endfor %}
{% if ns.i >= 0 %}
{% set st = as_datetime(v[ns.i].start_date) %}
{{ st <= now() < st + timedelta(hours=uren) }}
{% else %}
false
{% endif %}
- Onderaan zie je een voorbeeld: Aan of Uit. Klik op Verzenden. Home Assistant maakt
binary_sensor.goedkoopste_2_uur_stroom.
Wat dit sjabloon doet, regel voor regel:
uren = 2: hoe lang het laadblok is. Zie hieronder hoe je dit kiest.fc: alle uurprijzen die Zonneplan doorgeeft (van gisteren tot en met morgen).v: alleen de uren van vandaag, van 00:00 tot 23:00.- De lus schuift een venster van
urenlang over de dag en telt per venster de prijzen op. Het venster met de laagste som is het goedkoopste blok. - Laatste stap: is het nu binnen dat blok? Dan is de sensor
aan.
Het juiste aantal uren kiezen. Deel de capaciteit van je batterij door het laadvermogen. Een Marstek Venus E van 5,12 kWh met 2500 W is in ruim 2 uur vol, dus 2 uur. Laad je rustiger, bijvoorbeeld met 1500 W, gebruik dan uren = 3 en noem de sensor Goedkoopste 3 uur stroom. Pas dan in de automation de entiteit binary_sensor.goedkoopste_2_uur_stroom mee aan.
Controleren. Wil je zien welk blok vandaag het goedkoopst is? Plak het sjabloon bij Ontwikkelhulpmiddelen → Sjabloon en vervang de regel {{ st <= now() < st + timedelta(hours=uren) }} door {{ st }}. Rechts zie je dan de begintijd.
Je verbruik per uur opzoeken
Stap 3 en 4 hebben allebei een lijstje nodig met wat je huis per uur ongeveer verbruikt, van 00:00 tot 23:00. Zo vind je het:
- Open het Energie-dashboard in Home Assistant en kies de dagweergave.
- Bekijk een paar gewone doordeweekse dagen. De grafiek Elektriciteitsverbruik toont per uur wat je huis gebruikte, uit net, zon en batterij samen.
- Schrijf per uur een gemiddelde op, in kWh. Rond gerust af: het hoeft niet precies.
Ter vergelijking, mijn profiel (het gemiddelde over een maand): ’s nachts ongeveer 0,25 kWh per uur, ’s ochtends tussen 6 en 9 uur 0,55 tot 0,6, overdag 0,4 tot 0,5, en rond etenstijd tot 1,3 kWh. Een hele nacht van 23:00 tot 07:00 kost bij mij gemiddeld 2,4 kWh. Verbruik je veel meer (warmtepomp, elektrische auto), dan zie je dat hier terug.
Gebruik in stap 3 en 4 hetzelfde lijstje. Het eerste getal is 00:00–01:00, het laatste 23:00–00:00.
Stap 3: de dynamische drempel
- Ga naar Instellingen → Apparaten & diensten → Helpers → Helper aanmaken → Template → Een sensor maken met een template.
- Naam: Batterij dynamische drempel.
- Plak het sjabloon hieronder in het veld Statussjabloon en vul het blok bovenaan in.
- Meeteenheid: €/kWh. Statusklasse: Meting.
- Klik op Verzenden. Home Assistant maakt
sensor.batterij_dynamische_drempel.
{# ===== Vul hier je eigen gegevens in ===== #}
{# De SoC-sensor van elke batterij #}
{% set batterijen = ['sensor.JOUW_MARSTEK_1_SOC', 'sensor.JOUW_MARSTEK_2_SOC'] %}
{# Capaciteit per batterij in kWh #}
{% set capaciteit = 5.12 %}
{# Onder dit percentage ontlaadt de batterij niet verder #}
{% set ondergrens_soc = 12 %}
{# Verwacht verbruik per uur in kWh, van 00:00 tot 23:00 #}
{% set profiel = [0.27,0.26,0.26,0.25,0.25,0.31,0.56,0.62,0.54,0.40,0.40,0.40,
0.45,0.45,0.50,0.50,0.60,1.27,0.62,0.65,0.45,0.38,0.30,0.24] %}
{# Veiligheidsmarge op het verbruik: 1.15 = 15% extra #}
{% set marge = 1.15 %}
{# ===== Hieronder hoef je niets te veranderen ===== #}
{% set fc = state_attr('sensor.zonneplan_current_electricity_tariff', 'forecast') or [] %}
{% set vloer = states('input_number.batterij_prijsdrempel') | float(0.15) %}
{% set b = namespace(kwh=0) %}
{% for e in batterijen %}
{% set b.kwh = b.kwh + ([states(e) | float(0) - ondergrens_soc, 0] | max) / 100 * capaciteit * 0.92 %}
{% endfor %}
{% set ns = namespace(eind=none, dagen=[]) %}
{% for p in fc %}
{% set d = as_local(as_datetime(p.start_date)).date() | string %}
{% if d not in ns.dagen %}{% set ns.dagen = ns.dagen + [d] %}{% endif %}
{% endfor %}
{% for d in ns.dagen %}
{% set v = namespace(l=[]) %}
{% for p in fc %}
{% if as_local(as_datetime(p.start_date)).date() | string == d %}{% set v.l = v.l + [p] %}{% endif %}
{% endfor %}
{% set blok = namespace(i=-1, s=10**12) %}
{% for i in range(0, (v.l | count) - 1) %}
{% set s = v.l[i].electricity_price + v.l[i + 1].electricity_price %}
{% if s < blok.s %}{% set blok.i = i %}{% set blok.s = s %}{% endif %}
{% endfor %}
{% if blok.i >= 0 %}
{% set st = as_datetime(v.l[blok.i].start_date) %}
{% if st > now() and (ns.eind is none or st < ns.eind) %}{% set ns.eind = st %}{% endif %}
{% endif %}
{% endfor %}
{% set u = namespace(lijst=[]) %}
{% for p in fc %}
{% set st = as_datetime(p.start_date) %}
{% if st + timedelta(hours=1) > now() and (ns.eind is none or st < ns.eind) %}
{% set deel = (1 - now().minute / 60) if st <= now() else 1 %}
{% set u.lijst = u.lijst + [{'prijs': p.electricity_price / 10000000,
'nodig': profiel[as_local(st).hour] * marge * deel}] %}
{% endif %}
{% endfor %}
{% set g = namespace(rest=b.kwh, drempel=none) %}
{% for x in u.lijst | sort(attribute='prijs', reverse=true) %}
{% if g.rest > 0 %}{% set g.drempel = x.prijs %}{% set g.rest = g.rest - x.nodig %}{% endif %}
{% endfor %}
{% if fc | count == 0 %}{{ vloer }}
{% else %}{{ ([g.drempel if g.drempel is not none else 9.99, vloer] | max) | round(4) }}{% endif %}
Wat je invult:
| Regel | Wat | Voorbeeld |
|---|---|---|
batterijen |
De Battery SoC-sensor van elke batterij uit stap 0. Eén batterij? Zet er dan één in de lijst | ['sensor.marstek_1_battery_soc'] |
capaciteit |
De capaciteit van één batterij in kWh | 5.12 voor een Venus E |
ondergrens_soc |
Het percentage waar je batterij stopt met ontladen. Kijk in de geschiedenis van de SoC-sensor hoe laag hij komt | 12 |
profiel |
Je verbruik per uur, zie hierboven. Precies 24 getallen, met een punt als decimaalteken | |
marge |
Hoeveel extra hij rekent bovenop je verbruik | 1.15 |
Het laadblok zit er ook in. Het sjabloon zoekt zelf het volgende goedkoopste blok van 2 uur, op dezelfde manier als de sensor uit stap 2, maar dan voor vandaag én morgen. Zo weet het tot wanneer de batterij het moet volhouden. Gebruik je in stap 2 een blok van 3 uur, dan kan het begin hier een uur afwijken. Dat maakt voor de drempel weinig uit.
Controleren. Onderaan het formulier zie je meteen de uitkomst, een prijs zoals 0.15 of 0.2614. Krijg je 9.99, dan is de batterij leeg (dan valt er niets te leveren), of geven je SoC-sensoren geen getal: controleer dan de entiteit-ID’s.
Stap 4: het laaddoel
- Ga weer naar Instellingen → Apparaten & diensten → Helpers → Helper aanmaken → Template → Een sensor maken met een template.
- Naam: Batterij laaddoel.
- Plak het sjabloon hieronder in het veld Statussjabloon en vul het blok bovenaan in.
- Meeteenheid: %. Statusklasse: Meting.
- Klik op Verzenden. Home Assistant maakt
sensor.batterij_laaddoel.
{# ===== Vul hier je eigen gegevens in ===== #}
{# Capaciteit van al je batterijen samen, in kWh #}
{% set capaciteit_totaal = 10.24 %}
{# De Forecast.Solar-sensor met de resterende zonneopbrengst van vandaag #}
{% set zon_sensor = 'sensor.energy_production_today_remaining' %}
{# Hetzelfde verbruiksprofiel als in stap 3 #}
{% set profiel = [0.27,0.26,0.26,0.25,0.25,0.31,0.56,0.62,0.54,0.40,0.40,0.40,
0.45,0.45,0.50,0.50,0.60,1.27,0.62,0.65,0.45,0.38,0.30,0.24] %}
{# ===== Hieronder hoef je niets te veranderen ===== #}
{% set prijs = states('sensor.zonneplan_current_electricity_tariff') | float(0) %}
{% set opkomst = as_datetime(states('sensor.sun_next_rising')) %}
{% set ondergang = as_datetime(states('sensor.sun_next_setting')) %}
{% if prijs < 0 or opkomst is none or ondergang is none or opkomst < ondergang %}100
{% else %}
{% set zon = states(zon_sensor) | float(0) * 0.8 %}
{% set ns = namespace(v=0, t=now()) %}
{% for i in range(0, 16) %}
{% if ns.t < ondergang %}
{% set eind = [ns.t.replace(minute=0, second=0, microsecond=0) + timedelta(hours=1), ondergang] | min %}
{% set ns.v = ns.v + profiel[as_local(ns.t).hour] * ((eind - ns.t).total_seconds() / 3600) %}
{% set ns.t = eind %}
{% endif %}
{% endfor %}
{% set overschot = [zon - ns.v * 1.15, 0] | max %}
{{ ([100 - overschot / capaciteit_totaal * 100, 12] | max) | round(0) | int }}
{% endif %}
Wat je invult:
| Regel | Wat | Voorbeeld |
|---|---|---|
capaciteit_totaal |
De capaciteit van al je batterijen samen | 10.24 voor twee Venus E’s |
zon_sensor |
De Forecast.Solar-sensor Estimated energy production - remaining today. Meestal heet hij zo als in het voorbeeld | sensor.energy_production_today_remaining |
profiel |
Hetzelfde lijstje als in stap 3 |
Hoe hij weet of het dag of nacht is. Hij gebruikt de sensoren sensor.sun_next_rising en sensor.sun_next_setting van de ingebouwde integratie Zon. Komt de volgende zonsopkomst eerder dan de volgende zonsondergang, dan is het nacht, en is het laaddoel 100%. Zie je die sensoren niet bij Ontwikkelhulpmiddelen → Toestanden, schakel ze dan in bij Instellingen → Apparaten & diensten → Zon.
Geen zonnepanelen of geen Forecast.Solar? Dan geeft de zon-sensor geen getal, rekent het sjabloon met 0 kWh zon en is het laaddoel altijd 100%. Je kunt deze helper dan ook overslaan; zie bij stap 5 wat je dan in de automation weghaalt.
Stap 5: de automation
- Ga naar Instellingen → Automatiseringen en scènes → Automatisering aanmaken → Nieuwe automatisering.
- Klik op de drie puntjes rechtsboven en kies Bewerken in YAML. Wis wat er staat en plak het blok hieronder.
- Vervang elke
JOUW_…door het entiteit-ID dat je in stap 0 opzocht. - Klik op Opslaan.
alias: "Marstek - Slim op stroomprijs"
description: >-
Goedkoopste uren van de dag: batterijen laden van het net, tot het laaddoel.
Prijs onder de dynamische drempel: batterij ontlaadt niet (laadt nog wel op zonne-overschot).
Prijs op of boven de dynamische drempel: batterij levert stroom aan het huis (anti_feed).
mode: queued
max: 5
triggers:
- trigger: state
entity_id: binary_sensor.goedkoopste_2_uur_stroom
id: blok
- trigger: state
entity_id: sensor.zonneplan_current_electricity_tariff
id: prijs
- trigger: state
entity_id:
- input_number.batterij_prijsdrempel
- sensor.batterij_dynamische_drempel
- sensor.batterij_laaddoel
id: drempel
# Laaddoel bereikt: direct stoppen met laden van het net
- trigger: numeric_state
entity_id:
- sensor.JOUW_MARSTEK_1_SOC
- sensor.JOUW_MARSTEK_2_SOC
above: sensor.batterij_laaddoel
id: doel
- trigger: time_pattern
minutes: /15
id: controle
- trigger: homeassistant
event: start
id: herstart
actions:
# Na een herstart eerst 2 minuten wachten, zodat de batterij-integratie verbinding heeft
- if:
- condition: trigger
id: herstart
then:
- delay:
minutes: 2
- choose:
# Stand 1: goedkoopste uren, geforceerd laden van het net tot het laaddoel
- alias: "Goedkoopste uren: laden van het net tot laaddoel"
conditions:
- condition: state
entity_id: binary_sensor.goedkoopste_2_uur_stroom
state: "on"
# Minstens één batterij zit nog onder het laaddoel
- condition: or
conditions:
- condition: numeric_state
entity_id: sensor.JOUW_MARSTEK_1_SOC
below: sensor.batterij_laaddoel
- condition: numeric_state
entity_id: sensor.JOUW_MARSTEK_2_SOC
below: sensor.batterij_laaddoel
sequence:
- if:
# Alleen iets doen als de batterijen nog niet geforceerd laden
- condition: not
conditions:
- condition: and
conditions:
- condition: state
entity_id:
- select.JOUW_MARSTEK_1_FORCE_MODE
- select.JOUW_MARSTEK_2_FORCE_MODE
state: charge
- condition: state
entity_id:
- switch.JOUW_MARSTEK_1_RS485
- switch.JOUW_MARSTEK_2_RS485
state: "on"
then:
- action: select.select_option
target:
entity_id:
- select.JOUW_MARSTEK_1_FORCE_MODE
- select.JOUW_MARSTEK_2_FORCE_MODE
data:
option: standby
- action: select.select_option
target:
entity_id:
- select.JOUW_MARSTEK_1_WERKMODUS
- select.JOUW_MARSTEK_2_WERKMODUS
data:
option: anti_feed
- action: switch.turn_off
target:
entity_id:
- switch.JOUW_MARSTEK_1_RS485
- switch.JOUW_MARSTEK_2_RS485
- delay:
seconds: 10
- action: number.set_value
target:
entity_id:
- number.JOUW_MARSTEK_1_LAADVERMOGEN
- number.JOUW_MARSTEK_2_LAADVERMOGEN
data:
value: 2500
- action: select.select_option
target:
entity_id:
- select.JOUW_MARSTEK_1_FORCE_MODE
- select.JOUW_MARSTEK_2_FORCE_MODE
data:
option: charge
- action: switch.turn_on
target:
entity_id:
- switch.JOUW_MARSTEK_1_RS485
- switch.JOUW_MARSTEK_2_RS485
default:
# Niet in het goedkoopste blok, of laaddoel bereikt: eerst terug naar de normale stand (anti_feed)
- alias: "Terug naar de normale stand"
if:
- condition: or
conditions:
- condition: state
entity_id:
- switch.JOUW_MARSTEK_1_RS485
- switch.JOUW_MARSTEK_2_RS485
match: any
state: "on"
- condition: not
conditions:
- condition: state
entity_id:
- select.JOUW_MARSTEK_1_WERKMODUS
- select.JOUW_MARSTEK_2_WERKMODUS
state: anti_feed
then:
- action: select.select_option
target:
entity_id:
- select.JOUW_MARSTEK_1_FORCE_MODE
- select.JOUW_MARSTEK_2_FORCE_MODE
data:
option: standby
- action: select.select_option
target:
entity_id:
- select.JOUW_MARSTEK_1_WERKMODUS
- select.JOUW_MARSTEK_2_WERKMODUS
data:
option: anti_feed
- action: switch.turn_off
target:
entity_id:
- switch.JOUW_MARSTEK_1_RS485
- switch.JOUW_MARSTEK_2_RS485
- choose:
# Stand 2: prijs onder de dynamische drempel, de batterij spaart
- alias: "Goedkoop: net gebruiken, batterij niet ontladen"
conditions:
- condition: numeric_state
entity_id: sensor.zonneplan_current_electricity_tariff
below: sensor.batterij_dynamische_drempel
sequence:
- if:
- condition: or
conditions:
- condition: numeric_state
entity_id: number.JOUW_MARSTEK_1_MAX_ONTLAADVERMOGEN
above: 0
- condition: numeric_state
entity_id: number.JOUW_MARSTEK_2_MAX_ONTLAADVERMOGEN
above: 0
then:
- action: number.set_value
target:
entity_id:
- number.JOUW_MARSTEK_1_MAX_ONTLAADVERMOGEN
- number.JOUW_MARSTEK_2_MAX_ONTLAADVERMOGEN
data:
value: 0
# Stand 3: duur, de batterij levert aan het huis
default:
- alias: "Duur: batterij levert stroom"
if:
- condition: or
conditions:
- condition: numeric_state
entity_id: number.JOUW_MARSTEK_1_MAX_ONTLAADVERMOGEN
below: 2500
- condition: numeric_state
entity_id: number.JOUW_MARSTEK_2_MAX_ONTLAADVERMOGEN
below: 2500
then:
- action: number.set_value
target:
entity_id:
- number.JOUW_MARSTEK_1_MAX_ONTLAADVERMOGEN
- number.JOUW_MARSTEK_2_MAX_ONTLAADVERMOGEN
data:
value: 2500
Heb je één batterij? Haal dan overal de regel met JOUW_MARSTEK_2_… weg. In de drie blokken met condition: or laat je bij één batterij alleen de voorwaarde voor batterij 1 staan.
Laaddoel overgeslagen in stap 4? Haal dan de trigger met id: doel weg, en het blok condition: or onder Minstens één batterij zit nog onder het laaddoel. Haal ook sensor.batterij_laaddoel weg uit de trigger met id: drempel. De batterij laadt dan in het goedkoopste blok altijd tot vol.
Ander laadvermogen? Verander value: 2500 bij het laadvermogen. Bij het ontladen laat je 2500 staan; dat is alleen het maximum, de batterij levert nooit meer dan je huis verbruikt.
Stap 6: een kaart op je dashboard (optioneel)
Met deze kaart zie en verander je alles op één plek. Open je dashboard, klik op het potlood, kies Kaart toevoegen → Handmatig en plak dit:
type: entities
title: Thuisbatterij
entities:
- entity: sensor.zonneplan_current_electricity_tariff
name: Stroomprijs nu
- entity: sensor.batterij_dynamische_drempel
name: Leveren vanaf
- entity: input_number.batterij_prijsdrempel
name: Ondergrens
- entity: binary_sensor.goedkoopste_2_uur_stroom
name: Goedkoopste blok (laden)
- entity: sensor.batterij_laaddoel
name: Laden tot
- entity: automation.marstek_slim_op_stroomprijs
name: Slim laden aan
Is Stroomprijs nu gelijk aan of hoger dan Leveren vanaf, dan levert de batterij. Is hij lager, dan spaart hij.
Met de schakelaar Slim laden aan zet je de hele aansturing uit, bijvoorbeeld als je op vakantie gaat. Zet de batterij daarna zelf terug in de gewenste stand.
Stap 7: testen
Wacht niet tot het goedkoopste blok, maar test de drie standen meteen:
- Sparen. Zet de prijsdrempel op 1,00. De dynamische drempel komt nooit onder die ondergrens, dus staat hij nu ook op 1,00. De prijs ligt eronder, en binnen een paar seconden staat Max Discharge Power van je batterijen op 0. Zet de prijsdrempel daarna terug op je eigen waarde.
- Leveren. Ga naar Ontwikkelhulpmiddelen → Toestanden, klik op
sensor.batterij_dynamische_drempel, vul bij Status 0 in en klik op Status instellen. De automation ziet een drempel van €0,00 en zet Max Discharge Power op 2500: de batterij levert aan je huis (als hij niet leeg is). Binnen een minuut rekent de sensor zelf weer, en zet de automation de juiste stand terug. - Laden. Dit test je het makkelijkst door in het sjabloon van stap 2 tijdelijk
{{ true }}te zetten in plaats van de laatste regel. Na hooguit 15 minuten gaan de batterijen geforceerd laden, tenminste als een batterij onder het laaddoel zit. Zitten ze er allebei al boven, dan blijven ze gewoon in de normale stand; dat is goed. Zet het sjabloon daarna terug; bij de volgende controle gaan ze weer naar de normale stand.
Wat de automation precies deed, zie je via Instellingen → Automatiseringen en scènes → Marstek - Slim op stroomprijs → ⋮ → Traces. Per run zie je welke trigger hem startte en welke stand hij koos.
De juiste ondergrens kiezen
De dynamische drempel kiest zelf de duurste uren, maar de ondergrens bepaalt onder welke prijs leveren nooit meer loont. Die hangt af van wat laden je kost.
Bij laden en ontladen gaat altijd wat energie verloren. Bij mijn twee Marsteks komt ongeveer 80–82% van wat erin gaat er weer uit (835 kWh geladen, 685 kWh geleverd in vier maanden). Je eigen rendement zie je in de sensor Round Trip Efficiency Total die de Marstek-integratie per batterij aanmaakt; bij mij staat die op 80,2% en 80,9%. Elke kWh uit de batterij kost dus meer dan de prijs waarvoor je hem laadde:
kostprijs uit de batterij = laadprijs ÷ rendement (bijvoorbeeld ÷ 0,82)
| Je laadt gemiddeld voor | Een kWh uit de batterij kost dan | Zet de ondergrens minstens op |
|---|---|---|
| €0,15 | €0,18 | €0,20 |
| €0,20 | €0,24 | €0,26 |
| €0,24 | €0,29 | €0,31 |
Ligt de ondergrens lager, dan levert de batterij soms stroom die duurder was dan die van het net. Ligt hij veel hoger, dan blijft de batterij vaak vol staan en verdient hij ook niets. Een paar cent boven de kostprijs is een goed begin. De ondergrens doet vooral ertoe als de batterij alle uren tot het volgende laadblok kan dekken. Dan valt de dynamische drempel terug op de ondergrens, en bepaalt die of de batterij ook in de goedkopere uren levert.
Zonnestroom die de batterij overdag opslaat is wel gratis. Laadt je batterij vooral op zon, dan mag de ondergrens lager.
Meten in plaats van gokken. Met mijn energie-overzicht zie je per dag, maand en jaar de Batterijwinst: wat de batterij opleverde min wat het laden kostte, allebei tegen de prijs van dat moment. Blijft die na een paar weken rond nul of eronder, zet de ondergrens dan een paar cent hoger. Let op: na een nacht laden staat Batterijwinst tijdelijk in de min, tot de batterij in de dure uren weer heeft geleverd. Kijk dus naar weken, niet naar één dag.
Samen met de blueprints uit de eerste blog
Gebruik je de blueprints uit de eerste blog?
| Blueprint | Wat je ermee doet |
|---|---|
| Laden bij laagste stroomprijs | Uitzetten. Doet hetzelfde als stand 1, en twee automations die de batterij aansturen zitten elkaar in de weg |
| Ontladen bij hoogste stroomprijs | Uitzetten. Stand 3 vervangt hem |
| Opladen / Ontladen | Mag blijven, als knop om handmatig te laden of te ontladen. Zie hieronder |
| Veiligheid | Mag blijven. Zet de maximale duur dan op minstens 2 uur en 15 minuten, anders onderbreekt hij het laadblok |
Handmatig laden zonder dat de automation ingrijpt. Draait Opladen of Ontladen, dan wil je niet dat Slim op stroomprijs na een kwartier alles terugzet. Voeg daarom deze voorwaarden toe aan de automation, direct boven actions:. Pas de namen aan als jouw automations anders heten.
conditions:
- condition: numeric_state
entity_id: automation.marstek_opladen
attribute: current
below: 1
- condition: numeric_state
entity_id: automation.marstek_ontladen
attribute: current
below: 1
Het attribuut current telt hoeveel runs van die automation nu bezig zijn. Is dat 0, dan draait hij niet en mag Slim op stroomprijs zijn werk doen.
Herstart tijdens het laadblok. Veiligheid zet de batterijen na een herstart na 1 minuut op standby. Slim op stroomprijs wacht 2 minuten en zet ze daarna weer op laden, als het blok nog loopt. Je krijgt dan wel een melding van Veiligheid; die kun je negeren.
Problemen oplossen
| Wat je ziet | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
| Goedkoopste 2 uur stroom is altijd uit | De Zonneplan-sensor heeft geen forecast-attribuut, of een andere naam |
Kijk bij Ontwikkelhulpmiddelen → Toestanden naar sensor.zonneplan_current_electricity_tariff en controleer of er onder de attributen een forecast staat |
| De automation geeft een fout bij opslaan | Een JOUW_… is niet vervangen, of de inspringing is verschoven |
Zoek naar JOUW_ en vervang alles. Plak opnieuw als de inspringing niet klopt |
| Entiteiten van de batterij zijn Niet beschikbaar | De Local API staat uit, of het IP-adres is veranderd | Zet de Local API aan in de Marstek-app en geef de batterij een vast IP-adres in je router |
| De batterij laadt niet in het goedkoopste blok | Het laaddoel is al bereikt, of RS485-besturing gaat niet aan | Vergelijk de SoC met Batterij laaddoel: zit hij erboven, dan is dit goed. Anders: open de Traces en kijk welke stap faalt |
| De batterij levert ook als stroom goedkoop is | Max Discharge Power gaat niet naar 0, of de batterij kan alle uren dekken | Controleer of je de Max Discharge Power hebt gekozen, en niet Set Discharge Power. Staat de dynamische drempel op je ondergrens, dan kan de batterij alles dekken en is leveren juist goed |
| Batterij dynamische drempel staat op 9,99 | De batterij is leeg, of de SoC-sensoren geven geen getal | Is de batterij leeg, dan is dit goed. Anders: controleer de entiteit-ID’s in batterijen bij stap 3 |
| De batterij is ’s ochtends leeg vóór de dure uren | Je verbruikt meer dan het profiel zegt | Verhoog de getallen in profiel, of zet marge op 1.25 |
| Batterij laaddoel staat altijd op 100% | De zon-sensor geeft geen getal, of het laadblok valt ’s nachts | Controleer zon_sensor bij stap 4. ’s Nachts is 100% juist |
| Batterijwinst is structureel negatief | De ondergrens ligt te dicht bij de laadprijs | Zet de ondergrens hoger, zie hierboven |
| De hoofdzekering slaat af tijdens het laden | Te veel vermogen tegelijk | Verlaag het laadvermogen of laad met één batterij tegelijk |
Waar je op moet letten
- Het goedkoopste blok valt binnen één kalenderdag. Een blok van 23:00 tot 01:00 wordt niet gevonden. De sensor kijkt elke dag opnieuw naar de uren van 00:00 tot 23:00.
- Het blok kan midden op de dag vallen. Op zonnige dagen is stroom ’s middags vaak het goedkoopst. Het laaddoel zorgt dan dat de batterij niet helemaal van het net vol loopt, zodat er ruimte blijft voor je zonne-overschot. In de zomer kan het laaddoel zo laag worden dat hij helemaal niet van het net laadt.
- Het verbruiksprofiel staat vast. Verandert je verbruik flink, bijvoorbeeld in de winter met een warmtepomp, pas het lijstje dan aan in stap 3 en 4. Kijk het om de paar weken even na. Ik laat Claude dat elke twee weken doen via de koppeling met Home Assistant: het rekent het gemiddelde per uur over de afgelopen maand uit en past het lijstje aan waar nodig.
- De zonverwachting kan ernaast zitten. Daarom rekent het laaddoel met 80% van de verwachting. Valt de zon tegen, dan heb je hooguit wat goedkope netstroom gemist; de dynamische drempel zorgt nog steeds dat de lading naar de duurste uren gaat.
- Voordat de prijzen van morgen bekend zijn, kijkt de dynamische drempel alleen tot middernacht vooruit. Hij kan dan iets te royaal zijn. Zodra de nieuwe prijzen binnen zijn, rekent hij opnieuw, ruim voor de avondpiek.
- Uurprijs, ook bij kwartierprijzen. De automation gebruikt de uurprijs van Zonneplan. Rekent jouw contract per kwartier, dan reageert hij nog steeds per uur. Dat scheelt weinig, want de laadblokken zijn toch 2 uur lang.
- Salderen stopt per 1 januari 2027. Daarna levert teruggeleverde stroom minder op. Deze aanpak levert toch al niets terug aan het net (
anti_feed), dus hij blijft werken. Wel wordt zonnestroom opslaan dan waardevoller. - Geen garantie op winst. Op dagen met weinig prijsverschil levert de batterij weinig op. Het meeste voordeel haal je op dagen met een groot verschil tussen nacht of middag en avond.
Liever dat Claude dit voor je inbouwt en je eigen entiteiten opzoekt? Lees dan hoe je Claude aan Home Assistant koppelt.
Meer lezen
- Alle bestanden uit deze blog op GitHub: Klaar om over te nemen, in de map
thuisbatterij-slim-laden-2.0van mijn repository Fonfey/HomeAssistant - Thuisbatterij slim laden met Home Assistant en Zonneplan (eerste versie): de blueprints voor handmatig laden, ontladen en de veiligheid
- Marstek Venus Modbus-integratie
- HACS installeren
- Zonneplan ONE-integratie
- Forecast.Solar-integratie: optioneel, voor de zonverwachting bij het laaddoel
- Template-helpers in Home Assistant
- Getal-helper (input_number)
- Automation-modi (queued)
- Salderingsregeling stopt per 1 januari 2027