Skip to content

Commit fbcf77c

Browse files
author
sidey79
committed
feat(mqtt): add MQTT API reference to user guide
1 parent 313814e commit fbcf77c

File tree

2 files changed

+267
-1
lines changed

2 files changed

+267
-1
lines changed

docs/01_user_guide/index.adoc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,5 @@ Für einen schnellen Einstieg folgen Sie diesen Schritten:
7979
Ausführliche Anleitungen finden Sie in den folgenden Kapiteln.
8080

8181
include::installation.adoc[]
82-
include::usage.adoc[]
82+
include::usage.adoc[]
83+
include::mqtt_api.adoc[]

docs/01_user_guide/mqtt_api.adoc

Lines changed: 265 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,265 @@
1+
= MQTT API Reference
2+
:doctype: book
3+
:icons: font
4+
:toc: left
5+
:toclevels: 2
6+
:sectnums:
7+
8+
[[_mqtt_introduction]]
9+
== Einführung
10+
11+
Die MQTT-Schnittstelle ermöglicht die Steuerung des PySignalduino-Gateways und den Empfang von dekodierten Nachrichten. Alle Befehle und Antworten verwenden das JSON-Format.
12+
13+
=== Topics und Struktur
14+
15+
Die Basis aller Topics ist `<base_topic>/v1`, wobei `<base_topic>` standardmäßig `signalduino` ist. Alle Beispiele verwenden `signalduino/v1` als Basis.
16+
17+
|===
18+
| Zweck | Topic-Format | Anmerkungen
19+
20+
| Befehl senden (Request)
21+
| `signalduino/v1/commands/<command_path>`
22+
| Senden Sie hier die JSON-Payload, um einen Befehl auszuführen.
23+
24+
| Befehlsantwort (Success)
25+
| `signalduino/v1/responses`
26+
| Erfolgreiche Antworten von `get/` und `set/` Befehlen.
27+
28+
| Befehlsfehler (Error)
29+
| `signalduino/v1/errors`
30+
| Fehler (z.B. Validierung oder Timeout).
31+
32+
| Empfangene Nachrichten
33+
| `signalduino/v1/state/messages`
34+
| Dekodierte Funknachrichten.
35+
|===
36+
37+
=== Request- und Response-Format
38+
39+
Alle Requests verwenden das folgende JSON-Format. Für einfache Befehle (meiste GETs) kann die Payload einfach `{}` sein.
40+
41+
[cols="1,3", options="header"]
42+
|===
43+
| Feld | Beschreibung
44+
45+
| `req_id`
46+
| *(Optional)* Eine Korrelations-ID (`string`) zur Zuordnung von Request und Response.
47+
48+
| `value`
49+
| *(Nur für einfache SET-Befehle)* Der Wert, der gesetzt werden soll. Typ variiert (Zahl, String).
50+
51+
| `parameters`
52+
| *(Nur für komplexe Befehle)* Ein Objekt für Befehle mit mehreren Argumenten (z.B. `command/send/msg`).
53+
|===
54+
55+
Eine erfolgreiche Response auf `signalduino/v1/responses` hat folgende Struktur:
56+
57+
[source,json]
58+
----
59+
{
60+
"command": "der/ausgeführte/befehl",
61+
"success": true,
62+
"req_id": "F001",
63+
"payload": {
64+
// Die tatsächlichen Daten, z.B. Frequenz-Wert, Versionsstring, etc.
65+
}
66+
}
67+
----
68+
69+
[[_get_commands]]
70+
== GET Commands (Status und Konfiguration abrufen)
71+
72+
GET-Befehle benötigen eine leere Payload (`{}`) oder nur eine `req_id`.
73+
74+
[cols="1,1,3", options="header"]
75+
|===
76+
| Befehlspfad | Antwort-Payload (Beispiel `payload`) | Beschreibung
77+
78+
| `get/system/version`
79+
| `"V 3.3.1-dev..."`
80+
| Firmware-Version.
81+
82+
| `get/system/freeram`
83+
| `"1234"`
84+
| Verfügbarer RAM-Speicher.
85+
86+
| `get/system/uptime`
87+
| `"56789"`
88+
| System-Laufzeit.
89+
90+
| `get/config/decoder`
91+
| `"MS=1;MU=1;MC=1;MN=1"`
92+
| Aktuelle Decoder-Konfiguration (aktivierte Protokollfamilien).
93+
94+
| `get/cc1101/config`
95+
| `"C0D11=0F"`
96+
| CC1101 Konfigurationsregister-Dump.
97+
98+
| `get/cc1101/patable`
99+
| `"C3E = C0 C1 C2 C3 C4 C5 C6 C7"`
100+
| CC1101 PA-Tabelle.
101+
102+
| `get/cc1101/register`
103+
| `"C00 = 29"`
104+
| Liest den Wert eines einzelnen CC1101-Registers (Adresse 0x00). Der Befehl nimmt keinen Wert in der Payload entgegen und liest standardmäßig Register 0x00.
105+
106+
| `get/cc1101/frequency`
107+
| `{"frequency_mhz": 868.3500}`
108+
| Aktuelle RF-Frequenz in MHz.
109+
110+
| `get/cc1101/bandwidth`
111+
| `102.0`
112+
| Aktuelle IF-Bandbreite in kHz.
113+
114+
| `get/cc1101/rampl`
115+
| `30`
116+
| Aktuelle Empfängerverstärkung (LNA Gain) in dB. Mögliche Werte: `24, 27, 30, 33, 36, 38, 40, 42`.
117+
118+
| `get/cc1101/sensitivity`
119+
| `12`
120+
| Aktuelle Empfindlichkeit in dB. Mögliche Werte: `4, 8, 12, 16`.
121+
122+
| `get/cc1101/datarate`
123+
| `4.8`
124+
| Aktuelle Datenrate in kBaud.
125+
126+
| `get/cc1101/settings`
127+
| `{"frequency_mhz": 868.35, "bandwidth": 102.0, "rampl": 30, "sens": 12, "datarate": 4.8}`
128+
| Aggregierte Abfrage aller CC1101-Haupteinstellungen.
129+
|===
130+
131+
[[_set_commands]]
132+
== SET Commands (Konfigurationsänderungen)
133+
134+
SET-Befehle, die einen Wert setzen, verwenden das `value`-Feld. Befehle, die nur eine Aktion auslösen, benötigen eine leere Payload. Nach allen CC1101-SET-Befehlen wird automatisch eine Re-Initialisierung des Chips durchgeführt.
135+
136+
=== Einfache SET-Befehle (Aktionen)
137+
138+
Diese Befehle benötigen nur eine leere Payload (`{}`) oder eine `req_id`.
139+
140+
|===
141+
| Befehlspfad | Beschreibung | Beispiel `mosquitto_pub`
142+
143+
| `set/factory_reset`
144+
| Setzt EEPROM-Defaults zurück und startet das Gerät neu.
145+
| `mosquitto_pub -t signalduino/v1/commands/set/factory_reset -m '{}'`
146+
147+
| `set/config/decoder_ms_enable`
148+
| Aktiviert den "Synced Message (MS)" Decoder (`CE S`).
149+
| `mosquitto_pub -t signalduino/v1/commands/set/config/decoder_ms_enable -m '{"req_id": "DECODER01"}'`
150+
151+
| `set/config/decoder_ms_disable`
152+
| Deaktiviert den "Synced Message (MS)" Decoder (`CD S`).
153+
| `mosquitto_pub -t signalduino/v1/commands/set/config/decoder_ms_disable -m '{}'`
154+
155+
| `set/config/decoder_mu_enable`
156+
| Aktiviert den "Unsynced Message (MU)" Decoder (`CE U`).
157+
| `mosquitto_pub -t signalduino/v1/commands/set/config/decoder_mu_enable -m '{}'`
158+
159+
| `set/config/decoder_mu_disable`
160+
| Deaktiviert den "Unsynced Message (MU)" Decoder (`CD U`).
161+
| `mosquitto_pub -t signalduino/v1/commands/set/config/decoder_mu_disable -m '{}'`
162+
163+
| `set/config/decoder_mc_enable`
164+
| Aktiviert den "Manchester Coded Message (MC)" Decoder (`CE C`).
165+
| `mosquitto_pub -t signalduino/v1/commands/set/config/decoder_mc_enable -m '{}'`
166+
167+
| `set/config/decoder_mc_disable`
168+
| Deaktiviert den "Manchester Coded Message (MC)" Decoder (`CD C`).
169+
| `mosquitto_pub -t signalduino/v1/commands/set/config/decoder_mc_disable -m '{}'`
170+
|===
171+
172+
=== CC1101 Parameter SET-Befehle
173+
174+
Diese Befehle benötigen das Feld `value` im Payload, das gegen ein definiertes JSON-Schema validiert wird.
175+
176+
|===
177+
| Befehlspfad | Wert (`value`) | Erlaubte Werte | Beispiel `mosquitto_pub`
178+
179+
| `set/cc1101/frequency`
180+
| RF-Frequenz in MHz (`float`)
181+
| `315.0` bis `915.0`
182+
| `mosquitto_pub -t signalduino/v1/commands/set/cc1101/frequency -m '{"value": 433.92}'`
183+
184+
| `set/cc1101/rampl`
185+
| Empfängerverstärkung in dB (`int`)
186+
| `24, 27, 30, 33, 36, 38, 40, 42`
187+
| `mosquitto_pub -t signalduino/v1/commands/set/cc1101/rampl -m '{"value": 38}'`
188+
189+
| `set/cc1101/sensitivity`
190+
| Empfindlichkeit in dB (`int`)
191+
| `4, 8, 12, 16`
192+
| `mosquitto_pub -t signalduino/v1/commands/set/cc1101/sensitivity -m '{"value": 12}'`
193+
194+
| `set/cc1101/patable`
195+
| PA-Power-Level (`string`)
196+
| `-30_dBm, -20_dBm, -15_dBm, -10_dBm, -5_dBm, 0_dBm, 5_dBm, 7_dBm, 10_dBm`
197+
| `mosquitto_pub -t signalduino/v1/commands/set/cc1101/patable -m '{"value": "5_dBm"}'`
198+
199+
| `set/cc1101/bandwidth`
200+
| IF-Bandbreite in kHz (`float`)
201+
| Bestimmte Enum-Werte (z.B. `58, 102, 203, 406`). Es wird der nächstgelegene unterstützte Wert gesetzt.
202+
| `mosquitto_pub -t signalduino/v1/commands/set/cc1101/bandwidth -m '{"value": 102.0}'`
203+
204+
| `set/cc1101/datarate`
205+
| Datenrate in kBaud (`float`)
206+
| `0.0247955` bis `1621.83`
207+
| `mosquitto_pub -t signalduino/v1/commands/set/cc1101/datarate -m '{"value": 4.8}'`
208+
209+
| `set/cc1101/deviation`
210+
| Frequenzabweichung in kHz (`float`)
211+
| `1.586914` bis `380.859375`
212+
| `mosquitto_pub -t signalduino/v1/commands/set/cc1101/deviation -m '{"value": 50.0}'`
213+
|===
214+
215+
[[_complex_commands]]
216+
== Komplexe Befehle
217+
218+
Komplexe Befehle verwenden das `parameters`-Feld im Payload.
219+
220+
=== `command/send/msg`
221+
222+
Dieser Befehl sendet eine vorab encodierte Nachricht an das Signalduino-Gerät, die direkt an die Firmware übergeben wird.
223+
224+
[source,json]
225+
----
226+
{
227+
"req_id": "SEND007",
228+
"parameters": {
229+
"protocol_id": 1,
230+
"data": "AABBCC",
231+
"repeats": 3,
232+
"clock_us": 350,
233+
"frequency_mhz": 433.92
234+
}
235+
}
236+
----
237+
238+
|===
239+
| Parameter | Typ | Erforderlich | Beschreibung
240+
241+
| `protocol_id`
242+
| `int`
243+
| Ja
244+
| Die ID des zu verwendenden Protokolls (z.B. `P1`).
245+
246+
| `data`
247+
| `string`
248+
| Ja
249+
| Die zu sendenden Daten als Hex- oder Binär-String.
250+
251+
| `repeats`
252+
| `int`
253+
| Nein (Standard: 1)
254+
| Die Anzahl der Wiederholungen (`R<n>`).
255+
256+
| `clock_us`
257+
| `int`
258+
| Nein
259+
| Optionale Taktfrequenz in Mikrosekunden (`C<n>`).
260+
261+
| `frequency_mhz`
262+
| `float`
263+
| Nein
264+
| Optionale Frequenz in MHz (`F<val>`).
265+
|===

0 commit comments

Comments
 (0)