Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:meters:power:dzg_dvh4013_modbus

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
hardware:channels:meters:power:dzg_dvh4013_modbus [2019/01/13 17:08]
zugschlus [Auslesen mit mbrtu] seriennummer plus 1, das beispiel war schon richtig
hardware:channels:meters:power:dzg_dvh4013_modbus [2019/06/05 04:55] (aktuell)
jau Syntaxhighlight
Zeile 7: Zeile 7:
   * [[https://​www.dzg.de/​fileadmin/​dzg/​content/​downloads/​produkte-zaehler/​dvh4013/​dzg-dvh4013-Bedienungsanleitung.pdf|Bedienungs- und Installationsanleitung]]   * [[https://​www.dzg.de/​fileadmin/​dzg/​content/​downloads/​produkte-zaehler/​dvh4013/​dzg-dvh4013-Bedienungsanleitung.pdf|Bedienungs- und Installationsanleitung]]
   * [[https://​www.dzg.de/​fileadmin/​dzg/​content/​downloads/​produkte-zaehler/​dvh4013/​Communication-Protocol_DVH4013.pdf|Kommunikationsprotokoll]]   * [[https://​www.dzg.de/​fileadmin/​dzg/​content/​downloads/​produkte-zaehler/​dvh4013/​Communication-Protocol_DVH4013.pdf|Kommunikationsprotokoll]]
-  * [[https://​www.dzg.de/​fileadmin/​dzg/​content/​downloads/​produkte-zaehler/​dvh4013/​DZG_Modbus_Protocol.pdf|Modbus Communication Protocol]]+  * [[https://​www.dzg.de/​fileadmin/​dzg/​content/​downloads/​produkte-zaehler/​dvh4013/​DZG_Modbus_Protocol.pdf|Modbus Communication Protocol ​inklusive Registernummern etc]]
   * [[https://​www.amazon.de/​DZG-DVH4013-Drehstromz%C3%A4hler-MID-geeicht/​dp/​B07GL661QK|Ein möglicher Kauf-Link bei Amazon]]   * [[https://​www.amazon.de/​DZG-DVH4013-Drehstromz%C3%A4hler-MID-geeicht/​dp/​B07GL661QK|Ein möglicher Kauf-Link bei Amazon]]
  
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 "​Verdacht",​ dass es sich bei dem funktionierenden Exemplar um [[https://​de.aliexpress.com/​item/​USB-2-0-auf-RS485-Serial-Converter-Adapter-CP2104-SN75176-doppel-schutz-SICHERUNG-TVS-stabiler-als/​32673883994.html?​shortkey=e63qq67v&​addresstype=600|dieses bei Aliexpress bezogene Produkt]] handelt, das sich am Raspberry Pi als "Bus 001 Device 006: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light" zeigt. 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 "​Verdacht",​ dass es sich bei dem funktionierenden Exemplar um [[https://​de.aliexpress.com/​item/​USB-2-0-auf-RS485-Serial-Converter-Adapter-CP2104-SN75176-doppel-schutz-SICHERUNG-TVS-stabiler-als/​32673883994.html?​shortkey=e63qq67v&​addresstype=600|dieses bei Aliexpress bezogene Produkt]] handelt, das sich am Raspberry Pi als "Bus 001 Device 006: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light" zeigt.
  
-Dieser [[https://​www.amazon.de/​gp/​product/​B01EFMBBEM|optisch ähnliche]] MENGS-Adapter von Amazon hat im Test im Spätjahr 2016 unter Linux nicht funktioniert. Der Unterschied zum funktionerenden Adapter ist, dass der MENGS-Adapter nur zwei Anschlußklemmen hat; das funktionierende Exemplar hat derer drei (von denen aber nur zwei zu beschalten sind.+Dieser [[https://​www.amazon.de/​gp/​product/​B01EFMBBEM|optisch ähnliche]] MENGS-Adapter von Amazon hat im Test im Spätjahr 2016 unter Linux nicht funktioniert. Der Unterschied zum funktionerenden Adapter ist, dass der MENGS-Adapter nur zwei Anschlußklemmen hat; das funktionierende Exemplar hat derer drei (von denen aber nur zwei zu beschalten sind).
  
-Als zuverlässiger USB-RS485 Konverter ist der [[http://​www.amazon.de/​Digitus-DA-70157-Seriell-Adapter-USB/​dp/​B007VZY4CW|Digitus DA-70157]] ​bkeannt.\\ +Als zuverlässiger USB-RS485 Konverter ist der [[http://​www.amazon.de/​Digitus-DA-70157-Seriell-Adapter-USB/​dp/​B007VZY4CW|Digitus DA-70157]] ​bekannt. Als Pull-Down und Pull-Up 860Ω Widerstände verwenden. Die beide Busenden mit 120Ω terminieren.
-Als Pull-Down und Pull-Up 860Ω Widerstände verwenden. Die beide Busenden mit 120Ω terminieren.+
  
 ===== Auslesen mit mbrtu ===== ===== Auslesen mit mbrtu =====
  
-Für die folgenden Skripte benötigt man [[https://​github.com/​gitaeuber/​mbrtu|mbrtu]],​ das auf libmodbus basiert. Es ist gegen die (statisch)e Bibliothek ​libmodbus gelinkt. mbrtu benötigt mindestens die Version 3.1.3 von libmodbus. Die im Dezember 2018 in Debian ​stable und dem darauf ​basierenden ​Raspbian enthaltene Version 3.0.6 ist zu alt für mbrtuEs gibt ein Source-Paket ​einer neueren libmodbus in Debian ​unstable; ein Backport dieser Library könnte vermutlich zum gewünschten Ergebnis führen.+Für die folgenden Skripte benötigt man [[https://​github.com/​gitaeuber/​mbrtu|mbrtu]],​ das auf libmodbus basiert. Es ist gegen die libmodbus gelinkt. mbrtu benötigt mindestens die Version 3.1.3 von libmodbus, die bei Debian-basierenden ​Distributionen erst ab "​buster"​ enthalten ​ist. Das Source-Paket ​aus Debian ​buster ist auf älteren Distributionen baubar.
  
 Die seriellen Parameter sind 9600 8E2. Die Modbus-Adresse sind die letzten zwei Ziffern der Seriennummer plus eins, als Hex-Ziffern geschrieben. Zum Beispiel hat das Gerät des Autors die Seriennummer 2546 und die Modbus-Adresse 0x47 (-a 0x47 auf der mbrtu-Kommandozeile). Die seriellen Parameter sind 9600 8E2. Die Modbus-Adresse sind die letzten zwei Ziffern der Seriennummer plus eins, als Hex-Ziffern geschrieben. Zum Beispiel hat das Gerät des Autors die Seriennummer 2546 und die Modbus-Adresse 0x47 (-a 0x47 auf der mbrtu-Kommandozeile).
Zeile 42: 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 ​über die VZ-Middleware.+Das folgende Script ''​exec-modbus''​ kann über einen vzlogger [[software:​controller:​vzlogger:​vzlogger_conf_parameter#​exec|exec-Kanal]] 
 +angebunden werden
  
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
-# 
-# log a register (electric energie) of Eastron meter to Volkszaehler.org 
-# 
-# example conjob: 
-# * * * * * root /​usr/​local/​bin/​dvh4013_mbrtu.sh >> /​var/​log/​mbrtu.log 2>> /​var/​log/​mbrtu.log 
-# 
  
-# PATH for cronjob +set -e 
-PATH=/​usr/​local/​bin:​$PATH+set -u
  
-# config Modbus +usage() { 
-TTY="/​dev/​ttyUSB0"​ +cat <<EOF 
-BAUD=9600 +$0 [options] register ... 
-PARITY=E +        ​-t|--tty 
-STOPBITS=2 +        ​-b|--baudrate 
-ADDR=0x47 +        ​-p|--parity 
-REG=0x4000+        ​-s|--stopbits 
 +        -a|--addr 
 +EOF 
 +}
  
-# config VZ +TEMP="​$(getopt -n installremote \ 
-HOST=localhost +        -l tty:,​baudrate:,​parity:,​stopbits:,​addr: ​-- 
-UUID=6836dd20-00d5-11e0-bab1-856ed5f959ae+        +t:b:p:s:a: "​$@"​)"​ 
 +eval set -"​${TEMP}"​
  
-# read Modbus +MBRTU="​mbrtu
-METER="$($HOME/mbrtu/​mbrtu/​mbrtu -d$TTY -b$BAUD -p$PARITY ​-s$STOPBITS ​-Q -P -a$ADDR -f3 -tint32 -n2 -r$REG | cut -d\  -f3)"+TTY=""​ 
 +BAUDRATE=""​ 
 +PARITY=""​ 
 +STOPBITS=""​ 
 +ADDR=""
  
-if [ -"$METER" ​]then +while test "​$1"​ != "--"; do 
-    ​echo ​"no data revcieved on modbus+        case $1 in 
-else +                -t|--tty) 
-    ​echo ​"$METER"+                        shift 
 +                        TTY="$1" 
 +                        ​;
 +                -b|--baudrate) 
 +                        shift 
 +                        ​BAUDRATE="$1
 +                        ;; 
 +                ​-p|--parity) 
 +                        shift 
 +                        PARITY="$1" 
 +                        ;; 
 +                -s|--stopbits) 
 +                        shift 
 +                        STOPBITS="​$1"​ 
 +                        ;; 
 +                -a|--addr) 
 +                        shift 
 +                        ADDR="​$1"​ 
 +                        ;; 
 +        esac 
 +        shift 
 +done 
 +shift
  
-    # Timestamp +checkparameter() { 
-    TS=$(date +%s) +        ​PARMNAME="${1:-}" 
-    TS=$(($TS*1000))+        ​CONTENT="${2:​-}"​ 
 +        if [ -z "${CONTENT}"​ ]; then 
 +                printf "%s must not be empty\\n"​ "​${PARMNAME}"​ 
 +                exit 1 
 +        fi 
 +}
  
-    # write VZ +checkparameter tty "​${TTY}"​ 
-    echo wget -- -"http://$HOST/​middleware.php/​data/​$UUID.json?​operation=add&​ts=$TS&value=${METER}"​ +checkparameter baudrate "​${BAUDRATE}"​ 
-    wget -O - -"http://$HOST/middleware.php/data/$UUID.json?​operation=add&​ts=$TS&​value=${METER}+checkparameter parity "​${PARITY}"​ 
-    ​printf ​"\n+checkparameter stopbits "​${STOPBITS}"​ 
-fi+checkparameter addr "​${ADDR}"​ 
 + 
 +for reg in "​$@";​ do 
 +        NOW="​$(date +%s)"​ 
 +        METER="​$($MBRTU ​-d"​${TTY}" ​-b"​${BAUDRATE}" ​-p"${PARITY}"​ -s"${STOPBITS}"​ -Q -P -a"${ADDR}"​ -f3 -tint32 -n2 -r"​${reg}"​ | cut -d\  -f3)"​ 
 + 
 +        if [ -z "​${METER}"​ ]; then 
 +                printf >&2 "no data received on modbus\\n"​ 
 +        else 
 +                printf "%d: %s %d\\n" "​${NOW}"​ "​${reg}"​ "${METER:-0}" 
 +        fi 
 +done 
 + 
 +# end of file 
 +</​code>​ 
 + 
 +=== vzlogger exec-Kanal === 
 + 
 +<code base> 
 +        { 
 +            "​enabled": ​true, 
 +            "​allowskip":​ true, 
 +            "​protocol":​ "​exec",​ 
 +            "​command":​ "/path/to/exec-modbus --tty /dev/ttyUSBx --baudrate 9600 --parity E --stopbits 2 --addr 0x47 0x4001 0x0000 0x0002 0x0004 0x0006 0x0008",​ 
 +                       "​format":​ "$t: $= $v", 
 +            "​interval":​ 30, 
 +            "​channels": ​ [ 
 +                ​{ 
 +                    "​uuid":​ "", 
 +                    "identifier": "​0x4001",​ 
 +                    "​middleware":​ ""​ 
 +                } 
 +            ] 
 +        }
 </​code>​ </​code>​
  
Zeile 95: Zeile 157:
   * [[https://​github.com/​gonium/​gosdm630|GoSDM630 - An interface for the Eastron SDM/Modbus smart meter series]]   * [[https://​github.com/​gonium/​gosdm630|GoSDM630 - An interface for the Eastron SDM/Modbus smart meter series]]
       * [[http://​demo.volkszaehler.org/​pipermail/​volkszaehler-users/​2018-December/​012376.html|Mailinglistendiskussion dazu]]       * [[http://​demo.volkszaehler.org/​pipermail/​volkszaehler-users/​2018-December/​012376.html|Mailinglistendiskussion dazu]]
 +
hardware/channels/meters/power/dzg_dvh4013_modbus.1547395702.txt.gz · Zuletzt geändert: 2019/01/13 17:08 von zugschlus