[vz-users] Auslesen eines ISKRA MT175
tuxlog
webmaster at tuxlog.de
Di Mai 16 19:10:33 CEST 2023
Hallo Miteinander,
ich bekomme beim Versuch meinen Zähler auszulesen keine vernünftigen
Daten heraus und hoffe auf eure Hilfe.
Zähler: ISKRA MT175-D1A51-V22-K0t (mit PIN frei geschaltet), Lesekopf:
Hichi USB an Raspberry Pi Model B Plus Rev 1.2 mit Raspbian Bullseye
(up-to-date).
Echo-Test mit weißem Papier klappt ohne Probleme.
Die Sendediode des MT175 sendet auch alle 1-3 Sekunden etwas (geprüft
mit Handy-Kamera).
Installation des vzlogger hat auch geklappt.
Ich habe mir folgendes config-file zusammen gebaut (Parameter gemäß wiki
Seite für den MT175):
{
"retry" : 3,
"verbosity" : 15,
"log" : "/var/log/vzlogger.log",
"local" : {
"enabled" : true,
"port" : 8081,
"index" : false,
"timeout" : 30,
"buffer" : 600
},
"meters" : [{
"protocol" : "sml",
"enabled" : true,
"device" : "/dev/ttyUSB0",
"parity" : "8N1",
"baudrate" : 9600,
"aggtime" : -1,
"aggfixedinterval" : false,
}]
}
Im Logfile sieht das dann so aus:
[May 16 18:50:04][main] vzlogger v0.8.1 based on
tags/v0.8.1-0-g0671359029 from Sun, 23 Apr 2023 15:16:41 +0200 started.
[May 16 18:50:04][mtr0] Creating new meter with protocol sml.
[May 16 18:50:04][mtr0] Meter configured, enabled.
[May 16 18:50:04] New meter initialized (protocol=sml)
[May 16 18:50:04] Have 1 meters.
[May 16 18:50:04][main] log level is 15
[May 16 18:50:04][main] local=1
[May 16 18:50:04] Daemonize process...
[May 16 18:50:04] Opened logfile /var/log/vzlogger.log
[May 16 18:50:04][push] No pushDataServer defined.
[May 16 18:50:04][] ===> Start meters
[May 16 18:50:04][mtr0] Meter connection established
[May 16 18:50:04][mtr0] Meter thread started
[May 16 18:50:04][mtr0] Meter is opened. Starting channels.
[May 16 18:50:04][http] Starting local interface HTTPd on port 8081
[May 16 18:50:04][] Startup done.
[May 16 18:50:04][mtr0] Number of readers: 32
[May 16 18:50:04][mtr0] Config.local: 1
Dann passiert nichts mehr.
Also versuche ich erst mal direkt auf der Schnittstelle zu lesen und zu
schauen was da ankommt.
Dazu verwende ich ein kleines Python-Programm:
#!/usr/bin/python
import serial
BAUDRATE = 9600
print("opening port")
co = 0
out = ''
# Serial Port 9600 Baud, 8N1
port = serial.Serial(port='/dev/ttyUSB0', baudrate=BAUDRATE,
bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE, timeout=1)
# Serial Port 9600 7E1
#port = serial.Serial(port='/dev/ttyUSB0', baudrate=BAUDRATE,
bytesize=serial.SEVENBITS, parity=serial.PARITY_EVEN,
stopbits=serial.STOPBITS_ONE, timeout=1)
while True:
input = port.read()
out = out + " " + input.hex()
co += 1
if (co > 25):
print(out)
co = 0
out = ''
Es gibt keinen wesentlichen Unterschied bei der Ausgabe, egal ob ich mit
7E1 oder 8N1 lese.
1b 12 12 12 00 00 00 00 64 00 00 18 80 00 40 00 40 00 60 42 00 00 64
00 00 00
02 00 18 24 02 00 00 00 02 02 00 00 4e e0 00 00 00 42 90 20 00 64 00
00 18 80
00 40 00 40 00 60 42 06 00 66 00 02 00 00 00 02 02 00 00 4e e0 00 06
00 00 40
00 fe fe 60 40 00 40 00 20 42 80 70 66 06 00 00 86 00 02 fe 00 00 00
00 00 00
02 02 00 66 06 00 00 00 00 00 fe 00 00 00 00 02 00 00 00 02 02 00 00
4e e0 00
00 66 06 00 00 00 00 00 fe 40 00 00 00 00 00 40 1c 00 fe 10 00 00 00
00 06 38
38 10 00 66 06 00 00 00 00 00 fe 00 00 40 1c 00 fe 10 00 00 00 00 06
38 38 10
00 66 06 00 00 00 00 00 fe 00 00 40 1c 00 fe 10 00 00 00 00 00 00 00
00 00 66
06 00 00 00 06 00 fe 00 00 40 12 00 00 00 00 00 00 00 00 66 06 00 00
00 06 00
fe 00 00 40 12 00 00 00 00 00 00 00 00 66 06 00 00 30 06 00 fe 00 00
40 12 00
00 00 00 00 00 00 00 66 06 00 00 08 06 00 fe 00 00 40 12 00 00 00 00
00 00 c8
00 66 06 00 00 86 00 00 fe 00 00 00 00 02 00 c2 30 08 30 00 00 80 8e
60 c2 c0
0c 30 02 c8 08 42 08 0e 06 0c 42 c0 24 04 00 04 22 86 00 00 00 10 c0
12 e6 02
30 80 08 3e 00 72 00 40 02 00 66 00 00 00 42 c0 00 00 64 00 00 18 80
00 40 00
40 00 60 42 00 00 60 00 42 02 90 00 12 12 12 12 10 00 f2 fe 1b 12 12
12 00 00
00 00 64 00 00 18 80 02 40 00 40 00 60 42 00 00 64 00 00 00 02 00 18
26 02 00
00 00 02 02 00 00 4e e0 00 00 00 42 06 02 00 64 00 00 18 80 00 40 00
40 00 60
42 06 00 66 00 02 00 00 00 02 02 00 00 4e e0 00 06 00 00 40 00 fe fe
60 40 00
40 00 20 42 80 70 66 06 00 00 86 00 02 fe 00 00 00 00 00 00 02 02 00
66 06 00
00 00 00 00 fe 00 00 00 00 02 00 00 00 02 02 00 00 4e e0 00 00 66 06
00 00 00
00 00 fe 40 00 00 00 00 00 40 1c 00 fe 10 00 00 00 00 06 38 38 12 00
66 06 00
00 00 00 00 fe 00 00 40 1c 00 fe 10 00 00 00 00 06 38 38 12 00 66 06
00 00 00
00 00 fe 00 00 40 1c 00 fe 10 00 00 00 00 00 00 00 00 00 66 06 00 00
00 06 00
fe 00 00 40 12 00 00 00 00 00 00 02 00 66 06 00 00 00 06 00 fe 00 00
40 12 00
00 00 00 00 00 00 00 66 06 00 00 30 06 00 fe 00 00 40 12 00 00 00 00
00 00 02
00 66 06 00 00 08 06 00 fe 00 00 40 12 00 00 00 00 00 00 cc 00 66 06
00 00 86
00 00 fe 00 00 00 00 02 00 c2 30 08 30 00 00 80 8e 60 c2 c0 0c 30 02
c8 08 42
08 0e 06 0c 42 c0 24 04 00 04 22 86 00 00 00 10 c0 12 e6 02 30 80 08
3e 00 72
00 40 02 00 66 00 00 00 42 06 00 00 64 00 00 18 80 00 40 00 40 00 60
42 00 00
60 00 42 80 70 00 12 12 12 12 10 00 c0 20
Okay, jetzt ist klar, wieso der vzlogger kein SML findet, der SML-Header
1b1b1b1b01010101 kommt nicht vor. Allerdings so etwas Ähnliches (1b 12
12 12 00 00 00 00). Dann habe ich einige Umpositionierungen des
Lesekopfs ausprobiert. Ich dachte, vielleicht sitzt der irgendwie schief
drauf, leider ohne Erfolg es kommen immer ähnliche Daten wie oben.
Fällt euch dazu etwas ein? Ich vermute irgendetwas an der seriellen
Kommunikation ist falsch eingestellt. Aber was?
Vielen Dank, tuxlog
Mehr Informationen über die Mailingliste volkszaehler-users