MQTT2 DEVICE

Aus FHEMWiki
Version vom 12. Januar 2022, 10:41 Uhr von Beta-User (Diskussion | Beiträge) (→‎attrTemplate)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
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.


Info blue.png
Mit einem MQTT-Device als Interface kann MQTT2_DEVICE nicht genutzt werden. Eine Übersicht über die verschiedenen Möglichkeiten, MQTT in FHEM zu nutzen, ist in MQTT#FHEM und MQTT zu finden.


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.

Info blue.png
Hat man eine MQTT_GENERIC_BRIDGE definiert, sollte autocreate nicht aktiviert werden, oder das Attribut clientOrder am IO-Modul so geändert werden, dass zuerst MQTT_GENERIC_BRIDGE alle eingehenden Nachrichten übergeben werden!


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

  1. zu finden im Unterverzeichnis fhem/FHEM/lib/AttrTemplate