<?php
// Weiterverarbeitung Messdaten HP100X bzw. baugleich, Autor: Joachim Bieniak
// Version 1.1
// Variablen der Wetterstation (HP1000) aufnehmen
$indoortempf = $_GET["indoortempf"];
$tempf = $_GET["tempf"];
$dewptf = $_GET["dewptf"];
$windchillf = $_GET["windchillf"];
$indoorhumidity = $_GET["indoorhumidity"];
$humidity = $_GET["humidity"];
$windspeedmph = $_GET["windspeedmph"];
$windgustmph = $_GET["windgustmph"];
$winddir = $_GET["winddir"];
$absbaromin = $_GET["absbaromin"];
$baromin = $_GET["baromin"];
$rainin = $_GET["rainin"];
$dailyrainin = $_GET["dailyrainin"];
$weeklyrainin = $_GET["weeklyrainin"];
$monthlyrainin = $_GET["monthlyrainin"];
$yearlyrainin = $_GET["yearlyrainin"];
$solarradiation = $_GET["solarradiation"];
$UV = $_GET["UV"];
$softwaretype = $_GET["softwaretype"];
$realtime = $_GET["realtime"];
$rtfreq = $_GET["rtfreq"];
// Aktuelles Datum und Uhrzeit ermitteln
$datum = date("d.m.Y",$timestamp); $uhrzeit = date("H:i:s",$timestamp); $tage = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"); $utcdate = date("Y-m-d",$timestamp); $now = $utcdate."T".$uhrzeit;
// Umrechnung Lufttemperatur von F in C
$tempc = ($tempf - 32) * (5/9);
$tempc = round($tempc, 1);
//Umrechnung Taupunkt von F in C
$dewptc = ($dewptf - 32) * (5/9);
$dewptc = round($dewptc, 1);
//Umrechnung Windchill von F in C
$wct_c = ($windchillf - 32) * (5/9);
$wct_c = round($wct_c, 1);
//Umrechnung Inndoortemp von F in C
$indoortemp_c = ($indoortempf - 32) * (5/9);
$indoortemp_c = round($indoortemp_c, 1);
//Umrechnung Rel. Luftdruck von inHG in hPA
$relpres = ($baromin * 33.862);
$relpres = round($relpres, 1);
//Umrechnung Abs. Luftdruck von inHG in hPA
$abspres = ($absbaromin * 33.862);
$abspres = round($abspres, 1);
//Umrechnung Windgeschwindigkeit von mph zu kmh
$windkmh = ($windspeedmph * 1.6);
$windkmh = round($windkmh, 1);
//Umrechnung Windboeengeschwindigkeit von mph zu kmh
$windgustkmh = ($windgustmph * 1.6);
$windgustkmh = round($windgustkmh, 1);
//Umrechnung Niederschlag Stunde
$rain = ($rainin * 25.4);
//Umrechnung Niederschlag Tag
$raind = ($dailyrainin * 25.4);
$raind = round($raind, 1);
//Umrechnung Niederschlag Woche
$rainw = ($weeklyrainin * 25.4);
$rainw = round($rainw, 1);
//Umrechnung Niederschlag Monat
$rainm = ($monthlyrainin * 25.4);
$rainm = round($rainm, 1);
//Umrechnung Niederschlag Jahr
$rainj = ($yearlyrainin * 25.4);
$rainj = round($rainj, 1);
// Funktion zum Errechnen der Beaufort-Werte der derzeitigen Windgeschwindigkeit
function kmh2bft($windkmh)
{
if($val > 117) {$bft = 12;}
if($val <= 117) {$bft = 11;}
if($val < 103) {$bft = 10;}
if($val < 89) {$bft = 9;}
if($val < 75) {$bft = 8;}
if($val < 62) {$bft = 7;}
if($val < 50) {$bft = 6;}
if($val < 39) {$bft = 5;}
if($val < 29) {$bft = 4;}
if($val < 20) {$bft = 3;}
if($val < 12) {$bft = 2;}
if($val < 6) {$bft = 1;}
if($val < 3) {$bft = 0;}
return $bft;
}
// Funktion zum Errechnen der Beaufort-Werte der derzeitigen Windböen
function kmhgust2bft($windgustkmh)
{
$valgust = round($windgustkmh); if($valgust > 117) {$bftgust = 12;}
if($valgust <= 117) {$bftgust = 11;}
if($valgust < 103) {$bftgust = 10;}
if($valgust < 89) {$bftgust = 9;}
if($valgust < 75) {$bftgust = 8;}
if($valgust < 62) {$bftgust = 7;}
if($valgust < 50) {$bftgust = 6;}
if($valgust < 39) {$bftgust = 5;}
if($valgust < 29) {$bftgust = 4;}
if($valgust < 20) {$bftgust = 3;}
if($valgust < 12) {$bftgust = 2;}
if($valgust < 6) {$bftgust = 1;}
if($valgust < 3) {$bftgust = 0;}
return $bftgust;
}
// Array zur Zuweisung Werte zu Beaufort-Beschreibung
$bfttext = array( "12" => "Orkan", "11" => "orkanartiger Sturm",
"10" => "schwerer Sturm",
"9" => "Sturm",
"8" => "stürmischer Wind",
"7" => "steifer Wind",
"6" => "starker Wind",
"5" => "frische Brise",
"4" => "mäßige Brise",
"3" => "schwache Brise",
"2" => "leichte Brise",
"1" => "leiser Zug",
"0" => "still");
// Ermittlung Beaufort Werte und Beschreibungen
$windbft = kmh2bft($windkmh);
$gustbft = kmhgust2bft($windgustkmh);
$windbfttext = $bfttext[kmh2bft($windkmh)];
$gustbfttext = $bfttext[kmh2bft($windgustkmh)];
// Ermittlung UV-Index Beschreibung
if ($UV <= 2)
{
$uvtext = "Niedrig";
}
if ($uv >= 3 AND $uv <= 5)
{
$uvtext = "Mittel";
}
if ($uv >= 6 AND $uv <= 7)
{
$uvtext = "Hoch";
}
if ($uv >= 8 AND $uv <= 10)
{
$uvtext = "Sehr hoch";
}
if ($uv >= 11)
{
$uvtext = "Extrem";
}
// Ermitteln Sonnenaufgang, Sonnenuntergang anhand der GPS-Koordinaten und der Zeitzone
$gmt_offset = 1;
$zenith=90+50/60;
$sunset = date_sunset($timestamp, SUNFUNCS_RET_TIMESTAMP
, 52.610935, 13.243770, $zenith, $gmt_offset); $sunrise= date_sunrise($timestamp, SUNFUNCS_RET_TIMESTAMP
, 52.610935, 13.243770, $zenith, $gmt_offset); $sunset = date("H:i",$sunset); $sunrise = date("H:i",$sunrise);
// Ermitteln der Mondphase (Danke an Peter Ressel für den Code http://www.die-seite.eu/wm-mondphasen.php)
$ursprung = mktime(18,31,18,12,22,1999); $mondphase = round(((($akt_date - $ursprung) / ZYCLUS
) - floor(($akt_date - $ursprung) / ZYCLUS
)) * 100, 0);
if ($mondphase <= 1 || $mondphase >= 99 ) $phase_text = "Vollmond";
elseif ($mondphase > 1 && $mondphase < 49) $phase_text = "abnehmender Mond";
elseif ($mondphase >= 49 && $mondphase <= 51) $phase_text = "Neumond";
else $phase_text = "zunehmender Mond";
// Ermittlung Windrichtungen kurz und lang
function getWindDirShortName($wd1)
{
$WindDirShortNames = array("N", "NNO", "NO", "ONO", "O", "OSO", "SO", "SSO", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW", "N"); $WindDirShortName = $WindDirShortNames[(int
)(round($wd1 / 22.5))];
return $WindDirShortName;
}
function getWindDirLongName($wd2)
{
$WindDirLongNames = array("NORD", "NORDNORDOST", "NORDOST", "OSTNORDOST", "OST", "OSTSUEDOST", "SUEDOST", "SUEDSUEDOST", "SUED", "SUEDSUEDWEST", "SUEDWEST", "WESTSUEDWEST", "WEST", "WESTNORDWEST", "NORDWEST", "NORDNORDWEST", "NORD"); $WindDirLongName = $WindDirLongNames[(int
)(round($wd2 / 22.5))];
return $WindDirLongName;
}
$winddirkurz = getWindDirShortName($winddir);
$winddirlang = getWindDirLongName ($winddir);
// Runden der Sonnenstrahlung (Ganzzahl)
$solarradiation = round($solarradiation, 0);
//XML-Schreiben
}
$xmlw->sektion02->gruppe02->date_time = $now;
$xmlw->sektion02->gruppe02->date = $datum; $xmlw->sektion02->gruppe02->time = $uhrzeit; $xmlw->sektion02->gruppe03->temp_air_2m_0_c = $tempc;
$xmlw->sektion02->gruppe03->temp_dewpoint_c = $dewptc;
$xmlw->sektion02->gruppe03->temp_wct_c = $wct_c;
$xmlw->sektion02->gruppe04->humidity = $humidity;
$xmlw->sektion02->gruppe04->baromin = $relpres;
$xmlw->sektion02->gruppe04->absbaromin = $abspres;
$xmlw->sektion02->gruppe05->windspeed = $windkmh;
$xmlw->sektion02->gruppe05->windbft = $windbft;
$xmlw->sektion02->gruppe05->windbfttxt =$windbfttext;
$xmlw->sektion02->gruppe05->windgust = $windgustkmh;
$xmlw->sektion02->gruppe05->gustbft = $gustbft;
$xmlw->sektion02->gruppe05->gustbfttxt =$gustbfttext;
$xmlw->sektion02->gruppe05->winddir = $winddir;
$xmlw->sektion02->gruppe06->rainin = $rain;
$xmlw->sektion02->gruppe06->dailyrainin = $raind;
$xmlw->sektion02->gruppe06->weeklyrainin = $rainw;
$xmlw->sektion02->gruppe06->monthlyrainin = $rainm;
$xmlw->sektion02->gruppe06->yearlyrainin = $rainj;
$xmlw->sektion02->gruppe08->solar_radiation_0 = $solarradiation;
$xmlw->sektion02->gruppe08->uvi_0 = $UV;
$xmlw->sektion02->gruppe08->uvi_txt = $uvtext;
$xmlw->sektion02->gruppe99->indoortemp_c = $indoortemp_c;
$xmlw->sektion02->gruppe99->indoorhumidity = $indoorhumidity;
$xmlw->sektion02->gruppe99->sunset = $sunset;
$xmlw->sektion02->gruppe99->sunrise = $sunrise;
$xmlw->sektion02->gruppe99->mondphase = $phase_text;
$xmlw->sektion02->gruppe99->winddirkurz = $winddirkurz;
$xmlw->sektion02->gruppe99->winddirlang = $winddirlang;
$handle = fopen('akt_wetterdaten.xml', "wb"); fwrite($handle, $xmlw->asXML());
// www.wunderground.com (WU) updaten
$url = fopen("http://weatherstation.wunderground.com/weatherstation/updateweatherstation.php?ID=$ID&PASSWORD=$PASSWORD&action=$action&dateutc=$dateutc&tempf=$tempf&dewptf=$dewptf&humidity=$humidity&winddir=$winddir&windspeedmph=$windspeedmph&windgustmph=$windgustmph&UV=$UV&solarradiation=$solarradiation&baromin=$baromin&rainin=$rainin&dailyrainin=$dailyrainin&realtime=$realtime", "r");
echo "success";
?>