MQTT DEVICE: Unterschied zwischen den Versionen

Aus FHEMWiki
(Erste Fassung)
 
(Internen Link korrigiert, MQTT2_CLIENT ergänzt)
 
(6 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Baustelle}}
{{Infobox Modul
{{Infobox Modul
|ModPurpose=Einbinden von Geräten, die über MQTT Daten senden und empfangen
|ModPurpose=Einbinden von Geräten, die über MQTT Daten senden und empfangen
Zeile 6: Zeile 5:
|ModForumArea=MQTT
|ModForumArea=MQTT
|ModTechName=10_MQTT_DEVICE.pm
|ModTechName=10_MQTT_DEVICE.pm
|ModOwner=eisler ({{Link2FU|2214|Forum}}) }}
|ModOwner=hexenmeister ({{Link2FU|4065|Forum}}) }}
Das Modul {{Link2CmdRef|Anker=MQTT_DEVICE|Lang=en|Label=MQTT_DEVICE}} ermöglicht es, Geräte einzubinden, die über eine MQTT-Schnittstelle verfügen.
Das Modul {{Link2CmdRef|Anker=MQTT_DEVICE|Lang=en|Label=MQTT_DEVICE}} ermöglicht es, Geräte einzubinden, die über eine MQTT-Schnittstelle verfügen.


== Voraussetzungen ==
== Voraussetzungen ==
Um ''MQTT_DEVICE'' nutzen zu können, muss ein [[MQTT]]-Gerät als [[Interface|Gateway]] zu einem funktionsfähigen Broker definiert sein.
Um ''MQTT_DEVICE'' nutzen zu können, muss ein [[MQTT (Modul)|MQTT]]-Gerät als [[Interface|Gateway]] zu einem funktionsfähigen Broker definiert sein.
 
{{Hinweis|Das hier beschriebene Modul ist nicht identisch zum Modul {{Link2CmdRef|Anker=MQTT2_DEVICE|Lang=en|Label=MQTT2_DEVICE}}, das zur Verwendung mit {{Link2CmdRef|Anker=MQTT2_SERVER|Lang=en|Label=MQTT2_SERVER}} oder {{Link2CmdRef|Anker=MQTT2_CLIENT|Lang=en|Label=MQTT2_CLIENT}} konzipiert wurde. Mit letzterem benötigt man keinen externen Broker, sondern FHEM selbst wird dabei zum MQTT-Server.}}


== Anwendung ==
== Anwendung ==
=== Define ===
=== Define ===


Die Syntax für das Anlegen eines MQTT-Devices ist der {{Link2CmdRef|Anker=MQTT_DEVICEdefine}} zu entnehmen.
Die Syntax für das Anlegen eines MQTT-Devices ist der {{Link2CmdRef|Anker=MQTT_DEVICEdefine|Label=CommandRef}} zu entnehmen.


=== Attribute ===
=== Attribute ===
Zeile 28: Zeile 29:
Legt man ein neues Device an, dessen Topics man noch nicht genau kennt, kann man das Attribut MQTT_DEVICE 'autoSubscribeReadings' setzen. Z.B. ein
Legt man ein neues Device an, dessen Topics man noch nicht genau kennt, kann man das Attribut MQTT_DEVICE 'autoSubscribeReadings' setzen. Z.B. ein


<code>attr <name> autoSubscribeReadings wohnzimmer/+'</code> sorgt dafür, dass für alle empfangenen Messages automatisch das jeweils passende 'subscribeReading_xxx'-Attribut erstellt und das zugehörige Reading auch gleich geupdated wird.
<code>attr <name> autoSubscribeReadings wohnzimmer/+</code> sorgt dafür, dass für alle empfangenen Messages automatisch das jeweils passende 'subscribeReading_xxx'-Attribut erstellt und das zugehörige Reading auch gleich geupdated wird.
Sind nach einer gewissen Zeit alle Readings angelegt, kann das Attribut wieder gelöscht werden.
Sind nach einer gewissen Zeit alle Readings angelegt, kann das Attribut wieder gelöscht werden.


Zeile 38: Zeile 39:
*[[Sonoff#FHEM Anbindung]]
*[[Sonoff#FHEM Anbindung]]
* [[Sonoff#Sonoff Th10/16]]
* [[Sonoff#Sonoff Th10/16]]
* {{Link2Forum|Topic=74754|LinkText=Einbindung von Milight-Leuchtmitteln}} über eine Eigenbau-Bridge
* {{Link2Forum|Topic=86932|LinkText=Einbindung von Milight-Leuchtmitteln}} über eine Eigenbau-Bridge
== Links ==
== Links ==
* {{Link2Forum|Topic=27532|LinkText=Ankündigung}} der MQTT Module
* {{Link2Forum|Topic=27532|LinkText=Ankündigung}} der MQTT Module
* [[MQTT Einführung]]
* [[MQTT Einführung]]
[[Kategorie:MQTT]]

Aktuelle Version vom 18. November 2018, 22:13 Uhr

MQTT_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_MQTT_DEVICE.pm
Ersteller hexenmeister (Forum )
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Das Modul MQTT_DEVICE ermöglicht es, Geräte einzubinden, die über eine MQTT-Schnittstelle verfügen.

Voraussetzungen

Um MQTT_DEVICE nutzen zu können, muss ein MQTT-Gerät als Gateway zu einem funktionsfähigen Broker definiert sein.


Info blue.png
Das hier beschriebene Modul ist nicht identisch zum Modul MQTT2_DEVICE, das zur Verwendung mit MQTT2_SERVER oder MQTT2_CLIENT konzipiert wurde. Mit letzterem benötigt man keinen externen Broker, sondern FHEM selbst wird dabei zum MQTT-Server.


Anwendung

Define

Die Syntax für das Anlegen eines MQTT-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 den Attributen 'publishState' und 'publishReading_<readingname> man kann Änderungen am State bzw. Readings an den Broker übermitteln, der diese dann an die eigentlichen Geräte weitergibt oder dort vorhält. Der Attribut-Wert ist immer das Topic an das die Message geschickt werden soll. Message-Inhalt ist jeweils der neue Wert des Readings bzw. states.
  • Mit den Attributen 'subscribeSet' bzw. 'subscribeSet_<setcommand>' 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 für das betreffende Device 'set <devicename> <setcommand> <messageinhalt> ausgeführt.

Legt man ein neues Device an, dessen Topics man noch nicht genau kennt, kann man das Attribut MQTT_DEVICE 'autoSubscribeReadings' setzen. Z.B. ein

attr <name> autoSubscribeReadings wohnzimmer/+ sorgt dafür, dass für alle empfangenen Messages automatisch das jeweils passende 'subscribeReading_xxx'-Attribut erstellt und das zugehörige Reading auch gleich geupdated wird. Sind nach einer gewissen Zeit alle Readings angelegt, kann das Attribut wieder gelöscht werden.

Ergänzende Hinweise

Manche MQTT-Geräte senden JSON-Messages, die einzelne oder mehrere Informationen enthalten können, die in FHEM anschließend als einzelne Readings ausgewertet werden sollen. Hierfür wird das Modul expandJSON benötigt.

Anwendungsbeispiele

Links