-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VKW - Invalide Daten #10
Comments
VKW ist anders als Netz-NOE, kenne aber leider nicht die Details... |
Die hier verwendete DLMS Entschlüsselung sollte die VKW Zähler genauso unterstützen oder was ist hier anders? |
Hab mein Python test script hochgeladen Bei deinen Daten fehlt das zweite Frame(beginnend mit 68141468). Probier mal das READ_TIMEOUT zu erhöhen. |
Das READ_TIMEOUT zu erhöhen hatte keine Auswirkung. |
Habe in Erinnerung, dass es jemand mit Tasmota geschafft hat, einen "vorarlbergnetz smartmeter" auszulesen. |
Nein das ist kein zweites Datenframe, das ist schon die zweite Datenübertragung, die alle 5 Sekunden stattfindet. Vielleicht gibt es nur ein Frame bei VKW? Hast du dazu Infos? NetzNÖ hat eine Anleitung, wie man händisch die Daten mit zwei Programmen entschlüsselt, probier das mal aus: 218_9_SmartMeter_Kundenschnittstelle_lektoriert_14.aspx |
@da-winci : ich habe mir deine Datenstream.txt Datei angeschaut und kann im 1. Moment keinen Fehler darin finden. Die Datensätze sind von der Byteanzahl her gleich lang wie mein Vergleichsdatensatz der funktioniert. Vielleicht möchtest du deine Daten mit dem Online Tool CyberChef checken. AES ENCRYPT: Input: hier kommt Telegramm1 + Telegramm2 rein Telegramm1 Beginn: 83 (also BytePos 28 - wenn ich mit 1 zu zählen beginne) Spalte E = dein Datensatz // Spalte F = mein Datensatz Telegramm1 Ende ... Telegramm2 Start Im cyberChef siehst du in Output, wenn alles korrekt dekodiert werden konnte, in Hex den OBIS Block. Ich hoffe das hilft für's erste ;-) |
Also bei VKW beginnt das zweite Frame mit |
@micronano0 Mega lieben Dank für deinen wirklich hilfreichen Post! Kannst du damit die richtigen OBIS Blöcke erzeugen und mal schauen ob die generell eigentlich passen? Das zweite Frame der VKW Zähler scheint wohl tatsächlich mit |
Datum Zeit: 13.07.2023 17:11:15 |
Mit drei kleinen Änderungen im Code sollte es funktionieren, wenn ich nichts übersehen habe (Ob der Timestamp funktioniert, bin ich mir nicht sicher): Hier den Wert auf esp-smartmeter-netznoe/src/dlms.h Line 7 in 0446ace
Und hier die esp-smartmeter-netznoe/src/main.cpp Lines 153 to 154 in 0446ace
Und hier das Python test script für VKW Daten: |
@FKW9 Danke für den schnellen Code Änderungsvorschlag. Serial.println(); 13:07:35.698 -> plaintext[0]: 111 |
Nein an diesen Byte-Positionen im Plaintext muss genau das stehen. |
Hmm dann verhält sich das mit dem ESP32 über die Serielle schnittstelle noch etwas anders als über den USB-TTL Wandler. |
Meine Vermutung ist, dass dein 2. Frame mit einer etwas zu großen Verzögerung kommt. Kannst du checken, wie die Daten überm TTL-USB Wandler kommen? Kommt da alles auf einmal oder ist da ein delay dazwischen? |
Die Daten kommen alle aufeinmal. |
Ja mein Fehler, deswegen gibt es ja das READ_TIMEOUT....... |
Versuch mal dort wo er die Daten ausliest, die einzelnen Bytes direkt zu printen esp-smartmeter-netznoe/src/main.cpp Line 113 in 8245f22
|
Hab nun folgendes in der while(Serial2.available()) schleife eingebaut: --> Datenlogging.txt Die Daten vom Oszi bezüglich Anfang des Datenpakets scheint mit dem was die ESP Serial sagt zumindest übereinzustimmen. |
Kein Problem. Falls du Hilfe beim Debuggen brauchst gib mir bitte Bescheid! |
Ich komm grad drauf, dass ich im Debug-Print nur das erste Frame printe (bis 255)! esp-smartmeter-netznoe/src/main.cpp Lines 139 to 144 in 8245f22
Also das 2. Frame ist eh da! Dann wird's noch an der Dekodierung liegen und den richtigen Byte-Positionen... Das mit der kleinen Wartezeit ist kein Problem. |
Im branch vkw-test habe ich eine erste Testversion. Das entschlüsselte Paket unterscheidet sich doch ein bisschen mehr als gedacht, aber dies sollte so mal funktionieren. Was noch fehlt ist die Auswertung der folgenden OBIS Kennziffern:
|
Mega vielen lieben Dank für deine schnellen Anpassungen! Hab dir meine drei files mal angehängt. Kannst du diese bei dir ohne Fehler kompilieren? |
dein compiler behandelt die Warnings als Error, deswegen schlägt es fehl. Du musst dem Compiler sagen das er das nicht soll mit dem Flag -Werror. Wie das in ArduinoIDE geht weiß ich nicht. Oder du verwendest den teil des codes (im prinzip wird das struct meter_data nur initialisiert) am ende mit println(meter_data.power_plus) und println(OBIS_TIMESTAMP[0]) |
Die Dekodierung für die VKW Smartmeter funktioniert nun endlich! Lieben Dank für all eure Hilfe! Encoded raw data stream: Damit kann ich nun endlich meine Heizstabsteuerung realisieren. :) |
Timestamp wird jetzt im neusten Commit b2c20f4 ausgewertet, zusätzlich mit epoch time die die Zeitzone berücksichtigt (kein NTP mehr nötig!). In deinem Code verwendest du noch |
Seltsamerweise bekomme ich nur invalide Daten. Ich habe es dann mal mit dem TEST_SETUP-flag ausprobiert aber selbst dort bekomme ich nur die Meldung:
und folgenden Encoded raw data stream:
Mache ich irgendetwas falsch? Ich verwende den bereits in der key.h-Datei vorhandenen Schlüssel: // Your Encryption Key
static const unsigned char KEY[] = {0x35, 0x32, 0x36, 0x32, 0x34, 0x34, 0x34, 0x35, 0x37, 0x36, 0x34, 0x36, 0x34, 0x32, 0x34, 0x34, 0x35, 0x37, 0x37, 0x31, 0x33, 0x36, 0x36, 0x36, 0x33, 0x39, 0x36, 0x43, 0x35, 0x32, 0x35, 0x37}; |
Der key ist falsch, da würde der key von @da-winci hingehören, aber den habe ich natürlich nicht veröffentlicht. Ich habe kein VKW, deswegen musst du die Daten und den Key von dir eintragen. Wie sehen deine Daten aus? Ist das zweite Paket da, beginnend mit |
@laimermic |
Wies aussieht hab ich es einfach nur nicht hinbekommen meinen Key in key.h richtig einzusetzen. Trotzdem danke 👍 . Ich kann die Daten jetzt auslesen |
Bekomme leider nur invalide Daten.
Mir scheint die Länge ist zu kurz, kann das sein?
Was kann ich machen um dem Problem auf die Schliche zu kommen?
Kann ich diese Datenwurst irgendwie händisch oder mit einem Tool entschlüsseln?
Den Entschlüsselungskey habe ich heute bekommen.
Bin wirklich um jede Hilfe dankbar!
Habe einen VKW MA309MH4 Smartmeter.
Laut Code müsste es hier fehlschlagen:
14:26:17.366 -> 68FAFA6853FF000167DB084B464D1020043BD78201552100004483B42D5539F7DC88C9573AFB79C56C3C7A9D86BC3E5845A99FAE35C4CC93EB3247939D73D7EF31DF33BC169026B14B0B0F83225B18E5FC455CDCBB165AB649532E33869A74159289480BFF892769D8BF6C1279CF35CA04839A4A6387374B7610F5AFD57065D0CCF9FEAF2D61AF52AD08F314E20559283E102CB78043275B83A3439B6274F85FD3733768125DADF33D45B27AE6C98E521FE65B5CAFB8BF1BDBF6A478DEB7AC7D5D944C8382E10164FB0BD8B6AB86D9E1A9D22A7EDC3C2FBB8F625E654F322A932FA8CDA73DD0E0B687203A8799A8EC827DF50B685439452B8BDDF019D8202316 Packet was decrypted but data is invalid!
14:26:25.287 -> 68FAFA6853FF000167DB084B464D1020043BD78201552100004484BBF8DFACEF4578719FE6319FEC5F7DED2211FF8136E109033C4E83109DD974A4BABF3F47F66647C46FAC4E721C05DAEA46E714B6E1581FD9994857DE98B694D422C5CADC99D459483D72CF752BAD155D5C6F1C489ADD1F57FDC61901FA70A161DC0C2E8055796631B6C64586B264041078BF856EA3ABE9FCE6F80F29B77DFB4A9FB29A76BF8EDB0CA334D78EF3FBB7FFEE5BC118D3CA04316733DF41CB4561F91B6FAA5BDFD8CBC007A54FFFB918278F8FA122334607D080D012CB898A66806C6DF8C7D47DEEAB9A0CE51C5FAE168042EAB628D90ECD4B0133C0F57384A2C37A2333832B16 Packet was decrypted but data is invalid!
14:26:31.320 -> 68FAFA6853FF000167DB084B464D1020043BD78201552100004486AAC97CCE1C3291DEB08ECAA2AE8E71E87387F96A31C5CB231070E0BBF20FACD1C6BDC727ACF2DF0BCF66CFFB6DD407C22C51706864705CD409C6157024D1639BCFA78257F7BA34AB1DC9C5970A1608D4DAB7953AE8DD1516E2B1993C5D16047071AC6B8DC66FEF4E5DE1AB09EB04263FCAC700BA70BBF206153AC677B8841918B8302F26EC4F559B2F31A133D3E763196E68204F0AB6025A76DA8F1EFFF8DB2AB97B59F0A2415F9CBD34C9F56A464334B249AA710FC9857DD0AC564CC1415CFC7327FB8BB65F88278AB54AF6DFD5C84FCDDB8D8AA393444B6F9D88026C6C05A2FABCB6A116 Packet was decrypted but data is invalid!
The text was updated successfully, but these errors were encountered: