Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:meters:power:edl-ehz:zmd120ap

Dies ist eine alte Version des Dokuments!


Landis & Gyr ZMD120AP (D0)

Genauer Typ: ZMDAPtCS G03, baugleich mit ZFD120AP

Über die Infrarotschnittstelle kann der Zähler gemäß IEC61107 oder DLMS (Device Language Message Specification) ausgelesen werden.

Bis vzlogger Version 0.3.3 gibt es noch einige Fehler, so dass unter anderem die Wiederholung der Pullsequenz in der Ausgabe als Endesequenz interpretiert wird und damit keine Auslesung möglich ist. Mit folgendem Shell-Skript habe ich den Zähler auf einem Raspberrypi mit Udos Erweiterung und IR-TTL-Schreib-Lesekopf (/dev/ttyAMA0) ausgelesen:

Shell-Skript zum D0-Zähler auslesen

Z.B. als d0read.sh mit folgenden Text anlegen:

#!/bin/bash
stty 300  -F /dev/ttyAMA0 1:4:da7:a30:3:1c:7f:15:4:10:0:0:11:13:1a:0:12:f:17:16:
0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

COUNTER=1
while [ $COUNTER -le 5 ]
do
    ( sleep 1; echo -e "\x2f\x3f\x21\x0d\x0a" > /dev/ttyAMA0 ) &
    #sende "/?!" mit Return an Raspi (Udo's Erweiterung + IR-Kopf seriell)
    while read -t8 line
    do
      echo $line # > /home/pi/lgread.log
    done < /dev/ttyAMA0

    while read -t8 line
    do
      echo $line # >> /home/pi/lgread.log
    done < /dev/ttyAMA0

    echo "COUNTER: " $COUNTER
    let COUNTER=COUNTER+1
done

exit

Nicht vergessen, die Datei als ausführbar zu markieren: chmod +x d0read.sh

Ausgabe des Zählers:

/?!                 <-- Wiederholung der gesendeten Pullsequenz

/LGZ52ZMD120APt.G03 <-- Antwort mit Herstellerkennung, mögliche Baudrate und Typ
F.F(00000000)       <-- Fehlercode
0.0.0( 20000)       <-- Zählernummer
1.8.1(001846.0*kWh) <-- Hochtarif, bzw. einziger Tarif: Zählerstand Energielieferung
1.8.2(000000.0*kWh) <-- Niedertarif: Zählerstand Energielieferung
2.8.1(004329.6*kWh) <-- Hochtarif, bzw. einziger Tarif: Zählerstand Energieeinspeisung
2.8.2(000000.0*kWh) <-- Niedertarif: Zählerstand Energieeinspeisung
1.8.0(001846.0*kWh) <-- Summe Zählerstand Energielieferung
2.8.0(004329.6*kWh) <-- Summe Zählerstand Energieeinspeisung
!                   <-- Endesequenz

Es kann noch weitere Codes „C.7.0(0012)“ bei Spannungsfehlern, oder „C.2.1(01-09-10)“ als Datum der letzten Parametrierung geben. Leider wird die aktuelle Leistung nicht ausgegeben. Für genaue Verbrauchswerte ist der Zähler deshalb nur bedingt geeignet.

Code: C.8.0(02050385): Lifetime in minutes ($ date -d 'now - 2050385 minutes' ⇒ Wed Jun 13 19:40:08 CEST 2012)

Mit der vzlogger Version läuft mein Zähler stabil: Mit einer Minimalversion der /etc/vzlogger.conf ohne Datenbank-Update kann man die Ausgabewerte prüfen. Der Parameter ' „verbosity“ : 15 ' lässt den Zähler etwas gesprächiger werden.

{
"retry" : 30,			/* how long to sleep between failed requests, in seconds */
"daemon": false,		/* run periodically */
"verbosity" : 15,		/* between 0 and 15 */
"log" : "/var/log/vzlogger.log",/* path to logfile, optional */

"local" : {
//	"enabled" : false,	/* should we start the local HTTPd for serving live readings? */
	"port" : 8080,		/* the TCP port for the local HTTPd */
	"index" : true,		/* should we provide a index listing of available channels if no UUID was requested? */
	"timeout" : 30,		/* timeout for long polling comet requests, 0 disables comet, in seconds */
	"buffer" : 600		/* how long to buffer readings for the local interface, in seconds */
},

"meters" : [
	{
	"enabled" : true , 
	"protocol" : "d0", 
	"baudrate" : 300,
	"device" : "/dev/ttyAMA0", // oder "/dev/ttyUSB0"
	"parity" : "7E1",
	"pullseq" : "2f3f210d0a", // HEX Darstellung der Pullsequenz
	"interval" : 30, // Wartezeit bis zum nächsten Pull
	}
        ]
}

Start des vzloggers im Vordergrund: vzlogger –f

hardware/channels/meters/power/edl-ehz/zmd120ap.1462632813.txt.gz · Zuletzt geändert: 2016/05/07 16:53 von herman