From a6c589ae382d856cb0a9d6fd05e119b0696a2cfc Mon Sep 17 00:00:00 2001 From: hexenmeister Date: Tue, 19 Jan 2021 22:06:12 +0000 Subject: [PATCH] bugfix : fix parse loop over MGB instances for the same IODev (MQTT2-IO only) git-svn-id: https://svn.fhem.de/fhem/trunk@23559 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_MQTT_GENERIC_BRIDGE.pm | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/fhem/FHEM/10_MQTT_GENERIC_BRIDGE.pm b/fhem/FHEM/10_MQTT_GENERIC_BRIDGE.pm index 0d869834e..1c95a3385 100644 --- a/fhem/FHEM/10_MQTT_GENERIC_BRIDGE.pm +++ b/fhem/FHEM/10_MQTT_GENERIC_BRIDGE.pm @@ -32,6 +32,7 @@ # # 19.01.2021 1.2.9 # improvement: increment 'incoming-count' only if at least one device is affected +# bugfix : fix parse loop over MGB instances for the same IODev (MQTT2-IO only) # # # 19.01.2021 1.2.9 @@ -2788,6 +2789,7 @@ sub Parse($$) { my ($cid, $topic, $value) = split("\0", $msg, 3); my @instances = devspec2array("TYPE=MQTT_GENERIC_BRIDGE"); + my @ret=(); foreach my $dev (@instances) { my $hash = $defs{$dev}; # Name mit IODev vegleichen @@ -2804,15 +2806,18 @@ sub Parse($$) { # unshift(@ret, "[NEXT]"); # damit weitere Geraetemodule ggf. aufgerufen werden # return @ret; my $fret = onmessage($hash, $topic, $value); - return ("[NEXT]") unless defined $fret; + next unless defined $fret; if( ref($fret) eq 'ARRAY' ) { - my @ret=@{$fret}; - unshift(@ret, "[NEXT]"); # damit weitere Geraetemodule ggf. aufgerufen werden - return @ret; + push (@ret, @{$fret}); + #my @ret=@{$fret}; + #unshift(@ret, "[NEXT]"); # damit weitere Geraetemodule ggf. aufgerufen werden + #return @ret; + } else { + Log3($hash->{NAME},1,"MQTT_GENERIC_BRIDGE: [$hash->{NAME}] Parse ($iiodt : '$ioname'): internal error: onmessage returned an unexpected value: ".$fret); } - Log3($hash->{NAME},1,"MQTT_GENERIC_BRIDGE: [$hash->{NAME}] Parse ($iiodt : '$ioname'): internal error: onmessage returned an unexpected value: ".$fret); - return ("[NEXT]"); } + unshift(@ret, "[NEXT]"); # damit weitere Geraetemodule ggf. aufgerufen werden + return @ret; } # Routine MQTT-Message Callback