HP1000: add humidityCondition_rgb and indoorHumidityCondition_rgb

git-svn-id: https://svn.fhem.de/fhem/trunk@13995 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
jpawlowski 2017-04-14 23:38:13 +00:00
parent a6daac6bc6
commit 26e32e8741
2 changed files with 44 additions and 34 deletions

View File

@ -178,12 +178,14 @@ sub HP1000_Initialize($) {
'humidityAbs' => { rtype => 'c', formula_symbol => 'Tabs', }, 'humidityAbs' => { rtype => 'c', formula_symbol => 'Tabs', },
'humidityAbs_f' => { rtype => 'f', formula_symbol => 'Tabs', }, 'humidityAbs_f' => { rtype => 'f', formula_symbol => 'Tabs', },
'humidityCondition' => { rtype => 'condition_hum', }, 'humidityCondition' => { rtype => 'condition_hum', },
'humidityCondition_rgb' => { rtype => 'rgbhex', },
'indoorDewpoint' => { rtype => 'c', formula_symbol => 'Tdi', }, 'indoorDewpoint' => { rtype => 'c', formula_symbol => 'Tdi', },
'indoorDewpoint_f' => { rtype => 'f', formula_symbol => 'Tdi', }, 'indoorDewpoint_f' => { rtype => 'f', formula_symbol => 'Tdi', },
'indoorHumidity' => { rtype => 'pct', formula_symbol => 'Hi', }, 'indoorHumidity' => { rtype => 'pct', formula_symbol => 'Hi', },
'indoorHumidityAbs' => { rtype => 'c', formula_symbol => 'Tabsi', }, 'indoorHumidityAbs' => { rtype => 'c', formula_symbol => 'Tabsi', },
'indoorHumidityAbs_f' => { rtype => 'f', formula_symbol => 'Tabsi', }, 'indoorHumidityAbs_f' => { rtype => 'f', formula_symbol => 'Tabsi', },
'indoorHumidityCondition' => { rtype => 'condition_hum', }, 'indoorHumidityCondition' => { rtype => 'condition_hum', },
'indoorHumidityCondition_rgb' => { rtype => 'rgbhex', },
'indoorTemperature' => { rtype => 'c', formula_symbol => 'Ti', }, 'indoorTemperature' => { rtype => 'c', formula_symbol => 'Ti', },
'indoorTemperature_f' => { rtype => 'f', formula_symbol => 'Ti', }, 'indoorTemperature_f' => { rtype => 'f', formula_symbol => 'Ti', },
'israining' => { rtype => 'yesno', }, 'israining' => { rtype => 'yesno', },
@ -816,14 +818,17 @@ sub HP1000_CGI() {
# humidityCondition # humidityCondition
if ( defined( $webArgs->{outhumi} ) ) { if ( defined( $webArgs->{outhumi} ) ) {
readingsBulkUpdateIfChanged( $hash, "humidityCondition", my ( $v, $rgb ) = UConv::humidity2condition( $webArgs->{outhumi} );
UConv::humidity2condition( $webArgs->{outhumi} ) ); readingsBulkUpdateIfChanged( $hash, "humidityCondition", $v );
readingsBulkUpdateIfChanged( $hash, "humidityCondition_rgb", $rgb );
} }
# indoorHumidityCondition # indoorHumidityCondition
if ( defined( $webArgs->{inhumi} ) ) { if ( defined( $webArgs->{inhumi} ) ) {
readingsBulkUpdateIfChanged( $hash, "indoorHumidityCondition", my ( $v, $rgb ) = UConv::humidity2condition( $webArgs->{inhumi} );
UConv::humidity2condition( $webArgs->{inhumi} ) ); readingsBulkUpdateIfChanged( $hash, "indoorHumidityCondition", $v );
readingsBulkUpdateIfChanged( $hash, "indoorHumidityCondition_rgb",
$rgb );
} }
if ( defined( $webArgs->{UV} ) ) { if ( defined( $webArgs->{UV} ) ) {

View File

@ -423,20 +423,26 @@ sub mph2bft($) {
sub humidity2condition($) { sub humidity2condition($) {
my ($data) = @_; my ($data) = @_;
my $v = "dry"; my $v = "dry";
my $rgb = "C72A23";
if ( $data >= 80 ) { if ( $data >= 80 ) {
$v = "wet"; $v = "wet";
$rgb = "0066CC";
} }
elsif ( $data >= 70 ) { elsif ( $data >= 70 ) {
$v = "high"; $v = "high";
$rgb = "009999";
} }
elsif ( $data >= 50 ) { elsif ( $data >= 50 ) {
$v = "optimal"; $v = "optimal";
$rgb = "4C9329";
} }
elsif ( $data >= 40 ) { elsif ( $data >= 40 ) {
$v = "low"; $v = "low";
$rgb = "E7652B";
} }
return ( $v, $rgb ) if (wantarray);
return $v; return $v;
} }
@ -469,21 +475,20 @@ sub uvi2condition($) {
sub values2weathercondition($$$$$) { sub values2weathercondition($$$$$) {
my ( $temp, $hum, $light, $isday, $israining ) = @_; my ( $temp, $hum, $light, $isday, $israining ) = @_;
my $condition = "clear"; my $v = "clear";
if ($israining) { if ($israining) {
$condition = "rain"; $v = "rain";
} }
elsif ( $light > 40000 ) { elsif ( $light > 40000 ) {
$condition = "sunny"; $v = "sunny";
} }
elsif ($isday) { elsif ($isday) {
$condition = "cloudy"; $v = "cloudy";
} }
$condition = "nt_" . $condition unless ($isday); $v = "nt_" . $v unless ($isday);
return $v;
return $condition;
} }
#TODO rewrite for Unit.pm #TODO rewrite for Unit.pm