diff --git a/fhem/FHEM/00_MQTT2_CLIENT.pm b/fhem/FHEM/00_MQTT2_CLIENT.pm index b85b57b65..4fc53f78b 100644 --- a/fhem/FHEM/00_MQTT2_CLIENT.pm +++ b/fhem/FHEM/00_MQTT2_CLIENT.pm @@ -399,6 +399,9 @@ MQTT2_CLIENT_Write($$$) { my ($hash, $function, $topicMsg) = @_; + return "Ignoring the message as $hash->{NAME} is not yet connected" + if($hash->{connecting}); + if($function eq "publish") { my ($topic, $msg) = split(" ", $topicMsg, 2); my $retain; @@ -416,6 +419,7 @@ MQTT2_CLIENT_Write($$$) my $name = $hash->{NAME}; Log3 $name, 1, "$name: ERROR: Ignoring function $function"; } + return undef; } sub diff --git a/fhem/FHEM/00_MQTT2_SERVER.pm b/fhem/FHEM/00_MQTT2_SERVER.pm index 1d7b7f839..b7c24298e 100644 --- a/fhem/FHEM/00_MQTT2_SERVER.pm +++ b/fhem/FHEM/00_MQTT2_SERVER.pm @@ -476,6 +476,7 @@ MQTT2_SERVER_Write($$$) } else { Log3 $name, 1, "$name: ERROR: Ignoring function $function"; } + return undef; } sub diff --git a/fhem/FHEM/10_MQTT2_DEVICE.pm b/fhem/FHEM/10_MQTT2_DEVICE.pm index 53ebba042..68b4f09d1 100644 --- a/fhem/FHEM/10_MQTT2_DEVICE.pm +++ b/fhem/FHEM/10_MQTT2_DEVICE.pm @@ -203,7 +203,9 @@ MQTT2_DEVICE_Parse($$) return ""; } - return keys %fnd; + my @ret = keys %fnd; + unshift(@ret, "[NEXT]"); # for MQTT_GENERIC_BRIDGE + return @ret; } # compatibility: the first version was implemented as MQTT2_JSON and published. diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 694122748..c486e3600 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -3871,10 +3871,18 @@ Dispatch($$;$$) } no strict "refs"; $readingsUpdateDelayTrigger = 1; - @found = &{$modules{$m}{ParseFn}}($hash,$dmsg); + my @tfound = &{$modules{$m}{ParseFn}}($hash,$dmsg); use strict "refs"; $readingsUpdateDelayTrigger = 0; $parserMod = $m; - last if(int(@found)); + if(@tfound && $tfound[0]) { + if($tfound[0] && $tfound[0] eq "[NEXT]") { # not a goodDeviceName, #95446 + shift(@tfound); + push @found, @tfound; # continue feeding other modules + } else { + push @found, @tfound; + last; + } + } } if((!int(@found) || !defined($found[0])) && !$nounknown) {