Moin zusammen,
da das Raketenschnecke-Regenradar bekanntlich seit ein paar Wochen nicht mehr funktioniert, habe ich nach einer Alternative gesucht. Ich vermute, Raketenschnecke wird uns hier wohl nicht mehr helfen
Der Wunsch war wieder ein Regenforecast für die nächsten 2 Stunden.
Erkenntnis 1)
Ich blicke weder die neue API von wetteronline.de noch die öffentliche OpenData-Datenbank des DWD. Raffe ich nicht und meine Coding-Skills reichen dafür nicht. Anyone???
Erkenntnis 2)
Ich muss mich dringend mit IPS-Modulen beschäftigen. Auch hier reichen meine Coding-Skills noch nicht aus. Es bleibt also erstmal bei einem simplen Skript. Sorry!
Ergebnis)
Als einfache und schnelle Lösung habe ich für mich www.morgenwirdes.de gefunden.
Scheint die Seite einer Privatperson zu sein, welche die OpenData-Datenbank des DWD anzapft und sinnvoll aufbereitet.
Nachfolgenden Code in ein Skript einfügen und dieses Skript zyklisch z.B. alle 5 Minuten ausführen. Die Variablen werden automatisch angelegt; nach ähnlichem Schema wie damals im Raketenschnecke-Projekt (ich wollte möglichst hohe Kompatibilität).
Euren Standort in der ersten Zeile als Longitude/Latitude angeben, alternativ die zweite Zeile auskommentieren und hier Eure PLZ eingeben! (Lat/Long ist aber präziser!).
<?php
// Regenradar - Skript zum zyklischen Pollen vom morgenwirdes.de-Niederschlagsradar
// Quelle: Deutscher Wetterdienst IPS-Skript v0.2 von ika
$location = 'lat=52.22&long=7.48';
//$location = 'plz=48432';
$treshold = 0;
$urltext = 'https://morgenwirdes.de/api/v2/rtxt.php?'.$location;
$urljson = 'https://morgenwirdes.de/api/v2/rjson.php?'.$location;
$buffertext = @implode('', file($urltext));
if (empty($buffertext)) { FC_DL_Error(true); return; };
SetValue(FC_Variables(IPS_GetParent($_IPS['SELF']), "Forecast_Text", 3, "", ""), $buffertext);
$bufferjson = @implode('', file($urljson));
if (empty($bufferjson)) { FC_DL_Error(true); return; };
$json = json_decode($bufferjson,true);
$intensityonstart = $treshold; $rainstart = 0; $rainstartts = 0; $rainendts = 0;
for ($i = 0; $i <= 24; $i++) {
SetValue(FC_Variables(IPS_GetParent($_IPS['SELF']), sprintf("%'.02d", $i)."_FC_Intensity", 2, "", " ".$json[$i]['time']), $json[$i]['dbz']);
if(($intensityonstart<=$treshold) && ($json[$i]['dbz']>$treshold)) { $intensityonstart = $json[$i]['dbz']; $rainstart = $json[$i]['time']; $rainstartts = $json[$i]['timestamp']; };
if($json[$i]['dbz']>0) { $rainendts = $json[$i]['timestamp']; };
};
SetValue(FC_Variables(IPS_GetParent($_IPS['SELF']), "Rain_Intensity_on_Start", 2, "", " ".$rainstart), $intensityonstart);
SetValue(FC_Variables(IPS_GetParent($_IPS['SELF']), "FC_Rain_Start", 1, "~UnixTimestamp", ""), $rainstartts);
SetValue(FC_Variables(IPS_GetParent($_IPS['SELF']), "FC_Rain_End", 1, "~UnixTimestamp", ""), $rainendts);
FC_DL_Error(false);
function FC_Variables($id, $name, $type, $profile = "", $fctime)
{
# type: 0=boolean, 1 = integer, 2 = float, 3 = string;
global $IPS_SELF;
$vid = @IPS_GetObjectIDByIdent($name, $id);
if($vid === false)
{
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetIdent($vid, $name);
IPS_SetName($vid, $name);
if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
}
IPS_SetName($vid, $name.$fctime);
return $vid;
};
function FC_DL_Error($increase = true)
{
$id = IPS_GetParent($_IPS['SELF']);
$name = "DL_Error";
$vid = @IPS_GetObjectIDByIdent($name, $id);
if($vid === false)
{
$vid = IPS_CreateVariable(1);
IPS_SetParent($vid, $id);
IPS_SetIdent($vid, $name);
IPS_SetName($vid, $name);
};
if($increase)
{
SetValue($vid, GetValue($vid)+1);
echo "Fehler beim Download!"; }
else { SetValue($vid, 0);
};
if(GetValue($vid)>=3)
{
SetValue(FC_Variables(IPS_GetParent($_IPS['SELF']), "Rain_Intensity_on_Start", 2, "", " ERROR"), -99);
SetValue(FC_Variables(IPS_GetParent($_IPS['SELF']), "FC_Rain_Start", 1, "~UnixTimestamp", " ERROR"), 0);
SetValue(FC_Variables(IPS_GetParent($_IPS['SELF']), "FC_Rain_End", 1, "~UnixTimestamp", " ERROR"), 0);
IPS_LogMessage($_IPS['SELF'], "+++++ Fehler beim Download des Regenradar/Forecast! +++++");
};
return $vid;
};
Das „Radarbild“ gibt es unter Regenradar Rheine | morgenwirdes.de bzw. https://morgenwirdes.de/api/v2/rr.php
Das nutze ich derzeit aber nicht; ich benötige nur reine Textwerte als „Regendetektor“.
Die Regenwerte folgen wohl einer anderen Skala als bei RaketenschneckeRRFC/Wetteronline. Kein Regen wird wohl nicht einfach als Null gemeldet, sondern als „Trockenheitswert“ zwischen -32,5 und 0 ?! Ich werde das beobachten.
Gruß,
ika