EMHASS en de batterij

Hybride omvormer en thuisbatterij naast een grafiek met kwartierprijzen en de verwachte laadtoestand

EMHASS is het brein van het systeem: het rekent elk kwartier uit wanneer de batterij moet laden, ontladen of rusten, en wanneer het tapwater mag opwarmen. Maar het bedient zelf niets. Deze pagina beschrijft hoe EMHASS zijn gegevens krijgt, en hoe een eigen vertaallaag (de translator) het plan naar een Deye-omvormer brengt.

De configuratie

EMHASS (Energy Management for Home Assistant) draait als add-on en krijgt elk kwartier een payload: een pakket met prijzen, zonprognose, verwachte last en de huidige batterijstand. De configuratie zelf is bijna standaard. De interessante keuzes zitten in de payload.

InstellingWaarde
Tijdstap15 minuten
Batterij30.720 Wh, 11 kW laden en ontladen, rendement 93 % per richting
Venster20–95 %, doel aan het einde van de horizon 25 %
Kostenfunctieprofit
Deferrable loads1 (tapwater)
Solver-timeout180 s

Prijzen uit Tibber, op het lopende kwartier

Tibber levert 96 kwartierprijzen voor vandaag en, na 13:00, ook voor morgen. De payload filtert op het lopende kwartier en vult de ontbrekende uren aan met dezelfde kwartierindex van de laatst bekende dag.

Een klassieke fout: filteren op now() in plaats van op het kwartierbegin. Daardoor stonden alle prijzen een kwartier te vroeg.

Een horizon van 36 uur

Met een vaste horizon van 24 uur plant EMHASS elke avond een export: alles wat aan het einde van de horizon in de batterij zit, is in zijn ogen waardeloos. Zodra de horizon doorloopt tot de volgende avond, verdwijnt dat gedrag en houdt hij de batterij vast voor de ochtendpiek.

Ik stuur nu 144 stappen. 192 bleek voor de solver te zwaar en liep tegen de timeout van 180 s aan. Begin met 96 en verhoog stapsgewijs terwijl je de rekentijd in het log volgt.

Een export die 18 uur of meer vooruit gepland staat, is daarom geen probleem. Die wordt zelden uitgevoerd: latere runs kennen de prijzen van morgen en houden de energie vast.

Let op: de ingebouwde naive-lastprognose werkt alleen correct bij precies 96 stappen. Bij een langere horizon plakt EMHASS de laatste N meetwaarden op de toekomst, en schuift het verbruikspatroon precies het aantal extra stappen op. Stuur daarom een eigen load_power_forecast mee.

Eigen lastprognose uit een buffer

Een trigger-template-sensor slaat elk kwartier het gemiddelde van de basislast op: het huis zonder auto en zonder het deel van de warmtepomp dat EMHASS zelf stuurt. De buffer bewaart 49 uur aan waarden in een attribuut.

De payload bouwt daaruit per toekomstig kwartier de waarde van 24 uur eerder, of 48 uur eerder als die van 24 uur nog in de toekomst ligt. Zolang de buffer niet vol is, of als er meer dan vier kwartieren ontbreken, valt alles terug op 96 stappen en de prognose van EMHASS zelf.

Bekende beperking: rond de wissel naar wintertijd is “24 uur eerder” één dag lang een uur verschoven.

Tapwater als deferrable load

Een deferrable load is een verbruiker die EMHASS zelf in de tijd mag schuiven. Het vat van 300 liter is een buffer; daar is geen gebouwmodel voor nodig. EMHASS krijgt één uur op 2,8 kW per dag, in blokken van minstens 30 minuten en hooguit drie starts.

De payload stuurt de resterende uren mee: één uur min wat er vandaag al gedraaid is, en nul zodra het vat warm genoeg is. Zonder dat schoof het blok de hele dag mee. Tijdens het blok zet een automatisering het doel van de boiler op 52 °C, daarbuiten op 45 °C. Is het plan ouder dan 45 minuten, dan blijft het doel op 45 °C.

Geen run zonder echte SoC

Na een herstart van Home Assistant zijn de omvormer-entiteiten pas na een paar minuten beschikbaar. De payload viel toen terug op een batterijstand (state of charge, SoC) van 50 %, en EMHASS plande vanaf een verzonnen waarde. De optimalisatie draait nu alleen als de SoC een getal groter dan nul is.

De translator: van plan naar omvormer

De Deye wordt bediend via zes tijdblokken (time of use), een laadstroom, een ontlaadstroom, een exportlimiet en de keuze tussen Zero Export en Allow Export. EMHASS levert een vermogen in watt. De translator zit daartussen en volgt een vast aantal regels:

  • Elke 5 minuten, geen sensortriggers, met 3 seconden tussen writes en dode zones van 2 A, 2 % en 250 W.
  • Vers plan: volgen. Oud plan: veilige stand. Is het plan ouder dan 45 minuten, dan Zero Export, geen netladen, en de batterij dekt het huis tot de bodem.
  • Export alleen als EMHASS het plant, met een limiet van gepland vermogen + 300 W. Zonne-overschot mag altijd weg.
  • Geen ontlading naar de auto. Laadt de auto, dan mag de batterij alleen het huis dekken; de rest van de auto komt uit het net.
  • SoC-doel in stappen van 5 %. Op 1 % nauwkeurig wiebelde het doel elke 10 minuten en kostte dat zes writes per keer.
  • Laadstroom begrensd op de netruimte naast een ladende auto: netaansluiting min auto min het huis zonder auto.
  • Balanceren op zondag: één keer per week naar 100 %, netladen alleen onder een prijsgrens, dan een uur vasthouden.
  • Bodem en plafond op drie plekken gelijk: EMHASS-config, de helpers in HA en het plafond van de translator.

Wat geen fout is

  • Netafname rond +20 W. De Deye regelt naar die waarde. Pieken van ±2 kW gedurende een paar seconden zijn de reactie op schakelende apparaten.
  • De batterij levert zo’n 3 A terwijl de auto laadt. Dat is het huis, niet de auto.
  • Drie stappen in het logboek bij elke Deye-write (nieuw, oud, nieuw): een optimistische update, de terugleespoll en de bevestiging.
  • “Zon exporteren, batterij later laden.” EMHASS plant dat soms als terugleveren nu meer oplevert. De Deye laadt de batterij altijd eerst uit zon, dus dit deel van het plan wordt niet uitgevoerd.

Wat ik anders zou doen

  • Vanaf de eerste dag een translator met een veilige stand, in plaats van EMHASS-uitvoer rechtstreeks naar de omvormer.
  • Export standaard uit, en alleen aan als het plan erom vraagt.
  • Eerst een eigen lastprognose, pas daarna een langere horizon.
  • Bij elke instelling met een SoC-grens meteen opschrijven op welke drie plekken hij nog meer staat.

De incidenten achter deze lessen staan op Lessen uit de praktijk.


Deze waarden gelden voor één installatie. Controleer ze tegen je eigen documentatie; werk aan 230/400 V laat je over aan een erkend installateur. Stand: oktober 2026.