Übersicht MQTT Geräte - Allgemein

Mit den Funktionsbausteinen dieser Gruppe werden Geräte eingebunden, die über MQTT kommunizieren - vor allem die Geräte des Herstellers Shelly, daneben auch NUKI, ECOWITT Wetterstationen und beliebige andere MQTT Teilnehmer.

MQTT arbeitet nach dem Prinzip "melden und mithören": Die Geräte schicken ihre Zustände an einen zentralen Verteiler, den Broker. Wer sich für einen Wert interessiert, meldet sich beim Broker an und bekommt jede Änderung zugestellt. Der Broker läuft auf der Steuerung selbst, ein zusätzlicher Server im Netzwerk ist nicht nötig. Jeder Wert hat eine Adresse, das Topic. Über das Topic findet die Steuerung heraus, zu welchem Funktionsbaustein eine eintreffende Nachricht gehört.

Diese Seite beschreibt alles, was für alle Bausteine dieser Gruppe gilt. Die Ein- und Ausgänge sowie die Parameter des einzelnen Gerätes stehen auf der jeweiligen Seite des Funktionsbausteins.
Wichtig: Für diese Funktion muss die Steuerung eine Image Version 3.034 oder höher haben.

1. Broker auf der Steuerung einschalten

Im Webinterface der Steuerung wird unter Enable/disable MQTT Broker der interne Broker eingeschaltet, siehe Steuerung - MQTT Broker. Der Broker arbeitet auf Port 1883 und nimmt Verbindungen ohne Benutzer und Passwort an.

Hinweis: Der Broker sollte nur aktiviert werden, wenn in der Steuerung eine Industrie-Speicherkarte verbaut ist, da mit dem Broker auch das Swapping aktiviert wird. Zusätzlich wird ein aktiver Lüfter empfohlen. Beides ist optional erhältlich.

2. Gerät auf die Steuerung anmelden

Im Webinterface des Shelly Gerätes wird unter MQTT die IP-Adresse der Steuerung und der Port 1883 eingetragen. Zusätzlich müssen folgende Optionen aktiviert werden:
  • RPC über MQTT - erlaubt der Steuerung, das Gerät zu schalten.
  • Statusbenachrichtigungen über MQTT - das Gerät meldet Änderungen von sich aus.
  • Generische Statusbenachrichtigungen über MQTT - liefert zusätzliche Werte wie Leistung oder Temperatur.
Geräte der ersten Generation kennen diese drei Schalter noch nicht; dort genügt es, MQTT einzuschalten.

Damit die Werte auch nach einem Neustart der Steuerung sofort wieder stimmen, empfiehlt es sich, im Gerät den Startzustand der Ausgänge passend einzustellen und das Gerät fest im Netzwerk zu verankern (feste IP-Adresse oder DHCP-Reservierung).

3. Das richtige Topic eintragen

Jeder Funktionsbaustein hat den Parameter MQTT Topic. Er muss mit der Einstellung im Gerät übereinstimmen, sonst bleiben alle Ausgänge auf ihrem Startwert. Dabei gelten folgende Regeln:
Erste Generation Geräte der ersten Generation (Shelly 1, 2.5, Dimmer 2, RGBW2, EM, 3EM, H&T, Flood, Motion, i3, Button 1, Plug S, UNI, DW2, TRV) stellen ihrem Topic automatisch shellies/ voran. Diese Bezeichnung muss im Parameter mit angegeben werden, zum Beispiel shellies/shellybutton1-48551902C7E2. In den Einstellungen des Gerätes selbst steht als Präfix nur shellybutton1-48551902C7E2.
Zweite und neuere Generation Geräte ab der zweiten Generation (Plus, Pro, Gen 3, Gen 4) senden diese Bezeichnung nicht automatisch mit. Das Topic muss daher exakt so lauten wie in den Einstellungen des Gerätes, zum Beispiel shellyplusi4-a8032ab613b8 - also ohne shellies/ am Beginn.
Nur ein Abschnitt Das im Gerät eingestellte Präfix darf nur aus einem Abschnitt bestehen. Bezeichnungen wie wohnzimmer/licht sind nicht erlaubt; sie müssen zum Beispiel als wohnzimmer-licht angegeben werden.
Eindeutig halten Die Steuerung ordnet eine Nachricht einem Baustein zu, sobald das eingetragene Topic im Topic der Nachricht enthalten ist. Sehr kurze oder allgemeine Bezeichnungen können deshalb auf mehrere Geräte passen. Am sichersten ist die werkseitige Bezeichnung mit der Seriennummer.
Topic aus der Diagnose ablesen: Der genaue Bezeichner kann aus der MQTT Diagnose kopiert werden, sobald das Gerät Nachrichten sendet. Bei der Nachricht

"shellyddimmerg3-aabbeaaeebec/rpc" = "{"method":"Light.Set","params":{"id":0,"on":true}}"

lautet das Topic shellyddimmerg3-aabbeaaeebec.

4. Adressen erzeugen

