Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:meters:power:eastron_sdm630_modbus

Eastron SDM630 Modbus

Beim „SDM630 Modbus“ von Eastron (Vertrieb durch B+G E-tech) handelt sich um einen billigen 3-Phasenzähler der, wie der Name schon vermuten lässt, sich per RS485 und Modbusprotokoll auslesen lässt.

Billig meint hier auch, dass man vorsichtig mit dem Festziehen der Stromkabel sein muss (nach „fest“ kommt „kaputt“).

Der Zähler misst ziemlich viele Werte, wenn er mit Neutralleiter angeschlossen ist. Allerdings zählt er nicht phasensaldierend. Als Zweirichtungszähler wird er daher andere Werte ermitteln als die Zähler der Netzbetreiber. Kostengünstige, phasensaldierende Alternative wäre der dzg_dvh4013_modbus.

Die Modbus-Registerübersicht kann man auf der Seite des deutschen Vertriebs herunterladen.

Hardware

Als USB-RS485 Konverter genügt einen Digitus DA-70157.
Diesen mit 860Ω Pull-Down und Pull-Up versehen. Außerdem sind beide Busenden mit 120Ω zu terminieren.

Die Portbezeichnung (A|B) am SDM630 stimmt nicht mit der am USB-RS485 Adapter überein; einfach vertauschen.

Kommunikation

Der Zähler unterstützt laut Doku nur 30 Werte (60 Register) pro Abfrage.

Auslesen mit mbrtu

Für die folgenden Skripte benötigt man das kleine Programm mbrtu, das auf libmodbus basiert. Es ist gegen die (statisch)e Bibliothek libmodbus gelinkt. Achtung: Es wird die Version libmodbus 3.1.3 benötigt. Diese ist ab Debian buster in der Distribution enthalten; Benutzer älterer Distributionen können diese einfach von github herunterladen.

Installation der Software

libmodbus

(wenn die libmodbus 3.1.3 nicht schon in der Distribution enthalten ist)

cd ~
git clone git://github.com/stephane/libmodbus
cd libmodbus
./autogen.sh
./configure --enable-static
make
sudo make install
sudo cp ./src/.libs/libmodbus.a /usr/local/lib/

mbrtu

cd ~
git clone https://github.com/gitaeuber/mbrtu
cd mbrtu
make
sudo make install

BASH-Script, direkt

Im Folgenden läuft die Verbindung mit 2400bd 8N1.

Das Beispiel loggt den Total-Zählerstand (und nur den) direkt über die VZ-Middleware.

#!/bin/bash
#
# log a register (electric energie) of Eastron meter to Volkszaehler.org
#
# example conjob:
# * * * * *	root	/usr/local/bin/sdm_mbrtu.sh
#
 
# PATH for cronjob
PATH=/usr/local/bin:$PATH
 
# config Modbus
TTY="/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0"
BAUD=2400
ADDR=1
REG=342
 
# config VZ
HOST=localhost
UUID=6836dd20-00d5-11e0-bab1-856ed5f959ae
 
 
# read Modbus
DATA=( $(mbrtu -d$TTY -b$BAUD -pn -s1 -a$ADDR -fi -tf32_dcba -n2 -r$REG) )
if [ -z ${DATA[2]} ]
then
    echo "no data revcieved on modbus"
else
    echo "${DATA[2]}"
 
    # Timestamp
    TS=$(date +%s)
    TS=$(($TS*1000))
 
    # write VZ
    echo wget -O - -q "http://$HOST/middleware.php/data/$UUID.json?operation=add&ts=$TS&value=${DATA[2]#DATA=}"
    wget -O - -q "http://$HOST/middleware.php/data/$UUID.json?operation=add&ts=$TS&value=${DATA[2]#DATA=}"
    printf "\n"
fi

BASH-Script, gepuffert

Im Folgenden läuft die Verbindung mit 9600bd 8E1.

Im Beispiel werden die Daten monatlich getrennt in eine Datei (mit log-powermeter.sh) geloggt.

Das Logging geschieht minütlich per cronjob:

/etc/cron.d/log_powermeter
#
# log power meter
#
* * * * *       root    /usr/local/bin/log_powermeter.sh

Per Cronjob wird dann auch der vergangene Monat komprimiert und nächtlich der letzte Tag in den Volkszähler importiert (vz-import_power.sh):

/etc/cron.d/import_vz
#
# remember to escape "%"
#
# import data into volkszaehler
#

15 1 * * *      root    /bin/fgrep "$(date +\%F -d yesterday) " /srv/power/$(date +\%Y-\%m -d yesterday).log | /usr/local/bin/vz-import_sdm630.sh 2>/dev/null
6 0 2 * *       root    nice -n 9 xz -9 /srv/power/$(date +\%Y-\%m -d 2\ days\ ago).log
aktuelle Versionen nun hier bei github: https://github.com/gitaeuber/data_logger.git

vzlogger exec-Kanal

Man kann über ein kleines Zwischenscript mbrtu in einem vzlogger exec-Kanal verwenden. Dabei ist kein dedizierter cronjob notwendig. Die Beschreibung findet sich in der Wikiseite über den DZG DVH 4013 Modbus.

GoSDM630

Eine schönere Methode, die Modbus-Kommunikation zu erledigen, bietet das Tool GoSDM630.

Quellen

Anhänge

hardware/channels/meters/power/eastron_sdm630_modbus.txt · Zuletzt geändert: 2021/02/01 16:16 von jau