Wat er binnenkomt
| Bron | Hoe |
|---|---|
| Zonnepanelen (11 micro-omvormers) | De lokale API van de gateway, met een eigenaarstoken |
| Thuisaccu (hybride omvormer) | Modbus TCP via de netwerkmodule, input-registers |
| Slimme meter | De lokale API van de P1-dongle |
| Verwarming (6 zones) | tado°-exporter, eigen build |
Telegraf leest de eerste drie uit, Prometheus slaat alles op en Grafana toont het.
Huisverbruik zelf uitrekenen
Geen enkel apparaat meet wat het huis verbruikt. De gateway van de panelen heeft wel een "verbruik"-veld, maar zonder verbruiksklem is dat een kopie van de productie. Het huisverbruik is daarom een som:
verbruik = productie zonnepanelen + netto afname van het net + ontladen accu
De netto afname komt van de slimme meter (positief is afname). Bij de accu zit de valkuil in de richting: het register met het vermogen heeft geen teken. Of de accu laadt of ontlaadt, staat als bit in een ander register. Telegraf kan geen losse bits lezen, dus het teken wordt in PromQL berekend met floor() en modulo.
Nog twee valkuilen bij Modbus: de documentatie telt registers vanaf 1, de bus vanaf 0. En de netwerkmodule verbreekt de verbinding als je te snel achter elkaar leest, dus het interval moet ruim zijn.
Een tado°-exporter die niet meer inlogde
De Prometheus-target van de verwarming stond op up, maar er kwamen nul metrics binnen. Verwarrend, want "up" zegt alleen dat de exporter antwoordt.
De oorzaak: het gangbare image op Docker Hub was jaren oud en logde in met gebruikersnaam en wachtwoord op een authenticatieserver die tado° had uitgezet. De broncode upstream ondersteunde de nieuwe device-code-flow wel, maar zonder release, zonder image, en met het token alleen in het geheugen. Na elke herstart moest je opnieuw inloggen.
Mijn oplossing:
- Een kleine patch die het refresh-token in een bestand (0600) bewaart en opnieuw probeert in plaats van te stoppen. Geen wachtwoord meer in de configuratie.
- Bouwen op de monitoring-VM zelf, tijdens de deploy. Een eigen registry is niet nodig. De Rust-build piekt rond 1,1 GB en duurt ~2,5 minuut op twee cores. Daarvoor zette ik ballooning op die VM uit; de gast zag maar 1,8 van de 4 GB.
- Een alert
TadoNoDataals de exporter wel antwoordt maar geen data levert, met in het runbook de stap om opnieuw te koppelen.
Wat het oplevert
Een dashboard met productie, verbruik, accu en het net per kwartier, de temperatuur en de verwarmingsvraag per kamer. En alerts als iets stopt met meten, bijvoorbeeld een token dat binnenkort verloopt.