Skip to content

Commit e3ce5dc

Browse files
author
sidey79
committed
fix: docs
1 parent 6737300 commit e3ce5dc

File tree

2 files changed

+52
-15
lines changed

2 files changed

+52
-15
lines changed

docs/architecture/decisions/ADR-006-json-output-schema.adoc

Lines changed: 48 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,54 @@ Die Umbenennung des Nutzdatenfeldes von `payload` zu `data` sowie die Einführun
1919

2020
=== Details zur neuen Struktur (Präzisiert durch ADR-007)
2121

22-
| Feld | Typ | Beschreibung |
23-
|---|---|---|
24-
| `data` | `str` | Die bereinigten Nutzdaten **ohne** Preamble und Postamble (ersetzt `payload`). |
25-
| `raw` | `str` | Die ursprüngliche, unveränderte Nachricht vom Signalduino (z.B. `MU;...`). |
26-
| `protocol` | `dict` | Strukturierte Metadaten des Protokolls. |
27-
| `protocol.id` | `str` | Die ID des Protokolls (Redundanz zur einfachen Konsumierbarkeit). |
28-
| `protocol.name` | `str` | Der menschenlesbare Name des Protokolls (aus `protocols.json`). |
29-
| `protocol.preamble` | `str` | Die Preamble des Protokolls (z.B. `W125#`). |
30-
| `protocol.format` | `str` | Das Format des Signals (z.B. `manchester`, `twostate`, `2-FSK`) (aus `protocols.json`). |
31-
| `protocol.clock` | `int`/`float` | Der Clock-Wert, der für die Demodulation verwendet wurde (entweder `clockabs` oder `clockrange` Mittelwert/demodulierter Takt). |
32-
| `protocol.modulation` | `str` | (Optional) Modulationsart (z.B. `2-FSK`, `GFSK`) für FSK-Protokolle. |
22+
[cols="1,1,4"]
23+
|===
24+
| Feld | Typ | Beschreibung
25+
26+
| `data`
27+
| `str`
28+
| Die bereinigten Nutzdaten (meist Hex-String) **ohne** Preamble/Postamble. Repräsentiert die protokollspezifischen Daten (ersetzt `payload`).
29+
30+
| `raw`
31+
| `str`
32+
| Die ursprüngliche, unveränderte Nachricht vom Signalduino (z.B. `MU;...`). Dient der vollständigen Nachvollziehbarkeit.
33+
34+
| `protocol`
35+
| `object`
36+
| Container für strukturierte Metadaten der erfolgreichen Protokolldemodulation.
37+
38+
| `protocol.id`
39+
| `str`
40+
| Die interne ID des Protokolls (z.B. `125`).
41+
42+
| `protocol.name`
43+
| `str`
44+
| Der menschenlesbare Name des Protokolls (aus `protocols.json`).
45+
46+
| `protocol.preamble`
47+
| `str`
48+
| Die Preamble (z.B. `W125#`) des erkannten Protokolls.
49+
50+
| `protocol.encoding`
51+
| `str`
52+
| Das Codierungsformat des Signals (z.B. `manchester`, `twostate`, `pulse`).
53+
54+
| `protocol.clock`
55+
| `float`
56+
| Der Takt-Wert in Mikrosekunden (`us`), der für die Demodulation verwendet wurde.
57+
58+
| `protocol.modulation`
59+
| `str`
60+
| (Optional) Modulationsart (z.B. `2-FSK`, `GFSK`) für FSK-Protokolle.
61+
62+
| `protocol.bitlength`
63+
| `int`
64+
| (Optional) Die tatsächliche Bitlänge der `data`-Nutzdaten, falls vom Protokoll bekannt/erzwungen. Unterstützt z.B. die Grothe-Constraint-Prüfung.
65+
66+
| `protocol.repeats`
67+
| `int`
68+
| (Optional) Die Anzahl der erkannten Wiederholungen dieses Pakets, relevant für Duplikaterkennung.
69+
|===
3370

3471
=== Beispiel für die Datenstruktur (Präzisiert durch ADR-007)
3572

docs/architecture/decisions/ADR-007-data-and-raw-fields.adoc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,18 @@
1111

1212
Im Zuge der Definition des neuen JSON-Output-Schemas (siehe ADR-006) wurde Feedback gesammelt, das zwei wesentliche Verbesserungen vorschlägt:
1313

14-
1. **Ambiguität des Feldes `payload`:** Der Begriff `payload` wird in MQTT- und Messaging-Kontexten häufig für den gesamten Nachrichteninhalt verwendet. Die Verwendung von `payload` für die spezifischen, decodierten Hex-Daten kann daher zu Verwirrung führen.
15-
2. **Bedarf an Rohdaten:** Für Debugging-Zwecke und fortgeschrittene Analysen ist es notwendig, Zugriff auf die ursprüngliche, unveränderte Nachricht zu haben, wie sie vom Signalduino-Gerät empfangen wurde (z.B. der komplette `MU;...`- oder `MC;...`-String), bevor irgendeine Verarbeitung oder Parsing stattgefunden hat.
14+
. **Ambiguität des Feldes `payload`:** Der Begriff `payload` wird in MQTT- und Messaging-Kontexten häufig für den gesamten Nachrichteninhalt verwendet. Die Verwendung von `payload` für die spezifischen, decodierten Hex-Daten kann daher zu Verwirrung führen.
15+
. **Bedarf an Rohdaten:** Für Debugging-Zwecke und fortgeschrittene Analysen ist es notwendig, Zugriff auf die ursprüngliche, unveränderte Nachricht zu haben, wie sie vom Signalduino-Gerät empfangen wurde (z.B. der komplette `MU;...`- oder `MC;...`-String), bevor irgendeine Verarbeitung oder Parsing stattgefunden hat.
1616

1717
[#adr-decision]
1818
== Entscheidung
1919

2020
Wir passen das in ADR-006 definierte Schema wie folgt an:
2121

22-
1. **Umbenennung `payload` zu `data`:**
22+
. **Umbenennung `payload` zu `data`:**
2323
Das Feld, das bisher `payload` hieß und die bereinigten Hex- oder Binärdaten (ohne Preamble) enthielt, wird in **`data`** umbenannt.
2424

25-
2. **Einführung des Feldes `raw`:**
25+
. **Einführung des Feldes `raw`:**
2626
Es wird ein neues Feld **`raw`** auf der obersten Ebene des JSON-Objekts eingeführt. Dieses Feld enthält den ursprünglichen Nachrichten-String, der an den Parser übergeben wurde.
2727

2828
=== Aktualisierte Datenstruktur

0 commit comments

Comments
 (0)