Wetterdaten - Wunderground API

die Google Api ist down, dafür ist jetzt dies da, und das ist jetzt wohl ein bisschen geiler

<?php
$api = "xxxx";
$ort = "SIGRISWIL";

//aktuelles Wetter
  $json_string = file_get_contents("http://api.wunderground.com/api/$api/geolookup/conditions/lang:DL/q/DL/$ort.json");
  $parsed_json = json_decode($json_string);
  $icon = $parsed_json->{'current_observation'}->{'icon'};
  $temp_c = $parsed_json->{'current_observation'}->{'temp_c'};
  $min_temp = $parsed_json->{'current_observation'}->{'dewpoint_c'};
  $humid = $parsed_json->{'current_observation'}->{'relative_humidity'};
  $wind_speed = $parsed_json->{'current_observation'}->{'wind_kph'};
  $wind_dir = $parsed_json->{'current_observation'}->{'wind_dir'};
  $luftdruck = $parsed_json->{'current_observation'}->{'pressure_mb'};
  $wetter = $parsed_json->{'current_observation'}->{'weather'};
  $sichtweite = $parsed_json->{'current_observation'}->{'visibility_km'};


   	echo "${icon}
";
  		echo "akt. Temp: ${temp_c}°C
";
      echo "Minimal: ${min_temp}°C
";
    	echo "akt. Luftfeuchte: ${humid}
";
      echo "Windgeschwindigkeit: ${wind_speed} Km/h
";
      echo "Windrichtung: ${wind_dir} 
";
      echo "Luftdruck: ${luftdruck} HPa 
";
      echo "Luftdruck: ${wetter}
";
      echo "Sichtweite: ${sichtweite} Km
";
      
// Vorhersage
$json_fc_string = file_get_contents("http://api.wunderground.com/api/$api/forecast/lang:DL/q/Switzerland/$ort.json");
$parsed_fc_json = json_decode($json_fc_string);

  $prognose = $parsed_fc_json->{'forecast'}->{'simpleforecast'}->{'forecastday'};
//heute
		echo $icon0 = ($prognose[0]->icon) . "
";;
		echo $high0 = ($prognose[0]->high->celsius) . "
";;
		echo $low0 = ($prognose[0]->low->celsius) . "
";;
		echo $conditions0 = utf8_decode($prognose[0]->conditions) . "
";
//morgen
		echo $icon1 = ($prognose[1]->icon) . "
";;
		echo $high1 = ($prognose[1]->high->celsius) . "
";;
		echo $low1 = ($prognose[1]->low->celsius) . "
";;
		echo $conditions1 = utf8_decode($prognose[1]->conditions) . "
";
//übermorgen
		echo $icon2 = ($prognose[2]->icon) . "
";;
		echo $high2 = ($prognose[2]->high->celsius) . "
";;
		echo $low2 = ($prognose[2]->low->celsius) . "
";;
		echo $conditions2 = utf8_decode($prognose[2]->conditions) . "
";

//Alarm
$json_al_string = file_get_contents("http://api.wunderground.com/api/$api/alerts/q/zmw:00000.1.16172.json");
$parsed_al_json = json_decode($json_al_string);

//Astronomie
$json_ast_string = file_get_contents("http://api.wunderground.com/api/$api/astronomy/q/Switzerland/$ort.json");
$parsed_ast_json = json_decode($json_ast_string);

  $mondbel = $parsed_ast_json->{'moon_phase'}->{'percentIlluminated'}; //% Mondbeleuchtung
  $mondage = $parsed_ast_json->{'moon_phase'}->{'ageOfMoon'}; //% Mondbeleuchtung
  $sunriseh = $parsed_ast_json->{'moon_phase'}->{'sunrise'}->{'hour'}; // Sonnenaufgang Stunde
  $sunrisem = $parsed_ast_json->{'moon_phase'}->{'sunrise'}->{'minute'}; //% Sonnenaufgang Minute
  $sunseth = $parsed_ast_json->{'moon_phase'}->{'sunset'}->{'hour'}; // Sonnenaufgang Stunde
  $sunsetm = $parsed_ast_json->{'moon_phase'}->{'sunset'}->{'minute'}; //% Sonnenaufgang Minute

  
   	echo "Mondbeleuchtung: ${mondbel}%
