• Floor-is
  • Registratie: Maart 2000
  • Nu online
Preface: ik had deze post geschreven voor ergens anders. @Orion84 zei echter "Want dit is eigenlijk gewoon super interessant om op het publieke deel te bespreken, krijg je mogelijk ook meer input dan hier". Dus nu ben ik hier :P

Voel je vrij om vragen te stellen, me complimenten te geven, of me te vertellen dat ik dingen niet goed heb gedaan (wel vriendelijk blijven graag), hints&tips te geven over mogelijke verbeteringen, meer diepgang te vragen over delen.

Happy reading ;)


Ik ben half april met home assistant begonnen en er gewoon echt vol voor gegaan, zoals ik dat doe :P

Hoe we er zijn gekomen is een enorm verhaal op zichzelf.. Laten we kijken naar de situatie in 2025:
  • Volledige saldering
  • Opwek uit zonnepanelen: ±16,5MWh
  • Verbruik totaal: ±19MWh (EV, WP, zelf)
  • Ouderwetse schijfmeter, dus het net is de batterij (ook op jaarbasis)
2026 (verwacht etc)
  • Volledige saldering
  • Opwerk uit zonnepanelen: 15-16MWh
  • Verbruik totaal: ±19MWh
  • Verschillende rookmelders gaan stuk/moeten vervangen
  • Vanaf januari: Laadpaal 'betaald'
  • Juni: Slimme meter (iets met een wet en boetes)
  • Juni: nieuwe omvormer garage (12kW) + plaatsing thuisbatterij (48kWh)
2027 (educated guess voor opwek/verbruik)
  • Geen saldering
  • Opwek uit zonnepanelen: 15-16MWh
  • Verbruik totaal: ±20MWh (nieuwe EV, minder zuinig)
  • Laadpaal betaald
  • Slimme meter
  • Thuisbatterij (48kWh, maar kan groeien naar 64kWh als moet)
Hoewel het een beetje wegvalt in al het energie-spul: de rookmelders moeten vervangen, er zijn er een paar stuk en de rest is echt te oud (20-25 jaar). Bovendien hebben we een probleem met de luchtvochtigheid (te laag) in delen van het huis. De klik aan/uit rotzooi werkt dan wel, dan weer niet en dat begint ook echt bloedirritant te worden. Tijd om het roer drastisch om te gooien :)

Nieuwe rookmelders
Dit speelt ergens in maart van dit jaar: We hebben in het huis, inclusief de gangen, 12 ruimten. Het toilet, de badkamer en nog wat ruimten hoeven geen rookmelder. Het plan: met drie melders boven en drie beneden moet het lukken.
We hebben nog geen rookmelder in de garage, ook het bijhuis heeft geen eigen rookmelder. Daar moet verandering in komen. Het plan: beide krijgen een rookmelder.
Dan heb je een rookmelder in de garage en het bijhuis. Leuk, maar die hoor je niet :') Nu hebben we WiFi in beide, dus misschien zijn die rookmelders van Nest nu dan toch een ding, daar heb ik een paar jaar geleden naar gekeken, maar toen vond ik ze echt veel te duur. Aww shoot, die worden niet meer verkocht!
De beste oplossing lijken rookmelders in combinatie met home assistant, maar ik wil nog niet echt aan home assistant.

Hygrometers
Begin april (dit jaar) merk ik dat het de luchtvochtigheid in mijn kantoor en een paar andere ruimten in het huis is die zorgt voor de last van mijn ogen en huid. Met een luchtvochtigheid die zakt tot onder de 35% is dat niet gek, dat de planten het zo moeilijk lijken te hebben ook niet trouwens. De op Ali gekochte supergoedkope temperatuurmeter die toevallig ook luchtvochtigheid doet gaf me dit inzicht.. Mooie bijvangst ;)
De combinatie van temperatuur+luchtvochtigheidsmeter is voor home assistant easy te krijgen, best goedkoop.. En dan kan je een of meer luchtbevochtigers dynamisch aansturen.. Weer een businesscase voor de home assistant.

