Météo France propose un service bien pratique et qui de nombreuses fois m’a prouvé son efficacité lors de sortie sportives : le fameux « Va t’il pleuvoir dans l’heure ». http://www.meteofrance.com/previsions-meteo-france/previsions-pluie
Ainsi vous saurez pour une ville donnée si vous avez la malchance de voir tomber la pluie dans l’heure qui suit et ainsi vous éviter un inutile arrosage du jardin ou une ballade humide.
A force de chercher j’ai trouvé l’API en question chez Météo France.
Vous trouverez ici une extension Chrome : https://github.com/liorzoue/ext-meteo affichant le fameux » ‘Va-t-il pleuvoir dans l’heure ?' », merci à l’auteur liorzoue pour son travail et dont je reprends en fin d’article le message de prudence quand à l’utilisation de cette API.
L’API
- Testez tout d’abord si votre ville est couverte par les prévisions dans la page « standard » de météo france http://www.meteofrance.com/previsions-meteo-france/previsions-pluie/ vous tapez votre ville et si cela vous propose un résultat poursuivez , sinon c’est mort.
- Récupérer le code insee de votre ville ici (ce n’est pas le code postal!) ajoutez y le chiffre 0 à la fin
sinon rendez vous ici avec le nom de votre ville tout au bout.
http://www.meteofrance.com/mf3-rpc-portlet/rest/lieu/facet/pluie/search/ma_ville_
- Une méthode pour retrouver l’ID/INSEE de sa ville : http://www.meteofrance.com/mf3-rpc-portlet/rest/lieu/facet/pluie/search/input=XXX
avec XXX le nom ou le CP de votre ville
- Récupérer les prévisions via url
http://www.meteofrance.com/mf3-rpc-portlet/rest/pluie/330210
la réponse est du JSON , je ne sais pas tout en lire mais l’essentiel est
"niveauPluieText" : [ "De19h35 à 20h35 : Pas de précipitations" ],
{ "idLieu" : "330210", "echeance" : "201604241935", "lastUpdate" : "19h25", "isAvailable" : true, "hasData" : true, "niveauPluieText" : [ "De19h35 à 20h35 : Pas de précipitations" ], "dataCadran" : [ { "niveauPluieText" : "Pas de précipitations", "niveauPluie" : 1, "color" : "ffffff" }, { "niveauPluieText" : "Pas de précipitations", "niveauPluie" : 1, "color" : "ffffff" }, { "niveauPluieText" : "Pas de précipitations", "niveauPluie" : 1, "color" : "ffffff" }, { "niveauPluieText" : "Pas de précipitations", "niveauPluie" : 1, "color" : "ffffff" }, { "niveauPluieText" : "Pas de précipitations", "niveauPluie" : 1, "color" : "ffffff" }, { "niveauPluieText" : "Pas de précipitations", "niveauPluie" : 1, "color" : "ffffff" }, { "niveauPluieText" : "Pas de précipitations", "niveauPluie" : 1, "color" : "ffffff" }, { "niveauPluieText" : "Pas de précipitations", "niveauPluie" : 1, "color" : "ffffff" }, { "niveauPluieText" : "Pas de précipitations", "niveauPluie" : 1, "color" : "ffffff" }, { "niveauPluieText" : "Pas de précipitations", "niveauPluie" : 1, "color" : "ffffff" }, { "niveauPluieText" : "Pas de précipitations", "niveauPluie" : 1, "color" : "ffffff" }, { "niveauPluieText" : "Pas de précipitations", "niveauPluie" : 1, "color" : "ffffff" } ] }
Un script bash + un switch virtuel
Je vais donc créer un switch virtuel qui passera à ON que si de la pluie est annoncée, une notification est associée à ce passage à ON
Après interrogation du site web, récupérons donc le contenu de niveauPluieText par utilisation de JQ jdont l’installation est expliquée ici, supprimons les caractères indésirables de texte horaire, de ‘[‘ ‘]’ et espaces.
Dans ce script changez vos ip de votre Domoticz et votre CODE INSEE.
Dans la ligne curl http://192.168…..’ modifiez idx=215 par votre idx de votre switch virtuel.
#!/bin/bash pl=$(curl -s "http://www.meteofrance.com/mf3-rpc-portlet/rest/pluie/773800"|jq -r .niveauPluieText|cut -d ' ' -f7|tr -d '['|tr -d ']'|tr -d ' '|sed 's/ //g'|cut -d ' ' -f1) #echo $pl pluie=$(echo $pl|cut -d ' ' -f1) #echo $pluie case $pluie in "Pas" ) curl 'http://192.168.1.81:8080/json.htm?type=command¶m=switchlight&idx=215&switchcmd=Off&level=0' echo "Pas de pluie" ;; "Précipitations" ) curl 'http://192.168.1.81:8080/json.htm?type=command¶m=switchlight&idx=215&switchcmd=On&level=0' echo "Pluie Prevue" ;; esac
Il faudra bien entendu lancer toutes les heures le script via crontab pour mettre à jour le widget
Attention !
L’extension utilise une API non documentée (à ma connaissance) de Météo France, cette extension peut donc cesser de fonctionner à tout moment. 🙂
Et hop, rangez vos parapluies
Super, merci.
Par contre ça n’a pas l’air de marcher avec la Côte d’Azur : Nice et Cagnes sur Mer ne renvoient rien de probant :
Oui en effet toutes les villes de France ne sont pas couvertes. j’ai rajouté cela dans l’article du blog.
Mais dans le Sud il n’y a pas besoin de prévision de pluie, n’est ce pas ?
super , merci
je débute ; mais il ne manque pas une parenthèse de fin dans script ?
Bonjour
Il semblerait qu’il manque un bout de code à la fin de la ligne 2, non ?
jerome
Oui et il manquait aussi un bout de code , c’est corrigé
Ahh les copier /coller !!
Oui et c’est corrigé
Merci
Super merci !
Toi perso,que fais tu comme action quand ton switch est on?
M’envoyer une notification alors que je suis au boulot pour savoir si il fait beau chez moi pour l’apéro avec mes potes et acheter les bieres au passage,
envoyer un message pour rentrer le linge
Plus sérieusement ne pas déclencher l’arrosage du jardin à l’heure planifiée, savoir si il pleut pour faire ou pas la sortie running/vtt
Je trouvais tes premières idées très intéressantes!
bon je vais faire mon boulet …
le script fonctionne pour moi , mais pas avec crontab :
0 * * * * ./domoticz/scripts/pluie.sh
j’ai louper quelque chose ?
Bonsoir,
en tête du script tu as bien un !#/usr/bin/bash ?
dans ta crontab supprime le .(point) devant le /domoticz
avec ta syntaxe il se lance toutes les heures tout le temps
Bonjour
En tête de script : #!/bin/bash si je rajoute « usr » ça ne fonctionne plus .
Si je lance le script via putty avec la commande ./pluie.sh : le script fonctionne le resultat est » off »
Si c’est le crontab qui lance le script, le résultat est « on »
le chemin dans le !# doit etre celui vers bash pour ta distrib
concernant la crontab : si les chemins sont les memes la réponse doit etre la meme , dans la crontab il faut le chemin complet /domoticz/scripts/pluie.sh
bonjour,
j’ai configuré mon domoticz avec le script et ça faisait 3 jours que j’attendais la pluie…
et la je rentre du travail, il a plu mais j’ai rien dans mes logs.
je me suis donc intéressée a ce qui figurait dans la page web meteo france et il y a bien un problème. en effet voici ce que j’ai ci-dessous
j’ai essayé de comprendre le jq et cut mais c’est un peu compliqué. Je me dis qu’il serait peut être bien de rechercher plutôt sur les codes couleurs (qui sont visible sur la page web du site) ou sur la donnée « niveau de pluie » 1 (pour Pas de précipitations) – 2 (pour Précipitations faibles) – 3 (pour Précipitations modérées) ou 4 (pour Précipitations fortes)
peux tu m’aider?
Bonsoir
Aucun message ne s’affiche dans les logs
Seul ton switch virtuel change d’état et ca en effet c’est dans les logs domoticz
LE message Pas de Precipitations est bien plus simple a recuperer que les 1 – 2 – 3 dissemines dans les valeurs renvoyées
As tu recupére le dernier script sur le blog (celui actuellement affcihé ) car il y avait un bug dans un précédent
Ensuite dans le script tu peux mettre un echo $pluie pour voir si on recupere un bon message
le $pluie doit contenir soit « Pas » soit « Préciptitations »
et c’est cela qui active le switch virtuel
Sinon tu as dans le forum un script Lua qui fait la mme chose avec des traces dans les logs
https://easydomoticz.com/forum/viewtopic.php?f=10&t=1991
Bonjour,
Je ne comprends pas bien pourquoi j’obtiens cette erreur lorsque que je lance le script,
Auriez-vous une solution …
Bonsoir
Ca ressemble à un fichier modifié depuis Windows et balancé sous Linux.
Windows rajoute ses propres caractères de fin de ligne qui ne sont pas ceux de Linux
Fait un coup de
dos2unix /home/pi/domoticz/scripts/pluie.sh
et ca devrait aller
Sinon dans ton editeur de fichiers sous Windows, cherche qq part pour pouvoir écrire au format Linux , ou change d’editeur ou edite directement depuis ton Linux
Merci merci merci, 🙂
C’était effectivement par ce que je l’avais édité depuis Windows.
J’ai une petite autre question qui me pose aussi un problème, je cherche à commander domoticz depuis l’IPX800 V4 de (GCE electronics).
Et le ¶ de l’adresse est remplacer par un ¶ j’ai tenté de maitre &para l’adresse s’affiche bien mais domoticz n’a pas l’aire de recevoir l’info je pensais peut être changer l’adresse par &ppara
Quand pensez-vous ?
Bonsoir,
Merci pour ce partage, par contre j’ai un petit problème le script fonctionne bien en le lançant manuellement mais ne fonctionne pas avec la crontab ni avec celle du compte pi ni avec root
« * */1 * * * /home/pi/pluie.sh »
J’ai activer les log et j’obtiens cela
Sep 7 21:00:01 raspberrypi CRON[15853]: (root) CMD (/home/pi/pluie.sh)
Sep 7 21:00:01 raspberrypi CRON[15846]: (CRON) info (No MTA installed, discarding output)
Seriez-vous de quoi cela peut venir ?
merci d’avance 🙂
Hello
oui
par defaut crontab essaie d’envoyer par mail le resultat de ton puie.sh. cronatab cherhce un serveur mail qu’il ne trouve pas
pour eviter cela ajoute cela au bout de ta ligne de crontab
>/dev/null 2>&1
ce qui a pour but de mettre les sorties du script à la poubelle cela devrait résoudre le probleme
Bonjour,
L’API est exploitée aussi par une petite extension Chrome : https://github.com/liorzoue/ext-meteo
Et d’ailleurs, ça serait sympa de citer ses sources… Ou bien de penser à modifier le paragraphe « Attention » 🙂
Bonsoir
En effet , cela est donc corrigé, mes excuses
Merci beaucoup, c’est vraiment top !!!
Merci beaucoup, j’ai pu bricoler un widget pour iPhone grâce à votre page.
Bonjour,
Une méthode pour retrouver l’ID/INSEE de sa ville : http://www.meteofrance.com/mf3-rpc-portlet/rest/lieu/facet/pluie/search/input=XXX
XXX pouvant être une ville ou un code postal.
Bonjour,
Lorsque je lance le script créé, j’obtiens une erreur que voici :
J’ai installé JQ, j’ai modifié le N°IDX dans les 2 lignes de Curl et changé les IP et bien remplacé l’ID de mon bled 🙂
Pouvez vous m’aider svp ?
Bonjour
Je pense que tu as raté cela
Et tu dois faire referece a un de mes switches à moi
Bonjour,
Nouveau dans la domotique et sur domoticz, je suis tombé sur cette page, et cette fonction m’intéresse beaucoup. Mais en plus d’avoir un switch virtuel me disant si il va pleuvoir dans l’heure, j’aimerai pouvoir avoir plus de detail, car pleuvoir dans 5 mn et 55mn, ce n’est pas la même chose ^^
Je me suis donc plongé dans le code pour pouvoir obtenir ce que je veux. Je me suis servi au début de ta fonction pour pouvoir récupérer les résultats de la requête en JSON, mais au lieu de me concentrer sur la première partie du résultat, je me suis penché sur la seconde.
En faisant plusieurs test, j’ai bien eu la confirmation que les 12 valeurs correspondaient bien au tranche de 5 mn sur une heure et que le niveauPluie de 1 à 4 correspond à » pas de pluie » jusqu’à « pluie forte ».
A partir de là, j’initialise un tableau et une boucle simple me permet de récupérer les valeurs, la valeur n me servant pour calculer le temps, 0 étant maintenant, puis multiple de 5 minutes ( le script n’est pas terminé)
#!/bin/bash
#pl=$(curl -s "http://www.meteofrance.com/mf3-rpc-portlet/rest/pluie/881960"|jq -r .niveauPluieText)
pl=$(curl -s "http://www.meteofrance.com/mf3-rpc-portlet/rest/pluie/581650"|jq -r .dataCadran[].niveauPluie)
echo $pl
n=0
precipitations[1]="Rien"
precipitations[2]="faible"
precipitations[3]="modérée"
precipitations[4]="forte"
for i in $pl
do
echo $n
echo ${precipitations[$i]}
let n++;
done
La ou je bloque, c’est comment exploité ensuite ces valeurs dans Domoticz, un simple switch ne me permet pas, je pense, de pouvoir lui injecter des valeur genre un message « il va pleuvoir dans n minutes ». Est ce que quelqu’sait comment on peut obtenir cela ?
Bonsoir,
Sympa comme idée
Pour afficher ton niveau de pluie utilise un autre switch virtuel , le switch texte qui peut contenir un baratin quelconque
J’ai écrit un topo ici https://easydomoticz.com/ajout-dun-texte-dans-un-virtual-sensor/
Bonsoir,
J’ai parcouru le site en long et en large et j’ai trouvé un tuto sur les alertes, qui correspond pas mal , 4 niveaux de couleurs pour les pictos (dommage on peut pas mettre des soleils ou des nuages à la place des /!\ )
du coup ça donne ça
ça marche bien, lancé à la main, me reste plus qu’à le faire marcher dans la crontab ^^’ ce qui me pose encore 2-3 soucis…
j’ai résolu mon pb de crontab (il fallait ajouter le path a l’interieur pour que les variables d’environnements soient prises en compte)