Unit.pm: error handling in case reading value is not a number

git-svn-id: https://svn.fhem.de/fhem/trunk@13892 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
loredo
2017-04-04 14:03:34 +00:00
parent c42b731bc1
commit 7f5f59a385

View File

@@ -4381,7 +4381,7 @@ sub Unit_DbLog_split($$) {
# general event handling # general event handling
if ( !defined($value) if ( !defined($value)
&& $event =~ && $event =~
/^(.+): +[\D]*(\d+\.?\d*)[\s\u202F\u00A0]*[\[\{\(]?[\s\u202F\u00A0]*([\w\°\%\^\/\\]*).*/ m/^(.+): +[\D]*(\d+\.?\d*)[\s\u202F\u00A0]*[\[\{\(]?[\s\u202F\u00A0]*([\w\°\%\^\/\\]*).*/
&& defined($1) && defined($1)
&& defined($2) ) && defined($2) )
{ {
@@ -4390,10 +4390,10 @@ sub Unit_DbLog_split($$) {
$unit = defined($3) ? $3 : ""; $unit = defined($3) ? $3 : "";
} }
unless ( defined($value) && looks_like_number($value) ) { if ( !defined($value) || !looks_like_number($value) ) {
Unit_Log3( $name, $reading, undef, 10, Unit_Log3( $name, $reading, undef, 10,
"Unit_DbLog_split $name: Ignoring event $event: value $value does not look like a number" "Unit_DbLog_split $name: Ignoring event $event: value $value does not look like a number"
); ) if ( defined($value) );
return undef; return undef;
} }
@@ -4458,7 +4458,7 @@ sub CommandSetReadingDesc($@) {
my @rets; my @rets;
my $last; my $last;
foreach my $name ( devspec2array( $a->[0], $cl ) ) { foreach my $name ( devspec2array( $a->[0], $cl ) ) {
if ( !defined( $defs{$name} ) ) { unless ( Unit_IsDevice($name) ) {
push @rets, "Please define $name first"; push @rets, "Please define $name first";
next; next;
} }
@@ -4524,7 +4524,7 @@ sub CommandDeleteReadingDesc($@) {
my @rets; my @rets;
my $last; my $last;
foreach my $name ( devspec2array( $a->[0], $cl ) ) { foreach my $name ( devspec2array( $a->[0], $cl ) ) {
if ( !defined( $defs{$name} ) ) { unless ( Unit_IsDevice($name) ) {
push @rets, "Please define $name first"; push @rets, "Please define $name first";
next; next;
} }
@@ -4549,4 +4549,22 @@ sub CommandDeleteReadingDesc($@) {
return join( "\n", @rets ); return join( "\n", @rets );
} }
sub Unit_IsDevice($;$) {
my $devname = shift;
my $devtype = shift;
return 1
if ( defined($devname)
&& defined( $defs{$devname} )
&& ( !$devtype || $devtype eq "" ) );
return 1
if ( defined($devname)
&& defined( $defs{$devname} )
&& defined( $defs{$devname}{TYPE} )
&& $defs{$devname}{TYPE} =~ m/^$devtype$/ );
return 0;
}
1; 1;