NightCall
Posts: 3
Joined: Tue Apr 21, 2020 6:16 pm

Récupération prévisions météo

Tue Apr 21, 2020 7:32 pm

Bonjour à tous,

Petite précision avant de commencer : je viens d'acquérir ma toute première Raspberry il y à une semaine. Je connais les basiques dans les langages de programmation suivants : C, C++, C#, Java et VB (aucune notion dans les langages WEB). J'ai plusieurs fois utilisé l'OS linux sous Ubuntu, je connais les fondamentaux. Pour finir, j'ai des notions dans les bases de données à travers l'utilisation de MySQL.

J'aimerais, à l'aide de ma Raspberry, récupérer les prévisions météo afin de les stocker dans une base de données. Cette base de données permettra, selon une date, de récupérer le temps général (pluvieux, soleil, ...), la température, les précipitations, la force du vent, et toutes les autres données liées à la météo.

J'ai lu de nombreux sujets concernant la récupération des données météo sur internet. Néanmoins, la plupart, entre rapidement dans les détails, et il existe de nombreux moyens. En l'état actuel de mes connaissances, je n'arrive pas à évaluer la difficulté des différents moyens proposés, de leurs limitations, avantages, inconvénients, ... . Dans le but, de ne pas prendre le mauvais chemin, je fais appel à vos connaissances et expériences afin de m'orienter sur la solution la plus adaptée.

Ci-dessous, je vais énumérer différents sujets récupérés à ce propos, les méthodes utilisées et poser quelques questions qui permettront de m'orienter vers la solution :

Sujet 1 : Lien : https://www.prevision-meteo.ch/uploads/ ... -meteo.pdf
Fonctionnement : récupération via HTML-iFrame ou JSON.
Questions :
1) Quels avantages/inconvénients/limites possèdent ces méthodes ?
2) Comment appelle-t-on ce type de récupération ? (on verra au sujet 2), une méthode via "API").

Sujet 2 : Lien : https://deptinfo-ensip.univ-poitiers.fr ... eaux:api02
Fonctionnement : utilisation de l'API météo nommée "OpenWeatherMap".
Questions :
3) Quels avantages/inconvénients/limites possèdent cette méthode ?

Sujet 3 : ce n'est pas un sujet que j'ai rencontré, mais plutôt une curiosité personnelle : est-ce possible de récupérer les données d'un site via un script qui va chercher dans le code de la page internet ? (si oui, sous quel langage de programmation peut-on effectuer cela ?)

En vous remerciant par avance !
-

jelopo
Posts: 1601
Joined: Wed Oct 17, 2012 7:53 pm

Re: Récupération prévisions météo

Wed Apr 22, 2020 5:59 am

Bonjour,

Belle idée de projet.

A mon avis,le choix du site ne dépend pas que du format des données à récupérer mais surtout de la qualité de ses données. Pour un même lieu géographique, les valeurs météorologiques ne vont pas être le mêmes.

Entre le sujet 1 et le sujet 2 je ne vois pas de différence de traitement, dans les 2 cas, le site va générer un fichier au format json.

Toutefois, personnellement je recommande d'utiliser une API car c'est typiquement prévu pour cet usage. Les avantages d'une API sont
- format des données sont connues
- méthode d’interrogation documentée
- réponse à une requête ne contient que de la donnée et sa mise en forme
- pérennité plus longue (lorsque le site propose une API, il est contraint de la maintenir plus longtemps pour ses utilisateurs)

Contrairement à un site internent qui à chaque changement de celui-ci imposera de tout réécrire. Autre gros inconvénient des site internet c'est d'aller à la pèche aux données perdues dans 36000 lignes de code de présentation, publicité... Juste pour rire, je t'invite à pomper une page web de site metéo, d'ouvir dans un fichier texte le résultat et d'aller chercher une donnée précise...

Pour ma part, je trouve qu'OpenWeatherMap est très bien, il faut lire la doc, oui mais une fois cela fait quel temps de gagné pour faire tout ce que l'on veut.

A+

totoharibo
Posts: 4437
Joined: Thu Jan 24, 2013 8:43 am

Re: Récupération prévisions météo

Wed Apr 22, 2020 7:36 am

