2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-07 16:59:18 +00:00

50_HP1000.pm: do realtime at the right time...

git-svn-id: https://svn.fhem.de/fhem/trunk@12081 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
jpawlowski 2016-08-27 16:32:25 +00:00
parent 17501bdffd
commit a952498540

View File

@ -68,7 +68,7 @@ sub HP1000_Initialize($) {
$hash->{DefFn} = "HP1000_Define";
$hash->{UndefFn} = "HP1000_Undefine";
$hash->{AttrList} =
"wu_push:1,0 wu_id wu_password wu_realtime:0,1 " . $readingFnAttributes;
"wu_push:1,0 wu_id wu_password wu_realtime:1,0 " . $readingFnAttributes;
}
###################################
@ -202,7 +202,9 @@ sub HP1000_CGI() {
if ( $v eq ""
|| $p eq "dateutc"
|| $p eq "action"
|| $p eq "softwaretype" );
|| $p eq "softwaretype"
|| $p eq "realtime"
|| $p eq "rtfreq" );
# name translation
$p = "humidityIndoor" if ( $p eq "inhumi" );
@ -252,46 +254,56 @@ sub HP1000_CGI() {
readingsBulkUpdate( $hash, "humidityIndoorAbs", $v );
}
# averages/windSpeed_2m
# averages/windSpeed_avg2m
if ( defined( $webArgs->{windspeed} ) ) {
my $v =
HP1000_GetAvg( $hash, "windspeed", 2 * 60, $webArgs->{windspeed} );
readingsBulkUpdate( $hash, "windSpeed_2m", $v );
$webArgs->{windspd_avg2m} = $v;
if ( $hash->{INTERVAL} > 0 ) {
readingsBulkUpdate( $hash, "windSpeed_avg2m", $v );
$webArgs->{windspd_avg2m} = $v;
}
}
elsif ( defined( $webArgs->{windspeedmph} ) ) {
my $v =
HP1000_GetAvg( $hash, "windspeedmph", 2 * 60,
$webArgs->{windspeedmph} );
readingsBulkUpdate( $hash, "windSpeed_2m", $v );
$webArgs->{windspdmph_avg2m} = $v;
if ( $hash->{INTERVAL} > 0 ) {
readingsBulkUpdate( $hash, "windSpeed_avg2m", $v );
$webArgs->{windspdmph_avg2m} = $v;
}
}
# averages/windDir_2m
# averages/windDir_avg2m
if ( defined( $webArgs->{winddir} ) ) {
my $v = HP1000_GetAvg( $hash, "winddir", 2 * 60, $webArgs->{winddir} );
readingsBulkUpdate( $hash, "windDir_2m", $v );
$webArgs->{winddir_avg2m} = $v;
if ( $hash->{INTERVAL} > 0 ) {
readingsBulkUpdate( $hash, "windDir_avg2m", $v );
$webArgs->{winddir_avg2m} = $v;
}
}
# averages/windGust_10m
# averages/windGust_sum10m
if ( defined( $webArgs->{windgust} ) ) {
my $v =
HP1000_GetSum( $hash, "windgust", 10 * 60, $webArgs->{windgust} );
readingsBulkUpdate( $hash, "windGust_10m", $v );
$webArgs->{windgust_10m} = $v;
if ( $hash->{INTERVAL} > 0 ) {
readingsBulkUpdate( $hash, "windGust_sum10m", $v );
$webArgs->{windgust_10m} = $v;
}
}
elsif ( defined( $webArgs->{windgustmph} ) ) {
my $v =
HP1000_GetSum( $hash, "windgustmph", 10 * 60,
$webArgs->{windgustmph} );
readingsBulkUpdate( $hash, "windGust_10m", $v );
$webArgs->{windgustmph_10m} = $v;
if ( $hash->{INTERVAL} > 0 ) {
readingsBulkUpdate( $hash, "windGust_sum10m", $v );
$webArgs->{windgustmph_10m} = $v;
}
}
# from WU API:
@ -359,21 +371,21 @@ sub HP1000_GetSum($$$$;$) {
my $max = int( $s / $hash->{INTERVAL} );
my $return;
unshift @{ $hash->{helper}{history}{$t} }, $v;
splice @{ $hash->{helper}{history}{$t} }, $max;
my $v2 = unshift @{ $hash->{helper}{history}{$t} }, $v;
my $v3 = splice @{ $hash->{helper}{history}{$t} }, $max;
Log3 $name, 5, "HP1000 $name: Updated history for $t:"
. Dumper( $hash->{helper}{history}{$t} );
if ($avg) {
$return = printf( "%.1f",
$return = sprintf( "%.1f",
sum( @{ $hash->{helper}{history}{$t} } ) /
@{ $hash->{helper}{history}{$t} } );
Log3 $name, 5, "HP1000 $name: Average for $t: $return";
}
else {
$return = printf( "%.1f", sum( @{ $hash->{helper}{history}{$t} } ) );
$return = sprintf( "%.1f", sum( @{ $hash->{helper}{history}{$t} } ) );
Log3 $name, 5, "HP1000 $name: Sum for $t: $return";
}
@ -393,11 +405,6 @@ sub HP1000_PushWU($$) {
my $http_noshutdown = AttrVal( $name, "http-noshutdown", "1" );
my $wu_user = AttrVal( $name, "wu_id", "" );
my $wu_pass = AttrVal( $name, "wu_password", "" );
my $wu_url = (
Attr( $name, "wu_realtime", 0 )
? "https://rtupdate.wunderground.com/weatherstation/updateweatherstation.php?realtime=1&"
: "https://weatherstation.wunderground.com/weatherstation/updateweatherstation.php?"
);
Log3 $name, 5, "HP1000 $name: called function HP1000_PushWU()";
@ -412,6 +419,26 @@ sub HP1000_PushWU($$) {
return;
}
if ( AttrVal( $name, "wu_realtime", "1" ) eq "0" ) {
Log3 $name, 5, "HP1000 $name: Explicitly turning off realtime";
delete $webArgs->{realtime};
delete $webArgs->{rtfreq};
}
elsif ( AttrVal( $name, "wu_realtime", "0" ) eq "1" ) {
Log3 $name, 5, "HP1000 $name: Explicitly turning on realtime";
$webArgs->{realtime} = 1;
}
$webArgs->{rtfreq} = 5
if ( defined( $webArgs->{realtime} ) && !defined( $webArgs->{rtfreq} ) );
my $wu_url = (
defined( $webArgs->{realtime} )
&& $webArgs->{realtime} eq "1"
? "https://rtupdate.wunderground.com/weatherstation/updateweatherstation.php?"
: "https://weatherstation.wunderground.com/weatherstation/updateweatherstation.php?"
);
$webArgs->{ID} = $wu_user;
$webArgs->{PASSWORD} = $wu_pass;
@ -604,7 +631,7 @@ sub HP1000_ReturnWU($$$) {
Enable or disable to push data forward to Weather Underground (defaults to 0=no)
<a name="wu_realtime"></a><li><b>wu_realtime</b></li>
Send the data to the WU realtime server instead of using the standard server (defaults to 0=no)
Send the data to the WU realtime server instead of using the standard server (defaults to 1=yes)
</ul>
</div>
@ -658,7 +685,7 @@ sub HP1000_ReturnWU($$$) {
Pushen der Daten zu Weather Underground aktivieren oder deaktivieren (Standard ist 0=aus)
<a name="wu_realtime"></a><li><b>wu_realtime</b></li>
Sendet die Daten an den WU Echtzeitserver statt an den Standard Server (Standard ist 0=aus)
Sendet die Daten an den WU Echtzeitserver statt an den Standard Server (Standard ist 1=an)
</ul>
</div>