2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-09 20:57:11 +00:00

fhem.pl: next round in the IODev prohibing code (Forum #120603)

git-svn-id: https://svn.fhem.de/fhem/trunk@24724 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2021-07-11 11:11:07 +00:00
parent ea0ed5f778
commit 613735e19e

View File

@ -2504,8 +2504,8 @@ CommandSetReading($$)
return "$sdev: bad reading name '$b1' (allowed chars: A-Za-z/\\d_\\.-)"
if(!goodReadingName($b1));
if($b1 eq "IODev") {
next if(!fhem_devSupportsAttr($sdev, "IODev"));
my $ret = fhem_setIoDev($hash, $b[2]);
push @rets, $ret if($ret);
next;
@ -3203,6 +3203,7 @@ CommandSetstate($$)
}
if($sname eq "IODev") {
next if(!fhem_devSupportsAttr($sdev, "IODev"));
my $ret = fhem_setIoDev($d, $sval);
if($ret) {
push @rets, $ret if($init_done);
@ -4692,6 +4693,14 @@ AttrNum($$$;$)
return $val;
}
sub
fhem_devSupportsAttr($$)
{
my ($devName,$attrName) = @_;
my $attrList = getAllAttr($devName);
return (" $attrList " =~ m/ $attrName[ :;]/);
}
################################################################
# Functions used by modules.
sub
@ -4699,10 +4708,7 @@ setReadingsVal($$$$)
{
my ($hash,$rname,$val,$ts) = @_;
if($rname eq "IODev") {
my $attrList = getAllAttr($hash->{NAME}); # Forum #120603
return if(" $attrList " !~ m/ IODev[ :;]/);
}
return if($rname eq "IODev" && !fhem_devSupportsAttr($hash->{NAME}, "IODev"));
if($hash->{".or"} && grep($rname =~ m/^$_$/, @{$hash->{".or"}}) ) {
if(defined($hash->{READINGS}{$rname}) &&