Forum: Haus & Smart Home Stromzähler auslesen


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

Hallo an die Fachleute beim Zähler auslesen.

Ich komme mit meinem Vorhaben einfach nicht weiter. Vielleicht kann mir 
hier jemand auf die Sprünge helfen.

Ich möchte meinen Zähler vom Typ ISKRA eHZ-MT681-D4A51-K0p auslesen. Mit 
dem Handy habe ich geprüft ob die Diode sendet. Das tut sie, auch ohne 
PIN Eingabe. Ich kann auch keinen PIN eingeben! Trotz gegenteiliger 
Anleitungen zu dem Zähler MT681. Westnetz hat mir auch telefonisch, nach 
Abfrage der Zählernummer, bestätigt das es für meinen Zähler (alt, einer 
der ersten) keinen Pin gibt. Hier werde ich auch nicht schlauer: 
(https://www.westnetz.de/de/faq/moderne-messeinrichtungen.html)

Mit dem Lesekopf ALLNET Optischer D0-Lesekopf (ALL3688) empfange ich bei 
der Einstellung 9600,8,1 auch Daten.

Doch diese entsprechen nicht dem erwarteten SML Aufbau.
Ich empfange in Hex 727272727F7F7F7F anstatt die 1B1B1B1B01010101

Siehe Screenshot anbei (HTERM)

Beim googeln habe ich jemandem mit demselben Problem gefunden, leider 
wird dort keine Lösung beschrieben.
Andere Baudraten und Stopbits, Parität, etc. hat alles nichts gebracht.

Auch ein rotieren des Bytes nach links mit anschließendem Invertieren 
bringt nichts. Dann komme ich zwar zu 1B bzw. 01 ABER es passt beim Rest 
auch nicht, denn anstatt der &h76 für eine SML-Message kommt dann &hBA 
:-(

Aber der Zähler spuckt ca. alle 1sec die 212 Bytes raus. Wie müssen 
diese interpretiert werden?
1
>>  10708.65
2
72 72 72 72 7F 7F 7F 7F  A2 DF 76 F2 FD 76 FF 3B
3
FF 1B 39 FD FD 13 FD FD  F5 DF 33 7B 53 ED EF F5
4
E3 7B A5 67 2D A9 FD 3B  FF 39 CB 37 FF 13 F5 9B
5
97 6F FD 3B FF 3B FF 1B  39 F1 FD 11 FD ED EF F5
6
E3 7B A5 67 2D A9 FD FD  15 11 F1 FD FD 71 FB F9
7
01 FD FD FD FD F3 6D 59  69 5B 7D FD 11 F1 FD FF
8
FF FF FF 01 FD FD FD FD  ED EF F5 E3 7B A5 67 2D
9
A9 FD 11 F1 FD FF FD EF  FD 01 3B FB FD 3B C3 5B
10
01 2D FF FF FF FF B3 D5  51 15 FD 11 F1 FD FF 3F
11
F5 F5 01 FD FD FD FD 3B  FF FD 11 F1 FD FF FD F1
12
FF 01 FD FD 3B C9 5B FF  55 FF FF FD 49 FD FD FD
13
39 A1 2D FF 13 F5 9B 97  6F FB 3B FF 3B FF 1B 39
14
FB FD 1D FD 39 17 65 FF  FF FF FF C9 C9 C9 C9 CB
15
F9 1B 15 00
16
>>  11771.615
17
72 72 72 72 7F 7F 7F 7F  A2 DF 76 F2 E5 76 FF 3B
18
FF 1B 39 FD FD 13 FD FD  F5 DF 33 7B 51 ED EF F5
19
E3 7B A5 67 2D A9 FD 3B  FF 39 15 3B FF 13 F5 9B
20
97 6F F7 3B FF 3B FF 1B  39 F1 FD 11 FD ED EF F5
21
E3 7B A5 67 2D A9 FD FD  15 11 F1 FD FD 71 FB F9
22
01 FD FD FD FD F3 6D 59  69 5B 7D FD 11 F1 FD FF
23
FF FF FF 01 FD FD FD FD  ED EF F5 E3 7B A5 67 2D
24
A9 FD 11 F1 FD FF FD EF  FD 01 3B FB FD 3B C3 5B
25
01 2D FF FF FF FF B3 D5  51 13 FD 11 F1 FD FF 3F
26
F5 F5 01 FD FD FD FD 3B  FF FD 11 F1 FD FF FD F1
27
FF 01 FD FD 3B C9 5B FF  55 FF FF FD 65 FD FD FD
28
39 E1 29 FF 13 F5 9B 97  6F F5 3B FF 3B FF 1B 39
29
FB FD 1D FD 39 DB 25 FF  FF FF FF C9 C9 C9 C9 CB
30
F9 7B 13 00
31
>>  12818.109
32
72 72 72 72 7F 7F 7F 7F  A2 DF 76 F2 CD 76 FF 3B
33
FF 1B 39 FD FD 13 FD FD  F5 DF 33 7B 4F ED EF F5
34
E3 7B A5 67 2D A9 FD 3B  FF 39 CF 5B FF 13 F5 9B
35
97 6F F1 3B FF 3B FF 1B  39 F1 FD 11 FD ED EF F5
36
E3 7B A5 67 2D A9 FD FD  15 11 F1 FD FD 71 FB F9
37
01 FD FD FD FD F3 6D 59  69 5B 7D FD 11 F1 FD FF
38
FF FF FF 01 FD FD FD FD  ED EF F5 E3 7B A5 67 2D
39
A9 FD 11 F1 FD FF FD EF  FD 01 3B FB FD 3B C3 5B
40
01 2D FF FF FF FF B3 D5  51 11 FD 11 F1 FD FF 3F
41
F5 F5 01 FD FD FD FD 3B  FF FD 11 F1 FD FF FD F1
42
FF 01 FD FD 3B C9 5B FF  55 FF FF FD 6B FD FD FD
43
39 AF 85 FF 13 F5 9B 97  6F EF 3B FF 3B FF 1B 39
44
FB FD 1D FD 39 07 4B FF  FF FF FF C9 C9 C9 C9 CB
45
F9 A3 0B 00
46
>>  13895.527
47
72 72 72 72 7F 7F 7F 7F  A2 DF 76 F2 B5 76 FF 3B
48
FF 1B 39 FD FD 13 FD FD  F5 DF 33 7B 4D ED EF F5
49
E3 7B A5 67 2D A9 FD 3B  FF 39 01 4D FF 13 F5 9B
50
97 6F EB 3B FF 3B FF 1B  39 F1 FD 11 FD ED EF F5
51
E3 7B A5 67 2D A9 FD FD  15 11 F1 FD FD 71 FB F9
52
01 FD FD FD FD F3 6D 59  69 5B 7D FD 11 F1 FD FF
53
FF FF FF 01 FD FD FD FD  ED EF F5 E3 7B A5 67 2D
54
A9 FD 11 F1 FD FF FD EF  FD 01 3B FB FD 3B C3 5B
55
01 2D FF FF FF FF B3 D5  51 0F FD 11 F1 FD FF 3F
56
F5 F5 01 FD FD FD FD 3B  FF FD 11 F1 FD FF FD F1
57
FF 01 FD FD 3B C9 5B FF  55 FF FF FD 69 FD FD FD
58
39 DD 2D FF 13 F5 9B 97  6F E9 3B FF 3B FF 1B 39
59
FB FD 1D FD 39 61 B7 FF  FF FF FF C9 C9 C9 C9 CB
60
F9 BB F3 00
61
>>  14969.376
62
72 72 72 72 7F 7F 7F 7F  A2 DF 76 F2 9D 76 FF 3B
63
FF 1B 39 FD FD 13 FD FD  F5 DF 33 7B 4B ED EF F5
64
E3 7B A5 67 2D A9 FD 3B  FF 39 63 5B FF 13 F5 9B
65
97 6F E5 3B FF 3B FF 1B  39 F1 FD 11 FD ED EF F5
66
E3 7B A5 67 2D A9 FD FD  15 11 F1 FD FD 71 FB F9
67
01 FD FD FD FD F3 6D 59  69 5B 7D FD 11 F1 FD FF
68
FF FF FF 01 FD FD FD FD  ED EF F5 E3 7B A5 67 2D
69
A9 FD 11 F1 FD FF FD EF  FD 01 3B FB FD 3B C3 5B
70
01 2D FF FF FF FF B3 D5  51 0D FD 11 F1 FD FF 3F
71
F5 F5 01 FD FD FD FD 3B  FF FD 11 F1 FD FF FD F1
72
FF 01 FD FD 3B C9 5B FF  55 FF FF FD 6B FD FD FD
73
39 45 31 FF 13 F5 9B 97  6F E3 3B FF 3B FF 1B 39
74
FB FD 1D FD 39 E9 A1 FF  FF FF FF C9 C9 C9 C9 CB
75
F9 59 23 00

: Bearbeitet durch User
von Sebastian (Gast)


Lesenswert?

Da scheint irgendwas invertiert, verrutscht und mit dem Startbit 
kollidiert zu sein. Kannst du die Pegel zeigen?

LG, Sebastian

von Achim S. (Gast)


Lesenswert?

Matthias 🟠. schrieb:
> Ich empfange in Hex 727272727F7F7F7F anstatt die 1B1B1B1B01010101

Na ja, wenn man 727272727F7F7F7F invertiert und zusätlich die 
Bitrichtung jedes Bytes umdreht, dann wird daraus immerhin 
B1B1B1B101010101. Wäre aber eine seltsame Bitmanipulation, und das 
Ergebnis wäre immer noch nicht wie erwartet.

Wenn du die Möglichkeit hast würde ich das Austangssignal am 
Fototransistor mal per Oszi anschauen (die ersten paar Byte) und von 
Hand dekodieren. Vielleicht kommt man dann darauf, was schief läuft.

von Matthias 🟠. (homa)


Lesenswert?

Matthias 🟠. schrieb:
> Auch ein rotieren des Bytes nach links mit anschließendem Invertieren
> bringt nichts. Dann komme ich zwar zu 1B bzw. 01 ABER es passt beim Rest
> auch nicht, denn anstatt der &h76 für eine SML-Message kommt dann &hBA
> :-(

Mit dem Oszi kann ich das Signal mal messen ... ich bin im Keller.

von Alexander (alecxs)


Lesenswert?

Matthias 🟠. schrieb:
> Andere Baudraten und Stopbits, Parität, etc. hat alles nichts gebracht.

trotzdem zeigen, welche hast du denn probiert?

edit: scheint aber richtig zu sein
www.mikrocontroller.net/topic/481077

edit 2: laut Datenblatt hat das Ding zwei Schnittstellen, eine Uni- und 
eine Bidirektionale. Die Frontseitige ist die richtige.

: Bearbeitet durch User
von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

Boah ich stehe mit dem alten Oszi DST1062B auf Kriegsfuß, an dem neuen 
windows 10 PC will meine alte Software nicht ... finde jetzt gerade 
keinen passenden USB Treiber etc.
Daher nur der Screenshot via USB:

von Alexander (alecxs)


Lesenswert?

invertieren ist schon mal richtig
www.mikrocontroller.net/topic/441772#5254996

von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

Den Lesekopf habe ich wie angegeben angeschlossen.

von Achim S. (Gast)


Lesenswert?

die Zeitskala ist mir zu "grob" zum manuellen dekodieren. aber der 
Ruhepegel vor Beginn der Übertragung müsste High sein.

Matthias 🟠. schrieb:
> Den Lesekopf habe ich wie angegeben angeschlossen.

ist OK, aber das sagt nichts darüber aus, ob das Teil invertierte Pegel 
treibt oder nicht. es ist ja dafür gemacht,  ein weiteres Modul von 
derselben Firma anzuschließen. wenn das invertierte Pegel erwartet, 
passt der Ausgang für ihn.

von Wolfgang (Gast)


Lesenswert?

Matthias 🟠. schrieb:
> Daher nur der Screenshot via USB:

Bei der geringen Zeitauflösung ist das ziemlich mühsam abzulesen. Stell 
das Oszi doch einmal so ein, dass nur etwa drei Byte erfasst werden, 
damit die Pixel nicht so stören. Oder besser noch wäre Logikanalysator 
mit dem du das Signal mit vernünftiger Zeitauflösung über einen größeren 
Zeitbereich aufzeichnen kannst.

Achim S. schrieb:
> die Zeitskala ist mir zu "grob" zum manuellen dekodieren. aber der
> Ruhepegel vor Beginn der Übertragung müsste High sein.

Auf dem Oszi ist vorne L-Pegel zu sehen. Stellt sich die Frage, ob das 
Oszi richtig getriggert wurde.

von Achim S. (Gast)


Angehängte Dateien:

Lesenswert?

Wolfgang schrieb:
> Auf dem Oszi ist vorne L-Pegel zu sehen. Stellt sich die Frage, ob das
> Oszi richtig getriggert wurde.

Da hast du natürlich auch recht: wenn das nicht der Start der Sequenz 
sein sollte, ist die Aussagekraft der Messung gering. Aber immerhin 
zeigt die gemessene Sequenz zwei mal hintereinander vier identische 
Bytes - ist also nicht ganz unwahrscheinlich, dass es sich doch um den 
Beginn der Übertragung handelt.

Gehn wir einfach mal den umgekehrten Weg.
Matthias: im Anhang siehst du in einer alten Messung von meinem Zähler, 
wie das erste Byte der Sequenz korrekt aussehen sollte. (Na ja: die 
Flanken müssen nicht unbedingt so verschliffen sein wie in meiner 
Messung :-)

von Yalu X. (yalu) (Moderator)


Lesenswert?

L=1 und H=0, dann ist lt. Oszi alles perfekt.

von Peter K. (Gast)


Lesenswert?

Invertiert der LEsekopf nicht?
Ich habe einen billigen aus Ebay für 19€ der invertiert meines Wissens 
direkt

von mppt (Gast)


Lesenswert?

Zwischenfrage, kann dieser Tastkopf nur lesen oder hat der auch eine 
Sendediode?

von Yalu X. (yalu) (Moderator)


Lesenswert?

Yalu X. schrieb:
> L=1 und H=0, dann ist lt. Oszi alles perfekt.

Es wurden also folgende Bytes gesendet:
1
1b 1b 1b 1b 01 01 01 01 76 05 32 bc e3 19

Als SML interpretiert:
1
List[6]: [
2
  Octet String[4]: [32 bc e3 19]
3
  (5 weitere Einträge, die nicht im Screenshot zu sehen sind)
4
]

Die TransactionId ist also 0x32bce319.

von Sebastian W. (wangnick)


Lesenswert?

Matthias 🟠. schrieb:
> Den Lesekopf habe ich wie angegeben angeschlossen.

Der Lesekopf arbeitet ja mit 12V, spricht also eventuell RS232, das 
heisst er arbeitet mit invertierten Pegeln.

Nach dem Oszi-Bild sind die logisch-0-Pegel aber nicht 12V sondern eher 
so 3.3V

Wie hast du den mit deinem PC verbunden? Über einen Spannungsteiler und 
einen UART-USB-Adapter?

LG, Sebastian

: Bearbeitet durch User
Beitrag #7202535 wurde von einem Moderator gelöscht.
von Sebastian (Gast)


Lesenswert?

... schrieb im Beitrag #7202535:
> Da hast du dann den Zaehlerstand vermutlich sogar ausgedruckt
> schwarz auf weissem Papier.

Aber nicht alle zwei Sekunden. Mit der Menge an Papier könnte man mollig 
warm über den Winter kommen :)

LG, Sebastian

von Reinhard S. (rezz)


Lesenswert?

... schrieb im Beitrag #7202535:
> Warum willst du ueberhaupt den Zaehler auslesen?
>
> Dein Energieversorger wird dir schon eine Rechnung schicken.
> Da hast du dann den Zaehlerstand vermutlich sogar ausgedruckt
> schwarz auf weissem Papier.

Nachdem man ihn optisch abgelesen hat und an den Energieversorger 
geschickt hat. Warum also so lange warten? :D

von Matthias 🟠. (homa)


Lesenswert?

mppt schrieb:
> Zwischenfrage, kann dieser Tastkopf nur lesen oder hat der auch eine
> Sendediode?

Nein der Kopf kann nur lesen.

... schrieb im Beitrag #7202535:
> Warum willst du ueberhaupt den Zaehler auslesen?

Weil ich für mich und meine Kinder den momentanen Verbrauch zu 
Erziehungszwecken visualisieren möchte
und weil es mein Hobby ist und ich ein Projekt habe
und ich eine Menge lerne und meinen Kindern darin ein Vorbild sein 
möchte
und ... reicht das an Gründen?
Zurück zum Problem:

Peter K. schrieb:
> Invertiert der LEsekopf nicht?
> Ich habe einen billigen aus Ebay für 19€ der invertiert meines Wissens
> direkt
Yalu X. schrieb:
> L=1 und H=0, dann ist lt. Oszi alles perfekt.

Das heist ich muss das Signal vorher mit Hardware invertieren? Sonst 
kommt die Serielle-Schnittstelle damit nich klar oder reicht das via 
Software zu invertieren?

Sebastian W. schrieb:
> Matthias 🟠. schrieb:
>> Den Lesekopf habe ich wie angegeben angeschlossen.
>
> Der Lesekopf arbeitet ja mit 12V, spricht also eventuell RS232, das
> heisst er arbeitet mit invertierten Pegeln.
>
> Nach dem Oszi-Bild sind die logisch-0-Pegel aber nicht 12V sondern eher
> so 3.3V
>
> Wie hast du den mit deinem PC verbunden? Über einen Spannungsteiler und
> einen UART-USB-Adapter?
>
> LG, Sebastian

Ich habe den Lesekopf mit dem Pollin Adapter 
(https://www.pollin.de/p/rs232-ttl-wandler-mit-max3232-810358) für HTERM 
an den PC angeschlossen. Hier hatte ich für die Versorgung des 
Leseskopfes auch höhere Spannung draufgegeben (+12V) aber festgestellt 
das der Kopf runter bis 1,8 Volt arbeitet. Erst ab 1,5 Volt stellt er 
die Arbeit ein.

Für den zweiten Teil/Versuch nutze ich ein Pi Pico RP2040 und nutze 
daher die 3,3 Volt. Damit habe ich den HEX Dump und die Zeitmessung 
erstellt.
Leider lese ich auch hier nur die verkehrten Bytes ein.

An dieser Stelle: DANKE für eure Hilfe.

von Matthias 🟠. (homa)


Lesenswert?

Achim S. schrieb:
> Wolfgang schrieb:
>> Auf dem Oszi ist vorne L-Pegel zu sehen. Stellt sich die Frage, ob das
>> Oszi richtig getriggert wurde.
>
> Da hast du natürlich auch recht: wenn das nicht der Start der Sequenz
> sein sollte, ist die Aussagekraft der Messung gering. Aber immerhin
> zeigt die gemessene Sequenz zwei mal hintereinander vier identische
> Bytes - ist also nicht ganz unwahrscheinlich, dass es sich doch um den
> Beginn der Übertragung handelt.

Ist der Start, weil ich in der Pause von meinem Hexdump parallel am Oszi 
auf Single-SEQ gedrückt habe. Vorher ist L, ich habe das Ergebnis nur 
nach links Verschoben, damit man mehr sieht :-)

> Gehn wir einfach mal den umgekehrten Weg.
> Matthias: im Anhang siehst du in einer alten Messung von meinem Zähler,
> wie das erste Byte der Sequenz korrekt aussehen sollte. (Na ja: die
> Flanken müssen nicht unbedingt so verschliffen sein wie in meiner
> Messung :-)

Ich bin heute Unterwegs und komme erst heute Abend dazu weiter zu 
machen, ich erstelle dann eine feinere Auflösung ...

von Achim S. (Gast)


Lesenswert?

Matthias 🟠. schrieb:
> Das heist ich muss das Signal vorher mit Hardware invertieren?

ja

Matthias 🟠. schrieb:
> oder reicht das via Software zu invertieren?

nein, reicht nicht. wegen der invertierung werden ja auch Start und 
stoppbit falsch interpretiert.

von Sebastian (Gast)


Lesenswert?

Matthias 🟠. schrieb:
> Ich habe den Lesekopf mit dem Pollin Adapter
> (https://www.pollin.de/p/rs232-ttl-wandler-mit-max3232-810358) für HTERM
> an den PC angeschlossen.

Versteh ich nicht. Du hast den Tastkopf ab die TTL-Seite des 
Pollin-Adapters angeschlossen, und dann den Pollin-Adapter an die 
serielle RS232-Schnittstelle des PC?

LG, Sebastian

von Wolfgang (Gast)


Lesenswert?

Matthias 🟠. schrieb:
> Das heist ich muss das Signal vorher mit Hardware invertieren? Sonst
> kommt die Serielle-Schnittstelle damit nich klar oder reicht das via
> Software zu invertieren?

Natürlich reicht es, das Signal in der Software anders herum zu 
interpretieren. Das funktioniert allerdings nur mit einem Soft-UART, bei 
dem die Definition der Pegel für H und L konfigurieren kannst.

Beitrag #7202935 wurde von einem Moderator gelöscht.
von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

Sebastian schrieb:
> Versteh ich nicht. Du hast den Tastkopf ab die TTL-Seite des
> Pollin-Adapters angeschlossen, und dann den Pollin-Adapter an die
> serielle RS232-Schnittstelle des PC?

Ja, nur die Serielle am PC war wieder ein USB Adapter.
Hintergrund war der: Pollin Adapter 5V und der Lesekopf dann die 12 
Volt. Ich wollte ausschließen das meine zu geringe Spannung zum Problem 
führt.

Ist aber nicht so, sondern der Lesekopf gibt leider ein invertiertes 
serielles Signal aus.

Also habe ich in meinem Fundus gesucht und eine SN74HCT14N gefunden.

Jetzt sieht das Signal so aus: siehe Bild

UND das obwohl ich den Inverter IC nur mit 3.3V versorge, aber zum 
Testen reicht und klappt es!

von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

Achim S. schrieb:
> nein, reicht nicht. wegen der invertierung werden ja auch Start und
> stoppbit falsch interpretiert.

So danke an alle!

Ich habe neues gelernt und jetzt sehe ich mal zu wie ich den Verbrauch 
heraus lese.
Anbei noch der neue Hex-Dump und ein Bild vom Testaufbau:
1
PicoMite MMBasic Version 5.07.04
2
Copyright 2011-2021 Geoff Graham
3
Copyright 2016-2021 Peter Mather
4
5
> run
6
1B 1B 1B 1B 01 01 01 01  76 05 32 BF 6B 70 62 00            v 2¿kpb
7
62 00 72 63 01 01 76 01  01 05 10 EA 79 26 09 08  b rc  v      êy&
8
05 0E 42 2D 4C 69 2B 01  62 00 63 A3 AB 00 76 05    B-Li+   b c£« v
9
32 BF 6B 71 62 00 62 00  72 63 07 01 77 01 09 08  2¿kqb b   rc  w
10
05 0E 42 2D 4C 69 2B 01  01 75 77 07 81 81 C7 82    B-Li+    uw Ç‚
11
03 FF 01 01 01 01 06 49  53 4B 52 41 01 77 07 01   ÿ     I  SKRA w
12
00 00 00 00 FF 01 01 01  01 09 08 05 0E 42 2D 4C      ÿ          B-L
13
69 2B 01 77 07 01 00 01  08 01 FF 62 82 01 62 1E  i+ w        ÿb‚ b
14
52 FF 69 00 00 00 00 26  9D 00 FD 01 77 07 01 00  Rÿi    &   ý w
15
60 05 05 FF 01 01 01 01  62 80 01 77 07 01 00 01  `  ÿ      b€ w
16
07 00 FF 01 01 62 1B 52  00 55 00 00 01 7B 01 01    ÿ  b R   U   {
17
01 63 D6 B0 00 76 05 32  BF 6B 72 62 00 62 00 72   cÖ° v 2  ¿krb b r
18
63 02 01 71 01 63 64 8E  00 00 00 00 1B 1B 1B 1B  c  q cdŽ
19
1A 03 26 50                                         &P
20
>>  4700.741
21
1B 1B 1B 1B 01 01 01 01  76 05 32 BF 6B 73 62 00            v 2¿ksb
22
62 00 72 63 01 01 76 01  01 05 10 EA 79 27 09 08  b rc  v      êy'
23
05 0E 42 2D 4C 69 2B 01  62 00 63 4C AD 00 76 05    B-Li+   b cL­ v
24
32 BF 6B 74 62 00 62 00  72 63 07 01 77 01 09 08  2¿ktb b   rc  w
25
05 0E 42 2D 4C 69 2B 01  01 75 77 07 81 81 C7 82    B-Li+    uw Ç‚
26
03 FF 01 01 01 01 06 49  53 4B 52 41 01 77 07 01   ÿ     I  SKRA w
27
00 00 00 00 FF 01 01 01  01 09 08 05 0E 42 2D 4C      ÿ          B-L
28
69 2B 01 77 07 01 00 01  08 01 FF 62 82 01 62 1E  i+ w        ÿb‚ b
29
52 FF 69 00 00 00 00 26  9D 00 FF 01 77 07 01 00  Rÿi    &   ÿ w
30
60 05 05 FF 01 01 01 01  62 80 01 77 07 01 00 01  `  ÿ      b€ w
31
07 00 FF 01 01 62 1B 52  00 55 00 00 01 7B 01 01    ÿ  b R   U   {
32
01 63 A3 70 00 76 05 32  BF 6B 75 62 00 62 00 72   c£p v 2  ¿kub b r
33
63 02 01 71 01 63 82 2E  00 00 00 00 1B 1B 1B 1B  c  q c‚.
34
1A 03 AD 44                                         ­D
35
>>  6608.229
36
1B 1B 1B 1B 01 01 01 01  76 05 32 BF 6B 76 62 00            v 2¿kvb
37
62 00 72 63 01 01 76 01  01 05 10 EA 79 28 09 08  b rc  v      êy(
38
05 0E 42 2D 4C 69 2B 01  62 00 63 A1 9D 00 76 05    B-Li+   b c¡ v
39
32 BF 6B 77 62 00 62 00  72 63 07 01 77 01 09 08  2¿kwb b   rc  w
40
05 0E 42 2D 4C 69 2B 01  01 75 77 07 81 81 C7 82    B-Li+    uw Ç‚
41
03 FF 01 01 01 01 06 49  53 4B 52 41 01 77 07 01   ÿ     I  SKRA w
42
00 00 00 00 FF 01 01 01  01 09 08 05 0E 42 2D 4C      ÿ          B-L
43
69 2B 01 77 07 01 00 01  08 01 FF 62 82 01 62 1E  i+ w        ÿb‚ b
44
52 FF 69 00 00 00 00 26  9D 01 01 01 77 07 01 00  Rÿi    &     w
45
60 05 05 FF 01 01 01 01  62 80 01 77 07 01 00 01  `  ÿ      b€ w
46
07 00 FF 01 01 62 1B 52  00 55 00 00 01 73 01 01    ÿ  b R   U   s
47
01 63 25 45 00 76 05 32  BF 6B 78 62 00 62 00 72   c%E v 2  ¿kxb b r
48
63 02 01 71 01 63 EC 99  00 00 00 00 1B 1B 1B 1B  c  q cì™
49
1A 03 4D 83                                         Mƒ
50
>>  8514.268
51
1B 1B 1B 1B 01 01 01 01  76 05 32 BF 6B 79 62 00            v 2¿kyb
52
62 00 72 63 01 01 76 01  01 05 10 EA 79 29 09 08  b rc  v      êy)
53
05 0E 42 2D 4C 69 2B 01  62 00 63 46 96 00 76 05    B-Li+   b cF– v
54
32 BF 6B 7A 62 00 62 00  72 63 07 01 77 01 09 08  2¿kzb b   rc  w
55
05 0E 42 2D 4C 69 2B 01  01 75 77 07 81 81 C7 82    B-Li+    uw Ç‚
56
03 FF 01 01 01 01 06 49  53 4B 52 41 01 77 07 01   ÿ     I  SKRA w
57
00 00 00 00 FF 01 01 01  01 09 08 05 0E 42 2D 4C      ÿ          B-L
58
69 2B 01 77 07 01 00 01  08 01 FF 62 82 01 62 1E  i+ w        ÿb‚ b
59
52 FF 69 00 00 00 00 26  9D 01 03 01 77 07 01 00  Rÿi    &     w
60
60 05 05 FF 01 01 01 01  62 80 01 77 07 01 00 01  `  ÿ      b€ w
61
07 00 FF 01 01 62 1B 52  00 55 00 00 01 78 01 01    ÿ  b R   U   x
62
01 63 A7 63 00 76 05 32  BF 6B 7B 62 00 62 00 72   c§c v 2  ¿k{b b r
63
63 02 01 71 01 63 5F 67  00 00 00 00 1B 1B 1B 1B  c  q c_g
64
1A 03 D3 14                                         Ó
65
>>  10435.047

: Bearbeitet durch User
von Sebastian W. (wangnick)


Lesenswert?


: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Matthias 🟠. schrieb:

> 1B 1B 1B 1B 01 01 01 01  76 05 32 BF 6B 70 62 00            v 2¿kpb
> ...

Wenn du das von Sebastian verlinkte Protokoll richtig umgesetzt hast,
solltest du aus den von dir geposteten vier Nachrichten u.a. folgende
Ergebnisse herauslesen können:
1
Nachricht   Energie/kWh   Leistung/W
2
────────────────────────────────────
3
   1        64782,3613      379 W
4
   2        64782,3615      379 W
5
   3        64782,3617      371 W
6
   4        64782,3619      376 W
7
────────────────────────────────────

von Sebastian W. (wangnick)


Lesenswert?

Matthias 🟠. schrieb:
> Anbei noch der neue Hex-Dump und ein Bild vom Testaufbau:
> PicoMite MMBasic Version 5.07.04
> Copyright 2011-2021 Geoff Graham
> Copyright 2016-2021 Peter Mather
>> run
> 1B 1B 1B 1B 01 01 01 01  76 05 32 BF 6B 70 62 00            v 2¿kpb

Matthias, ich würde in solchen Ausschnitten immer die Zählernummer 
verwischen.

LG, Sebastian

von Matthias 🟠. (homa)


Lesenswert?

Sebastian W. schrieb:
> Matthias, ich würde in solchen Ausschnitten immer die Zählernummer
> verwischen.

Ja, ich hatte kurz gezuckt ob ich den ganzen Dump poste, aber ehrlich 
man muss ja vom Fach sein. Und vorher habe ich ja noch nicht gewusst wo 
die Nummer steht.
Aber danke für den Hinweis.

LG, Matthias

von Matthias 🟠. (homa)


Lesenswert?

Yalu X. schrieb:
> Wenn du das von Sebastian verlinkte Protokoll richtig umgesetzt hast,
> solltest du aus den von dir geposteten vier Nachrichten u.a. folgende
> Ergebnisse herauslesen können:

Danke fürs verifizieren :-)
Diese Werte hatte ich gestern Nacht auch noch ermittelt, war aber zu 
müde um hier noch zu posten.
Aber ehrlich, das verlinkte Dokument hätte mir alleine auch nicht 
geholfen, ist aber natürlich die Basis.
Mir haben folgende Seiten zum Verständnis geholfen:
1) 
http://www.schatenseite.de/2016/05/30/smart-message-language-stromzahler-auslesen/
2) https://www.stefan-weigert.de/php_loader/sml.php
3) https://forum.arduino.cc/t/smart-meter-sml-hex-code-zerlegen/526925
1
77 07 01 00 01 07 00 FF 
2
3
77 07 01 00 01  08 01 FF 62 82 01 62 1E 52 FF 69
4
00 00 00 00 26 9D 00 FD
5
6
01  08 01  Bezug (i. d. R. HT kann aber auch NT sein oder bei Eintarif der Gesamtbezug)
7
8
01
9
07 00 Momentan Leistung kW (bei Zählern mit registrierter Leistungsmessung RLM)
10
11
07 01 00 01 07 00 FF 01 01 62 1B 52 00 55
12
(4 Byte : 01 01 62 1B )  NÖÖ 
13
oder die: 00 00 01 7B    !! Ja das könnte !!
14
15
01 ENDE

Ich werde, da mein Datensatz ohne PIN immer den gleiche Aufbau hat und 
die gesuchten Werte immer an der selben Stelle stehen, einfach zählen 
und die gewünschten Daten dann schön visualisieren.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Matthias 🟠. schrieb:
> Ich werde, da mein Datensatz ohne PIN immer den gleiche Aufbau hat und
> die gesuchten Werte immer an der selben Stelle stehen, einfach zählen
> und die gewünschten Daten dann schön visualisieren.

Dass die gesuchten Werte immer an derselben Stelle stehen, stimmt nicht
ganz. Taucht die Escape-Sequenz (1b 1b 1b 1b) irgendwo in den Nutzdaten
auf, wird sie verdoppelt, d.h alle nachfolgenden Bytes verschieben sich
um 4 Positionen (s. Seite 68 der SML-Spezifikation).

Die Wahrscheinlichkeit, dass dieser Fall eintritt, ist zwar sehr gering,
es ist aber auch kein großes Problem, die verdoppelten Escape-Sequenzen
im Datenstrom zu erkennen und entsprechend zu behandeln.

Edit:

Des Weiteren können in SML Zahlenwerte mit variabler Breite (bspw. 8, 16
oder 32 Bit, je nach Bedarf) dargestellt werden. Ob dein Zähler von
dieser Möglichkeit Gebrauch macht, weiß ich nicht. Meiner tut es
zumindest bei dem Wert für die aktuellen Leistung, so dass auch hier mit
einer Verschiebung der nachfolgenden Daten zu rechnen ist. Da die
Leistungsangabe der letzte relevante Wert in der Nachricht ist, ist aber
auch das nicht so kritisch.

: Bearbeitet durch Moderator
von Stefan B. (stefan_b278)


Lesenswert?

Hab schnell mal mein Python Script umgebaut, das kann OBIS lesen inkl. 
CRC Check. Normalerweise wirft es die Daten über MQTT raus, hab ich eben 
mal auskommentiert. Ausgabe:
1
1b1b1b1b01010101760532bf6b7662006200726301017601010510ea79280908050e422d4c692b01620063a19d00760532bf6b77620062007263070177010908050e422d4c692b01017577078181c78203ff010101010649534b52410177070100000000ff010101010908050e422d4c692b0177070100010801ff628201621e52ff6900000000269d01010177070100600505ff0101010162800177070100010700ff0101621b5200550000017301010163254500760532bf6b786200620072630201710163ec99000000001b1b1b1b1a034d83
2
[] 
3
    76: 
4
[5] 1
5
      05: 32 BF 6B 76 
6
[4] 2
7
      62: 00 
8
[3] 3
9
      62: 00 
10
[2] 4
11
      72: 
12
[2, 1] 1
13
        63: 01 01 
14
[2, 0] 2
15
        76: 
16
[2, 0, 5] 1
17
          01: 
18
[2, 0, 4] 2
19
          01: 
20
[2, 0, 3] 3
21
          05: 10 EA 79 28 
22
[2, 0, 2] 4
23
          09: 08 05 0E 42 2D 4C 69 2B 
24
[2, 0, 1] 5
25
          01: 
26
[2, 0, 0] 6
27
          62: 00 
28
[1] 5
29
      63: A1 9D 
30
[0] 6
31
      00: EndOfSmlMSg
32
33
[] 
34
    76: 
35
[5] 1
36
      05: 32 BF 6B 77 
37
[4] 2
38
      62: 00 
39
[3] 3
40
      62: 00 
41
[2] 4
42
      72: 
43
[2, 1] 1
44
        63: 07 01 
45
[2, 0] 2
46
        77: 
47
[2, 0, 6] 1
48
          01: 
49
[2, 0, 5] 2
50
          09: 08 05 0E 42 2D 4C 69 2B 
51
[2, 0, 4] 3
52
          01: 
53
[2, 0, 3] 4
54
          01: 
55
[2, 0, 2] 5
56
          75: 
57
[2, 0, 2, 4] 1
58
            77: 
59
[2, 0, 2, 4, 6] 1
60
              07: 81 81 C7 82 03 FF 
61
[2, 0, 2, 4, 5] 2
62
              01: 
63
[2, 0, 2, 4, 4] 3
64
              01: 
65
[2, 0, 2, 4, 3] 4
66
              01: 
67
[2, 0, 2, 4, 2] 5
68
              01: 
69
[2, 0, 2, 4, 1] 6
70
              06: 49 53 4B 52 41 
71
[2, 0, 2, 4, 0] 7
72
              01: 
73
[2, 0, 2, 3] 2
74
            77: 
75
[2, 0, 2, 3, 6] 1
76
              07: 01 00 00 00 00 FF 
77
[2, 0, 2, 3, 5] 2
78
              01: 
79
[2, 0, 2, 3, 4] 3
80
              01: 
81
[2, 0, 2, 3, 3] 4
82
              01: 
83
[2, 0, 2, 3, 2] 5
84
              01: 
85
[2, 0, 2, 3, 1] 6
86
              09: 08 05 0E 42 2D 4C 69 2B 
87
[2, 0, 2, 3, 0] 7
88
              01: 
89
[2, 0, 2, 2] 3
90
            77: 
91
[2, 0, 2, 2, 6] 1
92
              07: 01 00 01 08 01 FF   # OBIS Zaehlwerk pos. Wirkenergie (Bezug), Tarif 1
93
94
[2, 0, 2, 2, 5] 2
95
              62: 82 
96
[2, 0, 2, 2, 4] 3
97
              01: 
98
[2, 0, 2, 2, 3] 4
99
              62: 1E 
100
[2, 0, 2, 2, 2] 5
101
              52: FF 
102
[2, 0, 2, 2, 1] 6
103
              69: 00 00 00 00 26 9D 01 01 
104
[2, 0, 2, 2, 0] 7
105
              01: 
106
[2, 0, 2, 1] 4
107
            77: 
108
[2, 0, 2, 1, 6] 1
109
              07: 01 00 60 05 05 FF 
110
[2, 0, 2, 1, 5] 2
111
              01: 
112
[2, 0, 2, 1, 4] 3
113
              01: 
114
[2, 0, 2, 1, 3] 4
115
              01: 
116
[2, 0, 2, 1, 2] 5
117
              01: 
118
[2, 0, 2, 1, 1] 6
119
              62: 80 
120
[2, 0, 2, 1, 0] 7
121
              01: 
122
[2, 0, 2, 0] 5
123
            77: 
124
[2, 0, 2, 0, 6] 1
125
              07: 01 00 01 07 00 FF   # OBIS Aktuelle Wirkleistung gesamt
126
127
[2, 0, 2, 0, 5] 2
128
              01: 
129
[2, 0, 2, 0, 4] 3
130
              01: 
131
[2, 0, 2, 0, 3] 4
132
              62: 1B 
133
[2, 0, 2, 0, 2] 5
134
              52: 00 
135
[2, 0, 2, 0, 1] 6
136
              55: 00 00 01 73 
137
[2, 0, 2, 0, 0] 7
138
              01: 
139
[2, 0, 1] 6
140
          01: 
141
[2, 0, 0] 7
142
          01: 
143
[1] 5
144
      63: 25 45 
145
[0] 6
146
      00: EndOfSmlMSg
147
148
[] 
149
    76: 
150
[5] 1
151
      05: 32 BF 6B 78 
152
[4] 2
153
      62: 00 
154
[3] 3
155
      62: 00 
156
[2] 4
157
      72: 
158
[2, 1] 1
159
        63: 02 01 
160
[2, 0] 2
161
        71: 
162
[2, 0, 0] 1
163
          01: 
164
[1] 5
165
      63: EC 99 
166
[0] 6
167
      00: EndOfSmlMSg
168
169
[] 
170
    00: EndOfSmlMSg
171
172
[] 
173
    00: EndOfSmlMSg
174
175
[] 
176
    00: EndOfSmlMSg
177
178
[[b'\x01\x00\x01\x08\x01\xff', 'Zaehlwerk pos. Wirkenergie (Bezug), Tarif 1', 'import/tarif_1/total'], b'\x07', bytearray(b'\x01\x00\x01\x08\x01\xff'), b'b', bytearray(b'\x82'), b'\x01', bytearray(b''), b'b', bytearray(b'\x1e'), b'R', bytearray(b'\xff'), b'i', bytearray(b'\x00\x00\x00\x00&\x9d\x01\x01'), b'\x01', bytearray(b'')]
179
180
Entries:  7
181
OBIS-Code:  1-0:1.8.1
182
Text:  Zaehlwerk pos. Wirkenergie (Bezug), Tarif 1
183
status:  62  82
184
valTime:01  
185
unit:  62  1e
186
scaler:  52  ff
187
value:  69  00000000269d0101
188
valueSignature:  01  
189
Wert: 64782.362 kWh
190
191
[[b'\x01\x00\x01\x07\x00\xff', 'Aktuelle Wirkleistung gesamt', 'import/power'], b'\x07', bytearray(b'\x01\x00\x01\x07\x00\xff'), b'\x01', bytearray(b''), b'\x01', bytearray(b''), b'b', bytearray(b'\x1b'), b'R', bytearray(b'\x00'), b'U', bytearray(b'\x00\x00\x01s'), b'\x01', bytearray(b'')]
192
193
Entries:  7
194
OBIS-Code:  1-0:1.7.0
195
Text:  Aktuelle Wirkleistung gesamt
196
status:  01  
197
valTime:01  
198
unit:  62  1b
199
scaler:  52  00
200
value:  55  00000173
201
valueSignature:  01  
202
Wert: 371 W

Den Code gibts hier:

https://pastebin.com/1uj9HVP5

: Bearbeitet durch User
von Matthias 🟠. (homa)


Lesenswert?

Stefan B. schrieb:
> Python Script

Interessant.

Yalu X. schrieb:
> Edit:
>
> Des Weiteren können in SML Zahlenwerte mit variabler Breite (bspw. 8, 16
> oder 32 Bit, je nach Bedarf) dargestellt werden. Ob dein Zähler von
> dieser Möglichkeit Gebrauch macht, weiß ich nicht. Meiner tut es
> zumindest bei dem Wert für die aktuellen Leistung, so dass auch hier mit
> einer Verschiebung der nachfolgenden Daten zu rechnen ist.

Ja dies passiert, ich habe heute die Ausgabe einfach den ganzen Tag 
laufen lassen und es zerreißt die Ausgabe beim stumpfen abzählen ;-(
Also doch zumindest ein Teil parsen und passend darauf mit der 
Auswertung reagieren. Wo wäre auch sonst die Herausforderung :-)
Ich werde aber erst in ein paar Tagen dazu kommen. Endspurt im Büro und 
vor den Ferien ... doch bin ich einfach glücklich das die Werte 
überhaupt gesendet werden!

von Alexander (alecxs)


Lesenswert?

Man muss ja das Rad nicht neu erfinden, hast ja nun schon genug fertigen 
Code bekommen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.