en console :
2 propositions rustiques (pas de graphisme c'est trop neuf)
1- curl wttr.in

2- plus sérieux : basé sur les sites d'aérodromes et synthèse vocale (pas de prévision et c'est du bash)
ligne 116 c'est pour arrêter la radio
ligne 123 c'est pour remettre la radio internet enroute

meteo()
109 {
110 #a besoin du paquet html2text
111 #lit l ameteo et traite
112 #http://rp5.ru/docs/xml/fr?id=5020
113 #ligne complète avec previsions au dessous
114 #necessite le package html2text
115 #echo "#http://rp5.ru/Temps_%C3%A0_Saint-Denis, ... -de-France"
116 kill $(ps ax |awk '$5 ~ /mpg123/ {printf "%s ",$1}')
117 wget -q -O - http://cunimb.net/decodemet.php?station=LFPB| html2text -width 400 > /tmp/mto.txt
118 awk '/vent/{sub($1,"",$0);vent=$0}; /température/ {sub($1,"",$0);gsub("-","moins ",$0);temp=$0}/humidité/ {humid= $0} END{tout=vent ", " temp humid; gsub(" " "",tout);print tout}' /t mp/mto.txt > /tmp/meteo.txt
119
120 pico2wave -l fr-FR -w /tmp/xxx.wav "$(cat /tmp/meteo.txt)"
121 aplay /tmp/xxx.wav
122 mpg123 -m ${radios[$j]} &
123 }

NightCall
Posts: 3
Joined: Tue Apr 21, 2020 6:16 pm

Re: Récupération prévisions météo

Wed Apr 22, 2020 2:07 pm

Merci jelopo pour ta réponse ! Questions :
1) J'ai du mal à comprendre ce que contient le fichier JSON ? Contient-il tout le code de la page web ? Un résumé de la page web qui contient les données essentielles formatées ?

2) Quelle est l'interaction entre une API et un fichier JSON ? On a un fichier JSON qui contient des données formatées, et grâce à l'API on va pouvoir utiliser les fonctions qui vont extraire les données souhaitées (température en °C du 22/04/2020 par exemple...) ?

3) Quel langage de communication utiliser pour récupérer toutes ces données, les manipuler et les stocker dans une base de données ?

4) Faut-il utiliser un langage de programmation spécifique pour utiliser une l'API OpenWeatherMap ? (existe-t-il d'autres API Météo ?)

J'ai les différentes briques : un fichier JSON, une API (ou non ? si je n'ai pas d'API comment fait-on ?), mais je n'arrive pas à voir comment les imbriquer afin d'obtenir quelque chose de concret.

Merci totoharibo pour ta réponse ! Questions :

1) Pour la 1ère solution : curl wttr.in pourquoi ne pas prendre cela, extraire les données et les stocker dans une base ? N'est-ce pas possible ? Sais-tu d'où proviennent les données (je n'ai pas trouvé en cherchant sur le net) ?

2) Pour la 2è solution : navré, mais je ne comprend pas ce que fais ce code (je débute). Pour le moment, je ne souhaite pas implémenter la synthèse vocale. Mais tu viens de m'apprendre qu'il est possible de le faire ! J'ai regardé le lien grâce auquel tu accèdes aux données : http://rp5.ru/docs/xml/fr?id=5020. Je trouve des prévisions météos jusqu'à 6 jours. Lorsque tu dis, qu'il n'y a pas de prévision météo, c'est par rapport à ton code ?

Merci par avance !

totoharibo
Posts: 4437
Joined: Thu Jan 24, 2013 8:43 am

Re: Récupération prévisions météo

Wed Apr 22, 2020 2:57 pm

ça m'a amusé : pas besoin de regarder par la fenêtre pour avoir le temps :lol:
Pour les prévisions je vais voir quand j'aurais le temps.
Mais les pévisions sur 10 jours la blonde elle va causer pendant 10 minutes...

pour info :
la ligne 117 récupère le texte (au lieu du html)
la ligne 118 met en forme le texte pour la blonde.
les lignes 120-121 c'est la blonde qui cause

jelopo
Posts: 1601
Joined: Wed Oct 17, 2012 7:53 pm

Re: Récupération prévisions météo

Thu Apr 23, 2020 11:01 am

Bonjour,

