Modul-Konzeption: Generic MQTT Bridge

Begonnen von hexenmeister, 21 Dezember 2017, 22:35:38

Vorheriges Thema - Nächstes Thema

Shojo

So mal eine kleine Rückmeldung... :)

Aktuell werden bei mir 126 Topic´s Publish, läuft super stabil und es ist keine erhöhte Systemlast zu bemerken. 8)

Top weiter so! :)
FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

hexenmeister

#76
Nächte Version. Subscribe geht noch nicht (sorry). Dafür Publish dürfte komplett sein.
Neu:
- globale Publish-Definitionen in der Bridge für alle Devices (muss man wissen, was man tut, sonst erzeugt man u.U. eine Flut von Meldungen).
- exclude-Attribute zum Auschliessen vom Versand Geräten, Readings und Gerätetypen.

Vorläufige Doku:

# 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 befüllt.
# Es wird ein <a href="#MQTT">MQTT</a>-Gerät als IODev benötigt.
#
# Die (minimal) Konfiguration der Bridge selbst ist grundsätzlich sehr einfach.
#
# Definition:
#   Im einfachsten Fall reichen schon zwei Zeilen:
#     defmod mqttGeneric MQTT_GENERIC_BRIDGE [prefix] [devspec]
#     attr mqttGeneric IODev <MQTT-Device>
#   Alle Parameterim Define sind optional.
#   Der erste ist ein Prefix für die Steuerattribute, worüber die zu überwachende Geräte (s.u.)
#   konfiguriert werden. Dafaultwert ist 'mqtt'.
#   Wird dieser z.B. als 'hugo' redefiniert, heissen die Steuerungsattribute entsprechend hugoPublish etc.
#   Der zweite Parameter ('devspec') erlaubt die Menge der zu überwachenden Geräten
#   zu begrenzen (sonst werden einfach alle überwacht, was jedoch Performance kosten kann).
#   s.a. https://fhem.de/commandref_DE.html#devspec
#
# Attribute:
#   IODev
#     Dieses Attribut ist obligatorisch und muss den Namen einer funktionierenden MQTT-Modulinstanz beinhalten.
#
#   disable
#     Wert 1 deaktiviert die Bridge
#
#     Beispiel:
#       attr <dev> disable 1
#
#   globalDefaults
#     Definiert Defaults, die greifen, falls in dem jeweiligen Gerät definierte Werte nicht greifen. s.a. mqttDefaults.
#
#   globalAlias
#     Definiert Alias, die greifen, falls in dem jeweiligen Gerät definierte Werte nicht greifen. s.a. mqttAlias.
#
#   globalPublish
#     Definiert Topics für die Übertragung per MQTT. Sie greifen, falls in dem jeweiligen Gerät definierte Werte nicht greifen. s.a. mqttPublish.
#
#   globalTypeExclude
#     Definiert (Geräte)Typen und Readings, die nicht übertragen werden.
#     Ein einzelner Wert bedeutet, dass ein Gerätetyp mit diesem Namen komplett ignoriert wird (also für alle seine Readings).
#     Durch ein Doppelpunkt getrennte Paare werden als Type:Reading interptretiert.
#     Das Bedeutet, dass an dem gegebenen Type die genannte Reading nicht übertragen wird.
#     Ein Stern anstatt Type oder auch Reading bedeutet, dass alle Readings eines Geretätüps
#     bzw. genennte Readings an jeddem Gerätetyp ignoriert werden.
#
#     Beispiel:
#       attr <dev> globalTypeExclude MQTT MQTT_GENERIC_BRIDGE:* MQTT_BRIDGE:transmission-state *:baseID
#
#   globalDeviceExclude
#     Definiert Gerätenamen und Readings, die nicht übertragen werden.
#     Ein einzelner Wert bedeutet, dass ein Geräte mit diesem Namen komplett ignoriert wird (also für alle seine Readings).
#     Durch ein Doppelpunkt getrennte Paare werden als Device:Reading interptretiert.
#     Das Bedeutet, dass an dem gegebenen Gerät die genannte Reading nicht übertragen wird.
#
#     Beispiel:
#       attr <dev> globalDeviceExclude Test Bridge:transmission-state
#
#
# Für die überwachten Geräte wird die Liste der möglichen Attribute automatisch um mehrere weitere Einträge ergänzt,
# die alle mit vorher in der Bridge definierten Prefix anfangen. Über diese wird die eigentliche MQTT-Anbindung konfiguriert.
#
# Defaultmäßig werden folgende Attribute verwendet: mqttDefaults, mqttAlias, mqttPublish, mqttSubscribe.
# Sie haben folgende Bedeutung:
#   mqttDefaults
#     Hier wird eine Liste der "key=value"-Paare erwartet. Folgende Keys sind dabei möglich:
#       'qos' definiert ein Default für MQTT-Paramter 'Quality of Service'.
#       'retain' erlaubt MQTT-Nachrichten als 'retained messages' zu markieren.
#       'base' wird als Variable ($base) bei der Konfiguration von konkreten Topics zur Verfügung gestellt.
#              Sie kann entweder Text oder eine Perl-Expression enthalten.
#              Perl-Expression muss in Geschweifte Klammern eingeschlossen werden.
#              In einer Expression können Variablen  verwendet werden.
#              ($reading = Original-Readingname, $device = Devicename, $name = Readingalias (s. mqttAlias).
#              Ist keine Alias definiert, ist $name=$reading).
#
#     Alle diese werte können durch vorangestelle Prefixe ('pub:' oder 'sub') in ihrer Gültigkeit
#     nur auf das Senden bzw. Empfangen begrenzt werden. Werte für 'qos' und 'retain' werden nur verwendet,
#     wenn keine explizite Angaben darüber für ein konkretes Topic gemacht worden sind.
#
#     Beispiel:
#       attr <dev> mqttDefaults base={"/TEST/$device"} pub:qos=0 sub:qos=2 retain=0
#
#   mqttAlias
#     Dieses Attribut ermöglicht Readings unter einem anderen Namen auf MQTT-Topict zu mappen.
#     Nur sinnvoll, wenn Topicdefinitionen Perl-Expressions mit entsprechenden Variablen sind.
#     Auch hier werden 'pub:' und 'sub:' Prefixe unterstützt.
#
#     Beispiel:
#       attr <dev> mqttAlias pub:temperature=temp
#
#   mqttPublish
#     Hier werden konkrette Topics definiet und den Readings zugeordnet.
#     Weiterhin können diese einzeln mit 'qos'- und 'retain'-Flags versehen werden.
#     Topics können auch als Perl-Expression mit Veriablen definiert werden ($reading, $device, $name, $base).
#     Werte fuer 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 für alle Readings,
#     für die keine explizite Angaben gemacht worden.
#
#     Beispiel:
#       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
#
#   mqttSubscribe
#     Dieses Attribut konfiguriert das Empfangen der MQTT-Nachrichten und deren Mapping auf die Attribute.
#     Die Konfiguration entspricht der für das 'mqttPublish'-Attribut.
#
#     Beispiel:
#       TODO
#
#   mqttIgnore
#     Wird dieses Attribut in einem Gerät gesetzt, wird dieses Geraet vom Versand der Readingswerten ausgeschlossen.
#
#   Beispiele:
#     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' für drei bestimmte Geräte:
#       defmod mqttGeneric MQTT_GENERIC_BRIDGE mqtt sensor1,sensor2,sensor3
#       attr mqttGeneric IODev mqtt
#
#     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:
#       defmod sensor XXX
#       attr sensor mqttPublish *:topic={"/sensor/$reading"}
#     
#     Topicsdefinition mit Auslagerung von dem gemeinsamen Teilnamen in 'base'-Variable:
#       defmod sensor XXX
#       attr sensor mqttDefaults base={"/$device/$reading"}
#       attr sensor mqttPublish *:topic={$base}
#
#     Topicsdefinition 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"}
#       attr sensor mqttPublish temperature:topic={$base} humidity:topic={$base}
#
#
#   Beispiel für eine zentralle 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"}
#
#   Beispiel für eine zentralle Konfiguration in der Bridge für alle Devices
#   (wegen schlechter Übersicht und einer unnötig großen 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"}
#     
#
#   TODOs
#   - Subscribe ist noch nicht implementiert.
#   - damit beim Reconnect Subscriptions sauber wieder augebaut werden, ist ein Patch für IO (00_MQTT) notwendig (client_start und client_stop weiterreichen).

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Shojo

