Home-Assistant Integratie met de DSMR-logger

[ 3,215 views ]
Belofte maakt schuld. In mijn post over de DSMR-logger heb ik belooft om ook een post te schrijven over de integratie van Home-Assistant met de DSMR-logger.

Die belofte willig ik met deze post in.

Home-Assistant is, naar mijn bescheiden mening, één zo niet dé meest universele en robuuste Domotica oplossing die momenteel bestaat. De manieren waarop Home-Assistant gegevens uit andere systemen kan halen is bijna onuitputtelijk. Het is alleen zaak de voor jou beste manier te vinden.

Home-Assistant kan gegevens via een restAPI uit andere systemen (en dus uit de DSMR-logger) halen maar dat heeft als nadeel dat als je meerdere gegevens uit zo’n extern systeem wilt halen en deze allemaal beschikbaar worden gesteld via één restAPI deze restAPI voor ieder veld aangeroepen wordt en er dus héél veel data “over de lijn gaat” en het externe systeem ook vrij zwaar wordt belast.

Daarom heb ik, voor het uitlezen van de DSMR-logger, gekozen om Home-Assistant (HA) de gegevens uit een bestand (platform: file) te laten halen. Dat bestand staat op dezelfde computer waar ook HA op draait waardoor de overhead wordt geminimaliseerd.

Het werkt zo:

Middels een python programma doen we een request naar de DSMR-logger om de actuele gegevens van de Slimme Meter te geven. Dit programma moet periodiek (zeg één maal per minuut) gestart worden. Dat is de taak van ‘cron‘. Cron is een Unix/Linux deamon die, op basis van tijd, jobs start. In ons geval moet hij dus het python programma “DSMR_Actual.py” starten.

Met het commando ‘crontab -e’ (als user root!!) kun je de volgende regel in crontab aanbrengen:

Het programma DSMR_Actual.py ziet er zo uit:

In regel 5 krijgt ‘url’ de verwijzing naar de restAPI van de DSMR-logger waarmee de actuele gegevens worden opgevraagd.
Regel 6 zet dit om in een request aan de DSMR-logger en regel 9 stopt het antwoord van de DSMR-logger in de variabele ‘r’ die vervolgens in regel 10 gedecodeerd in de variabele ‘response’ wordt gestopt. Uiteindelijk schrijft json.dump() de terug gekregen response naar het bestand ‘/tmp/DSMR-Actual.json’.

Dat bestand ziet er dan zo uit:

Om het geheel een beetje overzichtelijk te houden heb ik alle scripts die ik voor HA gebruik in de map ~/.homeassistant/scripts/ gestopt.

Vervolgens moeten we aan HA duidelijk maken dat ze de gegevens van de DSMR-logger uit het bestand /tmp/DSMR-Actueel.json moet halen.

Ik heb al mijn sensor-configuraties in de map ~/homeassistant/sensors gestopt. In het configuration.yaml bestand heb ik de volgende verwijzing staan:

Deze regel zorgt ervoor dat alle .yaml files die in de map sensors/ staan als configuratie bestand van de HA installatie worden geparsed en opgenomen.

Eén van de sensor configuratie files is DSMT_Actueel.yaml. Deze heeft de volgende inhoud:

Om deze gegevens ook daadwerkelijk op de front-end van HA te krijgen moet ook groups.yaml worden aangepast.

De Home-Assistant front-end geeft dan dit inzicht:

This entry was posted in Scripts, Uncategorised and tagged . Bookmark the permalink.

5 Responses to Home-Assistant Integratie met de DSMR-logger

  1. Sander says:

    Bedankt Willem, Ik ga er mee aan de slag !

  2. Klaas Marijs says:

    Weer mooi helder uitgelegd Willem, complimenten voor dit leuke projectje!

    Reageren op de vorige post gaat niet meer zag ik, wilde nog aangeven dat bij mij blijkbaar zowel de slimme meter (Kaifa MA304C) als de Vera Edge (waar ik ook de P1 mee uitlees) te weinig stroom leveren voor de ESP8266. Nu een externe USB voeding aangesloten op het printje en het werkt goed! Wil de waarden nu nog gaan loggen in een eigen database (via MQTT?) en hiermee grafieken op een webpagina maken. Actuele waarden toon ik nu mbv ImperiHome uit de Vera Edge.
    Zit er ook al een tijdje over te denken om van Vera over te stappen op HomeAssistant voor wat uitgebreidere mogelijkheden, dus dan komt dit artikel weer mooi van pas!
    Wat overigens apart is; eerder zag ik ook de spanning per fase in Vera. Nu niet meer en ook niet in de DSMR-logger, dus de slimme meter lijkt dit ineens niet meer uit te sturen? Enig idee hoe dat kan?

    Klaas Image 1
    Klaas Image 2
    Klaas Image 3

    • Willem Aandewiel says:

      Hoi Klaas,

      Mooi opgelost! Fijn dat de uitlezer (eindelijk) werkt.
      Op opencircuit.nl verschijnt één dezer dagen een post waarin ik ook een summiere uitleg geef over MQTT.
      Gegevens opslaan in MySQL (of de nieuwere versie daarvan “MariaDB”) is een mooie uitbreiding.
      Waarom de Slimme Meter opeens geen informatie over de spanning van de fasen geeft is voor mij ook een raadsel.

  3. Tom says:

    Heb je ook al geprobeerd de utility_meter component te gebruiken?
    Ik heb zelf al een NodeMCU ESP boardje aan m’n P1 poort van m’n Kaifa Ma105 hangen en deze schrijft de waarden weg in Home Assistant via MQTT.
    Echter krijg ik het (nog) niet voor elkaar de utility_meter component goed te configureren.

    • Willem Aandewiel says:

      Hi Tom,

      Dit project gebruikt de “dsmr” bibliotheek van Matthijs Kooijman.
      Als het uitlezen van de utility_meter component met deze bibliotheek uitgelezen kan worden dan kan het ook met de DSMR-logger.

Leave a Reply

Your email address will not be published. Required fields are marked *