Réponse générale à toutes les questions, il faut que tu te documente pour comprendre le principe. Sans cela tu va bricoler un truc en copiant des tutos bêtement à droite à gauche que tu ne sera pas capable de le maintenir et tu va passer des plombes à buter sur des problèmes qui n'en sont pas. En d'autre mots RTFM, c'est pénible, mais il faut commencer par se documenter.

https://openweathermap.org/api (voir en bas API Documentation)

En exemple, passer le code pour le permis, c'est pénible cette théorie, mais se pose t-on la question de l'usage et de l'emplacement d'un panneau lorsque l'on conduit ?

Je répond quand même brièvement aux questions
1) J'ai du mal à comprendre ce que contient le fichier JSON ? Contient-il tout le code de la page web ? Un résumé de la page web qui contient les données essentielles formatées ?
Comme je l'ai déjà suggéré,
- pomper un site web et ouvrir son contenu (regarder la taille du fichier)
- Aller sur https://openweathermap.org/appid#get , "Example of API call" un exemple de fichier json est retourné (regarder la taille du fichier)
2) Quelle est l'interaction entre une API et un fichier JSON ? On a un fichier JSON qui contient des données formatées, et grâce à l'API on va pouvoir utiliser les fonctions qui vont extraire les données souhaitées (température en °C du 22/04/2020 par exemple...) ?
L'API est une méthode documentée de questionnement d'informations qui renvoie un fichier en réponse.
JSON est un format de données.
On note que dans le cas de l'API d'OpenWeatherMap, on peut aussi l'interroger pour obtenir les données au format XML ou HTML
Voir ce lien pour obtenir les 3 formats de données renvoyées par l'API.
https://openweathermap.org/current#format
3) Quel langage de communication utiliser pour récupérer toutes ces données, les manipuler et les stocker dans une base de données ?
Il n'y a pas de langage impératif à utiliser. En général sur Raspberry PI, Python est le langage de prédilection. Beaucoup utilisent PHP, ou même bash pour les scripts plus simples, la liste de langages est longue...
4) Faut-il utiliser un langage de programmation spécifique pour utiliser une l'API OpenWeatherMap ? (existe-t-il d'autres API Météo ?)
Même réponse que 3)
J'ai les différentes briques : un fichier JSON, une API (ou non ? si je n'ai pas d'API comment fait-on ?), mais je n'arrive pas à voir comment les imbriquer afin d'obtenir quelque chose de concret.
Il faut écrire un programme qui interroge le site internet et qui exécute tout ce que tu souhaites faire.
Pour cela, il faut commencer par choisir un langage, et apprendre à programmer avec.

Bon courage.

A+

NightCall
Posts: 3
Joined: Tue Apr 21, 2020 6:16 pm

Re: Récupération prévisions météo

Thu Apr 23, 2020 6:00 pm

Merci jelopelo pour ces informations supplémentaires ! Je suis totalement d'accord concernant ton premier paragraphe. C'est pour cette raison, que je n'ai pas attendu que tu me répondes pour me mettre au boulot. Tout me parait déjà un peu moins obscure :

J'ai pu télécharger le fichier JSON contenant les informations que je souhaite (prévisions sur 5 jours de ma ville, merci à OpenWeather d'être gratuit jusqu'à 60 requêtes/jour !). Et j'ai également pu parser les données pour en récupérer uniquement celles souhaitées ! De cette manière, je vais pouvoir remplir ma base de données.

Pour le moment, j'ai tout fait via mon PC (phase expérimentale) en C#. J'ai vu qu'il était possible d'utiliser C# via mono sur la raspberry. Des retours d'expériences ? C'est fiable, ou c'est casse-gueule d'utiliser mono ? (notamment, car j'ai utilisé un Nuget Package, je ne sais pas si je vais pouvoir le réutiliser sur linux, je n'ai pas assez de recule).

Note : pour ceux que ça intéresse, j'ai utilisé un Nuget Package pour parser : Newtonsoft.Json. Très pratique !

Merci !

jelopo
Posts: 1601
Joined: Wed Oct 17, 2012 7:53 pm

Re: Récupération prévisions météo

Fri Apr 24, 2020 6:05 am

Bonjour,

Je n'ai aucune connaissance C#, pour répondre.
Tu trouveras peut être des infos ou aide ici : http://forums.framboise314.fr/viewtopic.php?f=42&t=5449

A+

Return to “Français”