$url = "http://api.openweathermap.org/data/2.5/weather?id=6553135&lang=de&appid=xxputyourownkeyxxx";
$data = file_get_contents($url);
$arrData = json_decode($data,true);
echo ""; print_r ($arrData); echo "
";
Die Ausgabe sieht dann folgendermaßen aus:
Array
(
[coord] => Array
(
[lon] => 7.81
[lat] => 51.68
)
[weather] => Array
(
[0] => Array
(
[id] => 800
[main] => Clear
[description] => Klarer Himmel
[icon] => 01d
)
)
[base] => stations
[main] => Array
(
[temp] => 277.15
[pressure] => 1018
[humidity] => 55
[temp_min] => 277.15
[temp_max] => 277.15
)
[visibility] => 10000
[wind] => Array
(
[speed] => 1.5
[deg] => 190
)
[clouds] => Array
(
[all] => 0
)
[dt] => 1519050000
[sys] => Array
(
[type] => 1
[id] => 4912
[message] => 0.0223
[country] => DE
[sunrise] => 1519022051
[sunset] => 1519059102
)
[id] => 6553135
[name] => Hamm, Stadt
[cod] => 200
)
Die Temperaturen sind in Kelvin angegeben und müssen in ºC umgerechnet werden.
===== Umsetzung mit PHP =====
Die Umsetzung ist jetzt relativ einfach. Die Windstärke ist in der Einheit m/s angegeben. Dort habe ich eine Umrechnung in Windstärken vorgenommen ([[https://de.wikipedia.org/wiki/Beaufortskala|Beaufort-Skala]]). In der Include-Datei ''beaufort-skala.php'' gibt es die Funktion ''getBeaufort()'', die ein Array aus Windstärke und Windstärkenbeschreibung liefert.
Da die Windrichtung ebenfalls nur in Grad angegeben wird, habe ich dort zusätzlich eine Prozedur ''getWindrichtung()'' eingefügt, die die meteorologischen Bezeichnungen Nord, Nordost , Ost , ... liefert.
Wetterstation
Wetterdaten für = $arrData['name']?>
= round($numTemp,0) ?> °C
= $arrData['weather'][0]['description'] ?>
= date("d.m.Y") ?> = date("H:i")?> Uhr
Temperatur = $numTemp ?> °C Min: = $numTempMin ?>°C Max: = $numTempMax ?> °C
Wind = $strWinddescription ?>, Windstärke = $numWindspeed ?>, = $numWind?> m/s
= $strWindDescription ?> (=$numWindDirection?>°)
Wolken = $arrData['clouds']['all'];?> %
Luftdruck = $numPressure ?> hPa
Luftfeuchtigkeit = $numHumidity ?> %
Sichtweite = $arrData['visibility'];?>
Sonenaufgang = $strSunrise ?> Uhr
Sunnenuntergang = $strSunset ?> Uhr
Quelle: www.openweathermap.com
* [[https://www.bankerheide.de/wetter/|Skript ausführen]]
===== Windstärke und Windrichtung =====
Die Ermittlung der Windstärke und der Windrichtung lässt sich sicherlich kürzer und eleganter lösen.
0, 'beschreibung' => 'Windstille', 'minwert' => 0 ],
['windstaerke' => 1, 'beschreibung' => 'leiser Zug', 'minwert' => 0.3 ],
['windstaerke' => 2, 'beschreibung' => 'leichte Brise', 'minwert' => 1.6 ],
['windstaerke' => 3, 'beschreibung' => 'schwache Brise', 'minwert' => 3.4 ],
['windstaerke' => 4, 'beschreibung' => 'mäßige Brise', 'minwert' => 5.5 ],
['windstaerke' => 5, 'beschreibung' => 'frische Brise', 'minwert' => 8.0 ],
['windstaerke' => 6, 'beschreibung' => 'staker Wind', 'minwert' => 10.8 ],
['windstaerke' => 7, 'beschreibung' => 'steifer Wind', 'minwert' => 12.9 ],
['windstaerke' => 8, 'beschreibung' => 'stürmische Wind', 'minwert' => 17.2 ],
['windstaerke' => 9, 'beschreibung' => 'Sturm', 'minwert' => 20.8 ],
['windstaerke' => 10, 'beschreibung' => 'schwerer Sturm', 'minwert' => 24.5 ],
['windstaerke' => 11, 'beschreibung' => 'orkanartiger Sturm', 'minwert' => 28.5 ],
['windstaerke' => 12, 'beschreibung' => 'Orkan', 'minwert' => 32.7 ],
);
function getBeaufort($numV) {
global $arrBeaufort;
$strDescription="";
$numSpeeds=0;
foreach ($arrBeaufort as $wind) {
if ($wind['minwert'] <= $numV) {
$strDescription = $wind['beschreibung'];
$numSpeeds = $wind['windstaerke'];
} else break;
}
return [$strDescription,$numSpeeds];
}
$arrWindrichtung = array (
["bezeichnung" => "Nord", "kurzbez" => "N", "winkel" => 0],
["bezeichnung" => "Nordost", "kurzbez" => "NE", "winkel" => 22.5],
["bezeichnung" => "Ost", "kurzbez" => "E", "winkel" => 67.5],
["bezeichnung" => "Südost", "kurzbez" => "SE", "winkel" => 112.5],
["bezeichnung" => "Süd", "kurzbez" => "S", "winkel" => 157.5],
["bezeichnung" => "Südwest", "kurzbez" => "SW", "winkel" => 202.5],
["bezeichnung" => "West", "kurzbez" => "W", "winkel" => 247.5],
["bezeichnung" => "Nordwest", "kurzbez" => "NW", "winkel" => 292.5],
["bezeichnung" => "Nord", "kurzbez" => "N", "winkel" => 337.5],
);
function getWindrichtung($numDirection) {
global $arrWindrichtung;
$strBezeichnung="";
$strKurbez="";
foreach ($arrWindrichtung as $richtung) {
if ($richtung['winkel'] <= $numDirection) {
$strBezeichnung=$richtung['bezeichnung'];
$strKurbez=$richtung['kurzbez'];
}
}
return [$strBezeichnung,$strKurbez];
}
?>