Inhaltsverzeichnis

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.

Hardware

Der Zähler kann mit einem IR-Schreib-Lesekopf bei 300bd, 7E1 gelesen werden.

Beispielkonfiguration vzlogger

vzlogger.conf
{
"retry" : 30,
"verbosity" : 15,
"log" : "/var/log/vzlogger/vzlogger.log",
 
"local" : {
//	"enabled" : false,
	"port" : 8081,
	"index" : true,
	"timeout" : 30,
	"buffer" : 600
},
 
"meters" : [
	{
	"enabled" : true , 
	"protocol" : "d0", 
	"baudrate" : 300,
	"device" : "/dev/ttyUSB0",
	"parity" : "7E1",
	"pullseq" : "2f3f210d0a", // HEX Darstellung der Pullsequenz
	"interval" : 30, // Wartezeit bis zum nächsten Pull
	}
        ]
}

Auslesen per Shell-Skript

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

d0read.sh
#!/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

Beispielausgabe

/?!                 <-- 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)