|
| 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