Danke für die Bereitstellung und den Hinweis auf die Dark Sky API.
Orientiert am ursprünglichen Skript habe ich es etwas überarbeitet und umprogrammiert.
Vielleicht nütz es ja jemanden, - deshalb hier auch meine angepasste Version (siehe Screenshot).
Falls weitere Tage in der Vorausschau gewünscht sind, einfach das array erweitern („Tag 4“). Analoges gilt für weitere Stunden.
<?
$api = "x";
$latitude = "45.00";
$longitude = "10.00";
$Tagesvorraussage = array("Tag 0 - Heute","Tag 1 - Morgen","Tag 2 - Übermorgen","Tag 3");
$Stundenvorraussage = array("Stunde 1","Stunde 2","Stunde 3");
$Wochentage = Array('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
$Niederschlag = array( 'rain'=>'Regen',
'snow'=>'Schnee',
'sleet'=>'Schneeregen');
$json_string = file_get_contents("https://api.darksky.net/forecast/$api/$latitude,$longitude?exclude=minutely&lang=de&units=si");
$json = json_decode($json_string);
$pid = InstanceId( $_IPS['SELF'], "Aktuell");
SetValue(VariableId($pid, "Zusammenfassung", 3, "~String"),$json->currently->summary);
SetValue(VariableId($pid, "Temperatur", 2, "~Temperature"), $json->currently->temperature);
SetValue(VariableId($pid, "Temperatur gefühlt", 2, "~Temperature"),$json->currently->apparentTemperature);
SetValue(VariableId($pid, "Windgeschwindigkeit", 2, "~WindSpeed.ms"),$json->currently->windSpeed);
SetValue(VariableId($pid, "Windgeschwindigkeit (Böen)", 2, "~WindSpeed.ms"),$json->currently->windGust);
SetValue(VariableId($pid, "Wolkig", 2, "~Intensity.1"),$json->currently->cloudCover);
SetValue(VariableId($pid, "Luftfeuchtigkeit", 2, "~Intensity.1"),$json->currently->humidity);
SetValue(VariableId($pid, "Niederschlag", 2, "~Rainfall"),$json->currently->precipIntensity);
SetValue(VariableId($pid, "Niederschlag (Wahrsch.)", 2, "~Intensity.1"),$json->currently->precipProbability);
if( isset($json->currently->precipType) )
$precisType = $Niederschlag[$json->currently->precipType];
else
$precisType = "-";
SetValue(VariableId($pid, "Niederschlag (Art)", 3, "~String"),$precisType);
$x=0;
foreach( $Tagesvorraussage as $Tag )
{
if( !isset($json->daily->data[$x]) )
break;
$pid = InstanceId( $_IPS['SELF'], $Tag);
SetValue(VariableId($pid, "Zusammenfassung", 3, "~String"),$Wochentage[date('w',$json->daily->data[$x]->time)].": ".$json->daily->data[$x]->summary);
SetValue(VariableId($pid, "Temperatur Max", 2, "~Temperature"),$json->daily->data[$x]->temperatureHigh);
SetValue(VariableId($pid, "Temperatur Min", 2, "~Temperature"),$json->daily->data[$x]->temperatureLow);
SetValue(VariableId($pid, "Windgeschwidigkeit", 2, "~WindSpeed.ms"),$json->daily->data[$x]->windSpeed);
SetValue(VariableId($pid, "Windgeschwidigkeit (Böen)", 2, "~WindSpeed.ms"),$json->daily->data[$x]->windGust);
SetValue(VariableId($pid, "Wolkig", 2, "~Intensity.1"),$json->daily->data[$x]->cloudCover);
SetValue(VariableId($pid, "Luftfeuchtigkeit", 2, "~Intensity.1"),$json->daily->data[$x]->humidity);
SetValue(VariableId($pid, "Niederschlag", 2, "~Rainfall"),$json->daily->data[$x]->precipIntensity);
SetValue(VariableId($pid, "Niederschlag (Wahrsch.)", 2, "~Intensity.1"),$json->daily->data[$x]->precipIntensity);
if( isset($json->daily->data[$x]->precipType) )
$precisType = $Niederschlag[$json->daily->data[$x]->precipType];
else
$precisType = "-";
SetValue(VariableId($pid, "Niederschlag (Art)", 3, "~String"),$precisType);
$x++;
}
$x=1;
foreach( $Stundenvorraussage as $Stunde )
{
if( !isset($json->hourly->data[$x]) )
break;
$pid = InstanceId( $_IPS['SELF'], $Stunde);
SetValue(VariableId($pid, "Zusammenfassung", 3, "~String"),date("H:i",$json->hourly->data[$x]->time).": ".$json->hourly->data[$x]->summary);
SetValue(VariableId($pid, "Temperatur", 2, "~Temperature"), $json->hourly->data[$x]->temperature);
SetValue(VariableId($pid, "Temperatur gefühlt", 2, "~Temperature"),$json->hourly->data[$x]->apparentTemperature);
SetValue(VariableId($pid, "Windgeschwindigkeit", 2, "~WindSpeed.ms"),$json->hourly->data[$x]->windSpeed);
SetValue(VariableId($pid, "Windgeschwindigkeit (Böen)", 2, "~WindSpeed.ms"),$json->hourly->data[$x]->windGust);
SetValue(VariableId($pid, "Wolkig", 2, "~Intensity.1"),$json->hourly->data[$x]->cloudCover);
SetValue(VariableId($pid, "Luftfeuchtigkeit", 2, "~Intensity.1"),$json->hourly->data[$x]->humidity);
SetValue(VariableId($pid, "Niederschlag", 2, "~Rainfall"),$json->hourly->data[$x]->precipIntensity);
SetValue(VariableId($pid, "Niederschlag (Wahrsch.)", 2, "~Intensity.1"),$json->hourly->data[$x]->precipProbability);
if( isset($json->hourly->data[$x]->precipType) )
$precisType = $Niederschlag[$json->hourly->data[$x]->precipType];
else
$precisType = "-";
SetValue(VariableId($pid, "Niederschlag (Art)", 3, "~String"),$precisType);
$x++;
}
function InstanceId($id, $name)
{
$iid = @IPS_GetInstanceIDByName($name, $id);
if ($iid === false)
{
$iid = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetName($iid, $name);
IPS_SetParent($iid, $id);
IPS_ApplyChanges($iid);
}
return $iid;
}
function VariableId($id, $name, $type, $profile = "")
{
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid === false)
{
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
IPS_SetInfo($vid, "created by script #".$_IPS['SELF']);
if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
}
return $vid;
}
?>