MQTT Topic-Struktur
Betrachtungen zum Topic-Tree unter folgenden URLs:
- https://pi3g.com/2019/05/29/mqtt-topic-tree-design-best-practices-tips-examples/
- https://raspberry-valley.azurewebsites.net/MQTT-Topic-Trees/
- https://d1.awsstatic.com/whitepapers/Designing_MQTT_Topics_for_AWS_IoT_Core.pdf
Topic-Struktur des Systems
Die Topics im System sind folgendermaßen strukturiert:
%prefix%/%location%/%topic%/%keyword%
%prefix%/%location%/%topic%/%keyword%/%metadata%...
mount/%location%/%prefix%/%topic%/%keyword%...
%prefix%- beschreibt die Datenart, es sind folgende Datenarten definiert:
cmd: Kommandos an das Gerätlog: Meldungen vom Gerät, z.B. Sensor-Werteconnected: Meldungen zum Verbindungszustand eines Gerätes, Sensors etc.
inspiriert durch https://github.com/mqtt-smarthome/mqtt-smarthome/blob/master/Architecture.mdfeedback: Status-Meldungen des Gerätes, i.d.R. als Reaktion auf Kommandosactuator: direkter Zugriff auf einen Aktor eines Gerätes, benannt durch%keyword%sensor: direkte Meldungen eines Sensors eines Gerätes, benannt durch%keyword%
%topic%- benennt das Gerät, den Sensor/Aktor, die angesprochene Gruppe etc., welches auch Ort-Informationen tragen darf, ggf. mit Topic-Separator
/, so daß sich evtl. (noch ungern gesehen) tiefere Topic-Strukturen bilden %keyword%- ist spezifisch für das Gerät, den Sensor, den Aktor, die Gruppe etc.
%metadata%- ist optional bzw. noch in Entwicklung, als Ideen stehen hier Konventionen anderer Systeme Pate, so z.B.:
%location%- der physikalische Aufbauort des Gerätes, aktuell sind folgende Orte definiert
ug: Kellereg: Erdgeschossog1: 1. Obergeschossog2: 2. Obergeschoss (Dachboden)garden: Hof/Garten/Schuppenroaming: tragbare Geräte
Unter mount/# werden ggf. Location-Broker gemounted und dann durch remapping in den richtigen Topic-Pfaden dargestellt.
Topics eines Gerätes
Jedes Gerät meldet sich bei seinem Location-Broker an. Die Location-Broker sind für die verschiedenen Etagen aufgeteilt. Es sind folgende Location-Broker definiert:
- Keller:
ug-broker.mqtt.p21.net:1884 - Erdgeschoss:
eg-broker.mqtt.p21.net:1885 - 1. Obergeschoss:
og1-broker.mqtt.p21.net:1886 - 2. Obergeschoss:
og2-broker.mqtt.p21.net:1887 - Hof/Garten:
yard-broker.mqtt.p21.net:1888 - tragbare Geräte:
roaming-broker.mqtt.p21.net:1889
Diese Broker sind vorerst alle auf dem selben Host realisiert, daher benötigen sie entweder unterschiedliche IP-Aliase (knappe Ressource) oder unterschiedliche Port-Nummern (gewählte Option). Mehr in MqttBroker.
Diese Location-Broker werden durch (Self-)Bridging in die Gesamtstruktur abgebildet. Daher darf jedes Gerät eine sehr einfache Topic-Struktur verwenden.
Die Topic-Struktur orientiert sich an den Möglichkeiten der Tasmota-Software, weil diese die ersten Geräte stellt und bereits bewährte Strukturen abbildet.
Geräte-Topics sind folgendermaßen strukturiert:
%prefix%/%topic%/%keyword%
%prefix%/%topic%/%keyword%/%metadata%...
