Text geknüpft
HomeBlog MQTT Themen

Lernen Sie MQTT Topics & seine Grundlagen kennen

von Ponlakshmi


MQTT Topics

MQTNachrichten werden nicht direkt von einem gesendet eine Sache zu einer anderen. Vielmehr werden sie "MQTT-Themen" zugeordnet. DieMQTT Brokerdann verteilt die Nachrichten an alle Kunden, die sie abonniert haben. Der Begriff Thema in Protokoll bezeichnet aUTF-8 Stringvon dem Broker verwendet, um Nachrichten für jeden abonnierten Client zu filtern. Wenn jemand abonniert Thema und veröffentlicht dann eine Nachricht zu diesem Thema mit der gespeicherten Nachricht an True, die Themen sind festgestellt. Wann der letzte Teilnehmer an diesem Broker trennt, eine saubere Sitzung wird festgelegt.Sauberkeit Sitzungwird auf Wahr gesetzt, wenn a MQTT-Client verbindet.

Struktur eines MQTT-Themens

Sensoren/Wasser_Level/Wasser_status– Sensoren, water_level & water_status sind Thema Levels.

Forward slash ( / )– ein Thema Ebene Separator.

Thema Ebene Separator

Das Thema besteht aus einem oder mehreren Themenebenen. Ein vorderer Slash trennt jedes Thema Level (topische Ebene) Separator). Der Broker erfordert nicht, dass das Thema vorregistriert wird.


MQTT-Themen sind im Vergleich zu einer Nachrichtenwarte sehr leicht. Vor der Veröffentlichung oder Anmeldung einer Thema, der Client muss keine Themen erstellen. Ohne vorherige Initialisierung akzeptiert der Broker alle gültigen Thema.

Hier ein paar Beispiele, um zu sehen:

Topics

Ein Blick auf MQTT Topics inBevywise Broker.

Thema Semantische und Nutzung

Außer der Länge eines UTF-8 codierten Strings gibt es keine Einschränkung auf die Anzahl der Levels in einem Thema Name oder Thema Filter. Themennamen und Themenfilter unterliegen den folgenden Richtlinien:


  • Es ist wichtig zu beachten, dass jedes Thema mindestens einen Charakter enthalten muss und dass das Thema String ermöglicht leere Räume.
  • Das Null-Zeichen kann nicht in Themanamen oder Themenfiltern verwendet werden.
  • Diese Themen sind case sensitive
  • Beispielsweise sind Sensor/Temperatur und Sensor/Temperatur zwei verschiedene Themen.

Thema Wild Karten

Das Thema Filter eines Abonnementskann spezielle Wildcard-Zeichen enthalten, mit denen Sie mehrere Themen gleichzeitig abonnieren können. Die wildcard Zeichen können verwendet in Themenfiltern, aber nicht in Themennamen. Wildcards werden in zwei Arten klassifiziert:


  • Einstufige Wildcard und
  • Mehrstufige Wildcard.

Wenn einer der beiden Wildcard-Zeichen in Themenfiltern begegnet wird, die durch die Anmeldung von Clients gegeben werden, Einsatz des Themas Ein Separator ist signifikant. Separatoren für Themenebenen können überall in einem Thema Filter oder einem Thema existieren Name. Ein Thema Null Länge Ein Pegel wird durch benachbarte Themenebenenabscheider angezeigt.

Einstufige Wildcard

Ein einstufiger Wildcard-Zeichen in einem Thema wird durch das Plus-Symbol „+“ dargestellt. Das Thema Filter Einstufige Wildcard kann verwendet auf jeder Ebene, einschließlich der ersten und letzten. Es muss die gesamte Ebene des Filters füllen, wo immer es wird verwendet. Es kann sein verwendet im Thema Filter auf mehreren Ebenen und in Verbindung mit der Multilevel-Wildcard.

Zum Beispiel


  • „+“
  • „Tank/+/water_level“ – Dies sind gültige Themen mit Single Level Wildcard.

Jedes Thema wie „tank/water_level/+“ passt „tank/water_level/flow_rate1“ und „Tank/water_level/flow_rate2,“ aber nicht „Tank/water_level/flow_rate1/increase“. Auch, weil die Single-Level-Wildcard nur eine Ebene entspricht, „Tank/+“ nicht Match “Tank”, aber “Tank/” tut.

Mehrstufige Wildcard

Das Wildcard-Zeichen “#” ist eine Multilevel-Wildcard, die verwendet werden kann, um jede Anzahl von Levels innerhalb ein Thema. Die Eltern und jede Anzahl von Kindern werden durch die Multi-Level-Wildcard repräsentiert. Der Multilevel Wildcard Charakter muss entweder allein oder nach einem Thema Level Separator gegeben werden. Es muss das letzte Zeichen, das in der Thema Filter entweder Szenario.

Zum Beispiel


  • „Tank/water_level/#“ ist ein gültiges Thema mit Multilevel-Wildcard.

Wenn ein Client zum Beispiel „tank/water_level/flow_rate1/#“ abonniert, wird er Nachrichten veröffentlicht unter Folgende Themenbezeichnungen:

  • ‚Tank/water_level/flow_rate1‘
  • „Tank/water_level/flow_rate1/erhöht“
  • „Tank/Wasser_Level/flow_rate1/Erhöhung/Abbau“

Reservierte Themen

Themen mit einem Dollar beginnen Zeichen ($)sind reservierte Themen. Die $-Symbol-Themen sind für die internen Statistiken des Brokers. Topic Filters that beginnen mit einer Wildcard Zeichen (# oder +) darf nicht mit Themennamen übereinstimmen, die mit einem $-Zeichen beginnen. Kunden sollten nicht senden können Nachrichten an andere Clients mit solchen Topic Names, nach dem Server. Thema Namen, die mit einem führendes $ Zeichen kann für zusätzliche Zwecke durch Server-Implementierungen verwendet werden. $SYS/ ist zu einem prominenten Präfix für Themen geworden Serverspezifisch Daten oder Kontroll-APIs. Ein Thema mit einem führenden $-Zeichen kann nicht von Anwendungen für ihre eigene Gründe.


Alle folgenden Informationen werden in der Regel in $SYS/ gespeichert, aber Broker-Implementierungen unterscheiden sich. Einige Beispiele sind unten aufgeführt.


  • Alle auf einem Thema veröffentlichten Nachrichten, die mit einem $ beginnen, werden nicht empfangen, wenn Sie abonnieren “#.”
  • Alle Mitteilungen, die an „$SYS/broker/Clients“ gesendet werden, werden durch ein Abonnement nicht erhalten „+/Broker/Clients. „
  • Nachrichten, die an Themen veröffentlicht werden, die mit “$SYS/” beginnen, werden empfangen, wenn Sie sich abonnieren “$SYS/#. „
  • Nachrichten, die an “$SYS/monitor/Clients” gesendet werden, werden empfangen, wenn Sie sich für “$SYS/broker/+ anmelden. „
  • Ein Client muss sowohl „#“ als auch „$SYS/#“ abonnieren, um Nachrichten von Themen zu empfangen, die beginnen mit $SYS/ und Fächern die nicht mit einem $ beginnen.

Oben sind die Grundlagen von Nachrichtenthemen. MQTT-Themen, wie Sie sehen können, sind dynamisch und bieten viele Flexibilität. Verwenden Sie ihre Erweiterbarkeit, ohne die gesamte Themenhierarchie für die spätere Einbeziehung von neue Sensoren diese zu Ihrem Thema Baum hinzufügen.

Mehr über das Protokoll erfahren,