(FHEM) 10 MQTT DEVICE.pm: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „ Ein MQTT_DEVICE fungiert als fhem-device, das mqtt-topics zugeordnet ist. '''Define''' define <name> MQTT_DEVICE '''Set''' set <name> <command> NICHT in der…“) |
|||
Zeile 1: | Zeile 1: | ||
− | Ein MQTT_DEVICE fungiert als fhem-device, das mqtt-topics zugeordnet ist. | + | ==10_MQTT_DEVICE== |
+ | [[(FHEM) MQTT#Module im Detail| [Zurueck Uebersicht] ]] | ||
+ | |||
+ | Ein MQTT_DEVICE fungiert als fhem-device, das mqtt-topics zugeordnet ist. | ||
+ | |||
+ | =Steckbrief= | ||
'''Define''' | '''Define''' | ||
define <name> MQTT_DEVICE | define <name> MQTT_DEVICE | ||
Zeile 18: | Zeile 23: | ||
attr <name> qos <flags> ... | attr <name> qos <flags> ... | ||
attr <name> useSetExtensions <flags> | attr <name> useSetExtensions <flags> | ||
+ | |||
+ | =Erlaeuterungen= | ||
+ | Aus dem [https://forum.fhem.de/index.php?topic=27532.0 Forumsbetrag]: | ||
+ | '''MQTT_DEVICE''' wird verwendet, wenn das physikalische Device (Sensor oder Aktor) über mqtt kommuniziert. (Kein dummy mehr nötig!) | ||
+ | '''MQTT_BRIDGE''' ist für den Fall, dass ein fhem-device existiert und dieses über mqtt sicht- bzw. steuerbar gemacht werden soll. | ||
+ | |||
+ | Es wird die im IODev-attribute angegebne MQTT-verbindung verwendet. Messages von mqtt updaten die readings dieses devices direkt, es wird kein weiterer dummy benötigt. MQTT_DEVICE verwendet man zur Einbindung von über mqtt erreichbaren sensoren und aktoren. | ||
+ | |||
+ | In den Topic-namen der vorgenannten Attribute werden aktuell noch keine Wildcards unterstützt. | ||
+ | |||
+ | um das Erstellen der Readings zu vereinfachen gibt es das Attribute autoSubscribeReadings: | ||
+ | |||
+ | =Beispiele= | ||
+ | ==#1== | ||
+ | <pre> | ||
+ | define licht_kinderzimmer MQTT_DEVICE | ||
+ | attr licht_kinderzimmer publishSet on off fhem/kinderzimmer/licht | ||
+ | attr licht_kinderzimmer subscribeReading_state fhem/kinderzimmer/licht/set | ||
+ | </pre> | ||
+ | Mit 'set licht_kinderzimmer on' schickt man jetzt eine message 'on' an das topic fhem/kinderzimmer/licht. | ||
+ | Umgekehrt kann das reading state über messages an fhem/kinderzimmer/licht/set gesetzt werden. | ||
+ | |||
+ | ==#2== | ||
+ | <pre> | ||
+ | define heizung_kinderzimmer MQTT_DEVICE | ||
+ | attr heizung_kinderzimmer publishSet_desired-temp fhem/kinderzimmer/temperatur | ||
+ | attr heizung_kinderzimmer subscribeReading_messured-temp fhem/kinderzimmer/temperatur/set | ||
+ | attr heizung_kinderzimmer stateFormat messured-temp | ||
+ | </pre> | ||
+ | |||
+ | ==#3== | ||
+ | <pre> | ||
+ | 'attr heizung_kinderzimmer autoSubscribeReadings fhem/kinderzimmer/+/set' | ||
+ | </pre> | ||
+ | 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. Das letzte '+' im Topic wird als Name des Readings benutzt. | ||
+ | Also wenn eine Message '17.5' an 'fhem/kinderzimmer/messured-temp/set' empfangen wird, wird 'attr heizung_kinderzimmer subscribeReading_messured-temp fhem/kinderzimmer/messsured-temp' gesetzt und gleichzeitig das Reading 'messured-temp' erzeugt und auf den Wert '17.5' gesetzt. Wenn alle gewünschten Readings auf diese Weise angelegt sind, kann man das Attribut 'autoSubscribeReadings' wieder entfernen. |
Version vom 9. August 2022, 08:44 Uhr
Inhaltsverzeichnis
10_MQTT_DEVICE
Ein MQTT_DEVICE fungiert als fhem-device, das mqtt-topics zugeordnet ist.
=Steckbrief=
Define
define <name> MQTT_DEVICE
Set
set <name> <command> NICHT in der Detail-Ansicht vorhanden. set <name> <reading> <value> NICHT in der Detail-Ansicht vorhanden. set extensions NICHT in der Detail-Ansicht vorhanden.
Get
Readings
Attributes
attr <name> publishSet [[<reading>:]<commands_or_options>] <topic> attr <name> publishSet_<reading> [<values>]* <topic> attr <name> autoSubscribeReadings <topic> attr <name> subscribeReading_<reading> [{Perl-expression}] [qos:?] [retain:?] <topic> attr <name> retain <flags> ... attr <name> qos <flags> ... attr <name> useSetExtensions <flags>
Erlaeuterungen
Aus dem Forumsbetrag:
MQTT_DEVICE wird verwendet, wenn das physikalische Device (Sensor oder Aktor) über mqtt kommuniziert. (Kein dummy mehr nötig!) MQTT_BRIDGE ist für den Fall, dass ein fhem-device existiert und dieses über mqtt sicht- bzw. steuerbar gemacht werden soll.
Es wird die im IODev-attribute angegebne MQTT-verbindung verwendet. Messages von mqtt updaten die readings dieses devices direkt, es wird kein weiterer dummy benötigt. MQTT_DEVICE verwendet man zur Einbindung von über mqtt erreichbaren sensoren und aktoren.
In den Topic-namen der vorgenannten Attribute werden aktuell noch keine Wildcards unterstützt.
um das Erstellen der Readings zu vereinfachen gibt es das Attribute autoSubscribeReadings:
Beispiele
#1
define licht_kinderzimmer MQTT_DEVICE attr licht_kinderzimmer publishSet on off fhem/kinderzimmer/licht attr licht_kinderzimmer subscribeReading_state fhem/kinderzimmer/licht/set
Mit 'set licht_kinderzimmer on' schickt man jetzt eine message 'on' an das topic fhem/kinderzimmer/licht. Umgekehrt kann das reading state über messages an fhem/kinderzimmer/licht/set gesetzt werden.
#2
define heizung_kinderzimmer MQTT_DEVICE attr heizung_kinderzimmer publishSet_desired-temp fhem/kinderzimmer/temperatur attr heizung_kinderzimmer subscribeReading_messured-temp fhem/kinderzimmer/temperatur/set attr heizung_kinderzimmer stateFormat messured-temp
#3
'attr heizung_kinderzimmer autoSubscribeReadings fhem/kinderzimmer/+/set'
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. Das letzte '+' im Topic wird als Name des Readings benutzt. Also wenn eine Message '17.5' an 'fhem/kinderzimmer/messured-temp/set' empfangen wird, wird 'attr heizung_kinderzimmer subscribeReading_messured-temp fhem/kinderzimmer/messsured-temp' gesetzt und gleichzeitig das Reading 'messured-temp' erzeugt und auf den Wert '17.5' gesetzt. Wenn alle gewünschten Readings auf diese Weise angelegt sind, kann man das Attribut 'autoSubscribeReadings' wieder entfernen.