Remote DSMR data in DSMR-reader en Home Assistant

geplaatst in: Domotica | 2

Update: Onderstaande uitleg om een virtuele seriële-poort (socat) te maken voor DSMR-Reader is sinds versie 4.1.x van deze software niet meer nodig. Versie 4.1.x kan namelijk de data uitlezen via een network socket (IPv4). 
Onderstaande stappen om een virtuele seriële-poort kan echter altijd nog handig zijn in andere situaties.

 

Standaard is Home Assistant behoorlijk zwak in het omgaan met grote hoeveelheden device data.
Als je dingen hebt die veelvuldig data doorgeven, zoals een P1/DSMR reader, worden deze gegevens standaard tot in het oneindige bewaard. Hierdoor groeit de database van Home Assistant erg snel.
Je zult dan dus al vrij snel keuzes moeten gaan maken wat je wel en niet wilt bewaren en gebruik gaan maken van bijvoorbeeld de recorder functie.

Omdat het systeem nog niet 100% naar tevredenheid is en ook nog niet alle devices binnen zijn, heb ik nog geen zin gehad om me verder te verdiepen in deze recorder functie, enkel ingesteld dat het maar een paar dagen bewaard blijft.
Wel wil ik graag de data van mijn P1 reader voor langere termijn bewaren en moest dus op zoek naar een oplossing.

Op diverse sites kwam ik een vermelding tegen van de software DSMR-reader. Een totaal oplossing voor het loggen van de P1 data, het genereert mooie grafieken, en kan de data doorschieten naar Home Assistant. (Eigenlijk is het doorschieten naar MQTT vanwaar bijvoorbeeld Home Assistant het kan lezen) Ik zat echter met 1 probleem. Mijn Home Assistant staat op een VM die in de woonkamer staat, en de meter zit, ehm ja, in de meterkast. Nu wil DSMR-reader graag een interne com-poort benaderen voor de data, maar heeft ook de mogelijkheid om een 2e instantie van DSMR-reader te gebruiken als datalogger die het via een interne API de gegevens doorstuurt naar de “hoofd” instantie. Ik zag het alleen niet zitten om enkel hiervoor een extra Raspberry Pi in de meterkast te installeren. Ik heb namelijk een 2 1/2 jaar geleden een speciale reader aangeschaft van de website esp8266thingies. Deze werkt met een aangepaste versie van ESPEasy welke draait op een Wemos D1 met een custom P1-poort hat. Deze P1 data is via ser2net extern aan te roepen.

Na een kleine zoektocht, kwam ik uiteindelijk een mogelijkheid tegen om een virtuele com-poort te maken met de “socat” functie.Deze heb ik ingesteld op de VM van DSMR-reader en dit werkt nu al een paar dagen vlekkeloos, de data komt mooi binnen in de backend en uiteindelijk ook in Home Assistant.

Omdat ik niet heel erg thuis ben in dit soort diepe(re) Linux commando’s, heb ik hieronder even de stappen neergezet wat ik gedaan heb. Misschien dat je hier zelf wat aan hebt!

Op de DSMR-reader server:
sudo apt-get update
sudo apt-install socat

 

Maak nu een script aan met de naam “socat.service” op de locatie: /etc/systemd/system/
sudo nano /etc/systemd/system/socat.service

En vul deze met onderstaande code:

[Unit]
Description=Socat Serial Loopback
#Before=my-other.service

[Service]
Type=simple
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=socat-serial-lo

ExecStart=sudo /usr/bin/socat -T60 pty,link=/dev/virtualcom1,rawer,group-late=dialout,mode=660 tcp:<P1-READER-IP>:<POORT>,retry=forever,interval=30
Restart=always
RestartSec=2000ms

[Install]
WantedBy=multi-user.target

Vergeet niet om de <P1-READER-IP>:<POORT> te vervangen met het IP en de poort waarop je P1 reader via ser2net de data uitspuwt. Bijvoorbeeld 192.168.1.100:8088

 

Na het opslaan gaan we de Daemon opnieuw laden:
systemctl daemon-reload

En het script enablen:
systemctl enable socat.service

En het script starten:
systemctl start socat.service

Controleer of het script draait:
systemctl status socat.service

Het koppelen van deze virtuele com-poort met DSMR-Reader kan door bij COM-poort in de DSMR-reader software het volgende in te stellen: /dev/virtualcom1

2 reacties

    • mdieli

      Bedankt voor je feedback Dennis! De update naar V4.1 had ik gemist en heb deze vanwege omstandigheden onlangs pas naar tevredenheid kunnen uitvoeren. Werkt dusver top!
      Voor de duidelijkheid heb ik even een update/disclaimer neergezet zodat het nu duidelijk zou moeten zijn dat dit niet meer van toepassing is op V4.x

Geef een reactie