Accueil » Domotique » guides domotiques » Eedomus » Les prévisions météo avec eedomus
Eedomus

Les prévisions météo avec eedomus

Ce tuto va permettre de mettre en oeuvre assez simplement des prévisions météo dans votre eedomus.
Les informations météorologiques sont issues du site météo très complet www.worldweatheronline.com qui dispose d’une API. C’est sur cette API que nous allons nous appuyer pour importer les informations.

1 Pour bénéficier de cette API, il faut dans un premier temps s’inscrire et obtenir sa clé API. L’inscription est gratuite pour la version free, cette API gratuite permet de faire 500 requêtes par heures, c’est donc largement suffisant pour notre utilisation, mais vous verrez que nous en ferons beaucoup moins puisque je vous propose un script pour mettre en cache une version xml directement sur votre serveur, NAS Synology ou Raspberry.

weather-api-meteo-eedomus

Enregistrer un compte 2 Passons à présent à la configuration des données que nous souhaitons obtenir. Pour cela, rendez-vous dans l’API Explorer et sélectionnez le type d’API “Free Weather API”

api-weather-underground-explorer-eedomus

3 Saisissez votre App/Key
api-key-weather-underground-eedomus4 Pour bénéficier des prévisions météo pour le lendemain, il faut paramétrer les options ainsi (en remplacent Paris par votre localisation)
local-weather-configuration-api-meteo5 Faites “Try it” et récupérez l’url dans le cadre Request URL, c’est cette url qui servira à appeler vos données par la suite:
http://api.worldweatheronline.com/free/v1/weather.ashx?q=Paris&format=xml&num_of_days=1&date=tomorrow&key=icivotrecléapi

Cette url permet d’obtenir un xml sur mesure l’ors de son appel, par exemple pour mon url j’obtiens ce xml:

