mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-07 22:29:19 +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:
parent
c81dc5585d
commit
0f4e37ab0b
@ -103,16 +103,18 @@ MQTT2_DEVICE_Parse($$)
|
|||||||
|
|
||||||
next if(!("$topic:$value" =~ m/^$reAll$/s ||
|
next if(!("$topic:$value" =~ m/^$reAll$/s ||
|
||||||
"$cid:$topic:$value" =~ m/^$reAll$/s));
|
"$cid:$topic:$value" =~ m/^$reAll$/s));
|
||||||
foreach my $dev (keys %{$dp->{$re}}) {
|
foreach my $key (keys %{$dp->{$re}}) {
|
||||||
next if(IsDisabled($dev));
|
my ($dev, $code2) = split(",",$key,2);
|
||||||
my $hash = $defs{$dev};
|
my $hash = $defs{$dev};
|
||||||
|
next if(!$hash);
|
||||||
|
next if(IsDisabled($dev));
|
||||||
my $reRepl = $re;
|
my $reRepl = $re;
|
||||||
$reRepl =~ s/\$DEVICETOPIC/$hash->{DEVICETOPIC}/g;
|
$reRepl =~ s/\$DEVICETOPIC/$hash->{DEVICETOPIC}/g;
|
||||||
next if(!("$topic:$value" =~ m/^$reRepl$/s ||
|
next if(!("$topic:$value" =~ m/^$reRepl$/s ||
|
||||||
"$cid:$topic:$value" =~ m/^$reRepl$/s));
|
"$cid:$topic:$value" =~ m/^$reRepl$/s));
|
||||||
|
|
||||||
my @retData;
|
my @retData;
|
||||||
my $code = $dp->{$re}{$dev};
|
my $code = $dp->{$re}{$key};
|
||||||
Log3 $dev, 4, "MQTT2_DEVICE_Parse: $dev $topic => $code";
|
Log3 $dev, 4, "MQTT2_DEVICE_Parse: $dev $topic => $code";
|
||||||
|
|
||||||
if($code =~ m/^{.*}$/s) {
|
if($code =~ m/^{.*}$/s) {
|
||||||
@ -443,9 +445,11 @@ MQTT2_DEVICE_delReading($)
|
|||||||
my ($name) = @_;
|
my ($name) = @_;
|
||||||
my $dp = $modules{MQTT2_DEVICE}{defptr}{re};
|
my $dp = $modules{MQTT2_DEVICE}{defptr}{re};
|
||||||
foreach my $re (keys %{$dp}) {
|
foreach my $re (keys %{$dp}) {
|
||||||
if($dp->{$re}{$name}) {
|
foreach my $key (keys %{$dp->{$re}}) {
|
||||||
delete($dp->{$re}{$name});
|
if($key =~ m/^$name,/) {
|
||||||
delete($dp->{$re}) if(!int(keys %{$dp->{$re}}));
|
delete($dp->{$re}{$key});
|
||||||
|
delete($dp->{$re}) if(!int(keys %{$dp->{$re}}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -457,7 +461,8 @@ MQTT2_DEVICE_addReading($$)
|
|||||||
MQTT2_DEVICE_delReading($name);
|
MQTT2_DEVICE_delReading($name);
|
||||||
foreach my $line (split("\n", $param)) {
|
foreach my $line (split("\n", $param)) {
|
||||||
my ($re,$code) = split(" ", $line,2);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user