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??
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.
@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 ...
@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.
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!
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!