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 ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
hardware:channels:meters:power:dzg_dvh4013_modbus [2019/01/13 17:08] – [Auslesen mit mbrtu] seriennummer plus 1, das beispiel war schon richtig zugschlus | hardware:channels:meters:power:dzg_dvh4013_modbus [2019/06/04 18:33] – zugschlus | ||
---|---|---|---|
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:// | + | Als zuverlässiger USB-RS485 Konverter ist der [[http:// |
- | 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:// | + | 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 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 | + | Das folgende Script '' |
+ | angebunden werden | ||
- | < | + | < |
#!/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/middleware.php/data/$UUID.json? | + | checkparameter parity " |
- | | + | checkparameter stopbits " |
- | fi | + | checkparameter addr " |
+ | |||
+ | for reg in " | ||
+ | NOW=" | ||
+ | METER=" | ||
+ | |||
+ | if [ -z " | ||
+ | printf >&2 "no data received on modbus\\n" | ||
+ | else | ||
+ | printf "%d: %s = %d\\n" " | ||
+ | fi | ||
+ | done | ||
+ | |||
+ | # end of file | ||
+ | </ | ||
+ | |||
+ | === vzlogger exec-Kanal === | ||
+ | |||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | | ||
+ | " | ||
+ | "identifier": " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | } | ||
</ | </ | ||
Zeile 95: | Zeile 157: | ||
* [[https:// | * [[https:// | ||
* [[http:// | * [[http:// | ||
+ |
hardware/channels/meters/power/dzg_dvh4013_modbus.txt · Zuletzt geändert: 2019/06/05 04:55 von jau