MQTT2 CLIENT: Unterschied zwischen den Versionen
|  (Auf aktuelle General-Bridge-Fassung angepaßt) | KKeine Bearbeitungszusammenfassung | ||
| Zeile 8: | Zeile 8: | ||
| Das Modul {{Link2CmdRef|Anker=MQTT2_CLIENT|Lang=en|Label=MQTT2_CLIENT}} ermöglicht es, Geräte einzubinden, die über eine MQTT-Schnittstelle verfügen. | Das Modul {{Link2CmdRef|Anker=MQTT2_CLIENT|Lang=en|Label=MQTT2_CLIENT}} ermöglicht es, Geräte einzubinden, die über eine MQTT-Schnittstelle verfügen. | ||
| Das Modul {{Link2CmdRef|Anker=MQTT2_CLIENT|Lang=en|Label=MQTT2_CLIENT}} fungiert als [[Interface|Verbindung]] zwischen FHEM und einem externen MQTT Server (z.B. ''mosquitto'') und repräsentiert ein  '''''MQTT Gateway'''''. Die durch die Module [[MQTT2_DEVICE]] oder {{Link2CmdRef|Anker= | Das Modul {{Link2CmdRef|Anker=MQTT2_CLIENT|Lang=en|Label=MQTT2_CLIENT}} fungiert als [[Interface|Verbindung]] zwischen FHEM und einem externen MQTT Server (z.B. ''mosquitto'') und repräsentiert ein  '''''MQTT Gateway'''''. Die durch die Module [[MQTT2_DEVICE]] oder {{Link2CmdRef|Anker=MQTT_GENERIC_BRIDGE|Lang=en|Label=MQTT_GENERIC_BRIDGE}} repräsentierten Client-Geräte sind gesondert anzulegen. | ||
| == Voraussetzungen == | == Voraussetzungen == | ||
Version vom 15. Juli 2019, 06:56 Uhr
| MQTT2_CLIENT | |
|---|---|
| Zweck / Funktion | |
| Stellt als Gateway die Verbindung zu einem MQTT-Broker her | |
| Allgemein | |
| Typ | Gerätemodul | 
| Details | |
| Dokumentation | EN / DE | 
| Support (Forum) | MQTT | 
| Modulname | 10_MQTT2_CLIENT.pm | 
| Ersteller | rudolfkoenig (Forum / Wiki) | 
| Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! | |
Das Modul MQTT2_CLIENT ermöglicht es, Geräte einzubinden, die über eine MQTT-Schnittstelle verfügen.
Das Modul MQTT2_CLIENT fungiert als Verbindung zwischen FHEM und einem externen MQTT Server (z.B. mosquitto) und repräsentiert ein MQTT Gateway. Die durch die Module MQTT2_DEVICE oder MQTT_GENERIC_BRIDGE repräsentierten Client-Geräte sind gesondert anzulegen.
Voraussetzungen
Es muss für jedes MQTT-Gateway ein MQTT-Server eingerichtet und erreichbar sein. Eine Anleitung zur Einrichtung eines Mosquitto-Brokers finden Sie z.B. im Artikel MQTT Einführung.

Kurzübersicht

Define
Das MQTT Gateway wird angelegt mit
define 'meinMQTT2Client MQTT2_CLIENT <host>:<port>

Anwendung
Danach können entsprechende Client-Devices angelegt werden, MQTT2_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.
 Für weitere bridge-Geräte wird bei Verwendung des MQTT2_CLIENT empfohlen, die betreffenden templates jeweils auf eine Kopie des "Sammeldevices" anzuwenden und dabei vorab die CID auf einen anderen Wert festzulegen als die ClientID des MQTT2_CLIENT-Geräts[1]! Hat man neue Geräte mit bridgeRegexp-Einträgen erstellt oder die bridgeRegexp-Einträge verändert, kann in der Regel gefahrlos zunächst die readingList am "Sammeldevice" gelöscht werden, so dass dann eingehende Nachrichten auch tatsächlich gegen die bridgeRegexp geprüft werden müssen.
Für weitere bridge-Geräte wird bei Verwendung des MQTT2_CLIENT empfohlen, die betreffenden templates jeweils auf eine Kopie des "Sammeldevices" anzuwenden und dabei vorab die CID auf einen anderen Wert festzulegen als die ClientID des MQTT2_CLIENT-Geräts[1]! Hat man neue Geräte mit bridgeRegexp-Einträgen erstellt oder die bridgeRegexp-Einträge verändert, kann in der Regel gefahrlos zunächst die readingList am "Sammeldevice" gelöscht werden, so dass dann eingehende Nachrichten auch tatsächlich gegen die bridgeRegexp geprüft werden müssen.Möchte man autocreate verwenden, um automatisiert MQTT2_DEVICE-Geräte anlegen zu lassen, empfiehlt es sich, auf das erste automatisch angelegte Gerät das template A_00_MQTT2_CLIENT_general_bridge anzuwenden. Dadurch werden bestimmte eingehenden MQTT-Messages für eine Anzahl häufig anzutreffender Gerätetypen in separate, automatisch angelegte MQTT2_DEVICE-Geräte umgeleitet[2].

Das attrTemplate A_00_MQTT2_CLIENT_general_bridge löscht die readingList des Geräts, auf das es angewendet wird und erstellt ein neues Device, das dann die beschriebene bridgeRegexp enthält. Dies muß nur einmalig erfolgen, für alle weiteren - mittels bridgeRegexp erstellten - Geräte gilt dann - mit o.g. Einschränkungen bei der Erstellung von weiteren bridge-Geräten - das allgemeine Vorgehen für MQTT2_DEVICE, z.B. auch die Festlegung weiterer Geräten mit bridgeRegexp-Attributen wie in den Praxisbeispielen beschrieben.
Will man Geräte unterscheiden, die sich nur z.B im ersten Teil der Topic-Struktur unterscheiden, kann man dies durch Anpassung der bridgeRegexp erreichen oder dadurch, dass man die betreffenden Geräte manuell anlegt. Dabei sollte man jedoch tendenziell sehr restriktive bridgeRegexp-Ausdrücke verwenden[3].
Anmerkungen
- ↑ Um eine Kopie des A_00_MQTT2_CLIENT_general_bridge-Geräts zu erstellen, empfielt sich der RAW-Editor, beachten Sie hierzu aber die Hinweise zur Änderung der CID!
- ↑ Näheres zur Entstehung der derzeitigen bridgeRegexp des templates A_00_MQTT2_CLIENT_general_bridge sind diesem Forenthread zu entnehmen.
- ↑ Zum Hintergrund siehe diese Forendiskussion