====== DZG DVH 4013 Modbus ====== 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, den deutschen Vorgaben. * [[https://www.dzg.de/produkte/hutschienenzaehler/|Herstellerwebseite]] * [[https://www.dzg.de/fileadmin/dzg/content/downloads/produkte-zaehler/dvh4013/Datenblatt_DZG_DVH4013.pdf|Datenblatt]] * [[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/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]] ===== Hardware ===== Der Zähler hat sich in ersten Tests im Jahr 2016 und 2017 als "Diva" erwiesen. Es mussten mehrere USB-RS485-Adapter ausprobiert werden, bis es funktioniert hat. Dabei scheint es Unterschiede zwischen Linux und Windows zu geben; es gibt mindestens einen Adapter, der unter Windows prima funktioniert, unter Linux aber nicht. Andersherum lässt sich der Adapter, der bei der Installation des Autors dieses Textes unter Linux prima funktioniert, unter Windows partout nicht zur Mitarbeit überreden. Die ca 150 cm lange Leitung zwischen RS485-Adapter und dem Zähler bei der Installation des Autors ist weder terminiert noch mit Pullup/Pulldown-Widerständen versehen. 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). 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. ===== 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 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). ==== Installation der Software ==== Siehe die Wiki-Seite zum [[http://wiki.volkszaehler.org/hardware/channels/meters/power/eastron_sdm630_modbus|Eastron SDM 630.]] Nennt apt show libmodbus-dev | grep Version eine Version 3.1.3 oder neuer, kann man apt install libmodbus-dev ausführen und ist fertig. Sonst muss eine manuelle Installation erfolgen, wie auf [[http://wiki.volkszaehler.org/hardware/channels/meters/power/eastron_sdm630_modbus|Eastron SDM 630]] beschrieben. mbrtu muss man aktuell selbst bauen, da es (noch?) nicht für Debian paketiert ist. Ein möglicher, erfolgreicher Test: ./mbrtu -d/dev/ttyUSB2 -b9600 -pE -s2 -Q -P -a0x47 -f3 -tint32 -n2 -r0x4000 71 16384 4452560 Der Zählerstand des Zählwerks 1.8.0 ist in diesem Fall 4452,560 kWh. ==== Einbindung über einen vzlogger exec-Kanal ==== Das folgende Script ''exec-modbus'' kann über einen vzlogger [[software:controller:vzlogger:vzlogger_conf_parameter#exec|exec-Kanal]] angebunden werden #!/bin/bash set -e set -u usage() { cat <&2 "no data received on modbus\\n" else printf "%d: %s = %d\\n" "${NOW}" "${reg}" "${METER:-0}" fi done # end of file === vzlogger exec-Kanal === { "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: $i = $v", "interval": 30, "channels": [ { "uuid": "", "identifier": "0x4001", "middleware": "" } ] } ===== GoSDM630 ===== Eine schönere Methode, die Modbus-Kommunikation zu erledigen, bietet das Tool GoSDM630. * [[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]]