[Météo][DSTAR] mise à jours des scripts pour les alertes météo

Suite à pas mal de modifications, de mise à jour et à la visite d’Arnaud (F4EIR), j’ai repensé les scripts de gestion des alertes météo sur les relais DSTAR du département de la Loire.

Pour rappel, le projet est la diffusion d’un petit texte qui rappel le niveau d’alerte météo toutes les 10 minutes, sur F4EED  C et F1ZCK  B et ce, durant toute l’alerte météo (pour les niveaux ORANGE et ROUGE).

Pour ce faire il faut modifier le fichier CdeRelais.py, créer deux scripts python recup_alerte_meteo_42.py et lecture_etat.py ….

Mon idée est d’écrire dans un fichier les mots :

  • ROUGE pour une alerte de niveau rouge
  • ORANGE pour une alerte de niveau orange
  • JAUNE  pour une alerte de niveau jaune
  • AUCUNE pour un niveau Vert

Puis à intervalle régulier d’aller lire ce fichier et en fonction du contenu envoyer une trame d’information sur le relais DSTAR.

Mon côté ADRASEC ressort forcément, du coup je voulais soit, mettre à jour ce fichier par internet (merci Arnaud) soit pouvoir le changer en manuel …

 

Attention, dans cet article nous ne donnerons pas de leçon de linux, pensez bien a donner les droits qui vont bien sur les fichiers et répertoires de votre installation.

Attention, avant toutes modifications pensez à sauvegarder votre carte SD et vos configurations avant de faire joujou

Dans un premier temps commençons par la partie « Manuel » de la gestion des alertes.

Mais commençons donc par la modification du fichier CdeRelais.py

Dans ce fichier, il va vous falloir faire la détection des nouvelles commandes your.

par exemple pour l’activation d’une alerte météo ORANGE, le your que j’ai mise en place est « ALMETOR  » (attention 8 caractères donc un espace a la fin).

La détection de ce your ce fait de cette manière :

if your== »ALMETOR « :

il en sera de même pour les your suivant :

  • « ALMETRO  » : début alerte rouge
  • « ALMETFIN » : fin d’alerte météo

Voici donc le script complet pour un début d’alerte météo ROUGE :

if your== »ALMETOR « :
            sleep(2)
            command= »texttransmit -text ‘Alert Meteo Orange’ ‘F4EED C' »
            run_cmd(command)
            fichier=open(« /home/pi/f4eed/alerte/Alerte_Meteo_42.etat », »w »)
            fichier.write(« ORANGE »)
            fichier.close()

Petite description des lignes du script

  • if your== »ALMETOR « : : celle là on la déjà vue c’est celle qui test le your qui arrive au relais.
  • sleep(2) : fait une pause de 2 secondes.
  • command= »texttransmit -text ‘Alert Meteo Orange’ ‘F4EED C' » : préparele texte d’info a envoyer via le relai.
  • fichier=open(« /home/pi/f4eed/alerte/Alerte_Meteo_42.etat », »w ») : ouvre le fichier Alerte_Meteo_42.etat en l’écrasant
  • fichier.write(« ORANGE ») : puis y écrit ORANGE
  • fichier.close() : et le referme

il suffit de dupliquer ce petit script pour les niveaux ORANGE, JAUNE et VERT

le script de passage en alerte ROUGE :

if your== »ALMETRO « :
            sleep(2)
            command= »texttransmit -text ‘Alert Meteo Rouge’ ‘F4EED C' »
            run_cmd(command)
           fichier=open(« /home/pi/f4eed/alerte/Alerte_Meteo_42.etat », »w »)
          fichier.write(« ROUGE »)
         fichier.close()

et le script de fin :

if your== »ALMETFIN »:
            sleep(2)
            command= »texttransmit -text ‘Fin Alerte Meteo 42’ ‘F4EED C' »
            run_cmd(command)
           fichier=open(« /home/pi/f4eed/alerte/Alerte_Meteo_42.etat », »w »)
          fichier.write(« AUCUNE »)
         fichier.close()

 

Voici donc a quoi ressemble mon fichier CdeRelais.py :

if your== »IRCDDB « :
           sleep(2)
           command= »(sudo /etc/init.d/ircddbgateway restart) 2>&1 & »
           os.system(command)
if your== »ALMETOR « :
           sleep(2)
           command= »texttransmit -text ‘Alert Meteo Orange’ ‘F4EED C' »
           run_cmd(command)
           fichier=open(« /home/pi/f4eed/alerte/Alerte_Meteo_42.etat », »w »)
           fichier.write(« ORANGE »)
           fichier.close()
if your== »ALMETRO « : 
            sleep(2)
            command= »texttransmit -text ‘Alert Meteo Rouge’ ‘F4EED C' »
            run_cmd(command)
            fichier=open(« /home/pi/f4eed/alerte/Alerte_Meteo_42.etat », »w »)
            fichier.write(« ROUGE »)
            fichier.close()

 