Zitat von: hexenmeister am 05 März 2018, 00:04:44
#   Beispiel für eine zentralle 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"}

Ist es hier auch möglich per Regex auf Devices zu beschränken?


attr mqttGeneric publish .*/.Licht/..*:state:topic={"/haus/$device/$reading"} temperature:topic:topic={"/haus/$device/$reading"}
 
FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

hexenmeister

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

hexenmeister

Kann man später überlegen, und wenn das Vorhandene nicht ausreicht, vlt. um Filter mit devspec ergänzen. Erstmal möchte ich mich aufs 'subscribe' konzentrieren.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Shojo

FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

carlos

Hallo,
Bei mir funktioniert das Ganze nur teilweise.
Ich beschreibe mal meine Konfig:

Internals:
   .initialized 1
   DEF        TYPE=FBDECT,TYPE=CUL_HM,TYPE=CUL_TCM97001,TYPE=LaCrosse
   IODev      mqtt_ds916
   NAME       mqttGeneric
   NR         1477
   NTFY_ORDER 50-mqttGeneric
   STATE      outgoing publish sent
   TYPE       MQTT_GENERIC_BRIDGE
   devspec    .*
   prefix     mqtt
   prefix_old
   .attraggr:
   .attrminint:
   READINGS:
     2018-03-08 09:59:08   transmission-state outgoing publish sent
   devices:
     :global:
       :publish:
     FBDECT_fbahahttp_08761_0003236:
       :defaults:
         pub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
         sub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
       :publish:
         *:
           topic      {$base}
     FBDECT_fbahahttp_24_65_11_C1_A7_05:
       :defaults:
         pub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
         sub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
       :publish:
         *:
           topic      {$base}
     LaCrosse_00:
       :defaults:
         pub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
         sub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
       :publish:
         *:
           topic      {$base}
     NC_WS_87:
       :defaults:
         pub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
         sub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
       :publish:
         humidity:
           topic      {$base}
         temperature:
           topic      {$base}
     bz_Thermostat_Clima:
       :defaults:
         pub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
         sub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
       :publish:
         *:
           topic      {$base}
     ez_Thermostat_Clima:
       :defaults:
         pub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
         sub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
       :publish:
         *:
           topic      {$base}
     fz_Thermostat_Clima:
       :defaults:
         pub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
         sub:base   {"/".AttrVal($device,'room','')."/$device/$reading"}
       :publish:
         *:
           topic      {$base}
   globalDeviceExcludes:
   globalReadingExcludes:
   globalTypeExcludes:
     FHEMWEB    *
     Global     *
     MQTT       transmission-state
     MQTT_BRIDGE transmission-state
     MQTT_DEVICE transmission-state
     MQTT_GENERIC_BRIDGE *
     telnet     *
   message_ids:
   subscribe:
   subscribeExpr:
