Hier mein Script wegen der Abschaltung von WeatherUnderground.
Viel Spass!
Sebastian
<?
$api = "yourkey";
$latitude = "45.98";
$longitude = "13.97";
$today = time();
$d = date('d', $today);
$m = date('m', $today);
$y = date('Y', $today);
$tomorrow = mktime(0, 0, 0, $m, ($d + 1), $y);
$heute = (integer) date('d');
$morgen = (integer) date('d', $tomorrow);
$WochenTage = Array('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
$json_string = file_get_contents("https://api.darksky.net/forecast/$api/$latitude,$longitude?exclude=minutely&lang=de&units=si");
$parsed_json = json_decode($json_string);
$current = $parsed_json->{'currently'};
$text0 = utf8_decode($current->summary) . "
";
$text1 = utf8_decode($current->temperature) . "
";
$text2 = utf8_decode($current->apparentTemperature) . "
";
$text3 = utf8_decode($current->precipProbability) . "
";
$text4 = utf8_decode($current->windSpeed) . "
";
$text5 = utf8_decode($current->windGust) . "
";
$text6 = utf8_decode($current->cloudCover) . "
";
@$text7 = utf8_decode($current->precipType) . "
";
$text8 = utf8_decode($current->humidity);
$niederschlag = "";
if ($text7 == "rain") $niederschlag = "Regen";
if ($text7 == "snow") $niederschlag = "Schnee";
if ($text7 == "sleet") $niederschlag = "Schneeregen";
$InsID = @IPS_GetInstanceIDByName("Aktuell", $IPS_SELF);
if ($InsID === false)
{
$InsID = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetName($InsID, "Aktuell");
IPS_SetParent($InsID, $IPS_SELF);
IPS_ApplyChanges($InsID);
}
SetValue(CreateVariableByName($InsID, "Zusammenfassung", 3, "~String"),$text0);
SetValue(CreateVariableByName($InsID, "Temperatur", 2, "~Temperature"),$text1);
SetValue(CreateVariableByName($InsID, "Temperatur gefühlt", 2, "~Temperature"),$text2);
SetValue(CreateVariableByName($InsID, "Niederschl Wahrsch.", 2, "~Intensity.1"),$text3);
@SetValue(CreateVariableByName($InsID, "Niederschlag", 3, "~String"),$text7);
SetValue(CreateVariableByName($InsID, "Windgeschw", 2, "~WindSpeed.ms"),$text4);
SetValue(CreateVariableByName($InsID, "Wind Böen", 2, "~WindSpeed.ms"),$text5);
SetValue(CreateVariableByName($InsID, "Wolken", 2, "~Intensity.1"),$text6);
SetValue(CreateVariableByName($InsID, "Feuchte", 2, "~Intensity.1"),$text8);
$daily = $parsed_json->{'daily'};
$text0 = utf8_decode($daily->summary) . "
";
$days = $parsed_json->{'daily'}->{'data'};
$message = array();
for($i=0;$i<7;$i++)
{
$day = utf8_decode($days[$i]->time);
$summary = utf8_decode($days[$i]->summary);
$temphigh = utf8_decode($days[$i]->temperatureHigh);
$templow = utf8_decode($days[$i]->temperatureLow);
@$precipType = utf8_decode($days[$i]->precipType);
$niederschlag = "";
if ($precipType == "rain") $niederschlag = "Regen";
if ($precipType == "snow") $niederschlag = "Schnee";
if ($precipType == "sleet") $niederschlag = "Schneeregen";
$niedr_prop = utf8_decode($days[$i]->precipProbability);
$wind = utf8_decode($days[$i]->windSpeed);
$boen = utf8_decode($days[$i]->windGust);
$wolken = utf8_decode($days[$i]->cloudCover);
$humidity = utf8_decode($days[$i]->humidity);
$tag = (integer) date('d',intval($day));
$Wochentag = $WochenTage[date('w',intval($day))];
$message[$tag] = array(date('d.m',intval($day)),$WochenTage[date('w',intval($day))],$summary,$temphigh,$templow,$niederschlag,$niedr_prop,$wind,$boen,$wolken,$humidity);
$box[] = "$Wochentag $summary / $niederschlag $niedr_prop % / $temphigh °C $templow °C";
}
$InsID = @IPS_GetInstanceIDByName("Heute", $IPS_SELF);
if ($InsID === false)
{
$InsID = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetName($InsID, "Heute");
IPS_SetParent($InsID, $IPS_SELF);
IPS_ApplyChanges($InsID);
}
SetValue(CreateVariableByName($IPS_SELF, "Woche Zusammenfassung", 3, "~String"),$text0);
SetValue(CreateVariableByName($InsID, "Zusammenfassung", 3, "~String"),$message[$heute][2]);
SetValue(CreateVariableByName($InsID, "Temp Max", 2, "~Temperature"),$message[$heute][3]);
SetValue(CreateVariableByName($InsID, "Temp Min", 2, "~Temperature"),$message[$heute][4]);
@SetValue(CreateVariableByName($InsID, "Niederschlag", 3, "~String"),$message[$heute][5]);
SetValue(CreateVariableByName($InsID, "Niederschl Wahrsch", 2, "~Intensity.1"),$message[$heute][6]);
SetValue(CreateVariableByName($InsID, "Wind", 2, "~WindSpeed.ms"),$message[$heute][7]);
SetValue(CreateVariableByName($InsID, "Wind Böen", 2, "~WindSpeed.ms"),$message[$heute][8]);
SetValue(CreateVariableByName($InsID, "Wolken", 2, "~Intensity.1"),$message[$heute][9]);
SetValue(CreateVariableByName($InsID, "Feuchte", 2, "~Intensity.1"),$message[$heute][10]);
$InsID = @IPS_GetInstanceIDByName("Morgen", $IPS_SELF);
if ($InsID === false)
{
$InsID = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetName($InsID, "Morgen");
IPS_SetParent($InsID, $IPS_SELF);
IPS_ApplyChanges($InsID);
}
SetValue(CreateVariableByName($InsID, "Zusammenfassung", 3, "~String"),$message[$morgen][2]);
SetValue(CreateVariableByName($InsID, "Temp Max ", 2, "~Temperature"),$message[$morgen][3]);
SetValue(CreateVariableByName($InsID, "Temp Min", 2, "~Temperature"),$message[$morgen][4]);
@SetValue(CreateVariableByName($InsID, "Niederschlag", 3, "~String"),$message[$morgen][5]);
SetValue(CreateVariableByName($InsID, "Niederschl Wahrsch", 2, "~Intensity.1"),$message[$morgen][6]);
SetValue(CreateVariableByName($InsID, "Wind", 2, "~WindSpeed.ms"),$message[$morgen][7]);
SetValue(CreateVariableByName($InsID, "Wind Böen", 2, "~WindSpeed.ms"),$message[$morgen][8]);
SetValue(CreateVariableByName($InsID, "Wolken", 2, "~Intensity.1"),$message[$morgen][9]);
SetValue(CreateVariableByName($InsID, "Feuchte", 2, "~Intensity.1"),$message[$morgen][10]);
SetValue(CreateVariableByName($IPS_SELF, "Wöchentlich", 3, "~TextBox"), implode("
",$box));
$hourly = $parsed_json->{'hourly'}->{'data'};
$message = array();
for($i=0;$i<48;$i++)
{
$time = utf8_decode($hourly[$i]->time);
$summary = utf8_decode($hourly[$i]->summary);
$temp = utf8_decode($hourly[$i]->temperature);
$temp2 = utf8_decode($hourly[$i]->apparentTemperature);
$humidity = utf8_decode($hourly[$i]->humidity);
@$precipType = utf8_decode($hourly[$i]->precipType);
$niederschlag = "";
if ($precipType == "rain") $niederschlag = "Regen";
if ($precipType == "snow") $niederschlag = "Schnee";
if ($precipType == "sleet") $niederschlag = "Schneeregen";
$niedr_prop = utf8_decode($hourly[$i]->precipProbability);
$wind = utf8_decode($hourly[$i]->windSpeed);
$boen = utf8_decode($hourly[$i]->windGust);
$wolken = utf8_decode($hourly[$i]->cloudCover);
$tag = date('d',intval($time));
$stunde = date('H',intval($time));
$Wochentag = $WochenTage[date('w',intval($time))];
$message[$stunde] = array(date('d.m',intval($time)),$WochenTage[date('w',intval($time))],date('H',intval($time)),$summary,$temp,$temp2,$niederschlag,$niedr_prop,$wind,$boen,$wolken,$humidity);
$box2[]="$Wochentag $stunde Uhr $summary / $niederschlag $niedr_prop % / $temp °C";
}
SetValue(CreateVariableByName($IPS_SELF, "Vorhersage", 3, "~TextBox"), implode("
",$box2));
function CreateVariableByName($id, $name, $type, $profile = "")
{
//global $_IPS['SELF'];
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid === false)
{
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
IPS_SetInfo($vid, "this variable was created by script #".$_IPS['SELF']);
if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
}
return $vid;
}
?>