Hallo zusammen,
Die heutige Änderung (Changeset 18794) in MQTT2_CLIENT führt dazu, dass MQTT_GENERIC_BRIDGE nicht mehr funktioniert. Konkret: Bei allen Devices, die sich über MQTT_GENERIC_BRIDGE auf bestimmte Topics subscribed haben, kommt nichts mehr an.
Nimmt man in MQTT2_CLIENT die Änderung in Zeile 349 zurück, funktionieren auch wieder die Subscriptions über die bridge.
Von
Dispatch($hash, "autocreate=$ac\0$cid\0$tp\0$val", undef, $ac eq "no");
Nach
Dispatch($hash, "$ac$cid\0$tp\0$val", undef, !$ac);
Vermutlich hat man mit MQTT2_SERVER das identische Verhalten.
Mein Test Setup:
mosquitto + MQTT2_CLIENT + MQTT_GENERIC_BRIDGE + DUMMY
MQTT2_CLIENT
Internals:
BUF
DEF raspberrypi:1883
DeviceName raspberrypi:1883
FD 15
FUUID 5c7ebfd2-f33f-88d3-3595-6f35017b695721d3
NAME mqtt2
NR 31
PARTIAL
STATE opened
TYPE MQTT2_CLIENT
WBCallback
clientId sandboxpiMQTT2client
lastMsgTime 1551985642.17885
nextOpenDelay 5
READINGS:
2019-03-07 19:57:21 state opened
Attributes:
autocreate 0
clientId sandboxpi_MQTT2_client
disable 0
group MQTT
room MQTT2_DEVICE
subscriptions fhem/#
verbose 5
MQTT_GENERIC_BRIDGE
Internals:
DEF mqtt ftk.*,HM_Sirene.*
FUUID 5c7ec206-f33f-88d3-f5c0-a17eb58864159c90
IODev mqtt2
NAME MQTT2_bridge
NR 32
NTFY_ORDER 50-MQTT2_bridge
STATE dev: 1 in: 20 out: 0
TYPE MQTT_GENERIC_BRIDGE
devspec ftk.*,HM_Sirene.*
prefix mqtt
CHANGED:
incoming-count: 1
incoming-count: 2
incoming-count: 3
incoming-count: 4
incoming-count: 5
incoming-count: 6
incoming-count: 7
incoming-count: 8
incoming-count: 9
incoming-count: 10
incoming-count: 11
incoming-count: 12
incoming-count: 13
incoming-count: 14
incoming-count: 15
incoming-count: 16
incoming-count: 17
incoming-count: 18
incoming-count: 19
updated-reading-count: 1
incoming-count: 20
updated-reading-count: 2
READINGS:
2019-03-07 19:57:21 device-count 1
2019-03-07 20:01:48 incoming-count 20
2019-03-07 19:57:21 outgoing-count 0
2019-03-07 19:57:21 transmission-state IO device initialized (mqtt2)
2019-03-07 20:01:48 updated-reading-count 2
2019-03-07 19:57:21 updated-set-count 0
devices:
:global:
:defaults:
pub:base {"fhem/$device"}
pub:retain 0
sub:base {"fhem/$device"}
sub:retain 0
ftk_dummy:
:publish:
state:
mode R
retain 0
topic {"$base/$name"}
:subscribe:
HASH(0x2de7648)
globalDeviceExcludes:
globalReadingExcludes:
globalTypeExcludes:
pub:
FHEMWEB *
Global *
MQTT transmission-state
MQTT2_CLIENT *
MQTT2_DEVICE *
MQTT_BRIDGE transmission-state
MQTT_DEVICE transmission-state
MQTT_GENERIC_BRIDGE *
telnet *
sub:
FHEMWEB *
Global *
MQTT transmission-state
MQTT2_CLIENT *
MQTT2_DEVICE *
MQTT_BRIDGE transmission-state
MQTT_DEVICE transmission-state
MQTT_GENERIC_BRIDGE *
telnet *
subscribe:
Attributes:
IODev mqtt2
globalDefaults base={"fhem/$device"} retain=0
globalTypeExclude MQTT2_CLIENT MQTT2_DEVICE:*
group MQTT
room MQTT2_DEVICE
stateFormat dev: device-count in: incoming-count out: outgoing-count
verbose 5
DUMMY
Internals:
FUUID 5c7ec610-f33f-88d3-2750-0e2e92492160b941
LASTInputDev mqtt2
MSGCNT 2
NAME ftk_dummy
NR 33
STATE baf
TYPE dummy
mqtt2_MSGCNT 2
mqtt2_TIME 2019-03-07 20:01:48
READINGS:
2019-03-07 20:01:48 state baf
Attributes:
group MQTT
mqttPublish state:topic={"$base/$name"} state:retain=0
mqttSubscribe state:topic={"$base/$name/set"}
room MQTT2_DEVICE
userattr mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long
2019.03.07 20:13:15 5: mqtt2: received PUBLISH (0)(24)fhem/ftk_dummy/state/setfoobar
2019.03.07 20:13:15 5: mqtt2: dispatch autocreate=no\000sandboxpiMQTT2client\000fhem/ftk_dummy/state/set\000foobar
2019.03.07 20:13:15 5: MQTT_GENERIC_BRIDGE: [MQTT2_bridge] Parse (MQTT2_CLIENT : 'mqtt2'): Msg: sandboxpiMQTT2client => fhem/ftk_dummy/state/setfoobar
Neue Bridge-Version eingecheckt. Bitte testen.
Funktioniert, danke!