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: 2018/12/09 21:11 von jau