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
DS
Bedankt voor je oplossing en toelichting! Vanaf DSMR-reader v4.1 heb je hier waarschijnlijk geen socat meer voor nodig en kun je direct in de applicatie zelf de benodigde ser2net host/poort instellen. Mogelijk maakt dat het nog wat gemakkelijker voor je.
Meer info: https://github.com/dennissiemensma/dsmr-reader/issues/1057#issuecomment-665297541
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