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 RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
hardware:channels:meters:power:dzg_dvh4013_modbus [2018/12/14 08:10] – Hinweis auf GoSDM630 zugschlushardware:channels:meters:power:dzg_dvh4013_modbus [2019/06/04 18:33] zugschlus
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, 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).
  
 ==== Installation der Software ==== ==== Installation der Software ====
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>
 #!/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> 
 +        { 
 +            "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.txt · Zuletzt geändert: 2019/06/05 04:55 von jau