====== MQTT-Protokoll ====== Standardmäßig erfolgt die MQTT-Verbindung mit TLS gesichert auf den offiziellen OpenTrafficMap-MQTT-Server: ''%%mqtts://mqtt.opentrafficmap.org%%'' Alle Topics haben als Präfix ''%%its//%%'', wobei ''%%%%'' durch die in der Config gesetzte Node-ID ersetzt wird, die pro Node eindeutig sein muss. Vom Node gepublishte Topics: * ''%%info%%'' * ''%%status%%'' * ''%%stats%%'' * ''%%packet%%'' * ''%%command_result%%'' Vom Node subscribete Topics: * ''%%command%%'' Im Folgenden werden die Topics in alphabetischer Reihenfolge im Detail beschrieben. ===== command ===== Kann gepublisht werden, um einen Befehl auf dem Node auszuführen. Der Statuscode (Erfolg/Fehler) wird vom Node auf ''%%command_result%%'' gepublisht. Beispiel: config_set ledbrightness 128 ===== command_result ===== Wird vom Node nach dem Ausführen eines Befehls mit ''%%command%%'' gepublisht. Wenn der Befehl erfolgreich ausgeführt wurde, wird ''%%0%%'' gepublisht, sonst eine andere Zahl. Wenn vor dem Ausführen ein Fehler auftritt, wird eine Fehlermeldung gepublisht. ===== info ===== Direkt nachdem die MQTT-Verbindung aufgebaut ist, publisht der Node eine Nachricht mit grundlegenden Daten zum Node im JSON-Format. Derzeit sind das: * ''%%emac%%'': Die Ethernet-MAC-Adresse des Nodes * ''%%ver%%'': Die Version der aktuell laufenden Firmware * ''%%hwv%%'': Die Hardware-Variante des Nodes Beispiel: {"emac":"3e:dc:75:01:23:45","ver":"0.5.1","hwv":"i5r-r1"} ===== stats ===== Alle 60 Sekunden werden in dieses Topic sich ständig ändernde Betriebsdaten des Nodes im JSON-Format gepublisht. Aktuell sind das: * ''%%temp%%'': Die Temperatur vom LM75B-Temperatursensor * ''%%rbt%%'': Zeit in Sekunden seit dem letzten Neustart des Nodes Beispiel: {"temp":27.5,"rbt":224} ===== status ===== Dieses Topic wird für die "Will"-Nachricht verwendet. Wenn der Node online geht, publisht er selbst den Text ''%%online%%''. Wenn der Node die Verbindung verliert, publisht der Server ohne Zutun des Nodes ''%%offline%%''. ===== packet ===== Der Node publisht auf dieses Topic empfangene Frames als rohes 802.11 im Binärformat. Achtung: Die derzeitige Implementation hängt wegen eines Bugs 8 Bytes Müll an jedes Frame an. In einer zukünftigen Version wird das behoben, und gleichzeitig ein neues Topic verwendet werden.