MQTT2 DEVICE
MQTT2_DEVICE | |
---|---|
Zweck / Funktion | |
Einbinden von Geräten, die über MQTT Daten senden und empfangen | |
Allgemein | |
Typ | Gerätemodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | MQTT |
Modulname | 10_MQTT2_DEVICE.pm |
Ersteller | rudolfkoenig (Forum / Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Das Modul MQTT2_DEVICE ermöglicht es, Geräte einzubinden, die über eine MQTT-Schnittstelle verfügen.
Voraussetzungen
Um MQTT2_DEVICE nutzen zu können, muss entweder FHEM mit MQTT2_SERVER als MQTT-Server fungieren oder ein MQTT2_CLIENT-Gerät als Gateway zu einem funktionsfähigen anderen MQTT-Server wie z.B. Mosquitto definiert sein.
Anwendung
Define
Die Syntax für das Anlegen eines MQTT2-Devices ist der CommandRef zu entnehmen.
Attribute
Die eigentlichen Details zur Kommunikation sind - entsprechend der sehr flexiblen Gestaltung des MQTT-Protokolls an sich - nicht direkt im Define festgelegt, sondern werden anschließend über Attribute festgelegt.
Die Verbindung funktioniert bidirektional:
- Mit dem Attribut 'setList' man kann Änderungen am State bzw. Readings an den Server übermitteln, der diese dann an die eigentlichen Geräte weitergibt oder dort vorhält. Für jedes Reading ist eine eigene Zeile erforderlich, das Aussehen in der Detailansicht des Geräts kann direkt über ein entsprechende widget-Definition vorgenommen werden.
- Entsprechend können über das Attribut 'getList' Abfragen an das MQTT-Gerät definiert werden.
- Mit dem Attribut 'readingList' kann man MQTT-topics abonnieren, also automatische Benachrichtigungen empfangen, sobald ein Gerät dort Änderungen einträgt. Immer wenn eine Nachricht auf dem abonnierten Topic eintrifft, wird das betreffende Reading aktualisiert. Es ist auch möglich, Perl-Code ausführen zu lassen, also insbesondere json2nameValue() aufzurufen, um JSON-Messages zu entpacken.
Legt man ein neues Device an, dessen Topics man noch nicht genau kennt, kann man das Attribut autocreate aktivieren, dann wird die readingList automatisch ergänzt, sofern am IO-Modul autocreate ebenfalls aktiv ist.
attrTemplate
Zur Konfiguration von MQTT2_DEVICE-Geräten kann die Funktion attrTemplate genutzt werden.
Für gängige Gerätetypen stehen bereits einige templates bereit. Um Ihnen die Auswahl zu erleichtern, kann mit set <MQTT2-Device-Name> attrTemplate ?
eine Liste der vorhandenen Templates samt kurzer Beschreibung aufgerufen werden.
Haben Sie ein passendes template gefunden, wenden Sie es mit set <MQTT2-Device-Name> attrTemplate <template_name>
an.
Die damit jeweils erzeugten Konfigurationen sind Einrichtungsbeispiele, die v.a. eine in sich konsistenze Zusammenstellung der verschiedenen Attribute enthalten. Es steht jedem User frei, diese Ausgangsbasis dann nach seinem Belieben zu ändern. Spätere Änderungen des verwendeten attrTemplate wirken sich nicht automatisch auf die durch frühere Versionen oder den User nachkonfigurierte Geräte aus! Da es vorkommen kann, dass sich die per MQTT übermittelten Daten und Topics ändern, wenn z.B. eine firmware aktualisiert wurden, kann dies Anpassungen am jeweiligen Template erforderlich machen. Grundsätzlich sollen die per attrTemplate für MQTT2_DEVICE verfügbaren Zusammenstellungen jeweils für die aktuellste verfügbare stabile firmware-Version passen.
Wer plant, mehrere gleichartige Geräte anzulegen, aber andere Einstellungen zu wählen, als sie in den vorhandenen templates enthalten sind, kann hierfür ebenfalls die attrTemplate-Funktion mit eigenen templates nutzen. Hierfür können die vorhandenen templates aus der Datei mqtt2.template[1] als Basis dienen, Ihre templates speichern Sie einfach als neue Datei mit der Endung .template im selben Verzeichnis und lesen diese mit { AttrTemplate_Initialize() }
neu ein. Danach können Sie diese direkt verwenden.
Haben Sie ein template erstellt und möchten dieses teilen, erstellen Sie einfach einen Beitrag in diesem Thread. Für Fragen, die Meldung von Fehlern, durch firmware-Änderungen erforderliche Anpassungen oder für Verbesserungsvorschläge an den templates in mqtt2.template ist dieser Thread gedacht.
Anwendungsbeispiele
siehe MQTT2-Module - Praxisbeispiele
Links
Hinweise
- ↑ zu finden im Unterverzeichnis fhem/FHEM/lib/AttrTemplate