Bonjour,
Je vais vous présenter ici comment afficher dans Gladys les cartes d’alertes de vigilances météo france
Les cartes proviennent de : https://public-api.meteofrance.fr
L’intérêt est discutable mais cela peut-être sympas pour avoir une vue global
Le résultat final :
Il faut tout d’abord créer un compte et récupérer une clé API sur le site :
https://portail-api.meteofrance.fr/web/fr/
Dans un second temps il faut créer les dossier dans Gladys pour la réception des images et du script : ( Pour cela il faut se connecter en ssh sur la machine hôte de Gladys )
mkdir /var/lib/gladysassistant/img/meteofrance
mkdir /var/lib/gladysassistant/img/
mkdir /scripts
Créer ensuite le script
nano /scripts/meteofrancealertes.sh
#!/bin/bash
# Définir l'URL du fichier à télécharger
URL_TODAY="https://public-api.meteofrance.fr/public/DPVigilance/v1/vignettenationale-J/encours"
URL_TOMORROW="https://public-api.meteofrance.fr/public/DPVigilance/v1/vignettenationale-J1/encours"
# Définir les chemins de destination des fichiers
DEST_TODAY="/var/lib/gladysassistant/img/meteofrance/today.png"
DEST_TOMORROW="/var/lib/gladysassistant/img/meteofrance/tomorrow.png"
# Nombre maximal de tentatives
MAX_ATTEMPTS=5
# Fonction pour télécharger le fichier
download_file() {
wget --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" -O "$1" "$2" --header="accept: */*" --header="apikey: apikey_aremplacer"
}
# Télécharger le fichier pour aujourd'hui
attempt=1
while [ $attempt -le $MAX_ATTEMPTS ]; do
echo "Tentative de téléchargement du fichier pour aujourd'hui ($attempt/$MAX_ATTEMPTS)..."
if download_file "$DEST_TODAY" "$URL_TODAY"; then
echo "Téléchargement du fichier pour aujourd'hui réussi."
break
else
echo "Échec du téléchargement du fichier pour aujourd'hui."
attempt=$((attempt + 1))
if [ $attempt -le $MAX_ATTEMPTS ]; then
echo "Nouvelle tentative dans 5 secondes..."
sleep 5
else
echo "Nombre maximal de tentatives atteint pour le fichier d'aujourd'hui. Arrêt du téléchargement."
fi
fi
done
# Télécharger le fichier pour demain
attempt=1
while [ $attempt -le $MAX_ATTEMPTS ]; do
echo "Tentative de téléchargement du fichier pour demain ($attempt/$MAX_ATTEMPTS)..."
if download_file "$DEST_TOMORROW" "$URL_TOMORROW"; then
echo "Téléchargement du fichier pour demain réussi."
break
else
echo "Échec du téléchargement du fichier pour demain."
attempt=$((attempt + 1))
if [ $attempt -le $MAX_ATTEMPTS ]; then
echo "Nouvelle tentative dans 5 secondes..."
sleep 5
else
echo "Nombre maximal de tentatives atteint pour le fichier de demain. Arrêt du téléchargement."
fi
fi
done
Modifier apikey_aremplacer par votre clé api que vous avez récupéré sur le site https://public-api.meteofrance.fr
Créer le crontab :
Les valeurs sont récupérées tous les jours à 16h10 et 06h10 car le site de Météo France indique :
crontab -e
10 16 * * * /scripts/meteofrancealertes.sh >/dev/null 2>&1
10 06 * * * /scripts/meteofrancealertes.sh >/dev/null 2>&1
Créer ensuite les 2 caméras comme ceci :
Vous pourrez ensuite les afficher sur l’interface de Gladys
je n’ai pas réussi à avoir le fond blanc mais si vous une piste je suis preneur
Si vous avez des questions/remarques, n’hésitez pas à m’en faire part
Changelog à venir :
- Aucun (A vos commentaires )
Edit 13/05/2024 :
- Modification du crontab pour l’exécutez toutes les heures passé de 5 minutes
Edit 14/05/2024 :
- Correction d’un problème lors du téléchargement des cartes (Ajout de header dans le Curl)
Edit 15/05/2024 :
- Correction d’un problème lors du téléchargement des cartes (Remplacement de Curl par Wget)
- Correction des heures sur le crontab
Edit 16/05/2024 :
- Modification du script de téléchargement pour prendre en compte le retry en cas d’échec et ajout d’un user-agent pour tenter d’éviter de se faire passer pour un bot auprès du site de Météo France