--- 88_VantagePro2.pm.org 2019-01-27 07:35:37.601875975 +0100
+++ 88_VantagePro2.pm.new 2019-01-26 12:56:07.840354915 +0100
@@ -53,7 +53,7 @@ VantagePro2_Define($$)
my @a = split("[ \t][ \t]*", $def);
Log 5, "VantagePro2 Define: $a[0] $a[1] $a[2] $a[3]";
return "Define the host as a parameter i.e. VantagePro2" if(@a < 3);
-
+
my $host = $a[2];
my $port=$a[3];
my $delay=$a[4];
@@ -181,7 +181,7 @@ VantagePro2_GetStatus($)
my ($etyear)=unpack("s2",$t);
$etyear=sprintf("%.02f",($etyear/100*25.4));
- $itemp=sprintf("%.02f",(($itemp/10)-32)*5/9);
+ $itemp=sprintf("%.02f",((($itemp/10)-32)*5/9));
$otemp=sprintf("%.02f",(($otemp/10)-32)*5/9);
$rainrate=sprintf("%.02f",$rainrate/5);
$windspeed=sprintf("%.02f",$windspeed*1.609);
@@ -215,117 +215,237 @@ VantagePro2_GetStatus($)
{
$hit=$otemp;
}
+
+ ###
+ ### Luftdruck in hPa by PC Web
+ ###
+
+ my $barohPa;
+ $barohPa=sprintf("%.02f",$barometer/76*1013.25);
+
+
+ ###
+ ### absolute Luftfeuchtigkeit und div. Temperaturen by PC Web
+ ###
+
+ # http://www.wetterochs.de/wetter/feuchte.html
+
+ my ($humidityInAbs,$konst,$DD,$TK,$humidityOutAbs,$a,$b,$otempWet,$otempDew,$otempApp,$v);
+
+ if ($itemp >= 0) {
+ $a = 7.5;
+ $b = 237.3;
+ } else {
+ $a = 9.5;
+ $b = 265.5;
+ }
+
+ $konst = 10**5 *18.016/8314.3;
+ $DD =($ihum/100 * 6.1078 * (10**($a*$itemp/($itemp + $b))));
+ $TK = $itemp + 273.15;
+
+ $humidityInAbs = sprintf("%.02f",$konst*$DD/$TK);
+
+ if ($otemp >= 0) {
+ $a = 7.5;
+ $b = 237.3;
+ } else {
+ $a = 9.5;
+ $b = 265.5;
+ }
+
+ $DD =($ohum/100 * 6.1078 * (10**($a*$otemp/($otemp + $b))));
+ $TK = $otemp + 273.15;
+
+ $humidityOutAbs = sprintf("%.02f",$konst*$DD/$TK);
+ # TD(r,T) = b*v/(a-v) mit v(r,T) = log10(DD(r,T)/6.1078)
+
+ sub log10 {
+ my $n = shift;
+ return log($n)/log(10);
+ }
+
+ $a = 7.5;
+ $b = 237.3;
+ $DD =($ohum/100 * 6.1078 * (10**($a*$otemp/($otemp + $b))));
+
+ if ($DD >= 0) {
+ $v=log10($DD/6.1078);
+ } else {
+ $v = 0;
+ }
+
+ $otempDew = sprintf("%.02f",$b*$v/($a-$v));
+
+ # https://www.sps-forum.de/stammtisch/14599-taupunkttemperatur-feuchtkugeltemperatur.html
+
+ $otempWet = sprintf("%.02f",(-5.809 + 0.058*$ohum + 0.697*$otemp + 0.003*$ohum*$otemp));
+
+ # Calculate the apparent temperature:
+ # Australian Bureau of Meteorology http://reg.bom.gov.au/info/thermal_stress/#atapproximation [^]
+ # Robert G. Steadman. 1994: Norms of apparent temperature in Australia.
+ # Ta = wvutilsConvertFToC( temp );
+ # e = humidity / 100.0 * 6.105 * exp( 17.27 * Ta / ( 237.7 + Ta ) );
+ # ws = wvutilsConvertMPHToMPS( windspeed );
+ # AT = Ta + 0.33 * e - 0.70 * ws - 4.00;
+ # result = wvutilsConvertCToF( AT );
+
+ $otempApp = sprintf("%.02f",$otemp + 0.33*$DD - 0.7*$windspeed/3.6 - 4);
+
+ #
+ # Ende: absolute Luftfeuchtigkeit und div. Temperaturen by PC Web
+ #
+
$text="T-OUT: ".$otemp." T-WC-OUT: ".$wct." T-HI-OUT: ".$hit." T-IN: ".$itemp." H-OUT: ".$ohum." H-IN: ".$ihum." W: ".$windspeed." W-AV: ".$avgwindspeed." WD: ".$winddir." R: ".$rainrate." S: ".$solar." UV: ".$uv." RD: ".$drain." RM: ".$mrain. " RY: ".$yrain." SR: ".$stormrain." BM: ".$barometer." BT: ".$btrend. " ET-DAY: ".$etday." ET-MONTH: ".$etmonth." ET-YEAR: ".$etyear;
my $n=0;
Log 4,"$name: $text";
if (!$hash->{local}){
- $sensor="temperature-outside";
+ $sensor="temperatureOutside";
$hash->{CHANGED}[$n++] = "Temperature Outside: ".$otemp;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $otemp." (Celsius)";;
- $sensor="temperature-windchill";
+ $sensor="temperatureWindchill";
$hash->{CHANGED}[$n++] = "WCT: ".$wct;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $wct." (Celsius)";;
- $sensor="temperature-heatindex";
+ $sensor="temperatureHeatindex";
$hash->{CHANGED}[$n++] = "HeatT: ".$hit;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $hit." (Celsius)";;
- $sensor="temperature-inside";
+ $sensor="temperatureInside";
$hash->{CHANGED}[$n++] = "Temperature Inside: ".$itemp;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $itemp." (Celsius)";;
- $sensor="humidity outside";
+ $sensor="humidityOutside";
$hash->{CHANGED}[$n++] = "Humidity Outside: ".$ohum;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $ohum." (%)";;
- $sensor="humidity inside";
+ $sensor="humidityInside";
$hash->{CHANGED}[$n++] = "Humidity Inside: ".$ihum;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $ihum." (%)";;
- $sensor="windspeed";
+ $sensor="windspeed";
$hash->{CHANGED}[$n++] = "Wind: ".$windspeed;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $windspeed." (km/h)";;
- $sensor="10 min. average windspeed";
+ $sensor="10minAverageWindspeed";
$hash->{CHANGED}[$n++] = "10 Min. Wind: ".$avgwindspeed;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $avgwindspeed." (km/h)";;
- $sensor="wind direction";
+ $sensor="windDirection";
$hash->{CHANGED}[$n++] = "Wind Direction: ".$winddir;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $winddir." (Degrees)";;
- $sensor="solar";
+ $sensor="solar";
$hash->{CHANGED}[$n++] = "Solar: ".$solar;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $solar." (Watt/m^2)";;
- $sensor="UV";
+ $sensor="uv";
$hash->{CHANGED}[$n++] = "UV: ".$uv;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $uv." (UV/Index)";;
- $sensor="rainrate";
+ $sensor="rainrate";
$hash->{CHANGED}[$n++] = "Rainrate: ".$rainrate;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $rainrate." (mm/h)";;
- $sensor="day rain";
+ $sensor="dayRain";
$hash->{CHANGED}[$n++] = "Dayrain: ".$drain;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $drain." (mm/day)";;
- $sensor="month rain";
+ $sensor="monthRain";
$hash->{CHANGED}[$n++] = "Monthrain: ".$mrain;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $mrain." (mm/month)";;
- $sensor="year rain";
+ $sensor="yearRain";
$hash->{CHANGED}[$n++] = "Yearrain: ".$yrain;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $yrain." (mm/year)";;
- $sensor="storm rain";
- $hash->{CHANGED}[$n++] = "SR: ".$stormrain;
- $hash->{READINGS}{$sensor}{TIME} = TimeNow();
- $hash->{READINGS}{$sensor}{VAL} = $stormrain." (mm/storm)";;
+ $sensor="stormRain";
+ $hash->{CHANGED}[$n++] = "SR: ".$stormrain;
+ $hash->{READINGS}{$sensor}{TIME} = TimeNow();
+ $hash->{READINGS}{$sensor}{VAL} = $stormrain." (mm/storm)";;
- $sensor="barometer";
+ $sensor="barometerMm";
$hash->{CHANGED}[$n++] = "Barometer: ".$barometer;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $barometer." (Millimeters)";;
- $sensor="barometer trend";
+ $sensor="barometerTrend";
$hash->{CHANGED}[$n++] = "Barometer Trend: ".$btrend;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $btrend;
- $sensor="ET Day";
+ $sensor="etDay";
$hash->{CHANGED}[$n++] = "ETD: ".$etday;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $etday." (mm/day)";;
- $sensor="ET Month";
+ $sensor="etMonth";
$hash->{CHANGED}[$n++] = "ETM: ".$etmonth;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $etmonth." (mm/month)";;
- $sensor="ET Year";
+ $sensor="etYear";
$hash->{CHANGED}[$n++] = "ETY: ".$etyear;
$hash->{READINGS}{$sensor}{TIME} = TimeNow();
$hash->{READINGS}{$sensor}{VAL} = $etyear." (mm/year)";;
+
+ #
+ # Readings by PC Web
+ #
+
+ $sensor="barometer";
+ $hash->{CHANGED}[$n++] = "Barometer: ".$barohPa;
+ $hash->{READINGS}{$sensor}{TIME} = TimeNow();
+ $hash->{READINGS}{$sensor}{VAL} = $barohPa." (hPa)";;
+
+ $sensor="humidityInsideAbsolute";
+ $hash->{CHANGED}[$n++] = "Humidity inside, absolute: ".$humidityInAbs;
+ $hash->{READINGS}{$sensor}{TIME} = TimeNow();
+ $hash->{READINGS}{$sensor}{VAL} = $humidityInAbs." (g/m^3)";;
+
+ $sensor="humidityOutsideAbsolute";
+ $hash->{CHANGED}[$n++] = "Humidity outside, absolute: ".$humidityOutAbs;
+ $hash->{READINGS}{$sensor}{TIME} = TimeNow();
+ $hash->{READINGS}{$sensor}{VAL} = $humidityOutAbs." (g/m^3)";;
+
+ $sensor="temperatureOutsideDew";
+ $hash->{CHANGED}[$n++] = "temperatureOutsideDew: ".$otempDew;
+ $hash->{READINGS}{$sensor}{TIME} = TimeNow();
+ $hash->{READINGS}{$sensor}{VAL} = $otempDew." (Celsius)";;
+
+ $sensor="temperatureOutsideWetBulb";
+ $hash->{CHANGED}[$n++] = "temperatureOutsideWetBulb: ".$otempWet;
+ $hash->{READINGS}{$sensor}{TIME} = TimeNow();
+ $hash->{READINGS}{$sensor}{VAL} = $otempWet." (Celsius)";;
+
+ $sensor="temperatureOutsideApparent";
+ $hash->{CHANGED}[$n++] = "temperatureOutsideApparent".$otempApp;
+ $hash->{READINGS}{$sensor}{TIME} = TimeNow();
+ $hash->{READINGS}{$sensor}{VAL} = $otempApp." (Celsius)";;
+
+ #
+ # End of Readings by PC Web
+ #
+
DoTrigger($name, undef) if($init_done);
}
$hash->{STATE} = $text;
Und lieferst du auch noch eine Zusammenfassung, was dein Code ändert/verbessert?
Ansonsten ist mir bewusst, dass der Code des Moduls nicht besonders toll ist, aber dein Patch würde das jetzt auch nicht substanziell verbessern.
Vernehme ich einen impliziten Wunsch, das Modul zu reaktivieren, und die Verantwortung als Maintainer dafuer zu uebernehmen?