Spookverbruik tegengaan
We hadden sterk het vermoeden dat we veel meer energie verbruiken dan nodig omdat we een aantal zaken gewoon altijd aan hebben staan. Op mijn bureau bijvoorbeeld het beeldscherm en de studio-monitors; de TV in mijn werkkamer en diens audio-setup hoeven ook niet altijd aan; in de TV-kamer zelfde verhaal.. Maar in hoeverre gaat het helpen als we die uitzetten ipv gewoon door laten gaan?
En als we dan toch bezig zijn: hoe zit het met het verbruik van de netwerkapparatuur, de NAS, de quooker, de koelkast, de vriezer, de setup in de sim-room?

Thuisbatterij en hoe aan te sturen
Dit proces speelt al jaren, maar dit jaar ben ik er echt ingedoken. Want weg saldering en weg schijfmeter, terugleverkosten zelfs en een energierekening die kan verviervoudigen. Tel daar de EV bij op die 8.5MWh/jr opsnoept, maar wel op de duurste tijden van de dag.. Hier moeten we iets aan doen en het is geen optie om de EV de deur uit te doen, al helemaal niet omdat elke kWh die de EV in gaat geld oplevert voor het huishouden. Een thuisbatterij lijkt de best passende oplossing.
Maar die moet iets slimmer zijn dan de gemiddelde, want we hebben meer variabelen; zonnepanelen en een warmtepomp is niet heel gek, batterijen ook niet, forecasting is redelijk gemeengoed zelfs.. Maar een EV met een eigen tarief, dat is blijkbaar enorm niche. Fahk, weer meer uitzoekwerk! Enige tijd later: EMHASS, dat moet 'm zijn, dat is ook al een home assistant-ding.

Home assistant
Okay, genoeg zaken om home assistant te verantwoorden. Ik bestel dus: rookmelders, temperatuur (en hygro) sensoren en smartplugs, en een Zigbee USB-stick unit. Laten we de uitleg vanaf hier flink versnellen:
- USB-stick haalt de garage niet, laat staan het bijhuis
- USB-stick overlijdt al na een paar dagen
- SMLGHT SLZB-06U (PoE) units ipv USB-Stick(s)
- VM op mijn Mac Mini werkt niet goed (crasht, verliest data, usb-passthrough is poep)
- Zigbee2MQTT met twee coordinators werkt niet: Z2M+Z2M_edge nodig
- Dashboards in HA bieden niet wat ik wil: ik bouw zelf wel wat (1e eigen dashboard)
- Energie-overzicht nodig: nog een dashboard
- Meer smartplugs, want ik mis dingen en gelijk dat dashboard nog eens onder handen nemen
- Dashboard voor mijn netwerk toevoegen, want elke keer opnieuw moeten inloggen om overzicht te hebben is shit
- De batterijen komen, de installateur plaatst ze half. Hangt ze wel op, maar instellen is blijkbaar te moeilijk en hij had de DC-bekabeling niet geregeld. Ik stel zelf de omvormer in met één gekoppelde batterij (van de drie).
- kWh-meter voor warmtepomp wordt geplaatst
- Kabels komen binnen: installateur geeft aan 3 weken nodig te hebben. Ik koppel zelf de batterijen (alledrie, moet opnieuw), stel de omvormer opnieuw in.
- Slimme meter wordt geplaatst, dus ik heb eindelijk P1-waarden.
- De omvormer kan toch niet met de input van de P1-waarden om, had ik beter moeten uitzoeken...

En dan gaan we nu écht pas de diepte in :X

Het probleem
Mijn Deye-omvormer is dus netblind: er zit geen stroomtang (CT) op en de slimme meter hangt ~35 m verderop in de hoofdkast. De omvormer wéét dus niet wat het hele huis aan het net doet. De enige plek waar ik de werkelijke netstand zie is de P1-poort van de slimme meter (`sensor.p1_meter_power`, + = import, − = export).