Attributes:
   IODev      mqtt_ds916
   icon       mqtt
   room       MQTT
   stateFormat transmission-state

Am Beispiel der FBDECT device sollten doch alle readings kommen.
Es kommen aber nur bei dem einen alle readings, bei dem 2. nur 3 oder 2 oder gar nur 1 reading:


/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/power 0.00 W                                                                                                                     
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/FBNAME FP546E                                                                                                                   
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/locked no                                                                                                                       
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/FBPROP powerMeter,switch                                                                                                         
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/devicelock no                                                                                                                   
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/ID 20000                                                                                                                         
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/mode manuell                                                                                                                     
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/fwversion 06.92                                                                                                                 
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/state off                                                                                                                       
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/FBTYPE FRITZ!Powerline 546E                                                                                                     
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/AIN 24:65:11:C1:A7:05                                                                                                           
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/present yes                                                                                                                     
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/energy 913889 Wh                                                                                                                 
/Alexa,FBDECT/FBDECT_fbahahttp_08761_0003236/power 0.00 W                                                                                                                                         
/Alexa,FBDECT/FBDECT_fbahahttp_08761_0003236/temperature 15.0 C (measured)                                                                                                                       
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/ID 20000                                                                                                                         
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/fwversion 06.92                                                                                                                 
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/mode manuell                                                                                                                     
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/state off                                                                                                                       
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/FBTYPE FRITZ!Powerline 546E                                                                                                     
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/present yes                                                                                                                     
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/AIN 24:65:11:C1:A7:05                                                                                                           
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/energy 913889 Wh                                                                                                                 
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/FBNAME FP546E                                                                                                                   
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/power 0.00 W                                                                                                                     
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/locked no                                                                                                                       
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/FBPROP powerMeter,switch                                                                                                         
/40_Schlafzimmer,Alexa,FBDECT/FBDECT_fbahahttp_24_65_11_C1_A7_05/devicelock no                                                                                                                   
/Alexa,FBDECT/FBDECT_fbahahttp_08761_0003236/power 0.00 W                   


Desweiteren wird bei den HM Thermostaten das state reading nicht richtig übermittelt. Es fehlt das reading state im topic:

/CUL_HM,70_Fernsehzimmer/fz_Thermostat_Clima/ValvePosition 0                                                                                                                                     
/CUL_HM,70_Fernsehzimmer/fz_Thermostat_Clima/boostTime -                                                                                                                                         
/CUL_HM,70_Fernsehzimmer/fz_Thermostat_Clima/controlMode auto                                                                                                                                     
/CUL_HM,70_Fernsehzimmer/fz_Thermostat_Clima/desired-temp 21.0                                                                                                                                   
/CUL_HM,70_Fernsehzimmer/fz_Thermostat_Clima/measured-temp 23.7                                                                                                                                   
/CUL_HM,70_Fernsehzimmer/fz_Thermostat_Clima/partyEnd -                                                                                                                                           
/CUL_HM,70_Fernsehzimmer/fz_Thermostat_Clima/partyStart -                                                                                                                                         
/CUL_HM,70_Fernsehzimmer/fz_Thermostat_Clima/partyTemp -                                                                                                                                         
/CUL_HM,70_Fernsehzimmer/fz_Thermostat_Clima/T 23.7 desired: 21.0 valve: 0                                                                                                                       


Gruß

Carlos



FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

hexenmeister

Bei State könnte ich mir denken, wo der Fehler liegen könnte. Das andere ist nicht logisch. Sagt mir erstmal nichts. Die Bridge behandelt alles Devices gleich. Sind an dem anderen FBDECT vielleicht mittels event-on-change-... die Notifies lahmgelegt?
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

carlos

#83
Ich habe dir noch ein list der beiden devices angehängt.
Bei dem habe ich sogar ein event-on-change-reading drin.
Liegts vielleicht daran?

Internals:
   .lastTimepower 1520509794.58204
   CFGFN      /opt/fhem/FHEM/fhem.fb.cfg
   DEF        fbahahttp:08761_0003236 powerMeter,tempSensor,switch
   IODev      fbahahttp
   LASTInputDev fbahahttp
   MSGCNT     59
   NAME       FBDECT_fbahahttp_08761_0003236
   NR         243
   STATE      State:on, Power: 0.00 W,Temp: 16.0 C (measured)
   TYPE       FBDECT
   fbahahttp_MSGCNT 59
   fbahahttp_TIME 2018-03-08 12:49:54
   id         08761_0003236
   props      powerMeter,tempSensor,switch
   .attraggr:
   .attreocr:
     .*
   .attrminint:
     power:120
   READINGS:
     2018-03-08 12:49:54   AIN             08761 0003236
     2018-03-08 12:49:54   FBNAME          FRITZ!DECT 200 #1
     2018-03-08 12:49:54   FBPROP          powerMeter,tempSensor,switch
     2018-03-08 12:49:54   FBTYPE          FRITZ!DECT 200
     2018-03-08 12:49:54   ID              16
     2018-03-08 12:49:54   devicelock      no
     2018-03-08 12:49:54   energy          626949 Wh
     2018-03-08 12:49:54   fwversion       03.87
     2018-03-08 12:49:54   locked          no
     2018-03-08 12:49:54   mode            manuell
     2018-03-08 12:49:54   power           0.00 W
     2018-03-08 12:49:54   present         yes
     2018-03-08 12:49:54   state           on
     2018-03-08 12:49:54   tempadjust      0.0 C
     2018-03-08 12:49:54   temperature     16.0 C (measured)
Attributes:
   IODev      fbahahttp
   alexaName  WaschmaschinenDose
   alexaRoom  Abstellraum
   alias      WaschmaschinenDose
   event-min-interval power:120
   event-on-change-reading .*
   genericDeviceType thermometer
   icon       scene_washing_machine
   mqttDefaults base={"/".AttrVal($device,'room','')."/$device/$reading"}
   mqttPublish *:topic={$base}
   room       Alexa,FBDECT
   stateFormat State:state, Power: power,Temp: temperature


Internals:
   .lastTimepower 1520509794.35641
   CFGFN      /opt/fhem/FHEM/fhem.fb.cfg
   DEF        fbahahttp:24_65_11_C1_A7_05 powerMeter,switch
   IODev      fbahahttp
   LASTInputDev fbahahttp
   MSGCNT     59
   NAME       FBDECT_fbahahttp_24_65_11_C1_A7_05
   NR         249
   STATE      State:off Power: 0.00 W
   TYPE       FBDECT
   fbahahttp_MSGCNT 59
   fbahahttp_TIME 2018-03-08 12:49:54
   id         24_65_11_C1_A7_05
   props      powerMeter,switch
   .attraggr:
   .attrminint:
     power:120
   READINGS:
     2018-03-08 12:49:54   AIN             24:65:11:C1:A7:05
     2018-03-08 12:49:54   FBNAME          FP546E
     2018-03-08 12:49:54   FBPROP          powerMeter,switch
     2018-03-08 12:49:54   FBTYPE          FRITZ!Powerline 546E
     2018-03-08 12:49:54   ID              20000
     2018-03-08 12:49:54   devicelock      no
     2018-03-08 12:49:54   energy          913889 Wh
     2018-03-08 12:49:54   fwversion       06.92
     2018-03-08 12:49:54   locked          no
     2018-03-08 12:49:54   mode            manuell
     2018-03-08 12:49:54   power           0.00 W
     2018-03-08 12:49:54   present         yes
     2018-03-08 12:49:54   state           off
Attributes:
   IODev      fbahahttp
   alexaName  SchlafzimmerFernseher
   alexaRoom  Schlafzimmer
   alias      Schlafzimmer TV
   event-min-interval power:120
   genericDeviceType switch
   icon       ge_wht_steckdose
   mqttDefaults base={"/".AttrVal($device,'room','')."/$device/$reading"}
   mqttPublish *:topic={$base}
   room       40_Schlafzimmer,Alexa,FBDECT
   stateFormat State:state Power: power



Edit: Tatsächlich attribut gelöst und es geht.

Gruß

Carlos
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

hexenmeister

Ja, logisch. Die GenericBridge bekommt (FHEM-typisch) eine Benachrichtigung, wenn ein Event getriggert wird. Mit dem event-on-change unterbindest Du alle Events, die zu keiner Änderung führen, zusätzlich hast Du auch die Häufigkeit begrenzt. Es wird schon auch so funktionieren, die Werte kommen halt erst wenn sie zum ersten Mal geändert werden.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

kumue

ich habe das Modul in der version 0.2.1 by hexenmeister laufen.
Beim Setzten des Attributes mqttDefaults bekomme ich die FM:
this attribute is not allowed here
Wieso nicht ?

Master_Nick

 ;) Bitte mal etwas mehr Info.

- Wo willst du es setzen?
- List vom Device?
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

hexenmeister

Du hast die Bridge so konfiguriert, dass sie alle Geräte erfasst, auch sich selbst. Also (über Global) bekommt sie leider auch diese Attrbute, die jedoch nur für die von Ihr überwachte Geräte gedacht sind. Daher sind sie hier nicht erlaubt. Für die Global-Dafaults geibt es entsprechende globalDefault Attribute.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

kumue

Zitat von: hexenmeister am 08 März 2018, 22:54:02
Du hast die Bridge so konfiguriert, dass sie alle Geräte erfasst, auch sich selbst. Also (über Global) bekommt sie leider auch diese Attrbute, die jedoch nur für die von Ihr überwachte Geräte gedacht sind. Daher sind sie hier nicht erlaubt. Für die Global-Dafaults geibt es entsprechende globalDefault Attribute.
Alles klar, verstehe.
Danke und Gruß

LuBeDa

Habe mal eine Frage/Idee zur geplanten Entwicklung zum "subscriben".

Macht das subscriben von Readings überhaupt Sinn?
Zwar kann man mit setreading Werte von FHEM Geräte setzen aber üblicherweise steuert man seine Geräte doch mit set.

haus-automatisierung.com macht das in seinem Video https://www.youtube.com/watch?v=mlbHKofniNU so dass er den kompletten FHEM-Befehl übergibt.

Dadurch kann er auch andere Befehle wie update all etc. übergeben. Dann muss beim Sender (z.B. Node-Red) die Logik zum Zusammenbau der Steuerbefehle liegen.

@Hexenmeister: Hast du da schon einen Ansatz? Habe ich etwas übersehen?