Siemens TD-3511 auslesen

  • Hallo.


    Ich würde gerne meinen Stromzähler Siemens TD-3511 über IR auslesen.


    IR Kopf habe ich mir von Udo bestellt und fertig zusammen gebaut. Mein Problem nun ist das meine ersten Tests mit einem Notebook und dem IR Kopf nicht das erwartete Ergebnis liefern.


    Was funktioniert:
    Habe die Settings (Baud: 300, Data: 7, Stop: 1, Parity: Even) von folgendem Link übernommen (http://wiki.volkszaehler.org/h…er/edl-ehz/siemens_td3511) und wenn ich ein "/?!" sende meldet sich der Zähler mit der SN zurück. Mehr aber auch nicht


    Ich habe dann den Netzbetreiber angeschrieben und ein Dokument erhalten welche die genaue Spec beschreibt:


    Zitat

    2.2.2. Suchmodus
    Der AMIS-Zähler führt im 1-min-Takt eine Suchabfrage (SND_NKE auf die
    Primäradresse „240“) nach einem geeigneten Endgerät durch. Dieser muss das
    Telegramm mit einem Acknowledgement („E5h“) quittieren.





    Mit Umstellung der Bautrate auf 9600 bekomme auch die Suchabfrage "SND_NKE" angezeigt welche ich mit einem "E5h" quittieren soll (in 0,5 Sekunden). Ein Autosend von "E5h" oder "E5" (h steht für HEx oder?) in einer Schleife bewegt den Zähler aber nicht dazu einen Wert zu liefern.


    Was ich nun glaube...
    So einfach mit hterm wie bei anderen Zähler erhalte ich keine Werte da sich das Auslese Gerät als "M-Bus-Slave" anmelden muss und das geht über hterm nicht so einfach weil ein bestimmtes Protokoll eingehalten werden muss.


    Wie genau sendet man jetzt an einen MBus Master das ACK Signal?


    Grüße,
    Christian

  • Hallo.

    Zitat von Schnello_AT

    sende meldet sich der Zähler mit der SN zurück. Mehr aber auch nicht


    Guck' dir mal http://wiki.volkszaehler.org/h…wer/edl-ehz/elster_as1440 an, du musst den Zähler dann auffordern, mehr zu senden (und ggf. die Baudrate zu ändern). Manche Zähler senden ohne Aufforderung dann einfach alles bei 300Bd weiter, andere eben nicht..


    Der Zähler versteht scheinbar auch MBus zusätzlich zu Mode C... aber das wäre eine andere Baustelle.


    Ciao
    Michael

  • Hallo.


    Danke für deine Antwort. Leider ohne Erfolg.Ich hätte versucht wie beschrieben nach dem "Hallo" die B Rate umzustellen und dann einen Befehl zu senden. Juckt den nicht. Das einzige was ich einmal bekommen habe war ein ... ER0001 was ich als Error deute.


    Also weiter lesen und testen :)



    Nachtrag:
    Ich glaube auch nicht das die Daten so einfach ausgespuckt werden. Immerhin werden diese Verschlüsselt lt. Spec per AES 128 bit


    Grüße

  • Hallo.


    Eine Erfolgsmeldung:
    1040F03016


    wurde erfolgreich mit einem Autosend mit E5 (mit einer Pause von 0,4 Sekunden) bestätigt.
    Der Zähler hat nun folgende Nachricht gesendet:


    68 5F 5F 68 73 F0 5B 00 00 00 00 2D 4C 01 0E 00 00 50 05 1E 68 B1 D1 6E 87 0D AA 09 72 96 2D 60 2C F4 4F 6A 9E C6 FE 78 09 71 CD 49 D9 1B 9E 36 9F 7B 45 AF FB 57 E4 CF 98 DF 04 26 F9 B0 10 B0 BF B0 BE 01 CF 4C 6F F4 DC 65 BF 3B 6A 53 7A C7 CF 35 B5 00 53 E4 7E 33 4F 23 63 31 7F 42 BD 80 36 1A 52 41 16


    Was auch dem entspricht was in der Spec beschrieben wurde.




    Nur wie kommt man jetzt an die Daten aus dem verschlüsselten Payload?


    2.4.2.5. Verschlüsselung
    Die Daten auf der M-Bus-Draht-Verbindung werden mit symmetrischer
    Verschlüsselung (nach OMS, AES-128, „encryption mode 5“) gesichert [2].


    Hab nen Key bekommen aber noch keine Ahnung was ich damit tun soll :)


    Grüße

  • Hallo,


    ok, du bist ja schon weiter gekommen.
    Also die Baudrate sollte 9600bd sein.
    Das Frameformat sollte lt.M-Bus 8E1 sein.
    Der Zähler sendet, solange noch kein 'Endgerät' geantwortet hat, jede Minute die Anfrage: '10 40 F0 30 16' in hex.
    Das Endgerät muss einmal innerhalb von 0,5 sec auf diese Anfrage mit 'E5' in hex antworten.
    Daraufhin sendet der Zähler die verschlüsselten Daten. Dieser Datensatz beginnt mit '68'hex und Endet mit '16'hex.
    Dieser Datensatz muss wiederum innerhalb von 0,5 sec mit 'E5' in hex bestätigt werden.
    Daraufhin sendet der Zähler den nächsten Datensatz, der wiederum mit 'E5' in hex bestätigt werden muss.
    usw., usw....


    Wenn du Hterm die Daten in eine Datei schreiben lässt (also mehrere Datensätze) und mir deinen Key zukommen lässt (per PN)kann ich versuchen ein Programm zu schreiben um die Daten zu entschlüsseln.
    Dazu brauche ich dann noch die Zählerstände aus dem Zeitraum (ablesen vom Zähler).


    Gruß
    Udo

  • Hallo.


    Meine ersten Versuche mit openssl waren erfolglos. :)


    Zitat

    Wenn du Hterm die Daten in eine Datei schreiben lässt (also mehrere Datensätze) und mir deinen Key zukommen lässt (per PN)kann ich versuchen ein Programm zu schreiben um die Daten zu entschlüsseln.
    Dazu brauche ich dann noch die Zählerstände aus dem Zeitraum (ablesen vom Zähler).


    Hallo Udo. Danke für das Angebot einen Blick darauf zu werfen.


    Hab ein Log erstellt und beim letzten Datensatz war der Zählerstand 895,568 kWh. Wäre es hilfreich wenn ich ein Log erstellen würde wenn keine Leistung verbraucht wird? Key kommt dann per PN


    Grüße,
    Christian

  • Hallo.


    Hmm. openssl würde aber aes-128-cbc können. Aber mehr als das bekomme ich nicht.:

    Code
    32167:error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:evp_enc.c:323:


    Weil es mich interessiert ob ich das ganze überhaupt richtig verstanden habe:


    Die Nachricht:

    Code
    6853F05B000000002D4C010E240050050EE5D1105D5C02D807D3951749ED286EA4163BF7238946BBD1C2DCB3A570591532BD065632AD91C8926C66178E1114F9C0D35A96F7203DDAE2C35D49E204799ECF58DCBC88AFDCB60ACEBE362BCABE125216


    Wird aufgeschlüsselt in:


    verschlüsselter Payload:

    Code
    0EE5D1105D5C02D807D3951749ED286EA4163BF7238946BBD1C2DCB3A570591532BD065632AD91C8926C66178E1114F9C0D35A96F7203DDAE2C35D49E204799ECF58DCBC88AFDCB60ACEBE362BCABE12


    der iv Key:

    Code
    000000002D4C010E2424242424242424


    Stimmt das soweit?



    Grüße

  • Hallo.


    Ich hab gestern noch lange lange gesucht und ein online Tool gefunden (http://aes.online-domain-tools.com/)


    Gebe ich die Daten dort ein bekomme ich es entschlüsselt und die Daten sind meiner Meinung nach valid:


    Code
    02	63	06	6d	4b	69	ee	f5	16	19	04	03	3b	bc	0d	00
    04	83	3c	00	00	00	00	84	10	fb	82	73	f1	2b	00	00
    84	10	fb	82	f3	3c	a7	d2	01	00	04	2b	82	01	00	00
    04	ab	3c	00	00	00	00	04	fb	14	00	00	00	00	04	fb
    94	3c	9e	00	00	00	04	83	ff	04	00	00	00	00	2f	2f


    Einen Schritt weiter... wie ich das ganze über die shell machen kann... da stehen noch 1000 x ?


    Grüße