2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 09:16:53 +00:00

10_MQTT2_DEVICE.pm: enable multiple readings for the same topic (Forum #97389)

git-svn-id: https://svn.fhem.de/fhem/trunk@18594 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2019-02-14 09:52:40 +00:00
parent c81dc5585d
commit 0f4e37ab0b

View File

@ -103,16 +103,18 @@ MQTT2_DEVICE_Parse($$)
next if(!("$topic:$value" =~ m/^$reAll$/s ||
"$cid:$topic:$value" =~ m/^$reAll$/s));
foreach my $dev (keys %{$dp->{$re}}) {
next if(IsDisabled($dev));
foreach my $key (keys %{$dp->{$re}}) {
my ($dev, $code2) = split(",",$key,2);
my $hash = $defs{$dev};
next if(!$hash);
next if(IsDisabled($dev));
my $reRepl = $re;
$reRepl =~ s/\$DEVICETOPIC/$hash->{DEVICETOPIC}/g;
next if(!("$topic:$value" =~ m/^$reRepl$/s ||
"$cid:$topic:$value" =~ m/^$reRepl$/s));
my @retData;
my $code = $dp->{$re}{$dev};
my $code = $dp->{$re}{$key};
Log3 $dev, 4, "MQTT2_DEVICE_Parse: $dev $topic => $code";
if($code =~ m/^{.*}$/s) {
@ -443,11 +445,13 @@ MQTT2_DEVICE_delReading($)
my ($name) = @_;
my $dp = $modules{MQTT2_DEVICE}{defptr}{re};
foreach my $re (keys %{$dp}) {
if($dp->{$re}{$name}) {
delete($dp->{$re}{$name});
foreach my $key (keys %{$dp->{$re}}) {
if($key =~ m/^$name,/) {
delete($dp->{$re}{$key});
delete($dp->{$re}) if(!int(keys %{$dp->{$re}}));
}
}
}
}
sub
@ -457,7 +461,8 @@ MQTT2_DEVICE_addReading($$)
MQTT2_DEVICE_delReading($name);
foreach my $line (split("\n", $param)) {
my ($re,$code) = split(" ", $line,2);
$modules{MQTT2_DEVICE}{defptr}{re}{$re}{$name} = $code if($re && $code);
$modules{MQTT2_DEVICE}{defptr}{re}{$re}{"$name,$code"} = $code
if($re && $code);
}
}