Créez votre propre station météo!!

Bonjour à tous

Afin d’avoir à portée de main la météo du jour et des jours à venir, je me suis lancé dans une quête de la recherche d’une API gratuite car je voulais l’utiliser dans un aspect privé. Je suis ravi de vous annoncer que j’en ai trouvé une qui répond à mes besoins grâce au site OpenWeatherMap!

Bien entendu il m’a fallu un peu de matériel…

1) De quoi avons nous besoin?

Nous avons besoin:

  1. 1 Pc ( pour communiquer avec votre Raspberry PI et y installer les bouts de codes)
  2. Windows IoT Core Watcher(éventuellement)
  3. 1 Raspberry PI3 de préférence sinon un PI2 mais avec une antenne WIFI ou alors branhé en filaire
  4. Un écran branché au Raspberry PI

2) Le prérequis

Avant de parler d’url ou de ligne de code je vous invite à vous créer un compte sur le site OpenWeathermap ici.

Créez vous un compte et mettez de coté  l’API que le site vous donnera

meteo1
Le site est très bien fait vous verrez!!!

 

3) La météo temps réel

 

Une fois l’APIKEY récupérée , nous allons regarder ce que l’API nous offre comme possibilité. En ce qui nous concerne , ce sont les informations en temps réel qui nous intéressent. La page web se trouvent ici.

Nous avons sur cette page l’url  à émettre  et surtout les infos que nous pouvons récupérer.

voici donc l’url à émettre: http://api.openweathermap.org/data/2.5/weather?q=[VOTRE VILLE,VOTREPAYSEN2CARACTERES]&appid=[VOTREAPIKEY]

tout simplement.. Personnellement avec ceci je récupère  l’heure de lever/coucher du soleil, la température extérieure et l’icône à afficher.

Bon allez un peu de code!

Déjà dans votre projet il faut via Nugget installer JSON.NET

Afin de ne pas répéter le boulot plusieurs fois voici la classe qui permettra de décoder la réponse de l’API

 

namespace mastationmeteo
{

public class Coord
{
public double lon { get; set; }
public double lat { get; set; }
}

public class Weather
{
public int id { get; set; }
public string main { get; set; }
public string description { get; set; }
public string icon { get; set; }
}

public class Main
{
public double temp { get; set; }
public double pressure { get; set; }
public int humidity { get; set; }
public double temp_min { get; set; }
public double temp_max { get; set; }
public double sea_level { get; set; }
public double grnd_level { get; set; }
}

public class Wind
{
public double speed { get; set; }
public double deg { get; set; }
}

public class Clouds
{
public int all { get; set; }
}

public class Sys
{
public double message { get; set; }
public string country { get; set; }
public int sunrise { get; set; }
public int sunset { get; set; }
}

public class datameteo
{
public Coord coord { get; set; }
public List<Weather> weather { get; set; }
public string @base { get; set; }
public Main main { get; set; }
public Wind wind { get; set; }
public Clouds clouds { get; set; }
public int dt { get; set; }
public Sys sys { get; set; }
public int id { get; set; }
public string name { get; set; }
public int cod { get; set; }
}

}

 

De là avec la classe et JSON.NET voici le code que j’ai mis en plae pour réupérer les infos et les mettre dans une classe afin de traiter au cas par cas:

 

HttpClient client = new HttpClient();
HttpResponseMessage laresponse = new HttpResponseMessage();
laresponse = new HttpResponseMessage();
laresponse = await client.GetAsync(new Uri(« http://api.openweathermap.org/data/2.5/weather?q=[VOTRE VILLE,VOTREPAYSEN2CARACTERES]&appid=[VOTREAPIKEY] »));

if (laresponse.IsSuccessStatusCode)
{
string resultat = await laresponse.Content.ReadAsStringAsync();
string heure = «  »;
string minute = «  »;
datameteo  _resultatmeteo = JsonConvert.DeserializeObject<datameteo>(resultat);
}

 

NB:Pour les icones c’est : http://openweathermap.org/img/w/{_resultatmeteo.weather[0].icon}.png

 

Ensuite libre à vous de récupérer les informations qui vous intéressent. En ce qui me concerne je récupère de façon périodique ( toutes les heures) la température en celsius(resultatmeteo.main.temp – 273.15), les heures de lever(_resultatmeteo.sys.sunrise)/coucher(_resultatmeteo.sys.sunset) du soleil ainsi que l’icône du temps. enfin j’ai ajouté l’heure façon arc-en-ciel

En résumé voilà ce que ça donne.

meteo2

Enfin, un peu de cosmétique: l’écran et le raspberry seul c’est pas t’es joli. Bilan un petit tour dans un magasin créatif et voilà le projet dans sa globalité

WP_20170130_17_47_20_Raw (2)

Comme vous pouvez le voir j’ai été plus loin : j’ai ajouté une sonde de température afin d’avoir celle de la maison.

Conclusion

 

Voilà, vous avez le minimum syndical afin de réaliser chez vous votre propre station météo. Après libre à vous de pousser le concept un peu plus loin. En effet en plus de ci j’y ai ajouter une page Webradio, la prévision de la semaine qui vient l’infotrafic… Bref laissez votre imagination déborder sans la limiter!


Leave a Reply