MQTT (Modul)

Aus FHEMWiki
MQTT (Modul)
Zweck / Funktion
Stellt als Gateway die Verbindung zu einem MQTT-Broker her
Allgemein
Typ Gerätemodul
Details
Dokumentation (Modul) EN / (Modul) DE
Support (Forum) MQTT
Modulname 00_MQTT.pm
Ersteller hexenmeister (Forum )
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Das Modul MQTT fungiert als Verbindung zwischen FHEM und einem MQTT Broker und repräsentiert ein MQTT Gateway. Die durch die Module MQTT_DEVICE oder (veraltet!) MQTT_BRIDGE[1] repräsentierten Client-Geräte sind gesondert anzulegen.

Voraussetzungen

Es muss für jedes MQTT-Gateway ein Server (Broker) eingerichtet und erreichbar sein. Eine Anleitung zur Einrichtung eines Mosquitto-Brokers finden Sie z.B. im Artikel MQTT Einführung.

Info blue.png
Seit August 2018 kann FHEM mit Hilfe des Moduls MQTT2_SERVER selbst die Funktion des Brokers übernehmen. Dieser bietet zwar weniger Optionen wie ein vollwertiger Server (wie Mosquitto), ermöglicht es dafür aber, Client-Geräte mit MQTT2 DEVICE direkt in FHEM einzubinden, ohne dass dafür weitere externe Softwarekomponenten erforderlich wären. Ein Vorteil von MQTT2_SERVER und zigbee2mqtt ist, dass auch Geräte wieder recht einfach aus dem Zigbee Netzwerk entfernt werden können.


Begrifflichkeiten in Kürze

Ein Broker ist ein zentraler Serverdienst (irgendwo im Netz oder auf derselben Maschine, auf der auch FHEM läuft[2]), an den Geräte ihre Informationen weitergeben (publish), und der dann dafür sorgt, dass diese Information an alle anderen Geräte weitergegeben wird, die sich dafür interessieren (subscribe). MQTT fungiert dabei als IO-Modul und organisiert die Kommunikation zwischen dem Broker und allen FHEM-Geräten, die MQTT bei diesem Server nutzen wollen.

Info blue.png
Seit Ende 2018 steht in FHEM mit MQTT2_CLIENT ein zweites, alternatives IO-Modul zur Anbindung eines externen Servers zur Verfügung. Mit diesem können ebenfalls Client-Geräte des Typs MQTT2 DEVICE verwendet werden, ohne dass dafür weitere Perl-Bibliotheken erforderlich wären.


Define

Das MQTT Gateway wird angelegt mit define meinMQTTGW MQTT <Broker-IP>[:<Broker-Port>]


Info blue.png
Sofern der Broker mit FEHM über localhost kommunizieren kann, sollte als IP 127.0.0.1 verwendet werden.


Anwendung

Danach können entsprechende Client-Devices angelegt werden, MQTT_DEVICE wird verwendet, wenn das physikalische Device (Sensor oder Aktor) über mqtt kommuniziert, wie dieses z.B. bei vielen ESP8266-basierten Geräten der Fall ist. MQTT_GENERIC_BRIDGE oder das veraltete und zwischenzeitlich nur noch über contrib verfügbare MQTT_BRIDGE ist für den Fall gedacht, dass ein FHEM-Device[3] existiert und dieses über MQTT sicht- bzw. steuerbar gemacht werden soll.

Ergänzende Funktionen

Manche MQTT-Geräte senden Informationen im JSON-Format. Um solche Informationen in FHEM verwenden zu können, müssen sie zunächst in ein anderes Format überführt werden. Hierfür wird das Modul expandJSON benötigt. Insbesondere in diesen Fällen müssen allerdings häufig auch die (Schalt-) Anweisungen an das Gerät JSON-encodiert werden; in diesen Fällen ist es empfehlenswert, direkt MQTT2_DEVICE mit einem der MQTT2-IO-Module zu konfigurieren, da dieses die JSON-Dekodierung auch direkt intern erledigt.

Anwendungsbeispiele

Links

Anmerkungen

  1. Eine generische Lösung, um FHEM-Geräte MQTT-fähig zu machen, bietet MQTT_GENERIC_BRIDGE, das in neueren Installationen bevorzugt werden sollte.
  2. In den meisten Anwendungsfällen genügt es dabei, einen MQTT-Server zu betreiben, selbst wenn mehrere FHEM-Instanzen darauf zugreifen sollen.
  3. Dies kann z.B. ein beliebiger HM- oder Z-Wave-Aktor sein, der ein Licht einschaltet.