MQTT2 CLIENT: Unterschied zwischen den Versionen
K (typo) |
(Änderung auf "Einheits-Sammeldevice" für MQTT2_CLIENT_general_bridge) |
||
Zeile 27: | Zeile 27: | ||
Danach können entsprechende Client-Devices angelegt werden, | Danach können entsprechende Client-Devices angelegt werden, | ||
[[MQTT2 DEVICE|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. | [[MQTT2 DEVICE|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. | ||
{{Randnotiz|RNTyp=g|RNText=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<ref> | {{Randnotiz|RNTyp=g|RNText=Für weitere bridge-Geräte wird bei Verwendung des MQTT2_CLIENT empfohlen, die betreffenden templates jeweils auf eine Kopie des "Sammeldevices" MQTT2_CLIENT_general_bridge anzuwenden und dabei vorab die CID auf einen anderen Wert festzulegen als die ClientID des MQTT2_CLIENT-Geräts<ref>Dabei empfielt sich der [[Import von Code Snippets|RAW-Editor]], beachten Sie hierzu aber die Hinweise zur Änderung der CID!</ref>! 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" (bzw. der MQTT2_CLIENT_general_bridge) 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 [[MQTT2-Module - Praxisbeispiele#attrTemplate_2|template]] ''MQTT2_CLIENT_general_bridge'' anzuwenden. Dadurch werden anschließend bestimmte eingehenden MQTT-Messages für eine Anzahl häufig anzutreffender Gerätetypen in separate, automatisch angelegte MQTT2_DEVICE-Geräte umgeleitet<ref>Näheres zur Entstehung der derzeitigen bridgeRegexp des templates ''MQTT2_CLIENT_general_bridge'' sind diesem {{Link2Forum|Topic=98126|LinkText=Forenthread}} zu entnehmen.</ref>. | ||
{{Hinweis|Da hierzu die typischen Topicstrukturen und Benennungen genutzt werden, sollten die MQTT-Einstellungen hinsichtlich des topictrees auf den Geräten auf den jeweiligen defaults belassen werden.}} | {{Hinweis|Da hierzu die typischen Topicstrukturen und Benennungen genutzt werden, sollten die MQTT-Einstellungen hinsichtlich des topictrees auf den Geräten auf den jeweiligen defaults belassen werden.}} | ||
Das attrTemplate ''MQTT2_CLIENT_general_bridge'' löscht die readingList des Geräts, auf das es angewendet wird und | Das attrTemplate ''MQTT2_CLIENT_general_bridge'' löscht die readingList des Geräts, auf das es angewendet wird und ergänzt das Device mit der beschriebenen ''bridgeRegexp''. 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 [[MQTT2-Module - Praxisbeispiele|Praxisbeispielen]] beschrieben, dort findet sich auch ein Abschnitt zum Attribut [[MQTT2-Module_-_Praxisbeispiele#bridgeRegexp|bridgeRegexp]] allgemein. | ||
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<ref>Zum Hintergrund siehe diese {{Link2Forum|Topic=98206|LinkText=Forendiskussion}}</ref>. | 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<ref>Zum Hintergrund siehe diese {{Link2Forum|Topic=98206|LinkText=Forendiskussion}}</ref>. |
Version vom 24. Juni 2020, 11:48 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.
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 MQTT2_CLIENT_general_bridge anzuwenden. Dadurch werden anschließend 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 MQTT2_CLIENT_general_bridge löscht die readingList des Geräts, auf das es angewendet wird und ergänzt das Device mit der beschriebenen bridgeRegexp. 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, dort findet sich auch ein Abschnitt zum Attribut bridgeRegexp allgemein.
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
- ↑ Dabei empfielt sich der RAW-Editor, beachten Sie hierzu aber die Hinweise zur Änderung der CID!
- ↑ Näheres zur Entstehung der derzeitigen bridgeRegexp des templates MQTT2_CLIENT_general_bridge sind diesem Forenthread zu entnehmen.
- ↑ Zum Hintergrund siehe diese Forendiskussion