Ich habe in ein paar ruhigen Minuten der letzten zwei Wochen mal meine bisherigen (nicht sehr unfangreichen) Logs gesichtet und dabei ist mir aufgefallen, dass der letzte UIDS-Eintrag am 12.10.22 war - einige Tage nach meinen Bluetooth-Koppelversuchen und auch einige Tage nach (!) dem ersten Auftreten der ersten Verzögerungen in der Anzeige der Daten, auch einige Tage nach (!) dem (bisher einzigen) $BOOT bei mir. Aber seither nicht mehr. Meine Reports fallen seither allesamt kleiner aus (94 statt 200 Byte). Seit dieser Zeit bekomme ich eben auch ständig diese "Seit mehr als 15 Minuten nicht mehr synchronisiert"-Meldungen.
Wenn das Wetter besser mitspielt, werde ich wieder einen Log ziehen und dabei den Roller einmal ein- und wieder ausschalten, um zu sehen, ob dann wieder eine UIDS generiert wird - weil genau durch diese Prozedur die Synchronisierung immer wieder für ein paar Stunden funktioniert.
Weiterhin fasse ich hier mal das Ergebnis meiner eher oberflächlichen Analysen zusammen:
In Vorbereitung eines zu sendenen Reports stellt das Astramodul offenbar einige Daten zusammen und "postet" das auch. Versendet wird dann nur ein "Protocol X Report No.[x]", wobei [x] hochzählt, insbesondere wenn sich mehrere zu sendenden Reports in einer Warteschlange befinden, was hier nachvollzuiehbar passiert, wenn das Modul bootet und diverse Berichte anfallen, bevor das Mobilfunkteil sendebereit ist.
Dieser Bericht setzt sich (n.m.E.) aus den zuvor generierten einzelnen "Posts" wie folgt zusammen:
a) "REPORT No.[x] HDR" (17 Bytes)
b) 1-Byte-Wert für Modul-Versorgungsspannung / 5 (in V) (Bsp: 0x3C => 60/5=12V, 0x3D => 61/5=12,2V)
c) dem ersten Byte von "POWER:" (das zweite ist mal 0x50, mal 0x00, mal 0x05): als Dezimalwert Ladezustand des modulinternen Akkus.
d) "GNSS:" (18 Byte)
e) "DIGITALS:" (4 Byte), bei mir bisher immer "0x00 0x00 0x00 0x00"
edit2: in einem früheren Post von Gerold folgt hier offenbar "ANALOGUES" (4 Byte), dort mit "0x00 0x00 0x00 0x01"
f) "SIGNAL QUALITY:" (1 Byte), 0xFF wenn Modul noch nicht bereit (abwärts zählend? -dB?)
g) optional: "JNY STOP:" (5 Bytes) - wird zum Ende einer Fahrt generiert und versendet, beinhaltet 3 Byte gerundete GPS-km und 2 Byte Betriebsstundenzähler
h) "SCUTUM S01:" (46 Byte)
i) offensichtlich optional: "SCUTUM UIDS:" (106 Byte)
Die Länge dieses Reports variiert entsprechend je nach enthaltenden Teilen.
Mir ist unklar, wie, der nur gelegentlich enthaltene "JNY STOP" oder auch der ANALOGUES vom folgenden "SCUTUM S01" unterschieden wird.
Die übermittelten einzelnen Bestandteile werden offenbar durch eine Maskierung im Protocol Header festgelegt ...
Generierte, aber nicht übertragene Reports werden zwischengespeichert. Ist das Modul sendebereit, werden (vermutlich) alle anstehenden Reports hintereinander versendet, vorangestellt ein 4-Byte "PKT HDR:" (zumindest beim SEAT Mo), nachfolgend ein "CRC: " mit 2 Bytes.
Der "PKT HDR" setzt sich nach meiner Beobachtung bzw. bestätigend zu @Gerolds Angaben viel weiter vorher zusammen aus
- 0x5A
- 2 Byte hex für die Zahl der Gesamtbytes der Datenübertragung (MSB-LSB)
- 1 Byte für die Anzahl der übermittelten Reports
Auch hier wieder unklar, wie in der Auswertung die 4-Byte PKT HDR von den 10-Byte von @Gerold (inkl. IMEI) unterschieden wird.
Beispiel:
Im Log nach einem $BOOT-Befehl fand ich insgesamt 9 "Protocol X Report No.1" bis "...No.9", 8 davon mit den Bestandteilen a)-f)+h), der 9. inklusive g), 8x88, 1x93 Byte, 4 Byte PKT HDR, 2 Byte CRC = 803 Bytes, so auch gemeldet als "writing 803 bytes to socket 0". Der "PKT HDR" war folgerichtig "0x5A 0x03 0x23 0x09" (803 Bytes, 9 Reports).
Fast vollständig aufgeklärt ist die Struktur von "SCUTUM S01".
Im "SCUTUM UIDS:" konnte ich bisher identifizieren (Byte x-y, Anzahl, Erklärung):
01-17 (17) „Frame ID:“ (VIN)
18-29 (3x4) „S01 ECU UID L:“ + „... M“ + „... H“ (LSB first)
30-49 (20) STM ECU FW Git HASH
50-53 (4) „Battery ID:“ (Dezimalzahl)
54-65 (12) unklar, mglw. BMS-ID
66-85 (20) „STM BMS FW GIT HASH“
86-93 (8) „BMS Sigfox ID (8):“ ??? (immer 0, wie „SIGFOX CAN HEX“)
94-103 (10) hier immer ASCII-Zeichen „NOT_STORED“ (edit: bei klaona "_ qcû°ÀÚ>Z" -??)
104-106 (3) (immer 0)
Auch ich habe wie @klaona also immer 106 Bytes im UIDS, immer beginnend mit der VIN.
In den übrigen Items stochere ich gerade noch herum...
