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 $DEVICE = $name;
|
||||||
my $READING = $reading;
|
my $READING = $reading;
|
||||||
my $VALUE = $value;
|
my $VALUE = $value;
|
||||||
my $NUM = $VALUE;
|
my $NUM = rgVal2Num($value);
|
||||||
$NUM =~ s/[^-\.\d]//g if( defined($NUM) );
|
|
||||||
my $ROW = $row;
|
my $ROW = $row;
|
||||||
my $m = eval $mapping;
|
my $m = eval $mapping;
|
||||||
if( $@ ) {
|
if( $@ ) {
|
||||||
@ -297,6 +296,7 @@ lookup($$$$$$$$$)
|
|||||||
my $DEVICE = $name;
|
my $DEVICE = $name;
|
||||||
my $READING = $reading;
|
my $READING = $reading;
|
||||||
my $VALUE = $value;
|
my $VALUE = $value;
|
||||||
|
my $NUM = rgVal2Num($value);
|
||||||
my $ROW = $row;
|
my $ROW = $row;
|
||||||
$default = eval $default;
|
$default = eval $default;
|
||||||
$default = "" if( $@ );
|
$default = "" if( $@ );
|
||||||
@ -335,8 +335,7 @@ lookup2($$$$;$$)
|
|||||||
my $DEVICE = $name;
|
my $DEVICE = $name;
|
||||||
my $READING = $reading;
|
my $READING = $reading;
|
||||||
my $VALUE = $value;
|
my $VALUE = $value;
|
||||||
my $NUM = $VALUE;
|
my $NUM = rgVal2Num($value);
|
||||||
$NUM =~ s/[^-\.\d]//g if( defined($NUM) );
|
|
||||||
my $ROW = $row;
|
my $ROW = $row;
|
||||||
my $COLUMN = $column;
|
my $COLUMN = $column;
|
||||||
my $l = eval $lookup;
|
my $l = eval $lookup;
|
||||||
@ -365,6 +364,7 @@ lookup2($$$$;$$)
|
|||||||
my $DEVICE = $name;
|
my $DEVICE = $name;
|
||||||
my $READING = $reading;
|
my $READING = $reading;
|
||||||
my $VALUE = $value;
|
my $VALUE = $value;
|
||||||
|
my $NUM = rgVal2Num($value);
|
||||||
my $ROW = $row;
|
my $ROW = $row;
|
||||||
my $COLUMN = $column;
|
my $COLUMN = $column;
|
||||||
$lookup = eval $lookup;
|
$lookup = eval $lookup;
|
||||||
@ -1488,7 +1488,21 @@ readingsGroup_Attr($$$;$)
|
|||||||
|
|
||||||
if( $cmd eq "set" ) {
|
if( $cmd eq "set" ) {
|
||||||
my $attrVal = $attrVal;
|
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/\$/ ) {
|
if( $attrVal =~ m/^{.*}$/s && $attrVal =~ m/=>/ && $attrVal !~ m/\$/ ) {
|
||||||
|
|
||||||
my $av = eval $attrVal;
|
my $av = eval $attrVal;
|
||||||
if( $@ ) {
|
if( $@ ) {
|
||||||
Log3 $hash->{NAME}, 3, $hash->{NAME} .": ". $@;
|
Log3 $hash->{NAME}, 3, $hash->{NAME} .": ". $@;
|
||||||
@ -1743,6 +1757,7 @@ readingsGroup_Attr($$$;$)
|
|||||||
collapsed -> default state is collapsed but can be expanded<br>
|
collapsed -> default state is collapsed but can be expanded<br>
|
||||||
collapsible -> default state is visible but can be collapsed </li>
|
collapsible -> default state is visible but can be collapsed </li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<br><li><a href="#perlSyntaxCheck">perlSyntaxCheck</a></li>
|
||||||
</ul><br>
|
</ul><br>
|
||||||
|
|
||||||
For the hash version of all mapping attributes it is possible to give a default value
|
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->{UndefFn} = "readingsProxy_Undefine";
|
||||||
$hash->{SetFn} = "readingsProxy_Set";
|
$hash->{SetFn} = "readingsProxy_Set";
|
||||||
$hash->{GetFn} = "readingsProxy_Get";
|
$hash->{GetFn} = "readingsProxy_Get";
|
||||||
|
$hash->{AttrFn} = "readingsProxy_Attr";
|
||||||
$hash->{AttrList} = "disable:1 "
|
$hash->{AttrList} = "disable:1 "
|
||||||
."getList "
|
."getList "
|
||||||
."setList "
|
."setList "
|
||||||
@ -270,9 +271,9 @@ readingsProxy_Get($@)
|
|||||||
my $v = join(" ", @a);
|
my $v = join(" ", @a);
|
||||||
my $get_fn = AttrVal( $hash->{NAME}, "getFn", "" );
|
my $get_fn = AttrVal( $hash->{NAME}, "getFn", "" );
|
||||||
if( $get_fn =~ m/^{.*}$/s ) {
|
if( $get_fn =~ m/^{.*}$/s ) {
|
||||||
|
my $CMD = $a[0];
|
||||||
my $DEVICE = $hash->{DEVICE};
|
my $DEVICE = $hash->{DEVICE};
|
||||||
my $READING = $hash->{READING};
|
my $READING = $hash->{READING};
|
||||||
my $CMD = $a[0];
|
|
||||||
my $ARGS = join(" ", @a[1..$#a]);
|
my $ARGS = join(" ", @a[1..$#a]);
|
||||||
|
|
||||||
my ($get_fn,$direct_return) = eval $get_fn;
|
my ($get_fn,$direct_return) = eval $get_fn;
|
||||||
@ -294,6 +295,33 @@ readingsProxy_Get($@)
|
|||||||
return $ret;
|
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;
|
1;
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
@ -371,6 +399,7 @@ readingsProxy_Get($@)
|
|||||||
Examples:<br>
|
Examples:<br>
|
||||||
<code>attr myProxy valueFn {($VALUE == 0)?"off":"on"}</code>
|
<code>attr myProxy valueFn {($VALUE == 0)?"off":"on"}</code>
|
||||||
</li>
|
</li>
|
||||||
|
<br><li><a href="#perlSyntaxCheck">perlSyntaxCheck</a></li>
|
||||||
</ul><br>
|
</ul><br>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user