From 57b35e47ea5b20b163668ff2e3b63d3d7e40fca6 Mon Sep 17 00:00:00 2001
From: hexenmeister
globalSubscribe ! TODO - is currently not supported and may not be implemented at all!
- Defines topics / flags for MQTT transmission. These are used if there are no suitable values in the respective device.
- see mqttSubscribe.
-
globalTypeExclude
Defines (device) types and readings that should not be considered in the transmission.
@@ -3095,6 +3097,12 @@ sub onmessage($$$) {
Example:
attr <dev> globalDeviceExclude Test Bridge:transmission-state
forceNEXT
+ Only relevant for MQTT2_CLIENT or MQTT2_SERVER as IODev. If set to 1, MQTT_GENERIC_BRIDGE will forward incoming messages also to further client modules like MQTT2_DEVICE, even if the topic matches to one of the subscriptions of the controlled devices. By default, these messages will not be forwarded for better compability with autocreate feature on MQTT2_DEVICE. See also clientOrder attribute in MQTT2 IO-type commandrefs; setting this in one instance of MQTT_GENERIC _BRIDGE might affect others, too.
For the monitored devices, a list of the possible attributes is automatically extended by several further entries.
They all begin with a prefix previously defined in the bridge. These attributes are used to configure the actual MQTT mapping.
@@ -3349,13 +3357,13 @@ sub onmessage($$$) {
- Dieses Modul ist eine MQTT-Bridge, die gleichzeitig mehrere FHEM-Devices erfasst und deren Readings
- per MQTT weiter gibt bzw. aus den eintreffenden MQTT-Nachrichten befuellt oder diese als 'set'-Befehl
- an dem konfigurierten FHEM-Geraet ausfuert.
-
Es wird eines der folgenden Geraete als IODev benoetigt: MQTT,
+ Dieses Modul ist eine MQTT-Bridge, die gleichzeitig mehrere FHEM-Devices erfaßt und deren Readings
+ per MQTT weiter gibt bzw. aus den eintreffenden MQTT-Nachrichten befüllt oder diese als 'set'-Befehl
+ an dem konfigurierten FHEM-Gerät ausführt.
+
Es wird eines der folgenden Geräte als IODev benötigt: MQTT,
MQTT2_CLIENT oder MQTT2_SERVER.
Die (minimale) Konfiguration der Bridge selbst ist grundsaetzlich sehr einfach.
+Die (minimale) Konfiguration der Bridge selbst ist grundsätzlich sehr einfach.
Definition:
defmod mqttGeneric MQTT_GENERIC_BRIDGE [prefix] [devspec,[devspec]]
attr mqttGeneric IODev
Alle Parameter im Define sind optional.
-Der erste ist ein Prefix fuer die Steuerattribute, worueber die zu ueberwachende Geraete (s.u.) +
Der erste ist ein Prefix für die Steuerattribute, worüber die zu ueberwachende Geraete (s.u.) konfiguriert werden. Defaultwert ist 'mqtt'. - Wird dieser z.B. als 'hugo' redefiniert, heissen die Steuerungsattribute entsprechend hugoPublish etc.
-Der zweite Parameter ('devspec') erlaubt die Menge der zu ueberwachenden Geraeten - zu begrenzen (sonst werden einfach alle ueberwacht, was jedoch Performance kosten kann). - Beispiel fuer devspec: 'TYPE=dummy' oder 'dummy1,dummy2'. Bei kommaseparierten Liste duerfen keine Leerzeichen verwendet werden! - s.a. devspec
+ Wird dieser z.B. als 'mqttGB1_' festgelegt, heißen die Steuerungsattribute entsprechend mqttGB1_Publish etc. +Der zweite Parameter ('devspec') erlaubt die Menge der zu überwachenden Geraeten + zu begrenzen (sonst werden einfach alle überwacht, was jedoch Performance kosten kann). + Beispiel fuer devspec: 'TYPE=dummy' oder 'dummy1,dummy2'. Bei kommaseparierten Liste dürfen keine Leerzeichen verwendet werden! + s.a. devspec
devlist [<name (regex)>]
- Liefert Liste der Namen der von dieser Bridge ueberwachten Geraete deren Namen zu dem optionalen regulaerem Ausdruck entsprechen.
+ Liefert Liste der Namen der von dieser Bridge überwachten Geräte deren Namen zu dem optionalen regulaerem Ausdruck entsprechen.
Fehlt der Ausdruck, werden alle Geraete aufgelistet.
devinfo [<name (regex)>]
- Gibt eine Liste der ueberwachten Geraete aus, deren Namen dem optionalen regulaeren Ausdruck entsprechen.
- Fehlt der Ausdruck, werden alle Geraete aufgelistet. Zusaetzlich werden bei 'publish' und 'subscribe'
+ Gibt eine Liste der überwachten Geräte aus, deren Namen dem optionalen regulären Ausdruck entsprechen.
+ Fehlt der Ausdruck, werden alle Geräte aufgelistet. Zusätzlich werden bei 'publish' und 'subscribe'
verwendete Topics angezeigt incl. der entsprechenden Readingsnamen.
device-count
- Anzahl der ueberwachten Geraete
incoming-count
@@ -3418,17 +3426,18 @@ sub onmessage($$$) {
transmission-state
- letze Uebertragunsart
Attribute:
-folgende Attribute werden unterstuetzt:
+Folgende Attribute werden unterstützt:
+Im MQTT_GENERIC_BRIDGE-Device selbst:
+IODev
- Dieses Attribut ist obligatorisch und muss den Namen einer funktionierenden MQTT-Modulinstanz enthalten.
- Es werden derzeit MQTT, MQTT2_CLIENT und MQTT2_SERVER unterstuetzt.
globalDefaults
- Definiert Defaults. Diese greifen in dem Fall, wenn in dem jeweiligen Geraet definierte Werte nicht zutreffen.
- s.a. mqttDefaults.
+ Definiert Defaults. Diese greifen in dem Fall, wenn in dem jeweiligen Gerät definierte Werte nicht zutreffen.
+ s.a. mqttDefaults.
+
Beispiel:
+ attr <dev> sub:base={"FHEM/set/$device"} pub:base={"FHEM/$device"}
+
globalAlias
- Definiert Alias. Diese greifen in dem Fall, wenn in dem jeweiligen Geraet definierte Werte nicht zutreffen.
+ Definiert Alias. Diese greifen in dem Fall, wenn in dem jeweiligen Gerät definierte Werte nicht zutreffen.
s.a. mqttAlias.
globalSubscribe ! TODO - wird derzeit nicht unterstuetzt und wird moeglicherweise gar nicht implementiert !
- Definiert Topics/Flags fuer die Aufnahme der Werte aus der MQTT-Uebertragung. Sie greifen, falls in dem jeweiligen Geraet
- definierte Werte nicht greifen oder nicht vorhanden sind. s.a. mqttSubscribe.
-
Hinweis:
+ Dieses Attribut sollte nur gesetzt werden, wenn wirklich alle Werte aus den überwachten Geräten versendet werden sollen; dies wird eher nur im Ausnahmefall zutreffen!
+
globalTypeExclude
- Definiert (Geraete-)Typen und Readings, die nicht bei der Uebertragung beruecksichtigt werden.
- Werte koennen getrennt fuer jede Richtung (publish oder subscribe) vorangestellte Prefixe 'pub:' und 'sub:' angegeben werden.
- Ein einzelner Wert bedeutet, dass ein Geraet diesen Types komplett ignoriert wird (also fuer alle seine Readings und beide Richtungen).
+ Definiert (Geräte-)Typen und Readings, die nicht bei der Übertragung berücksichtigt werden.
+ Werte können getrennt für jede Richtung (publish oder subscribe) vorangestellte Prefixe 'pub:' und 'sub:' angegeben werden.
+ Ein einzelner Wert bedeutet, dass ein Gerät diesen Types komplett ignoriert wird (also für alle seine Readings und beide Richtungen).
Durch einen Doppelpunkt getrennte Paare werden als [sub:|pub:]Type:Reading interpretiert.
Das bedeutet, dass an dem gegebenen Type die genannte Reading nicht uebertragen wird.
Ein Stern anstatt Type oder auch Reading bedeutet, dass alle Readings eines Geretaetyps
@@ -3484,7 +3492,7 @@ sub onmessage($$$) {
globalDeviceExclude
Definiert Geraetenamen und Readings, die nicht uebertragen werden.
- Werte koennen getrennt fuer jede Richtung (publish oder subscribe) vorangestellte Prefixe 'pub:' und 'sub:' angegeben werden.
+ Werte können getrennt fuer jede Richtung (publish oder subscribe) vorangestellte Prefixe 'pub:' und 'sub:' angegeben werden.
Ein einzelner Wert bedeutet, dass ein Geraet mit diesem Namen komplett ignoriert wird (also fuer alle seine Readings und beide Richtungen).
Durch ein Doppelpunkt getrennte Paare werden als [sub:|pub:]Device:Reading interptretiert.
Das bedeutet, dass an dem gegebenen Geraet die genannte Readings nicht uebertragen wird.
attr <dev> globalDeviceExclude Test Bridge:transmission-state
Fuer die ueberwachten Geraete wird eine Liste der moeglichen Attribute automatisch um mehrere weitere Eintraege ergaenzt.
- Sie fangen alle mit vorher mit dem in der Bridge definiertem Prefix an. Ueber diese Attribute wird die eigentliche MQTT-Anbindung konfiguriert.
- Als Standardwert werden folgende Attributnamen verwendet: mqttDefaults, mqttAlias, mqttPublish, mqttSubscribe.
-
Die Bedeutung dieser Attribute wird im Folgenden erklaert.
-
forceNEXT
+ Nur relevant, wenn MQTT2_CLIENT oder MQTT2_SERVER als IODev verwendet werden. Wird dieses Attribut auf 1 gesetzt, gibt MQTT_GENERIC_BRIDGE alle eingehenden Nachrichten an weitere Client Module (z.b. MQTT2_DEVICE) weiter, selbst wenn der betreffende Topic von einem von der MQTT_GENERIC_BRIDGE überwachten Gerät verwendet wird. Im Regelfall ist dies nicht erwünscht und daher ausgeschaltet, um unnötige autocreates oder Events an MQTT2_DEVICEs zu vermeiden. Siehe dazu auch das clientOrder Attribut bei MQTT2_CLIENT bzw -SERVER; wird das Attribut in einer Instance von MQTT_GENERIC _BRIDGE gesetzt, kann das Auswirkungen auf weitere Instanzen haben.
Für die überwachten Geräte wird eine Liste der möglichen Attribute automatisch um mehrere weitere Einträge ergänzt.
+ Sie fangen alle mit vorher mit dem in der Bridge definierten Prefix an. Über diese Attribute wird die eigentliche MQTT-Anbindung konfiguriert.
+ Als Standardwert werden folgende Attributnamen verwendet: mqttDefaults, mqttAlias, mqttPublish, mqttSubscribe.
+
Die Bedeutung dieser Attribute wird im Folgenden erklärt.
+
mqttDefaults
- Hier wird eine Liste der "key=value"-Paare erwartet. Folgende Keys sind dabei moeglich:
+ Hier wird eine Liste der "key=value"-Paare erwartet. Folgende Keys sind dabei möglich:
Beispiel:
- attr <dev> mqttDefaults base={"/TEST/$device"} pub:qos=0 sub:qos=2 retain=0
attr <dev> mqttDefaults base={"TEST/$device"} pub:qos=0 sub:qos=2 retain=0
mqttAlias
- Dieses Attribut ermoeglicht Readings unter einem anderen Namen auf MQTT-Topic zu mappen.
+ Dieses Attribut ermöglicht Readings unter einem anderen Namen auf MQTT-Topic zu mappen.
Eigentlich nur sinnvoll, wenn Topicdefinitionen Perl-Expressions mit entsprechenden Variablen sind.
- Auch hier werden 'pub:' und 'sub:' Prefixe unterstuetzt (fuer 'subscribe' gilt das Mapping quasi umgekehrt).
+ Auch hier werden 'pub:' und 'sub:' Prefixe unterstützt (für 'subscribe' gilt das Mapping quasi umgekehrt).
Alias fuer subscribe ist derzeit nicht implementiert!
Beispiel:
- attr <dev> mqttAlias pub:temperature=temp
attr <dev> mqttAlias pub:temperature=tempbr>
+ temperature ist dabei der Name des Readings in FHEM.
mqttPublish
Hier werden konkrete Topics definiert und den Readings zugeordnet (Format: <reading>:topic=<topic>).
- Weiterhin koennen diese einzeln mit 'qos'- und 'retain'-Flags versehen werden.
- Topics koennen auch als Perl-Expression mit Variablen definiert werden ($reading, $device, $name, $base).
+ Weiterhin können diese einzeln mit 'qos'- und 'retain'-Flags versehen werden.
+ Topics können auch als Perl-Expression mit Variablen definiert werden ($device, $reading, $name, $base sowie ggf. über mqttDefaults weitere).
'topic' kann auch als 'readings-topic' geschrieben werden.
- Werte fuer mehrere Readings koennen auch gemeinsam gleichzeitig definiert werden,
+ Werte für mehrere Readings können auch gemeinsam gleichzeitig definiert werden,
indem sie, mittels '|' getrennt, zusammen angegeben werden.
- Wird anstatt eines Readingsnamen ein '*' verwendet, gilt diese Definition fuer alle Readings,
- fuer die keine explizite Angaben gemacht wurden.
- Ebenso koennen auch Attributwerte gesendet werden ('atopic' oder 'attr-topic').
- Sollten fuer ein Event mehrere Nachrichten (sinnvollerweise an verschiedene Topics) versendet werden, muessen jeweilige Definitionen durch Anhaengen von
- einmaligen Suffixen (getrennt von dem Readingnamen durch ein !-Zeichen) unterschieden werden: reading!1:topic=... reading!2:topic=....
- Weiterhin koennen auch Expressions (reading:expression=...) definiert werden.
- Die Expressions koennen sinnvollerweise entweder Variablen ($value, $topic, $qos, $retain, $message, $uid) veraendern, oder einen Wert != undef zurrueckgeben.
- Der Rueckhgabe wert wird als neue Nachricht-Value verwendet, die Aenderung der Variablen hat dabei jedoch Vorrang.
- Ist der Rueckgabewert undef, dann wird das Setzen/Ausfuehren unterbunden.
- Ist die Rueckgabe ein Hash (nur 'topic'), werden seine Schluesselwerte als Topic verwendet,
+ Wird anstatt eines Readingsnamen ein '*' verwendet, gilt diese Definition für alle Readings,
+ für die keine explizite Angaben gemacht wurden.
+ für die keine expliziten Angaben gemacht wurden.
+ Neben Readings können auch Attributwerte gesendet werden ('atopic' oder 'attr-topic').
+ Sollten für ein Event mehrere Nachrichten (sinnvollerweise an verschiedene Topics) versendet werden, müssen jeweilige Definitionen durch Anhängen von
+ einmaligen Suffixen (getrennt von dem Readingnamen durch ein !-Zeichen) unterschieden werden: reading!1:topic=... reading!2:topic=....
+ Weiterhin können auch Expressions (reading:expression=...) definiert werden.
+ Die Expressions können sinnvollerweise entweder Variablen ($value, $topic, $qos, $retain, $message, $uid) veraendern, oder einen Wert != undef zurrückgeben.
+ Der Rückgabewert wird als neuer Nachrichten-Value verwendet, die Änderung der Variablen hat dabei jedoch Vorrang.
+ Ist der Rückgabewert undef, dann wird das Setzen/Ausführen unterbunden.
+ Ist die Rückgabe ein Hash (nur 'topic'), werden seine Schlüsselwerte als Topic verwendet,
die Inhalte der Nachrichten sind entsprechend die Werte aus dem Hash.
Option 'resendOnConnect' erlaubt eine Speicherung der Nachrichten, wenn keine Verbindung zu dem MQTT-Server besteht. Die zu sendende Nachrichten werden in einer Warteschlange gespeichert. - Wird die Verbindung aufgebaut, werden die Nachrichten in der ursprungichen Reihenfolge verschickt. -
Beispiele: mqttSubscribe Die oft angefragte JSON-Unterstützung kann einfach mit Hilfe von 'expression' realisiert werden.
- Dafür eignet sich eine in fhem.pl bereits vorhandene Methode: json2nameValue. Als Parameter soll $message verwendet werden. Beispiele:
- attr <dev> mqttPublish temperature:topic={"$base/$name"} temperature:qos=1 temperature:retain=0 *:topic={"$base/$name"} humidity:topic=/TEST/Feuchte
+ attr <dev> mqttPublish temperature:topic={"$base/$name"} temperature:qos=1 temperature:retain=0 *:topic={"$base/$name"} humidity:topic=TEST/Feuchte
attr <dev> mqttPublish temperature|humidity:topic={"$base/$name"} temperature|humidity:qos=1 temperature|humidity:retain=0
attr <dev> mqttPublish *:topic={"$base/$name"} *:qos=2 *:retain=0
attr <dev> mqttPublish *:topic={"$base/$name"} reading:expression={"message: $value"}
attr <dev> mqttPublish *:topic={"$base/$name"} reading:expression={$value="message: $value"}
- attr <dev> mqttPublish *:topic={"$base/$name"} reading:expression={"/TEST/Topic1"=>"$message", "/TEST/Topic2"=>"message: $message"}
+ attr <dev> mqttPublish *:topic={"$base/$name"} reading:expression={"TEST/Topic1"=>"$message", "TEST/Topic2"=>"message: $message"}
attr <dev> mqttPublish [...] *:resendOnConnect=last
attr <dev> mqttPublish temperature:topic={"$base/temperature/01/value"} temperature!json:topic={"$base/temperature/01/json"}
temperature!json:expression={toJSON({value=>$value,type=>"temperature",unit=>"°C",format=>"00.0"})}
@@ -3586,68 +3604,70 @@ sub onmessage($$$) {
Dieses Attribut konfiguriert das Empfangen der MQTT-Nachrichten und die entsprechenden Reaktionen darauf.
- Die Konfiguration ist aehnlich der fuer das 'mqttPublish'-Attribut. Es koennen Topics fuer das Setzen von Readings ('topic' oder auch 'readings-topic') und
- Aufrufe von 'set'-Befehl an dem Geraet ('stopic' oder 'set-topic') definiert werden.
- Ebenso koennen auch Attribute gesetzt werden ('atopic' oder 'attr-topic').
- Mit Hilfe von zusaetzlichen auszufuehrenden Perl-Expressions ('expression') kann das Ergebnis vor dem Setzen/Ausfueren noch beeinflusst werden.
- In der Expression sind die folgenden Variablen verfuegbar: $device, $reading, $message (initial gleich $value).
- Die Expression kann dabei entweder die Variable $value veraendern, oder einen Wert != undef zurueckgeben. Redefinition der Variable hat Vorrang.
- Ist der Rueckgabewert undef, dann wird das Setzen/Ausfuehren unterbunden (es sei denn, $value hat einen neuen Wert).
- Ist die Rueckgabe ein Hash (nur fuer 'topic' und 'stopic'), dann werden seine Schluesselwerte als Readingsnamen bzw. 'set'-Parameter verwendet,
+ Die Konfiguration ist ähnlich der für das 'mqttPublish'-Attribut. Es können Topics für das Setzen von Readings ('topic' oder auch 'readings-topic') und
+ Aufrufe von 'set'-Befehl an dem Gerät ('stopic' oder 'set-topic') definiert werden.
+ Attribute können ebenfalls gesetzt werden ('atopic' oder 'attr-topic').
+ Mit Hilfe von zusätzlichen auszuführenden Perl-Expressions ('expression') kann das Ergebnis vor dem Setzen/Ausführen noch beeinflußt werden.
+ In der Expression sind die folgenden Variablen verfügbar: $device, $reading, $message (initial gleich $value).
+ Die Expression kann dabei entweder die Variable $value verändern, oder einen Wert != undef zurückgeben. Redefinition der Variable hat Vorrang.
+ Ist der Rückgabewert undef, dann wird das Setzen/Ausführen unterbunden (es sei denn, $value hat einen neuen Wert).
+ Ist die Rückgabe ein Hash (nur fuer 'topic' und 'stopic'), dann werden seine Schlüsselwerte als Readingsnamen bzw. 'set'-Parameter verwendet,
die zu setzenden Werte sind entsprechend den Werten aus dem Hash.
Weiterhin kann das Attribut 'qos' angegeben werden ('retain' macht dagegen keinen Sinn).
- In der Topic-Definition koennen MQTT-Wildcards (+ und #) verwendet werden.
+ In der Topic-Definition können MQTT-Wildcards (+ und #) verwendet werden.
Falls der Reading-Name mit einem '*'-Zeichen am Anfang definiert wird, gilt dieser als 'Platzhalter'.
Mehrere Definitionen mit '*' sollten somit z.B. in folgender Form verwendet werden: *1:topic=... *2:topic=...
Der tatsaechliche Name des Readings (und ggf. des Geraetes) wird dabei durch Variablen aus dem Topic
- definiert ($device (nur fuer globale Definition in der Bridge), $reading, $name).
- Im Topic wirken diese Variablen als Wildcards, nur sinnvoll wenn Reading-Name auch nicht fest definiert ist
- (also faengt mit '*' an, oder mehrere Namen durch '|' getrennt definiert werden).
- Die Variable $name wird im Unterschied zu $reading ggf. ueber die in 'mqttAlias' definierten Aliase beeinflusst.
+ definiert ($device (nur für globale Definition in der Bridge), $reading, $name).
+ Im Topic wirken diese Variablen als Wildcards, was evtl. dann sinnvoll ist, wenn der Reading-Name nicht fest definiert ist
+ (also mit '*' anfängt, oder mehrere Namen durch '|' getrennt definiert werden).
+ Die Variable $name wird im Unterschied zu $reading ggf. über die in 'mqttAlias' definierten Aliase beeinflusst.
Auch Verwendung von $base ist erlaubt.
- Bei Verwendung von 'stopic' wird das 'set'-Befehl als 'set <dev> <reading> <value>' ausgefuehrt.
- Fuer 'set <dev> <value>' soll als Reading-Name 'state' verwendet werden.
- attr <dev> mqttSubscribe temperature:topic=/TEST/temperature test:qos=0 *:topic={"/TEST/$reading/value"}
- attr <dev> mqttSubscribe desired-temperature:stopic={"/TEST/temperature/set"}
- attr <dev> mqttSubscribe state:stopic={"/TEST/light/set"} state:expression={...}
- attr <dev> mqttSubscribe state:stopic={"/TEST/light/set"} state:expression={$value="x"}
- attr <dev> mqttSubscribe state:stopic={"/TEST/light/set"} state:expression={"R1"=>$value, "R2"=>"Val: $value", "R3"=>"x"}
- attr <dev> mqttSubscribe verbose:atopic={"/TEST/light/verbose"}
- attr <dev> mqttSubscribe json:topic=/XTEST/json json:expression={json2nameValue($message)}
-
Um Nachrichten im JSON-Format zu empfangen, kann mit Hilfe von 'expression' direkt die in fhem.pl bereitgestellte Funktion json2nameValue aufgerufen werden, als Parameter ist $message anzugeben.
+Einige Beispiele:
+ attr <dev> mqttSubscribe temperature:topic=TEST/temperature test:qos=0 *:topic={"TEST/$reading/value"}
+ attr <dev> mqttSubscribe desired-temperature:stopic={"TEST/temperature/set"}
+ attr <dev> mqttSubscribe state:stopic={"TEST/light/set"} state:expression={...}
+ attr <dev> mqttSubscribe state:stopic={"TEST/light/set"} state:expression={$value="x"}
+ attr <dev> mqttSubscribe state:stopic={"TEST/light/set"} state:expression={"R1"=>$value, "R2"=>"Val: $value", "R3"=>"x"}
+ attr <dev> mqttSubscribe verbose:atopic={"TEST/light/verbose"}
+ attr <dev> mqttSubscribe json:topic=XTEST/json json:expression={json2nameValue($message)}
+
mqttForward
Dieses Attribut definiert was passiert, wenn eine und dasselbe Reading sowohl aboniert als auch gepublisht wird.
- Moegliche Werte: 'all' und 'none'.
+ Mögliche Werte: 'all' und 'none'.
Bei 'none' werden per MQTT angekommene Nachrichten nicht aus dem selben Gerät per MQTT weiter gesendet.
- Die Einstellung 'all' bewirkt das Gegenteil, also damit wird das Weiterleiten ermoeglicht.
- Fehlt dieser Attribut, dann wird standartmaeßig für alle Geraetetypen außer 'Dummy' die Einstellung 'all' angenommen
- (damit koennen Aktoren Befehle empfangen und ihre Änderungen im gleichem Zug weiter senden)
- und fuer Dummies wird 'none' verwendet. Das wurde so gewaehlt, weil Dummies oft als eine Art GUI-Schalterelement verwendet werden.
- In diesem Fall wuerde 'all' unter Umstaenden eine Endlosschleife der Nachrichten verursachen.
+ Die Einstellung 'all' bewirkt das Gegenteil, also damit wird das Weiterleiten ermöglicht.
+ Fehlt dieser Attribut, dann wird standardmäßig für alle Gerätetypen außer 'Dummy' die Einstellung 'all' angenommen
+ (damit können Aktoren Befehle empfangen und ihre Änderungen im gleichem Zug weiter senden)
+ und für Dummies wird 'none' verwendet. Das wurde so gewählt, da dummy von vielen Usern als eine Art GUI-Schalterelement verwendet werden.
+ 'none' verhindert hier unter Umständen das Entstehen einer Endlosschleife der Nachrichten.
+
mqttDisable
- Wird dieses Attribut in einem Geraet gesetzt, wird dieses Geraet vom Versand bzw. Empfang der Readingswerten ausgeschlossen.
Beispiele
Bridge fuer alle moeglichen Geraete mit dem Standardprefix:
+
Bridge für alle möglichen Geräte mit dem Standardprefix:
defmod mqttGeneric MQTT_GENERIC_BRIDGE
attr mqttGeneric IODev mqtt
Bridge mit dem Prefix 'mqtt' fuer drei bestimmte Geraete: Bridge mit dem Prefix 'mqttSensors' fuer drei bestimmte Geräte:
- defmod mqttGeneric MQTT_GENERIC_BRIDGE mqtt sensor1,sensor2,sensor3
+
+ defmod mqttGeneric MQTT_GENERIC_BRIDGE mqttSensors sensor1,sensor2,sensor3
attr mqttGeneric IODev mqtt
Bridge fuer alle Geraete in einem bestimmten Raum:
+
Bridge für alle Geräte in einem bestimmten Raum:
defmod mqttGeneric MQTT_GENERIC_BRIDGE mqtt room=Wohnzimmer
attr mqttGeneric IODev mqtt
Einfachste Konfiguration eines Temperatursensors:
defmod sensor XXX
- attr sensor mqttPublish temperature:topic=/haus/sensor/temperature
Alle Readings eines Sensors (mit ihren Namen wie sie sind) per MQTT versenden:
+
Alle Readings eines Sensors (die Namen werden unverändet übergeben) per MQTT versenden:
defmod sensor XXX
- attr sensor mqttPublish *:topic={"/sensor/$reading"}
Topic-Definition nur fuer bestimmte Readings mit deren gleichzeitigen Umbennenung (Alias):
+
Topic-Definition nur für bestimmte Readings mit deren gleichzeitigen Umbennenung (Alias):
defmod sensor XXX
attr sensor mqttAlias temperature=temp humidity=hum
attr sensor mqttDefaults base={"/$device/$name"}
@@ -3700,31 +3720,31 @@ sub onmessage($$$) {
Beispiel fuer eine zentrale Konfiguration in der Bridge fuer alle Devices, die Reading 'temperature' besitzen:
+
Beispiel für eine zentrale Konfiguration in der Bridge für alle Devices, die Reading 'temperature' besitzen:
defmod mqttGeneric MQTT_GENERIC_BRIDGE
attr mqttGeneric IODev mqtt
attr mqttGeneric defaults sub:qos=2 pub:qos=0 retain=0
- attr mqttGeneric publish temperature:topic={"/haus/$device/$reading"}
+ attr mqttGeneric publish temperature:topic={"haus/$device/$reading"}
Beispiel fuer eine zentrale Konfiguration in der Bridge fuer alle Devices
- (wegen einer schlechten Uebersicht und einer unnoetig grossen Menge eher nicht zu empfehlen):
+
Beispiel für eine zentrale Konfiguration in der Bridge für alle Devices
+ (wegen einer schlechten Übersicht und einer unnötig grossen Menge eher nicht zu empfehlen!):
defmod mqttGeneric MQTT_GENERIC_BRIDGE
attr mqttGeneric IODev mqtt
attr mqttGeneric defaults sub:qos=2 pub:qos=0 retain=0
- attr mqttGeneric publish *:topic={"/haus/$device/$reading"}
Einschraenkungen:
+Einschränkungen: