(Verständnis)Probleme mit MQTT_GENERIC_BRIDGE

Begonnen von Mitch, 11 September 2020, 14:53:46

Vorheriges Thema - Nächstes Thema

Mitch

Hallo Zusammen,

ich habe ein (Verständnis)Probleme mit MQTT_GENERIC_BRIDGE.

Ich habe das so verstanden, dass man damit topics weiterleiten bzw. nicht MQTT Devices auch entsprechend "rausgeben" kann.

In fhem habe ich schon länger einiges an MQTT, geht auch ohne Probleme.
Läuft über den MQTT2_SERVER.
Internals:
   CONNECTS   36
   DEF        1884 global
   FD         13
   FUUID      5c433a93-f33f-5738-2768-0654c36e1b20da8b
   FVERSION   00_MQTT2_SERVER.pm:0.225940/2020-08-13
   NAME       myBroker
   NR         544
   PORT       1884
   STATE      Initialized
   TYPE       MQTT2_SERVER
   READINGS:
     2020-09-11 12:56:44   RETAIN          {"ebusd/global/running":"true","ebusd/global/signal":"true","ebusd/global/updatecheck":"\u0022revision v3.4 available\u0022","ebusd/global/version":"\u0022ebusd 3.4.v3.3-51-g57eae05\u0022","tele/kellerheizung/LWT":"Online","tele/klingel/LWT":"Offline","tele/kuehlschrank/LWT":"Online","tele/mopedlader/LWT":"Online","tele/outlander/LWT":"Online","tele/rackluefter/LWT":"Online","tele/sonoff-3522/LWT":"Online","tele/tasmota/LWT":"Online","tele/tasmota_DF677B/LWT":"Online","tele/trockner/LWT":"Online","tele/wohndose/LWT":"Offline"}
     2020-09-11 14:29:03   nrclients       11
     2020-09-11 12:55:46   state           Initialized
   clients:
     myBroker_192.168.0.155_57797 1
     myBroker_192.168.0.186_18403 1
     myBroker_192.168.0.188_50632 1
     myBroker_192.168.0.189_50124 1
     myBroker_192.168.0.196_49772 1
     myBroker_192.168.0.197_49713 1
     myBroker_192.168.0.48_63907 1
     myBroker_192.168.0.53_57892 1
     myBroker_192.168.0.62_57051 1
     myBroker_192.168.0.8_34984 1
     myBroker_192.168.0.95_51524 1
   retain:
     ebusd/global/running:
       ts         1599821803.84356
       val        true
     ebusd/global/signal:
       ts         1599821803.67838
       val        true
     ebusd/global/updatecheck:
       ts         1599821769.45049
       val        "revision v3.4 available"
     ebusd/global/version:
       ts         1599821803.81956
       val        "ebusd 3.4.v3.3-51-g57eae05"
     tele/kellerheizung/LWT:
       ts         1599821769.45049
       val        Online
     tele/klingel/LWT:
       ts         1599821769.45049
       val        Offline
     tele/kuehlschrank/LWT:
       ts         1599821804.41145
       val        Online
     tele/mopedlader/LWT:
       ts         1599821804.285
       val        Online
     tele/outlander/LWT:
       ts         1599821804.26283
       val        Online
     tele/rackluefter/LWT:
       ts         1599821804.40522
       val        Online
     tele/sonoff-3522/LWT:
       ts         1599821804.31865
       val        Online
     tele/tasmota/LWT:
       ts         1599821804.418
       val        Online
     tele/tasmota_DF677B/LWT:
       ts         1599821804.36632
       val        Online
     tele/trockner/LWT:
       ts         1599821804.20992
       val        Online
     tele/wohndose/LWT:
       ts         1599821769.45049
       val        Offline
Attributes:
   DbLogExclude .*
   autocreate complex
   group      Zentrale
   icon       mqtt
   room       Zentrale
   verbose    0


