(FHEM) 10 MQTT DEVICE.pm: Unterschied zwischen den Versionen

Aus TippvomTibb
Zur Navigation springen Zur Suche springen
Zeile 4: Zeile 4:
 
  Ein MQTT_DEVICE fungiert als fhem-device, das mqtt-topics zugeordnet ist.  
 
  Ein MQTT_DEVICE fungiert als fhem-device, das mqtt-topics zugeordnet ist.  
  
=Steckbrief=
+
=Steckbrief=
 
'''Define'''
 
'''Define'''
 
  define <name> MQTT_DEVICE
 
  define <name> MQTT_DEVICE

Version vom 9. August 2022, 08:55 Uhr

10_MQTT_DEVICE

[Zurueck Uebersicht]

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.

'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
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.