Alle Bausteine dieser Gruppe können ihre Adressen selbst anlegen. Über den Befehl Adressen erzeugen im Kontextmenü des Bausteins wird für jeden Ein- und Ausgang eine Adresse in der Gruppe "MQTT/WIFI Geräte" erzeugt und zugeordnet. Das erspart das Anlegen von Hand und stellt sicher, dass die Datentypen zusammenpassen.

Zusätzlich wird dabei immer eine Adresse mit der Bezeichnung Timeout angelegt (siehe nächster Abschnitt).

Timeout - Überwachung der Erreichbarkeit

Jeder Baustein überwacht, ob sein Gerät noch Nachrichten schickt. Solange Nachrichten eintreffen, steht die Timeout-Adresse auf 0. Bleiben die Nachrichten aus, wird sie auf 1 gesetzt. Damit lässt sich in der Visualisierung oder im Programm eine Störmeldung erzeugen.

Die Überwachungszeit richtet sich nach der Bauart des Gerätes:
  • 5 Stunden bei netzbetriebenen Geräten. Diese melden sich regelmäßig, auch ohne Zustandsänderung.
  • 24 Stunden bei batteriebetriebenen Sensoren wie H&T, Flood, Motion, Door/Window, Button 1 und Presence. Sie melden sich nur bei einem Ereignis und schlafen sonst, um Batterie zu sparen.
  • Bei den Wetterstationen ist die Zeit über den Parameter Timeout einstellbar.
Die Timeout-Adresse ist bewusst träge eingestellt. Sie meldet einen dauerhaften Ausfall, nicht eine einzelne verlorene Nachricht.

Schalten und Statusrückmeldung

Bausteine mit Schaltausgängen haben für jeden Kanal einen Eingang zum Schalten und mehrere Ausgänge für die Rückmeldung. Wichtig ist die Unterscheidung:
  • Ausgänge mit der Bezeichnung Relais ... Status melden den tatsächlichen Zustand des Relais im Gerät - unabhängig davon, ob über die Steuerung, über die Shelly App oder über den Taster am Gerät geschaltet wurde.
  • Ausgänge mit der Bezeichnung Schalter ... Status melden den Zustand des am Gerät angeschlossenen Tasters oder Schalters.
Für die Schalteingänge gibt es je nach Gerät den Parameter Schalter mit zwei Möglichkeiten:
Umschalten (steigende Flanke) Für Taster. Bei jedem Wechsel des Eingangs von 0 auf 1 wird der Ausgang des Gerätes umgeschaltet. Der Wert 0 am Eingang bewirkt nichts.
Umschalten (1/0) Für Schalter und für die Ansteuerung aus dem Programm. Der Eingangswert wird direkt übernommen: 1 schaltet ein, 0 schaltet aus. In dieser Betriebsart wird der Eingang zusätzlich auf den zugehörigen Statusausgang zurückgeführt, damit beide Werte zusammenpassen.

Benutzer und Passwort

Die Bausteine kennen intern noch die Felder Benutzer und Passwort. Sie werden im Einstellungsdialog nicht angezeigt, weil der Broker auf der Steuerung ohne Anmeldung arbeitet. Der Zugang wird stattdessen darüber abgesichert, dass der Broker nur im lokalen Netz erreichbar ist.

Bluetooth-Geräte (Shelly BLU)

Für Shelly BLU Geräte wird immer ein Shelly Gerät als Gateway benötigt, da BLU Geräte kein WLAN haben und selbst keine MQTT Nachrichten senden können. Einrichtung, Aufbau der Nachrichten und das dafür nötige Script sind auf einer eigenen Seite beschrieben: Shelly BLU - Grundlagen und Gateway-Script.

Wenn keine Werte ankommen

1. In der MQTT Diagnose prüfen, ob überhaupt Nachrichten des Gerätes ankommen. Kommt nichts an, liegt es am Gerät oder am Netzwerk, nicht am Baustein.
2. Das in der Diagnose angezeigte Topic mit dem Parameter MQTT Topic vergleichen. Häufigster Fehler ist ein fehlendes oder überzähliges shellies/.
3. Prüfen, ob die drei MQTT Optionen im Gerät aktiviert sind. Ohne "generische Statusbenachrichtigungen" fehlen zum Beispiel Leistungs- und Temperaturwerte.
4. Prüfen, ob die Ausgänge des Bausteins mit Adressen belegt sind. Ohne zugeordnete Adresse wird der Wert zwar empfangen, aber nicht weitergegeben.

Haftungsausschluss

Die Einrichtung und Integration der Geräte über MQTT und uni-PRO erfolgt auf eigene Verantwortung. Der Hersteller übernimmt keine Haftung für Schäden oder Fehlfunktionen, die durch fehlerhafte Konfiguration oder externe Einflüsse entstehen. Es liegt in der Verantwortung des Nutzers, sicherzustellen, dass die Steuerungseinheit uni-PRO, die MQTT-Broker-Software sowie die Firmware der Geräte regelmäßig aktualisiert werden. Versäumnisse in diesem Bereich können zu Sicherheitslücken und Fehlfunktionen führen, für die der Hersteller nicht haftbar gemacht werden kann.

Siehe auch allgemeine Parameter aller Funktionsbausteine.