#1 Le 19/03/2011, à 21:24
- Ph0b0S
script bash recuperation donnée METAR [Résolu]
bonjour,
je souhaiterai récupérer les infos des températures Min/Max d'une journée à l'aide des données METAR
dans un script bash
Exemple si j'appelle
http://meteocentre.com/cgi-bin/get_sao_stn?STN=LFQB&DELT=48
le résultat me donne pour aujourd'hui 19/03 les données du 18 et du 19 (DELT=48 pour 48 heures)
je souhaite récupérer dans une variable $Min et $Max les températures du 18
voila ce que me renvoi
curl 'http://meteocentre.com/cgi-bin/get_sao_stn?STN=LFQB&DELT=48'
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR=white>
LFQB TROYES/BARBEREY -- FR
<BR>
<PRE>
Raw surface observations for station LFQB
</PRE>
<PRE>
LFQB 191700Z 05006KT 9999 BKN045 10/03 Q1031=
LFQB 191600Z 04009KT 9999 BKN026 SCT043 10/03 Q1030=
LFQB 191500Z 36007KT 330V030 9999 BKN025 SCT040 10/04 Q1030=
LFQB 191400Z 04006KT 350V090 9999 BKN025 SCT040 10/04 Q1030=
LFQB 191304Z 04008KT 010V070 9999 BKN020 BKN040 09/04 Q1030=
LFQB 191200Z 03010KT 360V060 9999 BKN020 BKN040 08/04 Q1030=
LFQB 191100Z 02006KT 350V060 8000 BKN016 BKN030 08/04 Q1030=
LFQB 191000Z 01007KT 340V040 7000 BKN013 BKN025 08/05 Q1029=
LFQB 190900Z 36010KT 5000 BKN013 BKN040 08/05 Q1029=
LFQB 190800Z 35008KT 3000 BKN007 07/06 Q1028=
LFQB 190700Z 33012KT 3000 BKN007 07/05 Q1027=
LFQB 190600Z 35011KT 4000 BKN010 BKN026 08/06 Q1026=
LFQB 190500Z 34009KT 7000 SCT013 BKN030 08/06 Q1025=
LFQB 181700Z 19007KT 9999 OVC026 11/07 Q1023=
LFQB 181600Z 20008KT 9999 OVC026 12/06 Q1023=
LFQB 181500Z 21009KT 9999 OVC026 12/06 Q1023=
LFQB 181400Z 20006KT 180V240 9999 BKN030 BKN250 12/05 Q1023=
LFQB 181300Z 21008KT 160V240 8000 SCT026 BKN250 11/04 Q1024=
LFQB 181200Z 23007KT 8000 BKN026 SCT250 10/04 Q1024=
LFQB 181100Z 27005KT 180V330 8000 BKN028 SCT250 11/03 Q1025=
LFQB 181000Z 25007KT 220V290 8000 BKN028 SCT250 09/02 Q1025=
LFQB 180900Z 26006KT 8000 BKN030 09/03 Q1025=
LFQB 180800Z 22007KT 7000 OVC026 07/04 Q1024=
LFQB 180700Z 21006KT 6000 OVC020 06/04 Q1024=
LFQB 180600Z 27004KT 6000 OVC015 06/04 Q1024=
LFQB 180500Z 27007KT 6000 OVC018 06/04 Q1023=
<BR>
</PRE>
</BODY>
</HTML>
la zone qui m'intéresse étant de 180500 à 181700 (18 mars de 5h00 à 17h00) et les températures étant lues devant le / soit dans l'exemple le Min à 06°C et le Max à 12°C
une âme charitable peut-elle m'aider ?
merci d'avance
Dernière modification par Ph0b0S (Le 20/03/2011, à 13:03)
Hors ligne
#2 Le 19/03/2011, à 22:09
- wido
Re : script bash recuperation donnée METAR [Résolu]
Je m'abonne
EDIT: c'est un bon début:
#!/bin/bash
heuremini=180500
heuremax=181700
URL="http://meteocentre.com/cgi-bin/get_sao_stn?STN=LFQB&DELT=48"
[ -d /tmp/metar ] || mkdir /tmp/metar
cd /tmp/metar
[ -f /tmp/metar/metar.log ] || curl $URL > ./metar.log
listheure=`cat /tmp/metar/metar.log | awk '{print $2}' | grep Z`
for heure in $listheure
do
temperaturemini=`cat ./metar.log | grep $heure | cut -d'/' -f2 | awk '{print $1}'`
temperaturemax=`cat ./metar.log | grep $heure | cut -d'/' -f1 | awk '{print $NF}'`
echo "heure: $heure - temperature mini: $temperaturemini -max:$temperaturemax"
done
[...]
heure: 181400Z - temperature mini: 05 -max:12
heure: 181300Z - temperature mini: 04 -max:11
heure: 181200Z - temperature mini: 04 -max:10
heure: 181100Z - temperature mini: 03 -max:11
heure: 181000Z - temperature mini: 02 -max:09
heure: 180900Z - temperature mini: 03 -max:09
heure: 180800Z - temperature mini: 04 -max:07
heure: 180700Z - temperature mini: 04 -max:06
heure: 180600Z - temperature mini: 04 -max:06
heure: 180500Z - temperature mini: 04 -max:06
Dernière modification par wido (Le 19/03/2011, à 22:42)
Hors ligne
#3 Le 19/03/2011, à 22:56
- Ph0b0S
Re : script bash recuperation donnée METAR [Résolu]
Merci Wido pour ta réponse, qui va me faire avancer
mais c'est pas exactement ce que je recherchait, peut-être me suis-je mal exprimé
sur une ligne de donnée METAR
LFQB 180500Z 27007KT 6000 OVC018 06/04 Q1023=
le 06/04 c'est 06 la température le 18 mars à 05h00 et le 04 c'est le point de rosée qui ne m'intéresse pas.
je cherche en faite sur toute la journée du 18 à m'extraire 2 variables de températures Max et Min.
Hors ligne
#4 Le 20/03/2011, à 00:36
- FRUiT
Re : script bash recuperation donnée METAR [Résolu]
DATE=18
MINTEMP=$(curl 'http://meteocentre.com/cgi-bin/get_sao_stn?STN=LFQB&DELT=48' | awk -F'[ /]' '/'"$DATE"'05/ { print $6 }')
MAXTEMP=$(curl 'http://meteocentre.com/cgi-bin/get_sao_stn?STN=LFQB&DELT=48' | awk -F'[ /]' '/'"$DATE"'17/ { print $6 }')
echo "le $DATE à 05 heures il fera ${MINTEMP}°C"
echo "le $DATE à 17 heures il fera ${MAXTEMP}°C"
En un seul awk (mais les variables resteront internes à awk) :
DATE=18
curl 'http://meteocentre.com/cgi-bin/get_sao_stn?STN=LFQB&DELT=48' | awk -F'[ /]' '/'"$DATE"'05/ { MIN=$6 } /'"$DATE"'17/ { MAX=$6 } END { print "le '"$DATE"' à 5h il fera "MIN"°C et à 17h il fera "MAX"°C" }'
Dernière modification par FRUiT (Le 20/03/2011, à 00:44)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#5 Le 20/03/2011, à 00:52
- FRUiT
Re : script bash recuperation donnée METAR [Résolu]
En un seul awk avec récupération dans une seule variable externe :
DATE=18
MINMAX=$(curl 'http://meteocentre.com/cgi-bin/get_sao_stn?STN=LFQB&DELT=48' | awk -F'[ /]' '/'"$DATE"'05/ { MIN=$6 } /'"$DATE"'17/ { MAX=$6 } END { print MIN" "MAX }')
echo "le $DATE à 05 heures il fera ${MINMAX% *}°C"
echo "le $DATE à 17 heures il fera ${MINMAX#* }°C"
Dernière modification par FRUiT (Le 20/03/2011, à 00:54)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#6 Le 20/03/2011, à 08:25
- Ph0b0S
Re : script bash recuperation donnée METAR [Résolu]
Merci fruit ça commence ressembler à ressemble à ce que je recherche
j'aime bien le "un seul appel" à curl parce qu'apparement il est gourmand en temps
Mais les données de Température Mini Maxi ne sont pas aussi simple que de chercher la mini à 5h00 du mat et la Maxi à 17h00
le min/Max sont je pense à chercher
je ne sait pas si on peut:
-extraire que les lignes de la journée qui m'intéresse (J-1) de la date actuelle
-les trier avec un sort sur le critère température (chiffre devant le "/")
-mettre la temp. de la première ligne dans $min
-mettre la temp. de la dernière ligne dans $max
Hors ligne
#7 Le 20/03/2011, à 11:02
- FRUiT
Re : script bash recuperation donnée METAR [Résolu]
DATE=18
MINMAX=$(curl 'http://meteocentre.com/cgi-bin/get_sao_stn?STN=LFQB&DELT=48' | awk -F'[ /]' '/'"$DATE"'.*Z/ { print $(NF-2) }' | sort | awk 'NR==1 { MIN=$1 } END {MAX=$1; print MIN" "MAX}')
DAYMIN=${MINMAX% *}
DAYMAX=${MINMAX#* }
echo "Le minimum pour la journée du $DATE est ${DAYMIN}°C"
echo "Le maximum pour la journée du $DATE est ${DAYMAX}°C"
Il doit y avoir moyen d'éviter le double pipe sort-awk. Mais moi je ne sais pas trier avec awk, alors...
Dernière modification par FRUiT (Le 20/03/2011, à 11:02)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#8 Le 20/03/2011, à 11:18
- Ph0b0S
Re : script bash recuperation donnée METAR [Résolu]
Merci Fruit, je suis trop content que ça marche
j'ai fait juste une modif. pour avoir les données de la veille
DATE=$(date -d "-1 days" +%d)
MINMAX=$(curl 'http://meteocentre.com/cgi-bin/get_sao_stn?STN=LFQB&DELT=48' | awk -F'[ /]' '/'"$DATE"'.*Z/ { print $(NF-2) }' | sort | awk 'NR==1 { MIN=$1 } END {MAX=$1; print MIN" "MAX}')
DAYMIN=${MINMAX% *}
DAYMAX=${MINMAX#* }
echo "Le minimum pour la journée du $DATE est ${DAYMIN}°C"
echo "Le maximum pour la journée du $DATE est ${DAYMAX}°C"
je vais pouvoir insérer ceci dans un script qui envois mes données de production photovoltaïque au site PVoutput.org dans lequel je ne savait que envoyer ma production mes pas la plage de température ! reste plus qu'a trouver un moyen d'envoyer la nature du ciel (pluie, nuageux,semi-couvert,ciel bleu)
en tout cas merci
Modif ça marche mais ne marchera pas demain car ce matin les températures étaient négatives, voir message plus bas
Dernière modification par Ph0b0S (Le 20/03/2011, à 11:29)
Hors ligne
#9 Le 20/03/2011, à 11:23
- FRUiT
Re : script bash recuperation donnée METAR [Résolu]
Mais de rian ^^
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#10 Le 20/03/2011, à 11:28
Hors ligne
#11 Le 20/03/2011, à 11:38
- msg_dracula
Re : script bash recuperation donnée METAR [Résolu]
regarde par ici, un mec a fait un logiciel pour récupérer des données METAR :
Son site Web : http://infoprojectsoftware.free.fr/LinuxMetar.php
Le topic sur ce forum : http://forum.ubuntu-fr.org/viewtopic.php?id=387137
Si ça peut te servir
Apprend de tes propres erreurs.
StaticGen : Vous ne bloguerez plus jamais comme avant
Hors ligne
#12 Le 20/03/2011, à 11:45
- Ph0b0S
Re : script bash recuperation donnée METAR [Résolu]
Merci msg_dracula
ce programme est fort intéressant, mais ne m'est pas très utile pour obtenir juste l'info de température Min/Max de la veille je peut aussi bien aller sur météociel.fr, j'ai choisi juste les données METAR car le code de sortie est il me semble plus imple à traiter au sein d'un Bash, qui plus est la finalité est d'exporter automatiquement ces données vers un autre site.
Dernière modification par Ph0b0S (Le 20/03/2011, à 11:45)
Hors ligne
#13 Le 20/03/2011, à 12:06
- FRUiT
Re : script bash recuperation donnée METAR [Résolu]
DATE=$(date -d "-1 days" +%d)
MINMAX=$(curl 'http://meteocentre.com/cgi-bin/get_sao_stn?STN=LFQB&DELT=48' | awk -F'[ /]' '/'"$DATE"'.*Z/ { sub("M","-",$(NF-2)); print $(NF-2) }' | sort -n | awk 'NR==1 { MIN=$1 } END { MAX=$1; print MIN" "MAX }')
DAYMIN=${MINMAX% *}
DAYMAX=${MINMAX#* }
echo "Le minimum pour la journée du $DATE est ${DAYMIN}°C"
echo "Le maximum pour la journée du $DATE est ${DAYMAX}°C"
Dernière modification par FRUiT (Le 20/03/2011, à 13:03)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#15 Le 20/03/2011, à 13:10
- FRUiT
Re : script bash recuperation donnée METAR [Résolu]
Avec plaisir :tchin-tchin:
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#16 Le 20/03/2011, à 23:32
- cpweather
Re : script bash recuperation donnée METAR [Résolu]
Ces données seront visibles sur quel site?
Bonne fin de soirée!
Hors ligne
#17 Le 21/03/2011, à 18:02
- Ph0b0S
Re : script bash recuperation donnée METAR [Résolu]
Bonjour, cpweather
sur les sites présents dans ma signature
mais en ce qui concerne ce sujet, c'est celui là http://pvoutput.org/list.jsp?userid=1598
j'ai les données sous forme de fichiers CSV tout les jours, donc chaque jour je lance un bash qui m'extrait les infos et les envois vers PVOutput.org
Hors ligne