IP-Symcon Script – Wetterstation für wetter.com
Mit folgendem Script können die Daten der eigenen Hausautomatisierungs-Sensoren an die Community von wetter.com gemeldet werden. Dort sind die Werte dem jeweiligen Standort zugeordnet und somit für andere Benutzer ersichtlich und werden für erweiterte Wetter-Prognosen der Region herangezogen.
Um die Werte automatisiert zu melden, sollte ein Timer von 15 Minuten erstellt werden.
<?php
// Zugangs-/Accountinformationen zur API von wetter.com
// Die Variable $test auf "no" setzen, um das Script scharf zu schalten.
$test = "no";
$wdcuser = '[login]';
$wdcpass = '[passwort]';
$wdchost = 'www.wetterarchiv.de';
$wdcport = '80';
$wdctimeout = '30';
$wdcurl = '/interface/http/input.php';
// Variablen auf Basis der API von wetter.com
// http://www.wetter.com/community/wetternetzwerk/admin/api/
$bedeckung = "";
$wolkenhoehe = "";
$ch_wert = "";
$cm_wert = "";
$cl_wert = "";
$sichtweite = "";
$feuchtigkeit = GetValue(32760 /*[Garten\Klima\HUMIDITY]*/);
$temperatur = GetValue(57080 /*[Garten\Klima\TEMPERATURE]*/);
$windrichtung = "";
$windstaerke = "";
$luftdruck = "";
$aenderung = "";
$aenderung_zeit = "";
$aenderungsart = "";
$niederschlagsmenge = "";
$niederschlagsmenge_zeit = "";
$niederschlagsart = "";
$schneehoehe = "";
$neuschnee = "";
$neuschnee_zeit = "";
function apirequest($wdcuser, $wdcpass, $wdchost, $wdcport, $wdctimeout, $wdcurl)
{
// Ausführen des GET-Requests.
$result = false;
$resultmsg = "";
$fp = fsockopen($wdchost, $wdcport, $errno, $errstr, $wdctimeout);
if($fp)
{
$request = "GET ".$wdcurl." HTTP/1.1\r\n";
$request.= "Host: ".$wdchost."\r\n";
$request.= "Connection: Close\r\n\r\n";
// Auswerten der wetter.com Antwort.
$data = "";
fwrite($fp, $request);
while (!feof($fp))
{
$data .= fgets($fp, 128);
}
fclose($fp);
// Überprüfen ob die gemeldeten Werte korrekt verarbeitet wurden.
$resultmsg = $data;
if ( preg_match("/status=success/i", $data) )
$result = true;
}
else
{
$resultmsg = $errstr;
}
if ( $result == false )
{
IPS_LogMessage("WETTER.COM", "Meldung fehlgeschlagen!\n$resultmsg");
return false;
} else
{
return true;
}
}
// Aktuelles Datum mit Uhrzeit
$wdcdate = date("YmdHi");
// Erstellen des API-Requests
$wdcurl .= "?benutzername=$wdcuser&passwort=$wdcpass&datum=$wdcdate";
if ( $bedeckung != "" )
$wdcurl .= "&bedeckung=$bedeckung";
if ( $wolkenhoehe != "" )
$wdcurl .= "&wolkenhoehe=$wolkenhoehe";
if ( $ch_wert != "" )
$wdcurl .= "&ch_wert=$ch_wert";
if ( $cm_wert != "" )
$wdcurl .= "&cm_wert=$cm_wert";
if ( $cl_wert != "" )
$wdcurl .= "&cl_wert=$cl_wert";
if ( $sichtweite != "" )
$wdcurl .= "&sichtweite=$sichtweite";
if ( $feuchtigkeit != "" )
$wdcurl .= "&feuchtigkeit=$feuchtigkeit";
if ( $temperatur != "" )
$wdcurl .= "&temperatur=$temperatur";
if ( $windrichtung != "" )
$wdcurl .= "&windrichtung=$windrichtung";
if ( $windstaerke != "" )
$wdcurl .= "&windstaerke=$windstaerke";
else
$wdcurl .= "&windstaerke=0";
if ( $luftdruck != "" )
$wdcurl .= "&luftdruck=$luftdruck";
if ( $aenderung != "" )
$wdcurl .= "&aenderung=$aenderung";
if ( $aenderung_zeit != "" )
$wdcurl .= "&aenderung_zeit=$aenderung_zeit";
if ( $aenderungsart != "" )
$wdcurl .= "&aenderungsart=$aenderungsart";
if ( $niederschlagsmenge != "" )
$wdcurl .= "&niederschlagsmenge=$niederschlagsmenge";
if ( $niederschlagsmenge_zeit != "" )
$wdcurl .= "&niederschlagsmenge_zeit=$niederschlagsmenge_zeit";
if ( $niederschlagsart != "" )
$wdcurl .= "&niederschlagsart=$niederschlagsart";
if ( $schneehoehe != "" )
$wdcurl .= "&schneehoehe=$schneehoehe";
if ( $neuschnee != "" )
$wdcurl .= "&neuschnee=$neuschnee";
if ( $neuschnee_zeit != "" )
$wdcurl .= "&neuschnee_zeit=$neuschnee_zeit";
if ( $test == "yes" )
$wdcurl .= "&test=true";
if ( apirequest($wdcuser, $wdcpass, $wdchost, $wdcport, $wdctimeout, $wdcurl) )
{
IPS_LogMessage("WETTER.COM", "Meldung: ".
$temperatur ."°C, ".
$feuchtigkeit ."% Luftfeuchtigkeit.");
}
?>
Letzte Kommentare