(FHEM) 10 MQTT DEVICE.pm: Unterschied zwischen den Versionen
(→#4) |
|||
Zeile 72: | Zeile 72: | ||
attr mqttest publishSet on off switch:on,off level:slider,0,1,100 /topic/123 | attr mqttest publishSet on off switch:on,off level:slider,0,1,100 /topic/123 | ||
</pre> | </pre> | ||
− | Hierdurch entstehen im DeviceOverview ein on und eine off Taster und eine Lampe zum signalisieren des Zustandes. Beim Betaetigen des on oder off Tasters wird eine Nachricht on bzw. off an den Topic '/topic/123' gepublished. Achtung das "Root-Slash" gehoert da nicht hin! Vom Original habe ich es hier so falsch uebernommen. Der slider muss in diesem Fall mit set ausgeloest werden und uebermittelt den jeweils eingestellten Wert. | + | Hierdurch entstehen im DeviceOverview ein on und eine off Taster und eine Lampe zum signalisieren des Zustandes (reading switch). Beim Betaetigen des on oder off Tasters wird eine Nachricht on bzw. off an den Topic '/topic/123' gepublished. Achtung das "Root-Slash" gehoert da nicht hin! Vom Original habe ich es hier so falsch uebernommen. Der slider muss in diesem Fall mit set ausgeloest werden und uebermittelt den jeweils eingestellten Wert an den Broker und an das Reading level. |
Version vom 10. August 2022, 11:19 Uhr
Inhaltsverzeichnis
10_MQTT_DEVICE
Ein MQTT_DEVICE fungiert als fhem-device, das mqtt-topics zugeordnet ist.
Steckbrief
Define
define <name> MQTT_DEVICE <IODev>
Wenn man es so mach wie im der commandref beschrieben erhaelt man eine Fehlermeldung.
client device hash no IODev provided
Das Attribut IODev hat sich damit wohl erledigt.
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.
'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.
Beispiele
#1
define licht_kinderzimmer MQTT_DEVICE <IODev> 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 <IODev> 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.
#4
attr mqttest publishSet on off switch:on,off level:slider,0,1,100 /topic/123
Hierdurch entstehen im DeviceOverview ein on und eine off Taster und eine Lampe zum signalisieren des Zustandes (reading switch). Beim Betaetigen des on oder off Tasters wird eine Nachricht on bzw. off an den Topic '/topic/123' gepublished. Achtung das "Root-Slash" gehoert da nicht hin! Vom Original habe ich es hier so falsch uebernommen. Der slider muss in diesem Fall mit set ausgeloest werden und uebermittelt den jeweils eingestellten Wert an den Broker und an das Reading level.