";
     	echo "Alter des Mondes: ${mondage} Tage
";
     	echo "Sonnenaufgang: ${sunriseh}:${sunrisem}
";
     	echo "Sonnenuntergang: ${sunseth}:${sunsetm}
";


?>

Laut Berichten bezog Google die Daten teilweise auch hier.

EDIT:

Tages und 3- Tagesprognosen. Die Icon-Bezeichnungen müssen noch angepasst werden.

Astrologie (im ganz kleinen Masse und Wetteralarm (hab bloss noch nicht rausgefunden, um welche Alarme es sich handelt), sind nun auch drin

Sehr nice…

Hab mich da gleich mal angemeldet!! :smiley:

Hast Du mal einen Tip wie ich meinen City-Code herausfinden kann?!

Gruß,
Peter

Schau Dir in der API-Dokumentation mal die Funktion Geolookup an. Da kannst Deinen Citycode mit Hilfe von Längen- und Breitengrad ermitteln. Und diese beiden Daten (sofern Du Sie nicht schon hast) kannst Du Dir auf der Hauptseite beschaffen wenn Du Deinen Ort dort findest.

Hallo,

hat schon jemand mit der „wunderground API“ gearbeitet?

Ich bekomme immer die Fehlermeldung „failed to open stream: HTTP request failed! HTTP/1.0 401 Unauthorized“ wenn ich mit file_get_contents arbeite.

Gebe ich im IE folgende Zeile ein funktioniert es und ich erhalte eine JSON-Datei!

http://api.wunderground.com/api/xxxxxxxxxxxxAPI-Key/conditions/lang:DL/q/DL/Meissen.json

Woran kann das liegen?

Gruß Tommy

3 Posts weiteroben hast du alles was du brauchst

hier ist die Ausgabe der API

{
	"response": {
		"version": "0.1"
		,"termsofService": "http://www.wunderground.com/weather/api/d/terms.html"
		,"features": {
		"geolookup": 1
		,
		"conditions": 1
		}
	}
		,	"location": {
		"type":"INTLCITY",
		"country":"SW",
		"country_iso3166":"CH",
		"country_name":"Schweiz",
		"state":"",
		"city":"Sigriswil",
		"tz_short":"CEST",
		"tz_long":"Europe/Zurich",
		"lat":"46.71666718",
		"lon":"7.69999981",
		"zip":"00000",
		"magic":"19",
		"wmo":"06734",
		"l":"/q/zmw:00000.19.06734",
		"requesturl":"global/stations/06734.html",
		"wuiurl":"http://www.wunderground.com/global/stations/06734.html",
		"nearby_weather_stations": {
		"airport": {
		"station": [
		{ "city":"Interlaken", "state":"", "country":"Switzerland", "icao":"----", "lat":"46.66666794", "lon":"7.86666679" },
		{ "city":"Bern-Belp", "state":"", "country":"SW", "icao":"LSZB", "lat":"46.91999817", "lon":"7.50000000" },
		{ "city":"Sion", "state":"", "country":"SW", "icao":"LSGS", "lat":"46.22000122", "lon":"7.32999992" },
		{ "city":"Grenchen", "state":"", "country":"SW", "icao":"LSZG", "lat":"47.18000031", "lon":"7.42000008" }
		]
		}
		,
		"pws": {
		"station": [
		{
		"neighborhood":"APRSWXNET Thun CH",
		"city":"Interlaken",
		"state":"",
		"country":"SW",
		"id":"MD1844",
		"distance_km":5,
		"distance_mi":3
		},
		{
		"neighborhood":"Thun",
		"city":"Thun - Strandbad",
		"state":"BERN",
		"country":"Switzerland",
		"id":"IBERNTHU5",
		"distance_km":5,
		"distance_mi":3
		},
		{
		"neighborhood":"Thun",
		"city":"Thun",
		"state":"Bern",
		"country":"Switzerland",
		"id":"IBERNTHU4",
		"distance_km":7,
		"distance_mi":4
		},
		{
		"neighborhood":"Uetendorf",
		"city":"Uetendorf",
		"state":"BERN",
		"country":"SWITZERLAND",
		"id":"IBERNUET2",
		"distance_km":11,
		"distance_mi":6
		},
		{
		"neighborhood":"",
		"city":"Frutigen",
		"state":"Bern",
		"country":"SWITZERLAND",
		"id":"IBERNFRU2",
		"distance_km":15,
		"distance_mi":9
		},
		{
		"neighborhood":"",
		"city":"Zimmerwald",
		"state":"BERN",
		"country":"SWITZERLAND",
		"id":"IBERNZIM2",
		"distance_km":25,
		"distance_mi":15
		},
		{
		"neighborhood":"Grindelwald",
		"city":"Grindelwald",
		"state":"Kt. Bern",
		"country":"SWITZERLAND",
		"id":"IBERNGRI2",
		"distance_km":28,
		"distance_mi":16
		},
		{
		"neighborhood":"",
		"city":"Niederscherli",
		"state":"BERN",
		"country":"SWITZERLAND",
		"id":"IBERNNIE3",
		"distance_km":31,
		"distance_mi":18
		},
		{
		"neighborhood":"Bern",
		"city":"Hasle-Ruegsau i.E.",
		"state":"BERN",
		"country":"Switzerland",
		"id":"IBERNOBE2",
		"distance_km":34,
		"distance_mi":20
		},
		{
		"neighborhood":"Neuenegg, Switzerland",
		"city":"Neuenegg",
		"state":"Bern",
		"country":"SWITZERLAND",
		"id":"IBERNNEU2",
		"distance_km":36,
		"distance_mi":21
		},
		{
		"neighborhood":"",
		"city":"Meiringen",
		"state":"BERNE",
		"country":"SWITZERLAND",
		"id":"IBERNEME2",
		"distance_km":37,
		"distance_mi":22
		}
		]
		}
		}
	}
		,	"current_observation": {
		"image": {
		"url":"http://icons-ak.wxug.com/graphics/wu2/logo_130x80.png",
		"title":"Weather Underground",
		"link":"http://www.wunderground.com"
		},
		"display_location": {
		"full":"Sigriswil, Schweiz",
		"city":"Sigriswil",
		"state":"",
		"state_name":"Schweiz",
		"country":"SW",
		"country_iso3166":"CH",
		"zip":"00000",
		"latitude":"46.71666718",
		"longitude":"7.69999981",
		"elevation":"716.00000000"
		},
		"observation_location": {
		"full":"APRSWXNET Thun CH, Interlaken, ",
		"city":"APRSWXNET Thun CH, Interlaken",
		"state":"",
		"country":"SW",
		"country_iso3166":"CH",
		"latitude":"46.715961",
		"longitude":"7.627840",
		"elevation":"1955 ft"
		},
		"estimated": {
		},
		"station_id":"MD1844",
		"observation_time":"Last Updated on August 29, 11:39 CEST",
		"observation_time_rfc822":"Wed, 29 Aug 2012 11:39:00 +0200",
		"observation_epoch":"1346233140",
		"local_time_rfc822":"Wed, 29 Aug 2012 12:15:58 +0200",
		"local_epoch":"1346235358",
		"local_tz_short":"CEST",
		"local_tz_long":"Europe/Zurich",
		"local_tz_offset":"+0200",
		"weather":"Teils Wolkig",
		"temperature_string":"68 F (20.0 C)",
		"temp_f":68,
		"temp_c":20.0,
		"relative_humidity":"65%",
		"wind_string":"Calm",
		"wind_dir":"Nord-Nordost",
		"wind_degrees":12,
		"wind_mph":0,
		"wind_gust_mph":0,
		"wind_kph":0.0,
		"wind_gust_kph":0,
		"pressure_mb":"1021",
		"pressure_in":"30.15",
		"pressure_trend":"0",
		"dewpoint_string":"56 F (13 C)",
		"dewpoint_f":56,
		"dewpoint_c":13,
		"heat_index_string":"NA",
		"heat_index_f":"NA",
		"heat_index_c":"NA",
		"windchill_string":"NA",
		"windchill_f":"NA",
		"windchill_c":"NA",
		"feelslike_string":"68 F (20.0 C)",
		"feelslike_f":"68",
		"feelslike_c":"20.0",
		"visibility_mi":"6.2",
		"visibility_km":"10.0",
		"solarradiation":"",
		"UV":"5",
		"precip_1hr_string":"0.00 in ( 0 mm)",
		"precip_1hr_in":"0.00",
		"precip_1hr_metric":" 0",
		"precip_today_string":"-999.00 in (-25375 mm)",
		"precip_today_in":"-999.00",
		"precip_today_metric":"-25375",
		"icon":"partlycloudy",
		"icon_url":"http://icons-ak.wxug.com/i/c/k/partlycloudy.gif",
		"forecast_url":"http://www.wunderground.com/global/stations/06734.html",
		"history_url":"http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=MD1844",
		"ob_url":"http://www.wunderground.com/cgi-bin/findweather/getForecast?query=46.715961,7.627840"
	}
}
akt. Temp: 20°C
Minimal: 13°C
akt. Luftfeuchte: 65%
Windgeschwindigkeit: 0 Km/h
Windrichtung: Nord-Nordost 
Luftdruck: 1021 HPa 
Luftdruck: Teils Wolkig
Sichtweite: 10.0 Km

Ich hab das Thema abgetrennt, da es mit der Wetterseite nichts zutun hat. Ich werde es auch definitiv nicht verwenden.

bei mir klappt es mit dem Stadtnamen

$json_string = file_get_contents(„http://api.wunderground.com/api/xxxxdeinxxAPIxxCodexxx/geolookup/conditions/lang:DL/q/DL/NRW/Stadtlohn.json“);

Jupp… hab es hin bekommen. Für alle die lieber ( so wie ich ) mit xml arbeiten als mit json einfach am Ende .xml statt .json eintippen! Geht auch!
Super Sache! 500 Abfragen am Tag und nicht mehr als 10 / Minute sind frei! Just for Info falls noch jemand überlegt!
Grüße und Danke,
Peter

Sent from my iPhone using Tapatalk

Kannst Du einem Laien (also mir) einen Tip geben, wie er die Icon-Bezeichnungen anpassen kann?
Stehe gerade auf dem Schlauch
vielen Dank

Ansonsten: Geil :slight_smile:

Was willst Du da denn anpassen?

So steht es jedenfalls im ersten Beitrag…

Die API liefert auch die Namen bzw. den Link zu den Wetter-Icons. Wenn Du eigene Icons verwenden willst weill Dir die von Weather Underground nicht gefallen, musst Du die Wettersituation auswerten und entsprechend die Namen Deiner Icons zuordnen.

in der Goggle-Api hiess die Icon-Bezeichnung zB. „mostly_cloudy.png“. Bei Wunderground „mostlycloudy.png“. Das meinte ich mit umbenennen, da ja sicher viele bereits die Icons der Wettercracks aus dem Forum benutzen.

Fehler gefunden! Liegt am Netzwerk der Firma!
Zu Hause funktioniert es.

Habs kapiert, funktioniert. Besten Dank!!!

Warum eigentlich nicht, scheint doch sehr praktisch zu sein.

bin im Moment noch am „basteln“. Bislang läufts ohne css. Die Werte werden in Tabellen geschrieben und in 3 Variablen ausgegeben. Wenn ich alle Infos drin habe, folgt dann das Script.

Hallo Jbu

Dein Script habe ich bei mir adaptiert, funktioniert besser als Google.
Meines Wissens nach hat Google auch die Mondphase geliefert. Hast du für das auch einen ersatz.
Ich muss doch wissen wann Vollmond ist.

thx
tschewie

Warum ? Ich merk das immer im Büro und bei meiner Götegattin.
Funktioniert viel zuverlässiger als irgendeine Api.:smiley:

greez bb