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 op true of 1 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.