Installatie: Remote datalogger
Notitie
Dit installeert een datalogger, die telegrammen doorstuurt naar een installatie van DSMR-reader op afstand, via de API.
Het script voor de remote datalogger is op de schop gegaan in DSMR-reader v5.x
. Mocht je een eerdere versie gebruiken, overweeg dan om deze opnieuw te installeren met de nieuwere versie hieronder.
Let op
Voor de duidelijkheid, er zouden twee omgevingen moeten zijn:
Het apparaat waar de remote datalogger op draait
Het apparaat (of server) waarop de ontvangende DSMR-reader-instantie draait
Ontvangende DSMR-reader-instantie
Zorg ervoor dat je eerste de API van de ontvangende DSMR-reader-instantie klaar hebt staan. Je kunt daar de API inschakelen en bijbehorende API-sleutel inzien/bewerken in de configuratie.
Hint
Wanneer je slimme meter alleen DSMR v2 ondersteunt (of je gebruikt een niet-Nederlandse slimme meter), zorg er dan voor dat je de DSMR-versie aanpast in de datalogger-configuratie, zodat DSMR-reader de telegrammen goed kan verwerken.
Verder kun je hier het datalogger proces uitschakelen, gezien die toch niet nodig is:
sudo rm /etc/supervisor/conf.d/dsmr_datalogger.conf
sudo supervisorctl reread
sudo supervisorctl update
Apparaat met remote datalogger
Wissel naar het apparaat waarop je de remote datalogger wilt installeren.
Voer uit:
sudo apt-get install -y supervisor python3 python3-pip python3-venv libopenjp2-7-dev
sudo useradd dsmr --home-dir /home/dsmr --create-home --shell /bin/bash
sudo usermod -a -G dialout dsmr
sudo chown -R dsmr:dsmr /home/dsmr/
sudo -u dsmr python3 -m venv /home/dsmr/.venv/
sudo -u dsmr /home/dsmr/.venv/bin/pip3 install pyserial==3.5 requests==2.27.1 python-decouple==3.6
Datalogger script
Maak een nieuw bestand /home/dsmr/dsmr_datalogger_api_client.py
met deze inhoud: dsmr_datalogger_api_client.py op GitHub
Of voer het volgende uit om het direct op bovenstaand pad te downloaden:
sudo wget -O /home/dsmr/dsmr_datalogger_api_client.py https://raw.githubusercontent.com/dsmrreader/dsmr-reader/v5/dsmr_datalogger/scripts/dsmr_datalogger_api_client.py
API-configuratie (.env
)
Let op
Sinds DSMR-reader v5.x
zijn alle env vars voor dit script uitgebreid met REMOTE_
vooraan. Bijvoorbeeld DATALOGGER_INPUT_METHOD
is nu DSMRREADER_REMOTE_DATALOGGER_INPUT_METHOD
.
Dit heeft alleen invloed op nieuwe installaties van het script.
Hint
Je bent niet verplicht om het .env
-bestand te gebruiken. Als alternatief kun je alle instellingen hieronder ook als systeem-omgevingsvariabelen instellen.
Maak een ander bestand genaamd /home/dsmr/.env
aan en zet daar de volgende inhoud in:
### The DSMR-reader API('s) to forward telegrams to:
DSMRREADER_REMOTE_DATALOGGER_API_HOSTS=
DSMRREADER_REMOTE_DATALOGGER_API_KEYS=
Houd het bestand open voor meerdere wijziginge / toevoegingen hieronder.
Voeg het schema (http://
/https://
) en hostnaam/poort toe aan DSMRREADER_REMOTE_DATALOGGER_API_HOSTS
. Voeg de API key toe aan DSMRREADER_REMOTE_DATALOGGER_API_KEYS
. Bijvoorbeeld:
# Example with default port:
DSMRREADER_REMOTE_DATALOGGER_API_HOSTS=http://12.34.56.78
DSMRREADER_REMOTE_DATALOGGER_API_KEYS=1234567890ABCDEFGH
# Example with non standard port, e.g. Docker:
DSMRREADER_REMOTE_DATALOGGER_API_HOSTS=http://12.34.56.78:7777
DSMRREADER_REMOTE_DATALOGGER_API_KEYS=0987654321HGFEDCBA
Tip
Gebruik je dezelfde remote datalogger voor meerdere instanties van DSMR-reader? Gebruik dan DSMRREADER_REMOTE_DATALOGGER_API_HOSTS
en DSMRREADER_REMOTE_DATALOGGER_API_KEYS
als komma-gescheiden lijsten:
# Example with multiple DSMR-reader installations:
DSMRREADER_REMOTE_DATALOGGER_API_HOSTS=http://12.34.56.78,http://87.65.43.21:7777
DSMRREADER_REMOTE_DATALOGGER_API_KEYS=1234567890ABCDEFGH,0987654321HGFEDCBA
### API host "http://12.34.56.78" uses API key "1234567890ABCDEFGH"
### API host "http://87.65.43.21:7777" uses API key "0987654321HGFEDCBA"
Seriële poort of netwerk socket instellen?
Kies hieronder voor ofwel A.
of B.
.
A. Seriële poort (.env
)
Gebruik je een kabel om telegrammen direct vanaf de seriële poort uit te lezen?
Voeg dan de volgende inhoud toe aan /home/dsmr/.env
:
DSMRREADER_REMOTE_DATALOGGER_INPUT_METHOD=serial
DSMRREADER_REMOTE_DATALOGGER_SERIAL_PORT=/dev/ttyUSB0
# DSMR meter version 4/5
DSMRREADER_REMOTE_DATALOGGER_SERIAL_BAUDRATE=115200
DSMRREADER_REMOTE_DATALOGGER_SERIAL_BYTESIZE=8
DSMRREADER_REMOTE_DATALOGGER_SERIAL_PARITY=N
Mocht je een andere poort of seriële instelling nodig hebben, verander dan de waarden naar wens. Bijvoorbeeld voor een oudere slimme meter:
# DSMR meter version 2/3
DSMRREADER_REMOTE_DATALOGGER_SERIAL_BAUDRATE=9600
DSMRREADER_REMOTE_DATALOGGER_SERIAL_BYTESIZE=7
DSMRREADER_REMOTE_DATALOGGER_SERIAL_PARITY=E
B. Netwerk socket (.env
)
Gebruik je een netwerk socket voor het uitlezen van de telegrammen? Bijvoorbeeld: ser2net
.
Voeg dan de volgende inhoud toe aan /home/dsmr/.env
:
DSMRREADER_REMOTE_DATALOGGER_INPUT_METHOD=ipv4
DSMRREADER_REMOTE_DATALOGGER_NETWORK_HOST=
DSMRREADER_REMOTE_DATALOGGER_NETWORK_PORT=
Stel de hostname of het IP-adres in DSMRREADER_REMOTE_DATALOGGER_NETWORK_HOST
en de poort in DSMRREADER_REMOTE_DATALOGGER_NETWORK_PORT
.
Overige instellingen (.env
)
De volgende instellingen zijn optioneel en kunnen naar wens aangepast worden, wanneer nodig:
DSMRREADER_REMOTE_DATALOGGER_TIMEOUT
: De tijd in seconden dat maximaal gewacht wordt op de datalogger en de ontvangende DSMR-reader API. Laat weg om de standaardwaarde te gebruiken.DSMRREADER_REMOTE_DATALOGGER_SLEEP
: De tijd in seconden dat de remote datalogger pauzeert, nadat deze een telegram naar de DSMR-reader API heeft verstuurt. Laat weg om de standaardwaarde te gebruiken.DSMRREADER_REMOTE_DATALOGGER_DEBUG_LOGGING
: Stel in optrue
of1
om uitgebreide debug-logging in te schakelen. Laat weg om uit te schakelen. Waarschuwing: Indien voor langere tijd ingeschakeld kan dit bijdragen aan de slijtage van je SD-kaartje op een Raspberry Pi!
Supervisor
Hint
De stappen hieronder zijn eveneens bedoeld voor het apparaat waar je net de remote datalogger op geinstalleerd hebt.
Maak een nieuwe Supervisor-config in /etc/supervisor/conf.d/dsmr_remote_datalogger.conf
met inhoud:
[program:dsmr_remote_datalogger]
command=/home/dsmr/.venv/bin/python3 -u /home/dsmr/dsmr_datalogger_api_client.py
pidfile=/tmp/dsmrreader--%(program_name)s.pid
user=dsmr
group=dsmr
autostart=true
autorestart=true
startsecs=1
startretries=100
stopwaitsecs=20
redirect_stderr=true
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=3
Laat Supervisor zijn eigen instellingen uitlezen en doorvoeren, om het proces te starten:
sudo supervisorctl reread
sudo supervisorctl update
Het script zou nu telegrammen moeten doorsturen naar de API host(s) die je eerder hebt ingevoerd.