Inhaltsverzeichnis
Iskraemeco MT174
Genaue Typenbezeichnung: MT174-D2A52-G22-M3K0
Das „K0“ bedeutet, dass er über eine bidirektionale Kundenschnittstelle nach DIN EN 62056-21 verfügt. Dieser hier kommuniziert in d0.
Hardware
Kommunikation mittels IR-Schreib-Lesekopf bei 300bd, 7E1 nach DIN EN 62056-21. Der Lesekopf muss mit der Zuleitung nach unten montiert werden.
Kommunikation
Der Zähler sendet nicht automatisch, er muss mit einer Initialisierungssequenz angestoßen werden.
/?!<0D><0A>
Der Zähler antwortet z.B. mit
/ISk5MT174-0001
Die Baudrate läßt sich auch auf 9600 Baud umstellen wenn man innerhalb von 2s nachdem der Zähler seine Identifikation geschickt hat, ein Acknowledge Paket (ACK050CRLF) schickt (Zahlen in <> in HEX).
<06>050<0D><0A>
Worauf der Zähler beginnt seine Daten mit 9600 Baud auszugeben.
Beispiel vzlogger.conf
Im Frontend wird ein Kanal 'El.Energie (Zählerstände)' angelegt. Als Auflösung wird '1' eingetragen. Der Style sollte 'steps' sein. Ein Haken bei 'Öffentlich' und bei 'Cookie' machen. Weiter sollte der 'Initialverbrauch' (aktueller Zählerstand) eingetragen werden. Die UUIDs werden automatisch erzeugt und können durch klicken auf das (i) rechts neben dem Kanal sichtbar gemacht werden. Wenn alles funktioniert, kann 'verbosity' in der vzlogger.conf auf 0 gesetzt werden.
- vzlogger.conf
{ "retry": 0, "verbosity": 15, "log": "/var/log/vzlogger/vzlogger.log", "local": { "enabled": false, "port": 8081, "index": true, "timeout": 0, "buffer": 0 }, "meters": [ { "enabled": true, "allowskip": false, "interval": -1, "aggtime": -1, "aggfixedinterval": false, "channels": [ { "uuid": "hier die UUID des im Frontend angelegten Kanals (El. Energie (Zählerstand) ) einfügen", "identifier": "1-0:1.8.0", "api": "volkszaehler", "middleware": "http://localhost/middleware.php", "aggmode": "none", "duplicates": 0 } ], "protocol": "d0", "device": "/dev/ttyUSB0", "pullseq": "2F3F210D0A", "ackseq": "063035300d0a", "baudrate": 300, "baudrate_read": 9600, "parity": "7e1", "wait_sync": "off", "read_timeout": 10, "baudrate_change_delay": 0 } ] }
Test mit Test1107
Zum Testen kann dieses Windows-Programm verwendet werden.
Einzustellen ist, ausser dem passenden COM-Port, nichts, da das Programm automatisch gemäß DIN EN 62056-21 initialisiert.
Beispieldaten
Nach der Initialisierungssequenz „/?!“ wurde der Standard-Datensatz mit 300bd ausgegeben und sieht wie folgt aus:
==> /?!<0D><0A>\\ <== /?!\\ <== --- 0x2F --- /\\ <== --- 0x49 --- I\\ <== --- 0x53 --- S\\ <== --- 0x6B --- k\\ <== --- 0x35 --- 5\\ <== --- 0x4D --- M\\ <== --- 0x54 --- T\\ <== --- 0x31 --- 1\\ <== --- 0x37 --- 7\\ <== --- 0x34 --- 4\\ <== --- 0x2D --- -\\ <== --- 0x30 --- 0\\ <== --- 0x30 --- 0\\ <== --- 0x30 --- 0\\ <== --- 0x31 --- 1\\ <== --- 0x0D --- CR\\ <== --- 0x0A --- LF\\ <== -- STX -- \\ <== 0-0:C.1.0*255(29789454)\\ <== 1-0:0.0.0*255(74632183)\\ <== 1-0:0.9.1*255(132228)\\ <== 1-0:0.9.2*255(1120609)\\ <== 1-0:1.7.0*255(0.420*kW)\\ <== 1-0:1.8.0*255(0000112.628*kWh)\\ <== 1-0:2.7.0*255(0.223*kW)\\ <== 1-0:2.8.0*255(0000074.224*kWh)\\ <== 0-0:F.F.0*255(0000000)\\ <== 1-0:31.6.0*255(105.59*A)\\ <== 1-0:51.6.0*255(100.93*A)\\ <== 1-0:71.6.0*255(100.93*A)\\ <== 1-0:31.7.0*255(1.09*A)\\ <== 1-0:51.7.0*255(1.38*A)\\ <== 1-0:71.7.0*255(2.42*A)\\ <== 1-0:32.7.0*255(232.3*V)\\ <== 1-0:52.7.0*255(233.7*V)\\ <== 1-0:72.7.0*255(233.8*V)\\ <== 1-0:0.2.0*255(1.01)\\ <== 0-0:C.1.6*255(724F)\\ <== !\\ <== -- ETX -- \\ <== -- BCC -- \\
Script für ZOC-Terminal
Ein Script für das ZOC Terminal Programm. Hier mit einer Schleife welche das Auslesen 2 mal wiederholt.
/* REXX (CREATED BY AB) */ CALL ZocTimeout 2 i = 0 do while i < 2 /* set serial port settings: COM6, 300-7E1, no RTS/CTS, no CD, 250ms-Break */ CALL ZocSetDevParm "[1]COM6:300-7E1|0|250" CALL ZocDelay 0.5 CALL ZocSend "/?!^(0D)^(0A)" CALL ZocWait "MT174-0001" CALL ZocDelay 0.5 /* Acknowlege proposed standard 9600 baud of MT-174 */ CALL ZocSend "^(06)050^(0D)^(0A)" /* set serial port settings: COM6, 9600-7E1, no RTS/CTS, no CD, 250ms-Break */ CALL ZocDelay 0.2 CALL ZocSetDevParm "[1]COM6:9600-7E1|0|250" /* wait till end of data block <CR><LF><ETX> <BCC> */ CALL ZocWait "^(0D)^(0A)^(03)" /* wait additional time for BCC */ CALL ZocDelay 0.1 /* start again after pause */ CALL ZocDelay 0.2 i = i + 1 end