mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-01 01:09:47 +00:00
33_readingsGroup.pm,33_readingsProxy.pm: support perlSyntaxCheck
git-svn-id: https://svn.fhem.de/fhem/trunk@11186 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
e029ac54fc
commit
0fb1c46c8e
@ -271,8 +271,7 @@ lookup($$$$$$$$$)
|
||||
my $DEVICE = $name;
|
||||
my $READING = $reading;
|
||||
my $VALUE = $value;
|
||||
my $NUM = $VALUE;
|
||||
$NUM =~ s/[^-\.\d]//g if( defined($NUM) );
|
||||
my $NUM = rgVal2Num($value);
|
||||
my $ROW = $row;
|
||||
my $m = eval $mapping;
|
||||
if( $@ ) {
|
||||
@ -297,6 +296,7 @@ lookup($$$$$$$$$)
|
||||
my $DEVICE = $name;
|
||||
my $READING = $reading;
|
||||
my $VALUE = $value;
|
||||
my $NUM = rgVal2Num($value);
|
||||
my $ROW = $row;
|
||||
$default = eval $default;
|
||||
$default = "" if( $@ );
|
||||
@ -335,8 +335,7 @@ lookup2($$$$;$$)
|
||||
my $DEVICE = $name;
|
||||
my $READING = $reading;
|
||||
my $VALUE = $value;
|
||||
my $NUM = $VALUE;
|
||||
$NUM =~ s/[^-\.\d]//g if( defined($NUM) );
|
||||
my $NUM = rgVal2Num($value);
|
||||
my $ROW = $row;
|
||||
my $COLUMN = $column;
|
||||
my $l = eval $lookup;
|
||||
@ -365,6 +364,7 @@ lookup2($$$$;$$)
|
||||
my $DEVICE = $name;
|
||||
my $READING = $reading;
|
||||
my $VALUE = $value;
|
||||
my $NUM = rgVal2Num($value);
|
||||
my $ROW = $row;
|
||||
my $COLUMN = $column;
|
||||
$lookup = eval $lookup;
|
||||
@ -1488,7 +1488,21 @@ readingsGroup_Attr($$$;$)
|
||||
|
||||
if( $cmd eq "set" ) {
|
||||
my $attrVal = $attrVal;
|
||||
|
||||
my %specials= (
|
||||
"%DEVICE" => $name,
|
||||
"%READING" => $name,
|
||||
"%VALUE" => "1",
|
||||
"%NUM" => "1",
|
||||
"%ROW" => "1",
|
||||
"%COLUMN" => "1",
|
||||
);
|
||||
|
||||
my $err = perlSyntaxCheck($attrVal, %specials);
|
||||
return $err if($err);
|
||||
|
||||
if( $attrVal =~ m/^{.*}$/s && $attrVal =~ m/=>/ && $attrVal !~ m/\$/ ) {
|
||||
|
||||
my $av = eval $attrVal;
|
||||
if( $@ ) {
|
||||
Log3 $hash->{NAME}, 3, $hash->{NAME} .": ". $@;
|
||||
@ -1743,6 +1757,7 @@ readingsGroup_Attr($$$;$)
|
||||
collapsed -> default state is collapsed but can be expanded<br>
|
||||
collapsible -> default state is visible but can be collapsed </li>
|
||||
</ul>
|
||||
<br><li><a href="#perlSyntaxCheck">perlSyntaxCheck</a></li>
|
||||
</ul><br>
|
||||
|
||||
For the hash version of all mapping attributes it is possible to give a default value
|
||||
|
@ -34,6 +34,7 @@ sub readingsProxy_Initialize($)
|
||||
$hash->{UndefFn} = "readingsProxy_Undefine";
|
||||
$hash->{SetFn} = "readingsProxy_Set";
|
||||
$hash->{GetFn} = "readingsProxy_Get";
|
||||
$hash->{AttrFn} = "readingsProxy_Attr";
|
||||
$hash->{AttrList} = "disable:1 "
|
||||
."getList "
|
||||
."setList "
|
||||
@ -270,9 +271,9 @@ readingsProxy_Get($@)
|
||||
my $v = join(" ", @a);
|
||||
my $get_fn = AttrVal( $hash->{NAME}, "getFn", "" );
|
||||
if( $get_fn =~ m/^{.*}$/s ) {
|
||||
my $CMD = $a[0];
|
||||
my $DEVICE = $hash->{DEVICE};
|
||||
my $READING = $hash->{READING};
|
||||
my $CMD = $a[0];
|
||||
my $ARGS = join(" ", @a[1..$#a]);
|
||||
|
||||
my ($get_fn,$direct_return) = eval $get_fn;
|
||||
@ -294,6 +295,33 @@ readingsProxy_Get($@)
|
||||
return $ret;
|
||||
}
|
||||
|
||||
sub
|
||||
readingsProxy_Attr($$$;$)
|
||||
{
|
||||
my ($cmd, $name, $attrName, $attrVal) = @_;
|
||||
|
||||
if( $cmd eq "set" ) {
|
||||
if( $attrName eq 'getFn' || $attrName eq 'setFn' || $attrName eq 'valueFn' ) {
|
||||
my %specials= (
|
||||
"%CMD" => $name,
|
||||
"%DEVICE" => $name,
|
||||
"%READING" => $name,
|
||||
"%ARGS" => $name,
|
||||
"%VALUE" => $name,
|
||||
"%LASTCMD" => $name,
|
||||
);
|
||||
|
||||
my $err = perlSyntaxCheck($attrVal, %specials);
|
||||
my $value_fn = eval $attrVal;
|
||||
Log3 $name, 3, $name .": attrVal: ". $@ if($@);
|
||||
return $err if($err);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
1;
|
||||
|
||||
=pod
|
||||
@ -371,6 +399,7 @@ readingsProxy_Get($@)
|
||||
Examples:<br>
|
||||
<code>attr myProxy valueFn {($VALUE == 0)?"off":"on"}</code>
|
||||
</li>
|
||||
<br><li><a href="#perlSyntaxCheck">perlSyntaxCheck</a></li>
|
||||
</ul><br>
|
||||
</ul>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user