diff --git a/fhem/FHEM/00_MQTT2_CLIENT.pm b/fhem/FHEM/00_MQTT2_CLIENT.pm index 867e548c7..8f6ec4ff3 100644 --- a/fhem/FHEM/00_MQTT2_CLIENT.pm +++ b/fhem/FHEM/00_MQTT2_CLIENT.pm @@ -40,6 +40,7 @@ MQTT2_CLIENT_Initialize($) clientId disable:1,0 disabledForIntervals + ignoreRegexp lwt lwtRetain keepaliveTimeout @@ -207,8 +208,16 @@ MQTT2_CLIENT_Attr(@) $hash->{SSL} = $param[0] ? $param[0] : 1; } + if($type eq "set" && $attrName eq "ignoreRegexp") { + my $re = join(" ",@param); + return "bad $devName ignoreRegexp: $re" if($re eq "1" || $re =~ m/^\*/); + eval { "Hallo" =~ m/$re/ }; + return "bad $devName ignoreRegexp: $re: $@" if($@); + } + if($attrName eq "clientId") { - $hash->{clientId} = $param[0]; + delete($hash->{clientId}); + $hash->{clientId} = $param[0] if($type eq "set"); } if($attrName eq "sslargs") { @@ -362,6 +371,10 @@ MQTT2_CLIENT_Read($@) if(!IsDisabled($name)) { $val = "" if(!defined($val)); + + my $ir = AttrVal($name, "ignoreRegexp", undef); + next if(defined($ir) && "$tp:$val" =~ m/$ir/); + my $ac = AttrVal($name, "autocreate", "no"); $ac = $ac eq "1" ? "simple" : ($ac eq "0" ? "no" : $ac); # backward comp. @@ -537,7 +550,7 @@ MQTT2_CLIENT_getStr($$) Attributes