50_HP1000: correct default unit for windSpeed/windGust and use UConv.pm

git-svn-id: https://svn.fhem.de/fhem/trunk@12400 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
loredo
2016-10-22 13:22:15 +00:00
parent d64260ae24
commit 8146f18e22
3 changed files with 172 additions and 277 deletions

View File

@@ -1,5 +1,7 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it.
- bugfix: 50_HP1000: correct default unit for windSpeed/windGust from m/s to
km/h and transfer unit conversions to new UConv.pm
- feature: Pushsafer: new option "picture", "picture2" and "picture3" for
"message" set command to send pictures from local
filesystem or a IPCAM device. See commandref for details

View File

@@ -30,10 +30,11 @@ use strict;
use warnings;
use vars qw(%data);
use HttpUtils;
use UConv;
use Time::Local;
use Data::Dumper;
use List::Util qw(sum);
use FHEM::98_dewpoint;
use Data::Dumper;
sub HP1000_Define($$);
sub HP1000_Undefine($$);
@@ -70,7 +71,7 @@ sub HP1000_Initialize($) {
$hash->{UndefFn} = "HP1000_Undefine";
$hash->{DbLog_splitFn} = "HP1000_DbLog_split";
$hash->{AttrList} =
"wu_push:1,0 wu_id wu_password wu_realtime:1,0 extSrvPush_Url "
"wu_push:1,0 wu_id wu_password wu_realtime:1,0 wu_apikey extSrvPush_Url "
. $readingFnAttributes;
}
@@ -87,9 +88,42 @@ sub HP1000_Define($$) {
$hash->{ID} = $a[2] if ( defined( $a[2] ) );
$hash->{PASSWORD} = $a[3] if ( defined( $a[3] ) );
return "Device already defined: " . $modules{HP1000}{defptr}{NAME}
return
"Device already defined: "
. $modules{HP1000}{defptr}{NAME}
. " (there can only be one instance as per restriction of the weather station itself)"
if ( defined( $modules{HP1000}{defptr} ) && !defined( $hash->{OLDDEF} ) );
# check FHEMWEB instance
my $FWports;
foreach ( devspec2array('TYPE=FHEMWEB:FILTER=TEMPORARY!=1') ) {
$hash->{FW} = $_
if ( AttrVal( $_, "webname", "fhem" ) eq "weatherstation" );
push( @{$FWports}, $defs{$_}->{PORT} )
if ( defined( $defs{$_}->{PORT} ) );
}
if ( !defined( $hash->{FW} ) ) {
$hash->{FW} = "WEBweatherstation";
my $port = 8084;
until ( !grep ( /^$port$/, @{$FWports} ) ) {
$port++;
}
if ( !defined( $defs{ $hash->{FW} } ) ) {
Log3 $name, 3,
"HP1000 $name: Creating new FHEMWEB instance "
. $hash->{FW}
. " with webname 'weatherstation'";
fhem "define " . $hash->{FW} . " FHEMWEB $port global";
fhem "attr " . $hash->{FW} . " webname weatherstation";
}
}
$hash->{FW_PORT} = $defs{ $hash->{FW} }{PORT};
if ( HP1000_addExtension( $name, "HP1000_CGI", "updateweatherstation" ) ) {
$hash->{fhem}{infix} = "updateweatherstation";
}
@@ -184,6 +218,9 @@ sub HP1000_CGI() {
$webArgs->{$p} = $v;
}
Log3 $name, 5,
"HP1000: received insufficient data:\n" . Dumper($webArgs);
return ( "text/plain; charset=utf-8", "Insufficient data" )
if ( !defined( $webArgs->{softwaretype} )
|| !defined( $webArgs->{dateutc} )
@@ -224,8 +261,17 @@ sub HP1000_CGI() {
}
Log3 $name, 5, "HP1000: received data:\n" . Dumper($webArgs);
delete $webArgs->{ID} if ( defined( $webArgs->{ID} ) );
delete $webArgs->{PASSWORD} if ( defined( $webArgs->{PASSWORD} ) );
# rename wind speed values as those are in m/sec and
# we want km/h to be our metric default
if ( defined( $webArgs->{windspeed} ) ) {
$webArgs->{windspeedmps} = $webArgs->{windspeed};
delete $webArgs->{windspeed};
}
if ( defined( $webArgs->{windgust} ) ) {
$webArgs->{windgustmps} = $webArgs->{windgust};
delete $webArgs->{windgust};
}
# calculate readings for Metric standard from Angloamerican standard
#
@@ -252,7 +298,8 @@ sub HP1000_CGI() {
&& $webArgs->{dewptf} ne ""
&& !defined( $webArgs->{dewpoint} ) )
{
$webArgs->{dewpoint} = HP1000_f2c( $webArgs->{dewptf} );
$webArgs->{dewpoint} =
UConv::f2c( $webArgs->{dewptf} );
}
# relbaro in hPa (convert from baromin)
@@ -260,7 +307,7 @@ sub HP1000_CGI() {
&& $webArgs->{baromin} ne ""
&& !defined( $webArgs->{relbaro} ) )
{
$webArgs->{relbaro} = HP1000_inhg2hpa( $webArgs->{baromin} );
$webArgs->{relbaro} = UConv::inhg2hpa( $webArgs->{baromin} );
}
# absbaro in hPa (convert from absbaromin)
@@ -268,7 +315,8 @@ sub HP1000_CGI() {
&& $webArgs->{absbaromin} ne ""
&& !defined( $webArgs->{absbaro} ) )
{
$webArgs->{absbaro} = HP1000_inhg2hpa( $webArgs->{absbaromin} );
$webArgs->{absbaro} =
UConv::inhg2hpa( $webArgs->{absbaromin} );
}
# rainrate in mm/h (convert from rainin)
@@ -276,7 +324,7 @@ sub HP1000_CGI() {
&& $webArgs->{rainin} ne ""
&& !defined( $webArgs->{rainrate} ) )
{
$webArgs->{rainrate} = HP1000_in2mm( $webArgs->{rainin} );
$webArgs->{rainrate} = UConv::in2mm( $webArgs->{rainin} );
}
# dailyrain in mm (convert from dailyrainin)
@@ -284,7 +332,8 @@ sub HP1000_CGI() {
&& $webArgs->{dailyrainin} ne ""
&& !defined( $webArgs->{dailyrain} ) )
{
$webArgs->{dailyrain} = HP1000_in2mm( $webArgs->{dailyrainin} );
$webArgs->{dailyrain} =
UConv::in2mm( $webArgs->{dailyrainin} );
}
# weeklyrain in mm (convert from weeklyrainin)
@@ -292,7 +341,8 @@ sub HP1000_CGI() {
&& $webArgs->{weeklyrainin} ne ""
&& !defined( $webArgs->{weeklyrain} ) )
{
$webArgs->{weeklyrain} = HP1000_in2mm( $webArgs->{weeklyrainin} );
$webArgs->{weeklyrain} =
UConv::in2mm( $webArgs->{weeklyrainin} );
}
# monthlyrain in mm (convert from monthlyrainin)
@@ -300,7 +350,8 @@ sub HP1000_CGI() {
&& $webArgs->{monthlyrainin} ne ""
&& !defined( $webArgs->{monthlyrain} ) )
{
$webArgs->{monthlyrain} = HP1000_in2mm( $webArgs->{monthlyrainin} );
$webArgs->{monthlyrain} =
UConv::in2mm( $webArgs->{monthlyrainin} );
}
# yearlyrain in mm (convert from yearlyrainin)
@@ -308,7 +359,8 @@ sub HP1000_CGI() {
&& $webArgs->{yearlyrainin} ne ""
&& !defined( $webArgs->{yearlyrain} ) )
{
$webArgs->{yearlyrain} = HP1000_in2mm( $webArgs->{yearlyrainin} );
$webArgs->{yearlyrain} =
UConv::in2mm( $webArgs->{yearlyrainin} );
}
# outtemp in Celsius (convert from tempf)
@@ -316,7 +368,8 @@ sub HP1000_CGI() {
&& $webArgs->{tempf} ne ""
&& !defined( $webArgs->{outtemp} ) )
{
$webArgs->{outtemp} = HP1000_f2c( $webArgs->{tempf} );
$webArgs->{outtemp} =
UConv::f2c( $webArgs->{tempf} );
}
# intemp in Celsius (convert from indoortempf)
@@ -325,7 +378,7 @@ sub HP1000_CGI() {
&& !defined( $webArgs->{intemp} ) )
{
$webArgs->{intemp} =
HP1000_f2c( $webArgs->{indoortempf} );
UConv::f2c( $webArgs->{indoortempf} );
}
# windchill in Celsius (convert from windchillf)
@@ -334,7 +387,7 @@ sub HP1000_CGI() {
&& !defined( $webArgs->{windchill} ) )
{
$webArgs->{windchill} =
HP1000_f2c( $webArgs->{windchillf} );
UConv::f2c( $webArgs->{windchillf} );
}
# windgust in km/h (convert from windgustmph)
@@ -342,7 +395,8 @@ sub HP1000_CGI() {
&& $webArgs->{windgustmph} ne ""
&& !defined( $webArgs->{windgust} ) )
{
$webArgs->{windgust} = HP1000_mph2kph( $webArgs->{windgustmph} );
$webArgs->{windgust} =
UConv::mph2kph( $webArgs->{windgustmph} );
}
# windspeed in km/h (convert from windspdmph)
@@ -350,7 +404,8 @@ sub HP1000_CGI() {
&& $webArgs->{windspdmph} ne ""
&& !defined( $webArgs->{windspeed} ) )
{
$webArgs->{windspeed} = HP1000_mph2kph( $webArgs->{windspdmph} );
$webArgs->{windspeed} =
UConv::mph2kph( $webArgs->{windspdmph} );
}
# calculate readings for Angloamerican standard from Metric standard
@@ -366,7 +421,8 @@ sub HP1000_CGI() {
&& $webArgs->{dewpoint} ne ""
&& !defined( $webArgs->{dewptf} ) )
{
$webArgs->{dewptf} = HP1000_c2f( $webArgs->{dewpoint} );
$webArgs->{dewptf} =
UConv::c2f( $webArgs->{dewpoint} );
}
# baromin in inch (convert from relbaro)
@@ -374,7 +430,7 @@ sub HP1000_CGI() {
&& $webArgs->{relbaro} ne ""
&& !defined( $webArgs->{baromin} ) )
{
$webArgs->{baromin} = HP1000_hpa2inhg( $webArgs->{relbaro} );
$webArgs->{baromin} = UConv::hpa2inhg( $webArgs->{relbaro} );
}
# absbaromin in inch (convert from absbaro)
@@ -382,7 +438,8 @@ sub HP1000_CGI() {
&& $webArgs->{absbaro} ne ""
&& !defined( $webArgs->{absbaromin} ) )
{
$webArgs->{absbaromin} = HP1000_hpa2inhg( $webArgs->{absbaro} );
$webArgs->{absbaromin} =
UConv::hpa2inhg( $webArgs->{absbaro} );
}
# rainin in in/h (convert from rainrate)
@@ -390,7 +447,7 @@ sub HP1000_CGI() {
&& $webArgs->{rainrate} ne ""
&& !defined( $webArgs->{rainin} ) )
{
$webArgs->{rainin} = HP1000_mm2in( $webArgs->{rainrate} );
$webArgs->{rainin} = UConv::mm2in( $webArgs->{rainrate} );
}
# dailyrainin in inch (convert from dailyrain)
@@ -398,7 +455,8 @@ sub HP1000_CGI() {
&& $webArgs->{dailyrain} ne ""
&& !defined( $webArgs->{dailyrainin} ) )
{
$webArgs->{dailyrainin} = HP1000_mm2in( $webArgs->{dailyrain} );
$webArgs->{dailyrainin} =
UConv::mm2in( $webArgs->{dailyrain} );
}
# weeklyrainin in inch (convert from weeklyrain)
@@ -406,7 +464,8 @@ sub HP1000_CGI() {
&& $webArgs->{weeklyrain} ne ""
&& !defined( $webArgs->{weeklyrainin} ) )
{
$webArgs->{weeklyrainin} = HP1000_mm2in( $webArgs->{weeklyrain} );
$webArgs->{weeklyrainin} =
UConv::mm2in( $webArgs->{weeklyrain} );
}
# monthlyrainin in inch (convert from monthlyrain)
@@ -414,7 +473,8 @@ sub HP1000_CGI() {
&& $webArgs->{monthlyrain} ne ""
&& !defined( $webArgs->{monthlyrainin} ) )
{
$webArgs->{monthlyrainin} = HP1000_mm2in( $webArgs->{monthlyrain} );
$webArgs->{monthlyrainin} =
UConv::mm2in( $webArgs->{monthlyrain} );
}
# yearlyrainin in inch (convert from yearlyrain)
@@ -422,7 +482,8 @@ sub HP1000_CGI() {
&& $webArgs->{yearlyrain} ne ""
&& !defined( $webArgs->{yearlyrainin} ) )
{
$webArgs->{yearlyrainin} = HP1000_mm2in( $webArgs->{yearlyrain} );
$webArgs->{yearlyrainin} =
UConv::mm2in( $webArgs->{yearlyrain} );
}
# tempf in Fahrenheit (convert from outtemp)
@@ -430,7 +491,8 @@ sub HP1000_CGI() {
&& $webArgs->{outtemp} ne ""
&& !defined( $webArgs->{tempf} ) )
{
$webArgs->{tempf} = HP1000_c2f( $webArgs->{outtemp} );
$webArgs->{tempf} =
UConv::c2f( $webArgs->{outtemp} );
}
# indoortempf in Fahrenheit (convert from intemp)
@@ -439,7 +501,7 @@ sub HP1000_CGI() {
&& !defined( $webArgs->{indoortempf} ) )
{
$webArgs->{indoortempf} =
HP1000_c2f( $webArgs->{intemp} );
UConv::c2f( $webArgs->{intemp} );
}
# windchillf in Fahrenheit (convert from windchill)
@@ -448,7 +510,26 @@ sub HP1000_CGI() {
&& !defined( $webArgs->{windchillf} ) )
{
$webArgs->{windchillf} =
HP1000_c2f( $webArgs->{windchill} );
UConv::c2f( $webArgs->{windchill} );
}
# windgustmps in m/s (convert from windgust)
if ( defined( $webArgs->{windgust} )
&& $webArgs->{windgust} ne ""
&& !defined( $webArgs->{windgustmps} ) )
{
$webArgs->{windgustmps} =
UConv::kph2mps( $webArgs->{windgust} );
}
# windgust in km/h (convert from windgustmps,
# not exactly from angloamerican...)
if ( defined( $webArgs->{windgustmps} )
&& $webArgs->{windgustmps} ne ""
&& !defined( $webArgs->{windgust} ) )
{
$webArgs->{windgust} =
UConv::mps2kph( $webArgs->{windgustmps} );
}
# windgustmph in mph (convert from windgust)
@@ -456,7 +537,27 @@ sub HP1000_CGI() {
&& $webArgs->{windgust} ne ""
&& !defined( $webArgs->{windgustmph} ) )
{
$webArgs->{windgustmph} = HP1000_kph2mph( $webArgs->{windgust} );
$webArgs->{windgustmph} =
UConv::kph2mph( $webArgs->{windgust} );
}
# windspeedmps in m/s (convert from windspeed,
# not exactly from angloamerican...)
if ( defined( $webArgs->{windspeed} )
&& $webArgs->{windspeed} ne ""
&& !defined( $webArgs->{windspeedmps} ) )
{
$webArgs->{windspeedmps} =
UConv::kph2mps( $webArgs->{windspeed} );
}
# windspeed in km/h (convert from windspeedmps)
if ( defined( $webArgs->{windspeedmps} )
&& $webArgs->{windspeedmps} ne ""
&& !defined( $webArgs->{windspeed} ) )
{
$webArgs->{windspeed} =
UConv::mps2kph( $webArgs->{windspeedmps} );
}
# windspdmph in mph (convert from windspeed)
@@ -464,7 +565,8 @@ sub HP1000_CGI() {
&& $webArgs->{windspeed} ne ""
&& !defined( $webArgs->{windspdmph} ) )
{
$webArgs->{windspdmph} = HP1000_kph2mph( $webArgs->{windspeed} );
$webArgs->{windspdmph} =
UConv::kph2mph( $webArgs->{windspeed} );
}
# write general readings
@@ -511,7 +613,9 @@ sub HP1000_CGI() {
$p = "temperatureIndoor" if ( $p eq "_intemp" );
$p = "windChill" if ( $p eq "_windchill" );
$p = "windGust" if ( $p eq "_windgust" );
$p = "windGustMps" if ( $p eq "_windgustmps" );
$p = "windSpeed" if ( $p eq "_windspeed" );
$p = "windSpeedMps" if ( $p eq "_windspeedmps" );
# name translation for Angloamerican standard
$p = "dewpointF" if ( $p eq "_dewptf" );
@@ -609,7 +713,7 @@ sub HP1000_CGI() {
# UVI (convert from uW/cm2)
if ( defined( $webArgs->{UV} ) ) {
$webArgs->{UVI} = HP1000_uwpscm2uvi( $webArgs->{UV} );
$webArgs->{UVI} = UConv::uwpscm2uvi( $webArgs->{UV} );
readingsBulkUpdate( $hash, "uvIndex", $webArgs->{UVI} );
}
@@ -635,20 +739,22 @@ sub HP1000_CGI() {
# solarradiation in W/m2 (convert from lux)
if ( defined( $webArgs->{light} ) ) {
$webArgs->{solarradiation} = HP1000_lux2wpsm( $webArgs->{light} );
$webArgs->{solarradiation} =
UConv::lux2wpsm( $webArgs->{light} );
readingsBulkUpdate( $hash, "solarradiation",
$webArgs->{solarradiation} );
}
# pressureMm in mmHg (convert from hpa)
if ( defined( $webArgs->{relbaro} ) ) {
$webArgs->{barommm} = HP1000_hpa2mmhg( $webArgs->{relbaro} );
$webArgs->{barommm} = UConv::hpa2mmhg( $webArgs->{relbaro} );
readingsBulkUpdate( $hash, "pressureMm", $webArgs->{barommm} );
}
# pressureAbsMm in mmHg (convert from hpa)
if ( defined( $webArgs->{absbaro} ) ) {
$webArgs->{absbarommm} = HP1000_hpa2mmhg( $webArgs->{absbaro} );
$webArgs->{absbarommm} =
UConv::hpa2mmhg( $webArgs->{absbaro} );
readingsBulkUpdate( $hash, "pressureAbsMm", $webArgs->{absbarommm} );
}
@@ -729,61 +835,49 @@ sub HP1000_CGI() {
# windCompasspoint
if ( defined( $webArgs->{winddir} ) ) {
$webArgs->{windcompasspoint} =
HP1000_CompassPoint( $webArgs->{winddir} );
UConv::direction2compasspoint( $webArgs->{winddir} );
readingsBulkUpdate( $hash, "windCompasspoint",
$webArgs->{windcompasspoint} );
}
# windSpeedBft in Beaufort (convert from km/h)
if ( defined( $webArgs->{windspeed} ) ) {
$webArgs->{windspeedbft} = HP1000_kph2bft( $webArgs->{windspeed} );
$webArgs->{windspeedbft} =
UConv::kph2bft( $webArgs->{windspeed} );
readingsBulkUpdate( $hash, "windSpeedBft", $webArgs->{windspeedbft} );
}
# windSpeedMps in m/s (convert from km/h)
if ( defined( $webArgs->{windspeed} ) ) {
my $v = HP1000_kph2mps( $webArgs->{windspeed} );
$webArgs->{windspeedmps} = ( $v > 0.5 ? round( $v, 1 ) : "0.0" );
readingsBulkUpdate( $hash, "windSpeedMps", $webArgs->{windspeedmps} );
}
# windSpeedKn in kn (convert from km/h)
if ( defined( $webArgs->{windspeed} ) ) {
my $v = HP1000_kph2kn( $webArgs->{windspeed} );
my $v = UConv::kph2kn( $webArgs->{windspeed} );
$webArgs->{windspeedkn} = ( $v > 0.5 ? round( $v, 1 ) : "0.0" );
readingsBulkUpdate( $hash, "windSpeedKn", $webArgs->{windspeedkn} );
}
# windSpeedFts in ft/s (convert from mph)
if ( defined( $webArgs->{windspeedmph} ) ) {
my $v = HP1000_mph2fts( $webArgs->{windspeedmph} );
my $v = UConv::mph2fts( $webArgs->{windspeedmph} );
$webArgs->{windspeedfts} = ( $v > 0.5 ? round( $v, 1 ) : "0.0" );
readingsBulkUpdate( $hash, "windSpeedFts", $webArgs->{windspeedfts} );
}
# windGustBft in Beaufort (convert from km/h)
if ( defined( $webArgs->{windgust} ) ) {
$webArgs->{windgustbft} = HP1000_kph2bft( $webArgs->{windgust} );
$webArgs->{windgustbft} =
UConv::kph2bft( $webArgs->{windgust} );
readingsBulkUpdate( $hash, "windGustBft", $webArgs->{windgustbft} );
}
# windGustMps in m/s (convert from km/h)
if ( defined( $webArgs->{windgust} ) ) {
my $v = HP1000_kph2mps( $webArgs->{windgust} );
$webArgs->{windgustmps} = ( $v > 0.5 ? round( $v, 1 ) : "0.0" );
readingsBulkUpdate( $hash, "windGustMps", $webArgs->{windgustmps} );
}
# windGustKn in m/s (convert from km/h)
if ( defined( $webArgs->{windgust} ) ) {
my $v = HP1000_kph2kn( $webArgs->{windgust} );
my $v = UConv::kph2kn( $webArgs->{windgust} );
$webArgs->{windgustkn} = ( $v > 0.5 ? round( $v, 1 ) : "0.0" );
readingsBulkUpdate( $hash, "windGustKn", $webArgs->{windgustkn} );
}
# windGustFts ft/s (convert from mph)
if ( defined( $webArgs->{windgustmph} ) ) {
my $v = HP1000_mph2fts( $webArgs->{windgustmph} );
my $v = UConv::mph2fts( $webArgs->{windgustmph} );
$webArgs->{windgustfts} = ( $v > 0.5 ? round( $v, 1 ) : "0.0" );
readingsBulkUpdate( $hash, "windGustFts", $webArgs->{windgustfts} );
}
@@ -802,7 +896,7 @@ sub HP1000_CGI() {
# averages/windCompasspoint_avg2m
if ( defined( $webArgs->{winddir_avg2m} ) ) {
$webArgs->{windcompasspoint_avg2m} =
HP1000_CompassPoint( $webArgs->{winddir_avg2m} );
UConv::direction2compasspoint( $webArgs->{winddir_avg2m} );
readingsBulkUpdate( $hash, "windCompasspoint_avg2m",
$webArgs->{windcompasspoint_avg2m} );
}
@@ -832,14 +926,22 @@ sub HP1000_CGI() {
# averages/windSpeedBft_avg2m in Beaufort (convert from km/h)
if ( defined( $webArgs->{windspeed_avg2m} ) ) {
$webArgs->{windspeedbft_avg2m} =
HP1000_kph2bft( $webArgs->{windspeed_avg2m} );
UConv::kph2bft( $webArgs->{windspeed_avg2m} );
readingsBulkUpdate( $hash, "windSpeedBft_avg2m",
$webArgs->{windspeedbft_avg2m} );
}
# averages/windSpeedKn_avg2m in Kn (convert from km/h)
if ( defined( $webArgs->{windspeed_avg2m} ) ) {
$webArgs->{windspeedkn_avg2m} =
UConv::kph2kn( $webArgs->{windspeed_avg2m} );
readingsBulkUpdate( $hash, "windSpeedKn_avg2m",
$webArgs->{windspeedkn_avg2m} );
}
# averages/windSpeedMps_avg2m in m/s
if ( defined( $webArgs->{windspeed_avg2m} ) ) {
my $v = HP1000_kph2mps( $webArgs->{windspeed_avg2m} );
my $v = UConv::kph2mps( $webArgs->{windspeed_avg2m} );
$webArgs->{windspeedmps_avg2m} =
( $v > 0.5 ? round( $v, 1 ) : "0.0" );
readingsBulkUpdate( $hash, "windSpeedMps_avg2m",
@@ -876,7 +978,7 @@ sub HP1000_CGI() {
# soilmoisture - [%]
# leafwetness - [%]
# visibility - [nm visibility]
# condition_forecast (based on pressure trendency)
# condition_forecast (based on pressure trend)
# dayNight
# soilTemperature
# brightness in % ??
@@ -998,7 +1100,12 @@ sub HP1000_PushSrv($$) {
$cmd = "&";
}
$webArgs->{PASSWORD} = "";
while ( my ( $key, $value ) = each %{$webArgs} ) {
if ( $key eq "softwaretype" || $key eq "dateutc" ) {
$value = urlEncode($value);
}
$cmd .= "$key=" . $value . "&";
}
@@ -1058,7 +1165,8 @@ sub HP1000_PushWU($$) {
}
$webArgs->{rtfreq} = 5
if ( defined( $webArgs->{realtime} ) && !defined( $webArgs->{rtfreq} ) );
if ( defined( $webArgs->{realtime} )
&& !defined( $webArgs->{rtfreq} ) );
my $wu_url = (
defined( $webArgs->{realtime} )
@@ -1357,222 +1465,6 @@ sub HP1000_DbLog_split($$) {
return ( $reading, $value, $unit );
}
###################################
sub HP1000_kph2bft($) {
my ($data) = @_;
my $v = "0";
if ( $data >= 118 ) {
$v = "12";
}
elsif ( $data >= 103 ) {
$v = "11";
}
elsif ( $data >= 89 ) {
$v = "10";
}
elsif ( $data >= 75 ) {
$v = "9";
}
elsif ( $data >= 62 ) {
$v = "8";
}
elsif ( $data >= 50 ) {
$v = "7";
}
elsif ( $data >= 39 ) {
$v = "6";
}
elsif ( $data >= 29 ) {
$v = "5";
}
elsif ( $data >= 20 ) {
$v = "4";
}
elsif ( $data >= 12 ) {
$v = "3";
}
elsif ( $data >= 6 ) {
$v = "2";
}
elsif ( $data >= 1 ) {
$v = "1";
}
return $v;
}
sub HP1000_CompassPoint($) {
my ($azimuth) = @_;
my $compassPoint = "";
if ( $azimuth < 22.5 ) {
$compassPoint = "N";
}
elsif ( $azimuth < 45 ) {
$compassPoint = "NNE";
}
elsif ( $azimuth < 67.5 ) {
$compassPoint = "NE";
}
elsif ( $azimuth < 90 ) {
$compassPoint = "ENE";
}
elsif ( $azimuth < 112.5 ) {
$compassPoint = "E";
}
elsif ( $azimuth < 135 ) {
$compassPoint = "ESE";
}
elsif ( $azimuth < 157.5 ) {
$compassPoint = "SE";
}
elsif ( $azimuth < 180 ) {
$compassPoint = "SSE";
}
elsif ( $azimuth < 202.5 ) {
$compassPoint = "S";
}
elsif ( $azimuth < 225 ) {
$compassPoint = "SSW";
}
elsif ( $azimuth < 247.5 ) {
$compassPoint = "SW";
}
elsif ( $azimuth < 270 ) {
$compassPoint = "WSW";
}
elsif ( $azimuth < 292.5 ) {
$compassPoint = "W";
}
elsif ( $azimuth < 315 ) {
$compassPoint = "WNW";
}
elsif ( $azimuth < 337.5 ) {
$compassPoint = "NW";
}
elsif ( $azimuth <= 361 ) {
$compassPoint = "NNW";
}
return $compassPoint;
}
###################################
sub HP1000_kph2mph($) {
my ($data) = @_;
# convert km/h to mph
return round( $data * 0.621, 1 );
}
###################################
sub HP1000_kph2mps($) {
my ($data) = @_;
# convert km/h to m/s
return round( $data / 3.6, 1 );
}
###################################
sub HP1000_kph2kn($) {
my ($data) = @_;
# convert km/h to knots
return round( $data * 0.539956803456, 1 );
}
###################################
sub HP1000_mph2kph($) {
my ($data) = @_;
# convert mph to km/h
return round( $data * 1.609344, 1 );
}
###################################
sub HP1000_mph2fts($) {
my ($data) = @_;
# convert mph to ft/s
return round( $data * 1.467, 1 );
}
###################################
sub HP1000_c2f($) {
my ($data) = @_;
# convert Celsius to Fahrenheit
return round( $data * 1.8 + 32, 1 );
}
###################################
sub HP1000_f2c($) {
my ($data) = @_;
# convert Fahrenheit to Celsius
return round( ( $data - 32 ) * 0.5556, 1 );
}
###################################
sub HP1000_mm2in($) {
my ($data) = @_;
# convert mm to inch
return round( $data * 0.039, 1 );
}
###################################
sub HP1000_in2mm($) {
my ($data) = @_;
# convert mm to inch
return round( $data * 25.4, 1 );
}
###################################
sub HP1000_hpa2inhg($) {
my ($data) = @_;
# convert Hecto Pascal to Inches of Mercury
return round( $data * 0.02952998751, 1 );
}
###################################
sub HP1000_hpa2mmhg($) {
my ($data) = @_;
# convert Hecto Pascal to Milimeter of Mercury
return round( $data * 0.00750061561303, 1 );
}
###################################
sub HP1000_inhg2hpa($) {
my ($data) = @_;
# convert Inches of Mercury to Hecto Pascal
return round( $data * 33.8638816, 1 );
}
###################################
# Forum topic,44403.msg501704.html#msg501704
sub HP1000_uwpscm2uvi($) {
my ($data) = @_;
# convert uW/cm2 to UV-Index
return floor( ( $data - 100 ) / 450 + 1 );
}
###################################
# Forum topic,44403.msg501704.html#msg501704
sub HP1000_lux2wpsm($) {
my ($data) = @_;
# convert lux to W/m2
return round( $data / 126.7, 1 );
}
1;
=pod

View File

@@ -415,6 +415,7 @@ FHEM/SHC_parser.pm rr2000 http://forum.fhem.de Sonstige
FHEM/SubProcess.pm borisneubert http://forum.fhem.de FHEM Development
FHEM/TcpServerUtils.pm rudolfkoenig http://forum.fhem.de Automatisierung
FHEM/TimeSeries.pm borisneubert/jensb http://forum.fhem.de FHEM Development
FHEM/UConv.pm loredo http://forum.fhem.de FHEM Development
FHEM/YahooWeatherAPI.pm borisneubert http://forum.fhem.de Unterstuetzende Dienste/Wettermodule
FHEM/lib/Device/Firmata/* ntruchsess http://forum.fhem.de Sonstige Systeme
FHEM/lib/Device/MySensors/* ntruchsess http://forum.fhem.de Sonstige Systeme