// 100-CodigoPHP.php
// Versión 1.0 10/12/2017 Juan Manuel Cueva Lovelle. Universidad de Oviedo
$apikey = "47b790fd0fc41878c80c57c9846132cb";
$ciudad = "Oviedo";
$codigoPais ="ES";
$unidades = "&units=metric";
$idioma = "&lang=es";
$url = "http://api.openweathermap.org/data/2.5/weather?q=" . $ciudad ."," .$codigoPais . $unidades . $idioma . "&APPID=" . $apikey;
// Se solicita el archivo JSON de la url que se pasa como parámetro y se recibe como un string
$datos = file_get_contents($url);
echo "<h2>JSON recibido</h2>";
// Muestra el archivo JSON recibido como string maquetado en bonito
echo "<pre>";
$jsonMaquetado = json_decode($datos, JSON_PRETTY_PRINT);
print_r($jsonMaquetado);
echo "</pre>";
// Se convierte el JSON en un objeto PHP
$json = json_decode($datos);
if($json==null) {
echo "<h3>Error en el archivo JSON recibido</h3>";
}
else {
echo "<h3>JSON decodificado correctamente</h3>";
}
# Datos contenidos en el JSON
$estacion = $json->name;
$pais =$json->sys->country;
$lat = $json->coord->lat;
$lon = $json->coord->lon;
$temp = $json->main->temp;
$tempmax = $json->main->temp_max;
$tempmin = $json->main->temp_min;
$presion = $json->main->pressure;
$humedad = $json->main->humidity;
$velocidadViento = $json->wind->speed;
if(isset($json->wind->deg)) {
$direccionViento = $json->wind->deg;
}
else{
$direccionViento ="No disponible";
}
$estadoCielo = $json->weather[0]->main;
$descripcion = $json->weather[0]->description;
$icono = $json->weather[0]->icon;
$URLicono = "http://openweathermap.org/img/w/" . $icono . ".png";
$nubosidad = $json->clouds->all;
$amanece = $json->sys->sunrise;
$oscurece = $json->sys->sunset;
$fechaHoraMedida = $json->dt;
echo "<h2>Datos</h2>";
echo "<img src = '$URLicono' alt = '$descripcion' >";
echo "<p>Ciudad: " . $estacion . "</p>";
echo "<p>País: " . $pais . "</p>";
echo "<p>[longitud = ".$lon. " grados, latitud = ".$lat. " grados]</p>";
echo "<p>Estado del cielo: " .$estadoCielo ."</p>";
echo "<p>Descripción: ".$descripcion."</p>";
echo "<p>Nubosidad: " . $nubosidad . " %</p>";
echo "<p>Temperatura: ".$temp." grados Celsius [Máx: ".$tempmax." grados Celsius, Mín: ".$tempmin." grados Celsius]</p>";
echo "<p>Presión: ".$presion. " milibares</p>";
echo "<p>Humedad: ".$humedad. " %</p>";
echo "<p>Velocidad del viento: " . $velocidadViento . " metros/segundo</p>";
echo "<p>Dirección del viento: " . $direccionViento . " grados</p>";
echo "<p>Fecha y hora del amanecer: " . date("d-m-Y G:i:s",$amanece) . "</p>";
echo "<p>Fecha y hora del oscurecer: " . date("d-m-Y G:i:s",$oscurece) . "</p>";
echo "<p>Fecha y hora de la medida: " . date("d-m-Y G:i:s",$fechaHoraMedida) . "</p>";
Array ( [coord] => Array ( [lon] => -5.8448 [lat] => 43.3603 ) [weather] => Array ( [0] => Array ( [id] => 803 [main] => Clouds [description] => muy nuboso [icon] => 04d ) ) [base] => stations [main] => Array ( [temp] => 22.23 [feels_like] => 22.6 [temp_min] => 20.26 [temp_max] => 22.63 [pressure] => 1015 [humidity] => 80 [sea_level] => 1015 [grnd_level] => 976 ) [visibility] => 10000 [wind] => Array ( [speed] => 0.89 [deg] => 47 [gust] => 2.24 ) [clouds] => Array ( [all] => 71 ) [dt] => 1725193010 [sys] => Array ( [type] => 2 [id] => 2032169 [country] => ES [sunrise] => 1725169673 [sunset] => 1725217148 ) [timezone] => 7200 [id] => 3114711 [name] => Oviedo [cod] => 200 )
Ciudad: Oviedo
País: ES
[longitud = -5.8448 grados, latitud = 43.3603 grados]
Estado del cielo: Clouds
Descripción: muy nuboso
Nubosidad: 71 %
Temperatura: 22.23 grados Celsius [Máx: 22.63 grados Celsius, Mín: 20.26 grados Celsius]
Presión: 1015 milibares
Humedad: 80 %
Velocidad del viento: 0.89 metros/segundo
Dirección del viento: 47 grados
Fecha y hora del amanecer: 01-09-2024 7:47:53
Fecha y hora del oscurecer: 01-09-2024 20:59:08
Fecha y hora de la medida: 01-09-2024 14:16:50