Jetzt habe ich die Bridge eingerichtet und möchte damit ein Device publishen:

Internals:
   DEF        mqtt room=homeio
   FUUID      5c433a92-f33f-5738-fdfd-432d50910ec53d4a
   FVERSION   10_MQTT_GENERIC_BRIDGE.pm:v1.2.6-s19737/2019-06-28
   IODev      myBroker
   NAME       mqttGeneric
   NR         509
   NTFY_ORDER 50-mqttGeneric
   STATE      outgoing publish sent
   TYPE       MQTT_GENERIC_BRIDGE
   devspec    room=homeio
   prefix     mqtt
   CHANGED:
     incoming-count: 3360
     incoming-count: 3361
     incoming-count: 3362
     incoming-count: 3363
     incoming-count: 3364
     incoming-count: 3365
     incoming-count: 3366
     incoming-count: 3367
     incoming-count: 3368
     incoming-count: 3369
     incoming-count: 3370
     incoming-count: 3371
     incoming-count: 3372
     incoming-count: 3373
     incoming-count: 3374
     incoming-count: 3375
     incoming-count: 3376
     incoming-count: 3377
     incoming-count: 3378
     incoming-count: 3379
     incoming-count: 3380
     incoming-count: 3381
     incoming-count: 3382
     incoming-count: 3383
     incoming-count: 3384
     incoming-count: 3385
     incoming-count: 3386
     incoming-count: 3387
   READINGS:
     2020-09-11 14:43:21   device-count    1
     2020-09-11 14:49:26   incoming-count  3387
     2020-09-11 14:48:21   outgoing-count  160
     2020-09-11 14:48:21   transmission-state outgoing publish sent
     2020-09-11 13:25:20   updated-reading-count 0
     2020-09-11 13:25:20   updated-set-count 0
   devices:
     :global:
       :publish:
         *:
           mode       R
           topic      {"/qfhome/$device/$reading"}
     Hydra_C1:
       :publish:
         *:
           mode       R
           topic      {"/qfhome/$device/$reading"}
   globalDeviceExcludes:
   globalReadingExcludes:
   globalTypeExcludes:
     pub:
       FHEMWEB    *
       Global     *
       MQTT       transmission-state
       MQTT_BRIDGE transmission-state
       MQTT_DEVICE transmission-state
       MQTT_GENERIC_BRIDGE *
       telnet     *
     sub:
       FHEMWEB    *
       Global     *
       MQTT       transmission-state
       MQTT_BRIDGE transmission-state
       MQTT_DEVICE transmission-state
       MQTT_GENERIC_BRIDGE *
       telnet     *
Attributes:
   DbLogExclude .*
   IODev      myBroker
   event-on-change-reading .*
   globalPublish *:topic={"/qfhome/$device/$reading"}
   stateFormat transmission-state
   verbose    0


Das ganze soll von HASS empfangen werden, aber da kommt nichts an?!

Wo ist denn mein (Denk)Fehler??
FHEM im Proxmox Container

Beta-User

Hmm, also ... irgendwie hatte ich im Hinterkopf, dass das mit dem globalPublish wohl mal irgendwie angedacht war, aber praktisch nicht funktioniert...?

Habe zwar keine allzugroße Erfahrung mit MGB, aber wenn, dann die publish-Einstellungen bei dem/n jeweiligen Gerät/en vorgenommen, das/die "rausgegeben" werden soll/en.

Versuch's mal so rum und liefere ggf. mal ein list von dem betreffenden weiteren Device.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

OdfFhem

@Mitch

"Global" lege ich nur Einstellungen fest, die für alle gleich sein sollen. Dies mündet bei mir derzeit in einer einzigen Einstellung in der MQTT_GENERIC_BRIDGE:

attr myMGB globalDefaults base=SH/MGB


In jedem zu berücksichtigenden Gerät lege ich dann die individuellen publish- bzw. subscribe-Einstellungen fest - beispielsweise:

attr irgendeinDevice mqttPublish bri|onoff|reachable|rgb:topic={"$base/$device/$name"} bri|onoff|reachable|rgb:retain=1
attr irgendeinDevice mqttSubscribe bri|rgb|state:stopic={"$base/$device/$reading/set"}



Vielleicht hilft bei Dir schon eine kleine topic-Anpassung, da ich kein Topic mit führendem "/" kenne ... der "/" dient eigentlich nur zum Trennen der Topic-Ebenen ...

Billy

@Mitch
Stell doch mal die raw Definition deiner generic bridge hier ein und von dem device das du
An die GBR hängen willst.
Ich habe ca. 30 device daran hängen und keine Probleme.
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Mitch

Hier das Device:

defmod Hydra_C1 CUL_HM 283A9D01
attr Hydra_C1 userattr Licht Licht_map Wohnzimmer Wohnzimmer_map mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long structexclude
attr Hydra_C1 DbLogExclude .*
attr Hydra_C1 Licht Lichter
attr Hydra_C1 Wohnzimmer Lichter.WZ
attr Hydra_C1 alias Hydra
attr Hydra_C1 event-on-change-reading .*
attr Hydra_C1 genericDeviceType light
attr Hydra_C1 group Licht Wohnbereich
attr Hydra_C1 icon light_floor_lamp
attr Hydra_C1 model HM-ES-PMSW1-PL
attr Hydra_C1 mqttPublish onoff:topic={"$base/$device/$name"}
attr Hydra_C1 peerIDs 00000000,
attr Hydra_C1 room homeio,Homekit,Wohnzimmer
attr Hydra_C1 verbose 0


und hier die Bridge:

defmod mqttGeneric MQTT_GENERIC_BRIDGE mqtt room=homeio
attr mqttGeneric DbLogExclude .*
attr mqttGeneric IODev myBroker
attr mqttGeneric event-on-change-reading .*
attr mqttGeneric globalDefaults base=qfhome
attr mqttGeneric globalPublish .*:topic={"$base/$device/$name"}
attr mqttGeneric stateFormat transmission-state
attr mqttGeneric verbose 0


Danke schonmal!
FHEM im Proxmox Container

Billy

Also ich arbeite mit den globals nicht, sonder passe mich dem an was ich individuell brauche.

Aus meiner Sicht müsstest du wie folgt ändern:

Bridge statt room=homeio --> Device name Hydra_C1  --> und globalDefaults base=qfhome

defmod mqttGeneric MQTT_GENERIC_BRIDGE mqtt Hydra_C1
attr mqttGeneric DbLogExclude .*
attr mqttGeneric IODev myBroker
attr mqttGeneric event-on-change-reading .*
attr mqttGeneric globalDefaults base=qfhome
attr mqttGeneric stateFormat transmission-state
attr mqttGeneric verbose 0


Device: Mit mqttPublish *:topic={"$base/$device/$name"} müssten alle Readings gepublished werden.

defmod Hydra_C1 CUL_HM 283A9D01
attr Hydra_C1 userattr Licht Licht_map Wohnzimmer Wohnzimmer_map mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long structexclude
attr Hydra_C1 DbLogExclude .*
attr Hydra_C1 Licht Lichter
attr Hydra_C1 Wohnzimmer Lichter.WZ
attr Hydra_C1 alias Hydra
attr Hydra_C1 event-on-change-reading .*
attr Hydra_C1 genericDeviceType light
attr Hydra_C1 group Licht Wohnbereich
attr Hydra_C1 icon light_floor_lamp
attr Hydra_C1 model HM-ES-PMSW1-PL
attr Hydra_C1 mqttPublish *:topic={"$base/$device/$name"}
attr Hydra_C1 peerIDs 00000000,
attr Hydra_C1 room homeio,Homekit,Wohnzimmer
attr Hydra_C1 verbose 0


probier mal was passiert!
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*