mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-25 03:44:52 +00:00
fhem.pl: tinkering with ReadingsNum (Forum #137283)
git-svn-id: https://svn.fhem.de/fhem/trunk@28580 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
f4eba4a957
commit
255429301b
36
fhem/fhem.pl
36
fhem/fhem.pl
@ -4626,6 +4626,19 @@ resolveAttrRename($$)
|
|||||||
###########################################
|
###########################################
|
||||||
# Functions used to make fhem-oneliners more readable,
|
# Functions used to make fhem-oneliners more readable,
|
||||||
# but also recommended to be used by modules
|
# but also recommended to be used by modules
|
||||||
|
sub
|
||||||
|
numberFromString($$;$)
|
||||||
|
{
|
||||||
|
my ($val,$default,$round) = @_;
|
||||||
|
return undef if(!defined($val));
|
||||||
|
# 137283 & perl cookbook
|
||||||
|
$val = ($val =~ /(([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?)/ ? $1 : "");
|
||||||
|
$val =~ s/^([+-]?)0+([1-9])/$1$2/; # Forum #135120, dont want octal numbers
|
||||||
|
return $default if($val eq "");
|
||||||
|
$val = round($val,$round) if(defined $round);
|
||||||
|
return $val;
|
||||||
|
}
|
||||||
|
|
||||||
sub
|
sub
|
||||||
InternalVal($$$)
|
InternalVal($$$)
|
||||||
{
|
{
|
||||||
@ -4641,10 +4654,7 @@ sub
|
|||||||
InternalNum($$$;$)
|
InternalNum($$$;$)
|
||||||
{
|
{
|
||||||
my ($d,$n,$default,$round) = @_;
|
my ($d,$n,$default,$round) = @_;
|
||||||
my $val = InternalVal($d,$n,$default);
|
return numberFromString(InternalVal($d,$n,$default),$default,$round);
|
||||||
$val = ($val =~ /(-?\d+(\.\d+)?)/ ? $1 : "");
|
|
||||||
$val = round($val,$round) if($round);
|
|
||||||
return $val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub
|
sub
|
||||||
@ -4664,14 +4674,7 @@ sub
|
|||||||
OldReadingsNum($$$;$)
|
OldReadingsNum($$$;$)
|
||||||
{
|
{
|
||||||
my ($d,$n,$default,$round) = @_;
|
my ($d,$n,$default,$round) = @_;
|
||||||
my $val = OldReadingsVal($d,$n,$default);
|
return numberFromString(OldReadingsVal($d,$n,$default),$default,$round);
|
||||||
return undef if(!defined($val));
|
|
||||||
return $val if(looks_like_number($val)); # 137283
|
|
||||||
$val = ($val =~ /(-?\d+(\.\d+)?)/ ? $1 : "");
|
|
||||||
$val =~ s/^(-?)0+([1-9])/$1$2/; # Forum #135120, dont want octal numbers
|
|
||||||
return $default if($val eq "");
|
|
||||||
$val = round($val,$round) if(defined $round);
|
|
||||||
return $val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub
|
sub
|
||||||
@ -4713,14 +4716,7 @@ sub
|
|||||||
ReadingsNum($$$;$)
|
ReadingsNum($$$;$)
|
||||||
{
|
{
|
||||||
my ($d,$n,$default,$round) = @_;
|
my ($d,$n,$default,$round) = @_;
|
||||||
my $val = ReadingsVal($d,$n,$default);
|
return numberFromString(ReadingsVal($d,$n,$default),$default,$round);
|
||||||
return undef if(!defined($val));
|
|
||||||
return $val if(looks_like_number($val)); # 137283
|
|
||||||
$val = ($val =~ /(-?\d+(\.\d+)?)/ ? $1 : "");
|
|
||||||
$val =~ s/^(-?)0+([1-9])/$1$2/; # Forum #135120, dont want octal numbers
|
|
||||||
return $default if($val eq "");
|
|
||||||
$val = round($val,$round) if(defined $round);
|
|
||||||
return $val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub
|
sub
|
||||||
|
Loading…
x
Reference in New Issue
Block a user