Skip to content

MQTT-Topics ​

Alles, was ein Screen anzeigt oder schaltet, läuft über Topics auf dem MQTT-Broker. Ein Topic ist ein Name wie schaltli/state/tank/1/level, unter dem ein Wert liegt, etwa 62. Die Bausteine erledigen das von selbst für alles, was Geräte auf dem Broker ankündigen. Diese Seite ist für alles andere.

Lesen und schalten ​

Schaltli trennt, was ist, von dem, was werden soll:

  • Unter schaltli/state/… liegt der Zustand: der Füllstand, ob das Licht an ist. Diese Werte bleiben auf dem Broker liegen («retained»), damit ein Gerät nach dem Einschalten sofort den aktuellen Stand kennt.
  • An schaltli/cmnd/… gehen Befehle: «Licht an», «Dimmer auf 40». Befehle bleiben nicht liegen.

Ein Schalter liest deshalb das eine Topic und schreibt in ein anderes. Er zeigt «an», wenn die Anlage meldet, dass das Licht an ist, nicht schon, wenn jemand getippt hat. So stimmt die Anzeige immer mit dem Van überein.

Wie das im Einzelnen abläuft, zeigt MQTT an drei Beispielen an einem Tank, einem Dimmer und einer Heizung.

Topics im Projekt ​

Die Topics eines Projekts stehen unter Settings › Topics.

Die Projekteinstellungen mit der Liste der Topics
Die Topics, die die Bausteine eingetragen haben.

Add Topic trägt eines von Hand ein:

  • Topic Name: der vollständige Name.
  • Type: Text, Numeric für Zahlen oder JSON, wenn eine Nachricht mehrere Werte enthält.
  • Examples: Beispielwerte. Der erste ist das, was der Editor anzeigt, damit du beim Gestalten etwas siehst. Die Simulation in der Vorschau benutzt sie auch.
  • Mock Responses: nur für die Simulation. Hier legst du fest, wie ein Befehl beantwortet wird, etwa dass «on» auf dem Befehls-Topic den Zustand auf «on» setzt.
  • Bei JSON zusätzlich Subtopics: die einzelnen Felder der Nachricht. Detect from examples liest sie aus den Beispielwerten.

Topics vom Broker holen ​

Discover MQTT Topics hört eine Weile mit, was auf dem Broker passiert, und listet alle Topics, die dabei vorkommen. retained heisst, der Wert lag schon auf dem Broker; live, er kam erst während des Mithörens. Den Typ erkennt der Designer selbst.

Wähle die gewünschten Topics aus, das Filterfeld hilft bei langen Listen, und übernimm sie mit Add Selected Topics.

Der Dialog verbindet sich selbst mit dem Broker auf dem Rechner, auf dem der Designer läuft. Unter Connection settings stellst du einen anderen ein: WebSocket URL ist seine Adresse, Discovery prefix das Topic, unter dem sich Geräte für Home Assistant anmelden. Meist ist das homeassistant, und leer gilt genau das. Beides merkt sich der Browser, bis du es änderst.

Doppelte Einträge

Topics, die schon im Projekt sind, trägt Add Selected Topics ein zweites Mal ein. Wähle nur die aus, die noch fehlen.

Ein Topic an ein Objekt binden ​

In den Eigenschaften eines Objekts steht unter Data, welches Topic es liest und, bei Schaltern und Reglern, in welches es schreibt. Die Auswahl zeigt die Topics des Projekts als Baum. Ganz unten führt Manage Topics... zu den Projekteinstellungen.

Bei einem JSON-Topic wählst du daneben das Feld. Ohne Wahl gilt Whole payload, die ganze Nachricht. Ein Feld schreibst du als Pfad: temp, nested.temp oder readings[0].value. Geschrieben wird immer die ganze Nachricht, deshalb gibt es bei Schreib-Topics keine Feldauswahl.

Liest ein Objekt ein Topic, das nicht im Projekt eingetragen ist, markiert der Designer es mit unregistered.

Welcher Broker? ​

Der Designer spricht den Broker über WebSocket an, unter derselben Adresse, unter der du den Designer geöffnet hast, auf Port 9001. Auf einem Pekaway-System richtet das Installationsskript das ein. Gibst du in einem der Dialoge eine andere Adresse ein, merkt sich der Browser sie. Benutzername und Passwort speichert er nicht.