if your== »ALMETFIN »:
            sleep(2)
            command= »texttransmit -text ‘Fin Alerte Meteo 42’ ‘F4EED C' »
            run_cmd(command)
           fichier=open(« /home/pi/f4eed/alerte/Alerte_Meteo_42.etat », »w »)
           fichier.write(« AUCUNE »)
           fichier.close()
if your== »TIME « :
           heure= »Il est « +strftime(« %H:%M:%S »)
           sleep(2)
           command= »texttransmit -text ‘ »+heure+ »‘ ‘ »+relais+ »‘ »
           run_cmd(command)
if your== »WX  » and APIwunderground!= » »:
           f = urllib.request.urlopen(wxurl)
           json_string = f.read()
           parsed_json = json.loads(json_string.decode(‘UTF-8’))
           temp_c = parsed_json[‘current_observation’][‘temp_c’]
           pression = parsed_json[‘current_observation’][‘pressure_mb’]
           humidite = parsed_json[‘current_observation’][‘relative_humidity’]
           #print (« Current temperature is: %s » % ( temp_c) )
           f.close()
          wxmessage = str(temp_c)+ »C « +pression+ »mb « +humidite
          sleep(1)
          command= »texttransmit -text ‘ »+wxmessage+ »‘ ‘ »+relais+ »‘ »
          run_cmd(command)

Regardons maintenant le script python qui vas lire le niveau d’alerte en court lecture_etat.py

Voici le fichier à créer et à lancer pour voir le niveau d’alerte météo en cours …

Commentaire en vert

#!/usr/bin/python
import os 
import time

#Ouvre le fichier Alerte_Meteo_42.etat et lit a valeur de l’alerte

fichier=open(« /home/pi/f4eed/alerte/Alerte_Meteo_42.etat », »r »)
valeur_alerte=fichier.readlines()
fichier.close()

#Lance les tests sur la valeur stocké dans le fichier

#Lance une balise d’info annonçant l’alerte rouge

if valeur_alerte==[‘ROUGE’]:
               command= »texttransmit -text ‘Alerte Meteo Rouge’ ‘F4EED C' »
               os.system(command)
#Lance une balise d’info annonçant l’alerte orange

if valeur_alerte==[‘ORANGE’]:
              command= »texttransmit -text ‘Alerte Meteo Orange’ ‘F4EED C' »
               os.system(command)

#Ne fait rien

if valeur_alerte==[‘VERT’]:
               print « Niveau Vert »

#Ne fait rien

if valeur_alerte==[‘JAUNE’]:
               print « Niveau Jaune »

#Ne fait rien
if valeur_alerte==[‘AUCUNE’]:
               print « aucune alerte meteo »

ET voilà a partir de maintenant vous pouvez  déclencher, manuellement, des alertes météo sur votre relai DSTAR

Pour que les alertes partent toute les dix minutes il vous faut rajouter une ligne dans le crontab :

*/10 * * * * python2.7 /home/pi/f4eed/lecture_etat.py

et voilà, toutes les 10 minutes le fichier sera lu, et les actions seront effectués

Abordons maintenant la partie « Automatique » de la gestion des alertes.

Alors pour cette partie je vous souhaite bon courage, je ne vous expliquerai pas comment créer le fichier Alerte_Meteo_XX.etat (XX étant le numéro du département).

Je vais juste vous décrire le script qui me permet de récupérer celui pour le département 42 (ne cherchez pas celui d’un autre département il n’existe que celui du 42 😉

Voici donc mon script de récupération automatique :
#!/usr/bin/python3

import os

#Suppression du fichier déjà présent sur le disque dur
os.system(« rm /home/pi/f4eed/alerte/Alerte_Meteo_42.etat »)

#Récupération sur le serveur internet du fichier à jour pour les alertes du département 42
os.system(« wget -P /home/pi/f4eed/alerte/ http://XX.dedimax.com/meteo/Alerte_Meteo_42.etat « )

 

et hop vous avez récupéré via internet votre fichier de niveau d’alerte.

ET voilà a partir de maintenant vous pouvez  déclencher, automatiquement, des alertes météo sur votre relai DSTAR

Pour que les alertes partent toute les dix minutes il vous faut rajouter une ligne dans le crontab :

0 */1 * * * python2.7 /home/pi/f4eed/recup_alerte_meteo_42.sh

avec cette ligne dans le crontab le téléchargement du dernier fichier de niveau d’alerte sera lancé toutes les heures.

Attention les chemins et les noms de fichier sont ceux de mon système à moi, à vous de les paramétrer pour votre système à vous …

Bon trafic à tous en DSTAR et bonne diffusion d’alerte météo 😉

Fred F4EED

 

Advertisements
Tagged with: , , , , , , , , , , ,
Publié dans ADRASEC, dstar, DSTAR, F1ZCK, FNRASEC, Gestion de l'urgence, groupe OM et Association, logiciels libres, Météo, mes idées, Modes Numériques, Mon point de vue, Petits tuto ...., Promotion Radioamateur, Radioamateur, raspberry, raspbian

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s