Gevolg: ik kan niet vertrouwen op de zelfconsumptie-modus van de omvormer. Ik sluit de regelkring zelf, in Home Assistant, op basis van P1.
Het idee in één zin
Home Assistant leest elke minuut de netstand, rekent uit hoeveel de batterij moet ontladen om het huis te dekken (net ≈ 0), en schrijft dat als vermogens-setpoint naar de omvormer. Een feedback-loop dus, net als een thermostaat - alleen stuurt 'ie op "netto 0 aan de meter" in plaats van temperatuur.
Twee actuator-assen
Ik stuur twee dingen aan, los van elkaar:

- As A - de batterij (Deye). Modi: `IDLE` (omvormer doet z'n eigen ding) / `NET_ZERO` (batterij dekt het huis) / `EMHASS` (volg een economisch plan, toekomst).
- As B - de Tesla-laadstroom. Modi: `IDLE` / `ZON_VOLG` (laadstroom volgt het PV-overschot) / `EMHASS_EV` (toekomst, als het dynamische energiecontract in gaat vanaf 28/6).

Belangrijk: de uitsluiting zit per actuator, niet globaal. As A en As B draaien prima tegelijk - ze bedienen verschillende knoppen.
De gelaagde opzet per as
Geen grote if/else-knoop, maar drie lagen met een duidelijke taakverdeling:
  • Live data (P1, SOC, PV, prijs, auto-status)
  • Beslisser: template-sensor die de gewenste modus afleidt. Schakelt zelf niets (read-only, los testbaar). sensor.deye_mode / sensor.tesla_mode
  • Override: handmatige knop (Auto / Force_*). Mens wint. input_select.deye_override / tesla_override
  • Applier: automation die de effectieve modus toepast door de loop-aan/uit-schakelaars te zetten. Enige schrijver van die booleans. Heeft een dry-run-gate.
  • Loop: de echte regelaar (elke minuut). Schrijft het vermogens-setpoint naar de omvormer.
De beslisser kijkt naar de wereld en zegt "hij zou NET_ZERO moeten zijn". De applier zet dan de juiste schakelaar om. De loop doet het werk. Door dit te splitsen kan ik elke laag los testen (de beslisser draait read-only mee zonder iets te schakelen).
De loop zelf (het hart)
De net≈0-loop draait elke minuut en doet eigenlijk maar één sommetje: gewenst_ontlaadvermogen = huidige_accu-output + (P1_net + kleine_export_bias)

`huidige_accu-output` (gemeten) + `P1_net` (wat er nog over is) samen = het totale huisverbruik. De loop mikt dus elke tick precies op de huislast, met een klein beetje export-marge zodat hij nooit per ongeluk importeert. Dat resultaat schrijft hij naar het actieve Time-of-Use-venster van de Deye (`number.deye_garage_program_<n>_power`): de omvormer pakt dat binnen ~75 s op.

Twee details die verrassend veel uitmaakten:
  1. Reken vanaf de gemeten accu-output, niet vanaf je vorige commando. Het commando loopt vóór op de werkelijkheid (de omvormer rampt, de meter heeft vertraging). Reken je vanaf je vorige setpoint, dan tel je de last dubbel → de batterij schiet door → P1 klapt naar export → oscillatie. Vanaf de échte output is het zelf-corrigerend.
  2. Asymmetrisch begrenzen. Méér ontladen doe ik gedoseerd (max X watt per minuut, zodat de batterij niet in één klap surge't). Mínder ontladen mag vrij - stoppen met ontladen is altijd veilig, dus dat doe ik direct (anders dump je bij een last-wegval even vermogen het net op).
De triggers (wanneer draait wat?)
  • Loops: `time_pattern` elke minuut (+ meteen bij inschakelen).
  • Beslissers: template-sensoren, die herrekenen automatisch zodra een invoerwaarde verandert (continu dus).
  • Appliers: bij een modus-wissel (met een dwell van een paar minuten tegen geklepper), bij een override-wissel, elke 5 min een her-bevestiging, en zodra de dry-run-gate uit gaat.
De data die gebruikt wordt
  • `sensor.p1_meter_power` - de netstand (de kern; alles hangt hieraan).
  • `sensor.deye_garage_battery_power` - wat de batterij nú écht levert/opneemt.
  • `sensor.deye_garage_battery` - de SOC (laadtoestand).
  • `sensor.solar_current_power` - PV-opbrengst.
  • Auto: laadkabel-aangesloten, thuis-aanwezig, SOC, charge-limit (voor As B ).
  • EPEX-prijzen (`sensor.stroom_inkoopprijs` e.d.) - voor de economische planlaag (EMHASS).
De knoppen om bij te sturen
Schakelaars:
  • `input_boolean.orchestrator_dry_run` - de hoofdgate. Aan = de appliers loggen alleen wat ze zouden doen, ze schakelen niets. Mijn veiligheidsknop tijdens testen.
  • `input_boolean.deye_zero_grid_enable` - de net≈0-loop aan/uit.
  • `input_select.deye_override` / `tesla_override` - forceer een modus met de hand (`Auto` / `Force_IDLE` / `Force_NET_ZERO` / …).
Tuning (allemaal `input_number`, live verstelbaar zonder herstart):
  • ramp-snelheid (watt per minuut omhoog), deadband, export-bias, ontlaad-vloer-SOC, de export-drempel waarop de batterij "echte PV-export" herkent en loslaat, en de in/uit-drempels voor zon-volgend laden.
De daadwerkelijke actuator-registers:
  • `number.deye_garage_program_<n>_power` / `_soc` - het ToU-venster van de omvormer (= waar de loop het batterij-setpoint in schrijft).
  • `number.mevrouw_karretje_charge_current` - de Tesla-laadstroom (As B ).
Wat ik ervan leerde
Het lastigste was niet het bouwen, maar het regeltechnisch stabiel krijgen: een omvormer met ~minuut-vertraging, een meter 35 m verderop, en een beslisser die naar dezelfde P1 kijkt die de loop juist nul máákt. Dat gaf precies de klassieke valkuilen - dubbeltellen, doorschieten, en een beslisser die z'n eigen staart opeet (de batterij ontlaadt → P1 wordt "export" → beslisser denkt dat de zon schijnt → zet de boel uit → import komt terug → weer aan…). De oplossing was steeds: reken vanaf wat er echt gebeurt, niet vanaf wat je commandeerde, en laat de beslisser naar de accu-onafhankelijke netstand kijken (`P1 + ontlading`) in plaats van naar P1 zelf.


Gebruikte hardware:
Energie-opwekking en -opslag
  • Omvormer garage: Deye SUN-12K-SG05LP3-EU-SM2 (12 kW, 3-fase hybride)
  • Omvormer bijhuis: Solis 6 kW (3-fase)
  • Thuisbatterij: 3x Deye SE-F16-C (51,2V LiFePO4, 16 kWh per unit) = 48 kWh nominaal / ~41 kWh bruikbaar
  • DC balance-of-system: Victron Lynx DC Distributor (M10) + Victron MEGA-zekeringen + 275A accuschakelaar
  • Zonnepanelen: ~15 kWp totaal (16x Jinko JKM400N-6RL3-B (bijhuis, zuid) + 14x Jinko JKM400N-6RL3-B (garage, zuid) + 12x oudere panelen 250-275 Wp (garage, noord))
Laden / EV
  • Laadpaal: BlueCurrent (lokale API)
  • Auto: Tesla Model Y, RWD (50kWh)
Meten
  • P1-meter: HomeWizard Wi-Fi P1 Meter (HWE-P1)
  • kWh-meter warmtepomp: HomeWizard kWh Meter 3-fase (HWE-KWH3, 80A)
Klimaat
  • Warmtepomp: Mitsubishi Ecodan Zubadan EHSD-VM2D
Sensoren (Zigbee/Matter)
  • Temperatuur-/vochtsensoren: Aqara
  • Rookmelders: Aqara
  • Watersensors: Aqara
Home Assistant / Zigbee
  • Home Assistant Green
  • Zigbee coordinators: 2x SLZB-06U (1x ZHA hoofdhuis, 1x Zigbee2MQTT bijhuis)
  • Smartplugs: Innr (SP 240) - verlichting/bureau/apparaten
  • Remote: Aqara Cubes: 2x Aqara Cube T1 Pro (kantoor + tv-kamer)
Software:
Core
  • Home Assistant (op HA Green)
  • InfluxDB v2 (long-term sensordata, bucket homeassistant)
  • EMHASS 0.17.7 (energie-optimalisatie / day-ahead) - als add-on
HA-integraties
  • ha-solarman (davidrapan) - Deye omvormer
  • SolarmanV5 (StephanJoubert) - Solis omvormer
  • Teslemetry - Tesla
  • BlueCurrent - laadpaal
  • MELCloud - Mitsubishi warmtepomp
  • HomeWizard - P1 + kWh-meter
  • Forecast.Solar - PV-voorspelling
  • [Network]
  • ZHA + Zigbee2MQTT
Add-ons
  • Zigbee2MQTT
  • EMHASS
HACS-cards (dashboards)
  • button-card
  • card-mod
  • ha-sankey-chart
  • apexcharts-card
  • power-flow-card-plus
Externe diensten / tools
  • Solcast (PV-forecast, hobbyist tier)
  • EPEX / day-ahead prijzen
  • Ollama (lokaal LLM)
  • Claude / Claude Code (config-beheer, automatisering, sparring)
  • [Passwordmanager]
  • Git (versiebeheer config)

Bericht hierboven


  • Floor-is
  • Registratie: Maart 2000
  • Nu online
Mocht iemand het boeiend vinden, screenshots van mijn AI-zelf gebrouwde dashboards (behalve netwerk, dat gaat jullie niks aan):

'Startpage':
Afbeeldingslocatie: https://tweakers.net/i/6CzXfE6vgA39J29Z7BWNjQU9VSE=/234x176/filters:strip_exif()/f/image/LsiGP5Qkk8y8fQru8rhLW8Ck.png?f=fotoalbum_medium

Pop-up omvormers:
Afbeeldingslocatie: https://tweakers.net/i/WwqzOXn_IjCedtBYlnkaOorzaeo=/234x176/filters:strip_exif()/f/image/Q6lDODh5oQxTYOWDZpytFnXB.png?f=fotoalbum_medium

Pop-up laadpaal:
Afbeeldingslocatie: https://tweakers.net/i/F_1eoSDLN5GOnEDGv6QyUfdBdhw=/234x176/filters:strip_exif()/f/image/QRus8OLTlFf7fiUNtJ78RRQC.png?f=fotoalbum_medium

Pop-up batterij:
Afbeeldingslocatie: https://tweakers.net/i/8fvx8QDqXEeHE3AGXF_fPTgmmnc=/234x176/filters:strip_exif()/f/image/nE0JDZHCiyGCJku83n2FEZLx.png?f=fotoalbum_medium

Stroom1:
Afbeeldingslocatie: https://tweakers.net/i/9mJOFTV-n4WSvwi6aVUY3jZSbLE=/234x176/filters:strip_exif()/f/image/2hxz2wdT54HAMePntZI7uZUj.png?f=fotoalbum_medium

Stroom1, verder scrollen naar de smartplugs:
Afbeeldingslocatie: https://tweakers.net/i/SiN_6U2726itjxgFdeoaz4VajdM=/234x176/filters:strip_exif()/f/image/xenxVgtwD3S0xltkHwtVK490.png?f=fotoalbum_medium

Prism-dashboard huis:
Afbeeldingslocatie: https://tweakers.net/i/__9eHAXug61fEPPYqXmUjNlLay4=/234x176/filters:strip_exif()/f/image/Vc8FqKahyrQMwNjRdUlkq4zr.png?f=fotoalbum_medium

Sankey's (2e tab bij Prism-dashboard):
Afbeeldingslocatie: https://tweakers.net/i/zQmiEeo3OGWz5qWvBz3PmJ6Giz4=/234x176/filters:strip_exif()/f/image/MEhLJDOCTSApZXVEjoFQQrXt.png?f=fotoalbum_medium

Bericht hierboven