hardware:channels:meters:power:dzg_dvh4013_modbus
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| hardware:channels:meters:power:dzg_dvh4013_modbus [2018/12/09 21:11] – Syntaxhighlight jau | hardware:channels:meters:power:dzg_dvh4013_modbus [2019/06/05 04:55] (aktuell) – Syntaxhighlight jau | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== DZG DVH 4013 Modbus ====== | ====== DZG DVH 4013 Modbus ====== | ||
| - | Der DZG DVH 4013 ist ein 3-Phase-Zähler, der auf einer RS485-Schnittstelle über das Modbus-Protokoll angesprochen werden kann. | + | Der DZG DVH 4013 ist ein 3-Phasen-Zähler, der auf einer RS485-Schnittstelle über das Modbus-Protokoll angesprochen werden kann. Im Gegensatz zum [[eastron_sdm630_modbus]] arbeitet er saldierend, d.h. er bildet die Summe über alle 3 Phasen und je nach Ergebnis wird entweder die Bezugs- oder Lieferrichtung gezählt. Damit entspricht er, bei der Verwendung als Zweirichtungszähler, |
| * [[https:// | * [[https:// | ||
| Zeile 7: | Zeile 7: | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| - | * [[https:// | + | * [[https:// |
| * [[https:// | * [[https:// | ||
| Zeile 16: | Zeile 16: | ||
| Leider hat der Autor dieses Textes bei den Tests mit dem Modbus-Zähler die Übersicht über die Quellen der RS485-Adapter verloren. Aktuell besteht der " | Leider hat der Autor dieses Textes bei den Tests mit dem Modbus-Zähler die Übersicht über die Quellen der RS485-Adapter verloren. Aktuell besteht der " | ||
| - | Dieser [[https:// | + | Dieser [[https:// |
| + | |||
| + | Als zuverlässiger USB-RS485 Konverter ist der [[http:// | ||
| ===== Auslesen mit mbrtu ===== | ===== Auslesen mit mbrtu ===== | ||
| - | Für die folgenden Skripte benötigt man [[https:// | + | Für die folgenden Skripte benötigt man [[https:// |
| - | Die seriellen Parameter sind 9600 8E2. Die Modbus-Adresse sind die letzten zwei Ziffern der Seriennummer, | + | Die seriellen Parameter sind 9600 8E2. Die Modbus-Adresse sind die letzten zwei Ziffern der Seriennummer |
| ==== Installation der Software ==== | ==== Installation der Software ==== | ||
| Zeile 39: | Zeile 41: | ||
| Der Zählerstand des Zählwerks 1.8.0 ist in diesem Fall 4452,560 kWh. | Der Zählerstand des Zählwerks 1.8.0 ist in diesem Fall 4452,560 kWh. | ||
| - | ==== BASH-Script, direkt | + | ==== Einbindung über einen vzlogger exec-Kanal ==== |
| - | Das Beispiel loggt den Total-Zählerstand (und nur den) direkt | + | Das folgende Script '' |
| + | angebunden werden | ||
| <code bash> | <code bash> | ||
| #!/bin/bash | #!/bin/bash | ||
| - | # | ||
| - | # log a register (electric energie) of Eastron meter to Volkszaehler.org | ||
| - | # | ||
| - | # example conjob: | ||
| - | # * * * * * root / | ||
| - | # | ||
| - | # PATH for cronjob | + | set -e |
| - | PATH=/ | + | set -u |
| - | # config Modbus | + | usage() { |
| - | TTY="/ | + | cat <<EOF |
| - | BAUD=9600 | + | $0 [options] register ... |
| - | PARITY=E | + | |
| - | STOPBITS=2 | + | |
| - | ADDR=0x47 | + | |
| - | REG=0x4000 | + | |
| + | -a|--addr | ||
| + | EOF | ||
| + | } | ||
| - | # config VZ | + | TEMP=" |
| - | HOST=localhost | + | -l tty:, |
| - | UUID=6836dd20-00d5-11e0-bab1-856ed5f959ae | + | +t:b:p:s:a: " |
| + | eval set -- " | ||
| - | # read Modbus | + | MBRTU=" |
| - | METER="$($HOME/mbrtu/ | + | TTY="" |
| + | BAUDRATE="" | ||
| + | PARITY="" | ||
| + | STOPBITS="" | ||
| + | ADDR="" | ||
| - | if [ -z "$METER" | + | while test " |
| - | | + | case $1 in |
| - | else | + | -t|--tty) |
| - | | + | shift |
| + | TTY="$1" | ||
| + | | ||
| + | -b|--baudrate) | ||
| + | shift | ||
| + | | ||
| + | ;; | ||
| + | | ||
| + | shift | ||
| + | PARITY="$1" | ||
| + | ;; | ||
| + | -s|--stopbits) | ||
| + | shift | ||
| + | STOPBITS=" | ||
| + | ;; | ||
| + | -a|--addr) | ||
| + | shift | ||
| + | ADDR=" | ||
| + | ;; | ||
| + | esac | ||
| + | shift | ||
| + | done | ||
| + | shift | ||
| - | # Timestamp | + | checkparameter() { |
| - | TS=$(date +%s) | + | |
| - | TS=$(($TS*1000)) | + | |
| + | if [ -z "${CONTENT}" | ||
| + | printf "%s must not be empty\\n" | ||
| + | exit 1 | ||
| + | fi | ||
| + | } | ||
| - | # write VZ | + | checkparameter tty " |
| - | echo wget -O - -q "http://$HOST/ | + | checkparameter baudrate |
| - | wget -O - -q "http://$HOST/ | + | checkparameter parity "${PARITY}" |
| - | printf " | + | checkparameter stopbits " |
| - | fi | + | checkparameter addr " |
| + | |||
| + | for reg in " | ||
| + | NOW="$(date +%s)" | ||
| + | METER=" | ||
| + | |||
| + | if [ -z "${METER}" | ||
| + | printf | ||
| + | | ||
| + | printf "%d: %s = %d\\n" " | ||
| + | | ||
| + | done | ||
| + | |||
| + | # end of file | ||
| </ | </ | ||
| + | |||
| + | === vzlogger exec-Kanal === | ||
| + | |||
| + | <code base> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== GoSDM630 ===== | ||
| + | |||
| + | Eine schönere Methode, die Modbus-Kommunikation zu erledigen, bietet das Tool GoSDM630. | ||
| + | |||
| + | * [[https:// | ||
| + | * [[http:// | ||
hardware/channels/meters/power/dzg_dvh4013_modbus.1544386296.txt.gz · Zuletzt geändert: von jau