[xml highlight=”30,32,35,36,46″] <?xml version="1.0" encoding="UTF-8"?>
<data>
<request>
<type>City</type>
<query>Paris, France</query>
</request>
<current_condition>
<observation_time>04:24 PM</observation_time>
<temp_C>11</temp_C>
<temp_F>52</temp_F>
<weatherCode>116</weatherCode>
<weatherIconUrl>
<![CDATA[http://cdn.worldweatheronline.net/images/wsymbols01_png_64/wsymbol_0002_sunny_intervals.png]]>
</weatherIconUrl>
<weatherDesc>
<![CDATA[Partly Cloudy ]]>
</weatherDesc>
<windspeedMiles>12</windspeedMiles>
<windspeedKmph>19</windspeedKmph>
<winddirDegree>160</winddirDegree>
<winddir16Point>SSE</winddir16Point>
<precipMM>0.1</precipMM>
<humidity>87</humidity>
<visibility>10</visibility>
<pressure>996</pressure>
<cloudcover>75</cloudcover>
</current_condition>
<weather>
<date>2014-02-15</date>
<tempMaxC>11</tempMaxC>
<tempMaxF>52</tempMaxF>
<tempMinC>5</tempMinC>
<tempMinF>40</tempMinF>
<windspeedMiles>23</windspeedMiles>
<windspeedKmph>37</windspeedKmph>
<winddirection>SW</winddirection>
<winddir16Point>SW</winddir16Point>
<winddirDegree>221</winddirDegree>
<weatherCode>116</weatherCode>
<weatherIconUrl>
<![CDATA[http://cdn.worldweatheronline.net/images/wsymbols01_png_64/wsymbol_0002_sunny_intervals.png]]>
</weatherIconUrl>
<weatherDesc>
<![CDATA[Partly Cloudy ]]>
</weatherDesc>
<precipMM>0.5</precipMM>
</weather>
</data>
[/xml]

Les données que nous souhaitons affichées sont les dans les lignes en surbrillance.
Notre url acquise et le xml appréhendé, passons à présent à configuration coté eedomus.

6 Créez une nouvelle pièce “Météo” par exemple:
meteo-peripherique-eedomus-domotique
7 Dans cette pièce, ajoutez un nouveau périphérique “capteur HTTP” auquel vous donnez le nom que vous souhaitez, chez moi c’est “Pluie demain”, ce capteur comme son nom l’indique, donnera la prévision pluviométrique du lendemain. Configurer ce périphérique comme suit:
eedomus-meteo-peripjerique-pluie-demain

Un peu de détail:
coller l’url obtenu à l’étape précédente dans le champ URL de la requête et pour afficher la donnée de la ligne 46 <precipMM>, entrer le chemin XPATH /data/weather/precipMM.

Une fréquence à 600 minutes soit toutes les 10 heures permet 2 rafraîchissements par jour, un étant amplement suffisant, mais au cas ou…

Faites-en de même pour les indicateurs suivants avec leurs chemins XPATH respectifs:

  • /data/weather/tempMaxC  pour la température maxi
  • /data/weather/tempMinC  pour la température mini
  • /data/weather/windspeedKmph  pour la vitesse du vent
  • /data/weather/winddirection  pour la direction du vent*
    *Notez que pour ce périphérique le type de données est “liste de valeurs”.
Domo-blog a fait le choix de ne pas polluer votre lecture avec de la publicité. Vous trouverez cependant des liens affiliés vers les produits recommandés dans le contenu. Cela ne perturbe en rien votre experience de lecture et permet de financer le blog.
Vous pouvez également soutenir le blog en m'offrant un café sur Ko-Fi.


discord

Restez connecté aux nouveautés domotiques, inscrivez-vous à notre newsletter

A propos de cet auteur

Aurélien Brunet

Chef de projet informatique, anciennement informaticien spécialisé dans l'IT industrielle, le réseau et les bases de données. Un peu geek à mes heures perdues, je me suis mis à la domotique en 2012 pour sécuriser mon domicile.
Depuis, je teste, j’installe, je code, j’améliore mon installation et surtout, je partage avec vous mon expertise via ce blog et mon podcast Domotique Chronique pour améliorer votre quotidien dans la maison connectée !

39 Comments

Cliquez ici pour poster un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

    • Cool, tu peux également sur la même méthode, récupérer les données climatiques actuelles, je pense particulièrement à la pluviométrie qui est très juste comparé au périphérique proposé par défaut sur la box qui ne reflète pas du tout la réalité.

  • Apparemment il faut être en premium pour creer une autre application car si j’ai bien compris si on prend la même application que ci dessus on utiliserait les précipitations tomorrow ?

    • En fait, quand tu demande la génération de tomorrow, tu as tout de même les conditions du jour J dans le première partie du xml, tu peux donc faire un seul appel pour avoir non seulement les datas du jour mais également les prévisions du lendemain. Il faut simplement faire un update plus régulier pour actualiser les conditions du jour.

  • Salut Aurel,
    tout est implémenté et avec tes icônes c’est superbe.
    mais comme tout le monde, j’en veux toujours plus 😉
    il faudrait aussi récupérer le contenu de WeatherDesc, et l’afficher avec un pack de tes icônes

    Pierre

  • Salut Aurel,
    d’abord merci à toi de partager cette merveille,
    je suis en train de mettre les prévisions météo sur le raspberry, j’ai donc coller mon url dans ton fichier enregistrement_meteo.php que j’ai placé dans var/www/previsionmeteo si j’ai bien suivi, tu conseilles une actualisation à 1h tout les jours.Dis moi que j’ai tout bon pour mon crontab!
    0 1 * * * /usr/bin/php /var/www/previsionmeteo/enregistrement_meteo.php
    ça correspond à quoi ça dans le chemin? /usr/bin/php /

    du coup sur notre capteur eedomus on peut faire un appel toute les heures vu que c’est le cron qui génère l’actualisation à 1h tout les jours.J’ai juste?
    merci d’avance

    • salut, tu as bien tout bon pour ta crontab! /usr/bin/php indique simplement ou est installé php pour l’interprétation de ton script.

      du coup sur notre capteur eedomus on peut faire un appel toute les heures vu que c’est le cron qui génère l’actualisation à 1h tout les jours.J’ai juste?
      c’est effectivement le principe, après aucun intérêt a faire un appel toutes les heures si tu met à jour le fichier 1 fois par jour, met une fréquence plus élevée ou ajuste ta crontab pour mettre a jour le fichier plus souvent si par exemple tu veux également capter les données météo du jour.

  • merci pour ton retour Aurel,
    je viens de mettre en place le crontab, avec exécution du php toute les heures,
    ensuite j’ai modifier l’url de mon capteur par
    http://ip du rasp/previsionmeteo/enregistrement_meteo.php
    et la j’ai une erreur : Ouverture source OKOuverture destnation : Echec
    sur eedomus :Température Mini demain données climatiques en erreur: [Valeur non numérique []]. Aperçu du contenu.
    quand j’appelle l’url pareil, une idée?

  • Bonjour,

    Je débute dans la domotique et je viens d’acquérir une box eedomus..

    je bloque sur la partie ou il faut insérer son app/key.. je ne sais pas quoi mettre dedans.. surement une adresse qui contient mon API users et APIsecrets ?

    Quelqu’un pourrais me renseigner ?

    En tout cas, Merci pour ci blog et les tutos qui permette d’exploiter au maximum nos box.

    Cordialement,

    • Salut, il faut en effet générer tes codes api eedomus. Pour cela il faut aller dans configuration/mon compte et faire envoyer sur la ligne identifiants pour l’api.

  • Merci pour ta réponse.

    j’ai bien reçu mes identifiants. Mais comment les utiliser dans le champ “app key” ?

    pourriez vous me faire l’adresse que je dois insérer ?

    merci par avance.

    Cdt

  • de retour du ski…
    mon cron fonctionne en revanche mon fichier prevision.xml se créer dans mon dossier /root et impossible de pointer vers lui dans mes periph meteo, sinon j’ai une erreur

    404 Not Found

    Not Found
    <p […]
    une idée? merci d'avance

  • Finalement j’ai laché l’affaire pour la maj du xml avec le cron tab, je la fais depuis l’eedomus comme pour la vigilance meteo et sa marche nikel…

  • un petit chmod 777 sur le fichier xml et le tour est joué pour avoir l’update par cron mais ça fonctionne également sous l’eedomus ; )

  • Je viens de mettre ça en place.
    T’es juste un peu fou/mazo d’avoir créé 16 icones pour les directions du vent.
    ça m’oblige à le mettre en place maintenant pour respecter ton travail… 🙂

  • Par contre, ton pack d’icone n’est pas complet.
    Tu n’as pas le WSW, et tu as 2 fois le NNW/NWN.

    Si par hasard tu peux mettre à jour le pack…

  • Bonjour,

    Merci pour ce super tuto qui permet d’avoir une météo plus précise que celle de l’eedomus par défaut.
    Par contre petite question :
    A quand un pack d’icon très jolie (soleil, nuage etc… comme tu sais bien faire 🙂

  • Bonjour et merci pour le tuto
    Par contre dans ton exemple tu récupères les données météo du jour () et pas celle du lendemain …
    Comment faire pour celle du lendemain ou du surlendemain car quand on demande plusieurs jours , on a pas de distinction, la balise est weather pour tous les jours :


  • les balises ayant sauté dans mon message …. je reposte

    onjour et merci pour le tuto
    Par contre dans ton exemple tu récupères les données météo du jour (current_condition) et pas celle du lendemain …
    Comment faire pour celle du lendemain ou du surlendemain car quand on demande plusieurs jours , on a pas de distinction, la balise est weather pour tous les jours

  • Bonjour,

    L’API wwo fonctionne très bien de mon côté ! Cependant, les résultats renvoyés chez moi sont en anglais… Avec une bonne liste de traduction on peut obtenir un résultat correct. Pour les icônes fournis par l’API, je ne suis pas fan non plus.

    Sinon, j’ai trouvé un plugin widget météo. Ca semble faire tout le travail d’intégration et c’est assez joli.
    Cela m’éviter de jouer avec du code (sachant que ce n’est pas tasse de thé).

    Sandrine.

  • salut a toi, tous d’abord merci pour tes partages de connaissance et ton aide, car j’ai selement mon eedomus depuis peu et il me manque des connaissance en programmation, je suis limiter a du Step7 un peu de vbnet (lecture) et un peu de robotique ….oups faut que je m’y attelle

    Moi j’ai un pb, j’ai un code erreur 403 sur la page worldweatheronline.com je pense que c lier a mon code API perso dans la zone où il faut renseigner APP/Key, je ne sais pas comment écrire la ligne je pense. j’ai mes codes api_user & api_secret.

    si quelqu’un peu m’aider…..
    un grand merci a vous

  • salut, bon c cool, je m’en suis sortie…. maintenant je souhaiterais avoir la météo marine surtout condition pour le surf …..
    cependant j’ai un pb, mon acce Xpath doit pas être bon car j’ai un message valeur nul

    je souhaite par exemple récupérer la variable suivant swellPeriod_secs du jours et de demain

    comment faire ?

    merci

  • Bonjour,
    L’API a changé de version et d’url
    par contre comment maintenant récupérer les données sachant que l’API renvoie la donnée par heure et il faut mettre 2 jours pour avoir le lendemain ?

    Merci

  • Finalement j’ai trouvé
    Il faut utilisé l’url suivant :
    api2.worldweatheronline.com/free/v2/weather.ashx?q=lyon&format=xml&num_of_days=2&tp=24&lang=fr&key=xxxxxxxxx

    Dans le Xpath renseigner : /data/weather[2]/maxtempC pour le temps max pour demain
    /data/weather[1]/maxtempC pour le temps max pour aujourd’hui

    Faire de même pour les autres données.

  • Bonjour Aurel,

    Avant tout un grand merci pour ce tuto qui aide bien des quiches comme moi,malgré cela je ne parviens pas récupérer toutes les valeurs seul température mini maxi et indice UV.Pour le reste j’ai comme message d’erreur valeur lue vide
    Si tu as une idée je suis preneur!
    En tout les cas encore un grand merci pour le partage et bon WE pascal à toi.

  • Ha marche plus!!!
    Les API free ont étés désactivés.
    Bon, va falloir trouver autre chose. En attendant, je vais désactiver les requètes, car j’ai plein d’erreur sur l’Eedomus…

  • Bonjour Aurélien
    Est-ce que tu n’aurais pas connaissance d’un autre service permettant de remplacer worldweatheronline.com ?
    Je te remercie.

    • Salut,

      je n’ai pas creuser le sujet depuis un moment mais de memoire à l’epoque, je n’avais pas trouver mieux non! Après si, il y a mieux, mais c’est l’investissement dans une station netatmo, ainsi, tu dispose de relevés exactes et concrets, mais cela demande un coût supplementaires…

      • Merci pour ta réponse.
        Tu peux remonter les précisions météo de netatmo dans eedomus ?
        Car j’ai une station netatmo …

construction et domotique
promos domotique
Choix box domotique
promos domotique