Nachrichten =========== Nachricht: DTU an WR: "Init" (?) -------------------------------- 7E 07 00 00 00 00 00 00 00 00 00 07 7F ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^ Bedeutung SOF MID WR ser# WR ser# ? CRC8 EOF ? Nachricht: DTU an WR: "Init 2" (?) ---------------------------------- 7E 07 72 81 88 32 72 81 88 32 00 07 7F ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^ Bedeutung SOF MID DTU ser# DTU ser# ? CRC8 EOF Einheit BCD (letzte 8) BCD (letzte 8) ? ? Beispiel 72818832 72818832 ? Nachricht: DTU an WR: "Anfrage aktuelle DC Daten" (?) ----------------------------------------------------- 7E 15 72 22 02 00 72 22 02 00 80 0B 00 62 09 04 9b 00 00 00 00 00 00 00 00 F2 68 F0 7F ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^ Bedeutung SOF MID WR ser# WR ser# ? TIME (UTC) ? CRC8 EOF Einheit BCD (letzte 8) BCD (letzte 8) ? [s] ? Beispiel 72220200 72220200 ? 2022-02-13 ? 13:16:11 ? Nachricht: WR an DTU: "Aktuelle DC Daten" (?) --------------------------------------------- 7E 95 72 22 02 00 72 22 02 00 01 00 01 01 4c 03 bd 0c 46 00 b5 00 03 00 05 00 00 BD 7F ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^ ^^ Bedeutung SOF MID WR ser# WR ser# ? PV1.u PV1.i PV1.p PV2.u PV2.i PV2.p ? CRC8 EOF Einheit BCD (letzte 8) BCD (letzte 8) ? [0.1V] [0.01A] [.1W] [0.1V] [0.01A] [.1W] ? Beispiel 72220200 72220200 ? 33.2V 9.57A 317.2W 18.1V 0.03A 0.5W ? Nachricht: WR an DTU: "Aktuelle AC Daten" (?) --------------------------------------------- 7E 95 72 22 02 00 72 22 02 00 02 28 23 00 00 24 44 00 3C 00 00 09 0F 13 88 0B D5 83 7F ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^ ^^ Bedeutung SOF MID WR ser# WR ser# ? ? ? AC.u AC.f AC.p CRC8 EOF Einheit BCD (letzte 8) BCD (letzte 8) ? [0.1V] [0.01Hz] [0.1W] Beispiel 72220200 72220200 ? 9284 60 231.9V 50.00Hz 302.9W Nachricht: WR an DTU: "???" --------------------------- 7E 95 72 22 02 00 72 22 02 00 83 00 03 00 83 03 E8 00 B2 00 0A FD 26 1E 7F ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^ Bedeutung SOF MID WR ser# WR ser# ? ? ? ? ? ? CRC8 EOF Einheit BCD (letzte 8) BCD (letzte 8) ? Beispiel 72220200 72220200 ? 131 1000 178 10 Legende ======= MID: Message-ID. Antworten haben Bit 7 gesetzt, z.B. Frage 0x15 --> Antwort 0x95. z.B. Frage 0x07 --> Antwort 0x87. SOF: Start-of-Frame 0x7e EOF: End-of-Frame 0x7f CRC8: CRC8 mit poly=1 init=0 xor=0, für alle Bytes zwischen SOF und CRC8. Beispiel in Python: >>> import crcmod >>> f = crcmod.mkCrcFun(0x101, initCrc=0, xorOut=0) >>> payload = bytes((0x95,0x72,0x22,0x02,0x00,0x72,0x22,0x02,0x00,0x83,0x00,0x03,0x00,0x83,0x03,0xE8,0x00,0xB2,0x00,0x0A,0xFD,0x26)) >>> hex(f(payload)) '0x1e' TIME: Aktuelle (DTU-)Zeit als Unix "time_t" (Sekunden seit 1970-01-01) Notizen ======= 0x014c = 332 0x03bd = 957 0x0c64 = 3172 0x6209049b = 1644758171 datetime.datetime.utcfromtimestamp(0x6209049b): datetime.datetime(2022, 2, 13, 13, 16, 11) Historie ======== 2022-03-09 / Petersilie / erste Version 2022-03-10 / Petersilie / r2 / Nachrichten "02 28 23" und "82 00 03" ergänzt. Sauberer ausgerichtet. Python Beispiel für CRC.