From 1e9fa37d045609ae6c608a1b06444e5e61803387 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Mon, 21 Jan 2019 20:26:35 +0000 Subject: [PATCH] 10_MQTT2_DEVICE.pm: fix autocreate of strange topic strings (Forum #96189) git-svn-id: https://svn.fhem.de/fhem/trunk@18361 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_MQTT2_DEVICE.pm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/fhem/FHEM/10_MQTT2_DEVICE.pm b/fhem/FHEM/10_MQTT2_DEVICE.pm index 68b4f09d1..a607786e0 100644 --- a/fhem/FHEM/10_MQTT2_DEVICE.pm +++ b/fhem/FHEM/10_MQTT2_DEVICE.pm @@ -181,13 +181,17 @@ MQTT2_DEVICE_Parse($$) $add = ($1 ? $1 : $topic); } + $add = makeReadingName($add); # Convert non-valid characters to _ + $topic =~ s,([\^\$\[\]()\.\\]),\\$1,g; + for my $ch (@{$cidArr}) { my $nn = $ch->{NAME}; next if(!AttrVal($nn, "autocreate", 1)); my $rl = AttrVal($nn, "readingList", ""); $rl .= "\n" if($rl); - my $regexpCid = ($cid eq $newCid ? "$cid:" : ""); - CommandAttr(undef, "$nn readingList $rl${regexpCid}$topic:.* $add"); + my $regex = ($cid eq $newCid ? "$cid:" : "").$topic.":.*"; + CommandAttr(undef, "$nn readingList $rl$regex $add") + if(index($rl, $regex) == -1); # Forum #84372 setReadingsVal($defs{$nn}, "associatedWith", $parentBridge, TimeNow()) if($parentBridge); } @@ -502,6 +506,8 @@ JSEND } } +######################### +# Used for the graphical representation in Bridge devices. See Fn above. sub MQTT2_DEVICE_nlData($) {