MQTT

MQTT Nachrichten bestehen aus einem Thema (Topic) und den Nutzdaten (Payload). Anhand des Themas kann erkannt werden, wozu die Nutzdaten dienen. Die Nutzdaten können von ganz unterschiedlichem Typ sein Zahl, String, JSON usw.

Topic

Die Topics dienen zum filtern von Nachrichten auf der Client-Seite und bestehen aus einer UTF-8-Zeichenkette. Das Topic kann aus einer oder mehreren Ebenen bestehen, die durch einen Schrägstrich getrennt sind (Topic-Level-Trennzeichen). Der Client muss das gewünschte Topic nicht initialisieren, bevor er es veröffentlicht (publish) oder abonniert (subscript). Der Broker akzeptiert jedes gültige Topic.

Beispiele :

Topics Beschränkungen
Wildcards

Wildcards bieten die Möglichkeit mehrere Topics gleichzeitig zu abonnieren und kann zum Beispiel genutz werden für :

Wildcards können nur für ein Abonnement und nicht für die Veröffentlichung von Nachrichten verwendet werden. Es gibt zwei Arten von Wildcards, einstufige und mehrstufige.

Einstufig Platzhalter +

Der einstufige Platzhalter wird durch das Pluszeichen (+) dargestellt und ermöglicht die Ersetzung einer einzelnen Topic-Ebene. Bei einem Topic-Abonnement mit einem einstufigen Platzhalter, wird jedes Thema, das eine beliebige Zeichenfolge anstelle des Platzhalters enthält, gefiltert.

Zum Beispiel kann ein Abonnement von :

home/floor1/+/light

die folgenden Nachrichten filtern :

home/floor1/bedroom/light
home/floor1/kichen/light

folgende aber nicht

home/groundfloor/floor/light
home/floor1/bedroom/light/brightness
home/floor1/bedroom/plug

Mehrstufig Platzhalter #

Der Mehrstufig-Platzhalter deckt mehrere Topic-Ebenen ab. Er wird durch das Rautensymbol (#) dargestellt und muss das letztes Zeichen im Topic direkt nach einem Schrägstrich sein. Bei einem Abonnement eines Topics mit einem mehrstufigen Platzhalter, empfängt der Client alle Nachrichten, das mit dem Muster vor dem Platzhalterzeichen beginnt, unabhängig von der Länge oder Tiefe des Topics. Wenn das Topic nur mit "#" angegeben wird, empfängt der Client alle an den MQTT-Broker gesendeten Nachrichten.

Zum Beispiel kann ein Abonnement von :

home/floor1/#

die folgenden Nachrichten filtern :

home/floor1/bedroom/light
home/floor1/kichen/plug/state

folgede aber nicht :

home/groundfloor/bedroom/light
cottage/floor1/kichen/plug/state

System-Topics

Topics die mit einem $-Symbol beginnen sind für interne Informationen und Statistiken des MQTT-Brokers reserviert und liefern Einblicke über seinen Betrieb.

Nachrichten dessen Topics mit $ beginnen sind dem Broker vorbehalten und dürfen nicht vom Client veröffentlicht werden. Obwohl es derzeit keine offizielle Standardisierung für diese Topics gibt, ist es üblich, das Präfix $SYS/ zu verwenden, um solche Informationen zu kennzeichnen, sie können aber von Brokern zu Broker variieren. Eine empfohlene Ressource für System-Topics ist im MQTT-GitHub-Wiki verfügbar.

Ein paar Beispiele sind :

Topics in der praktischen Anwendung

MQTT-Topics bieten eine große Flexibilität. Bei der Verwendung von Platzhaltern in realen Anwendungen gibt es einige Herausforderungen, denen Sie sich bewusst sein sollten.