Comment configurer la journalisation horaire avec pywws

Introduction

Pywws offre deux modes de fonctionnement très différents. Habituellement le programme Hourly devrait être exécuté à intervale régulier (habituellement chaque heure) à partir d’une tâche programmée (Cron). Ceci convient aux sites Web plutôt statiques, mais des mises à jour plus fréquentes peuvent être utiles pour des sites comme Weather Underground (http://www.wunderground.com/). Le plus récent programme LiveLog s’exécute continuellement et peut envoyer des données à chaque 48 secondes.

Notez: bien que ce document (et le nom du programme) réfère à la journalisation horaire (hourly), vous pouvez exécuter le programme Hourly aussi souvent ou peu fréquemment que vous le souhaitez, mais n’essayez pas de l’exécuter plus souvent que le double de la fréquence d’historique. Par exemple, si votre intervalle d’historique est de 10 minutes, n’exécutez pas Hourly plus fréquemment qu’aux 20 minutes.

Mise en route

Avant tout, vous devez installer pywws et vous assurer qu’il reçoit bien les informations de votre station météo. Voir Comment démarrer avec pywws pour plus de détails.

Essayez d’exécuter Hourly à partir de la ligne de commande, avec un haut niveau de commentaires pour que vous puissiez voir ce qui se passe:

python -m pywws.Hourly -vvv ~/weather/data

En moins de cinq minutes (assumant que votre intervalle de relevé soit de 5 minutes) vous devriez voir le message ‘live_data new ptr’, suivi par la recherche et le traitement de nouvelles données de la station météorologique.

Configurer l’emplacement des fichiers

Ouvrez votre fichier weather.ini avec un éditeur de texte. Vous devriez avoir une section [paths] similaire à ce qui suit (où xxx est votre nom d’usager):

[paths]
work = /tmp/weather
templates = /home/xxx/weather/templates/
graph_templates = /home/xxx/weather/graph_templates/

Éditez pour correspondre à votre installation et à vos préférences. work est un dossier temporaire utilisé pour emmagasiner les fichiers intermédiaires, templates est le dossier où vous gardez vos fichiers de gabarit texte et graph_templates est le dossier où vous gardez vos fichiers de gabarit graphes. Ne pas utiliser les dossiers exemple de pywws pour celà, puisqu’ils seront écrasés lors de mise à jour de pywws.

Copiez vos fichiers de gabarits texte et graphes dans les dossiers appropriés. Vous pouvez trouver les quelques exemples fournis avec pywws fort utiles pour débuter. Si vous avez installé pywws avec la commande pip, les exemples devrait se trouver dans le dossier /usr/share/pywws ou /usr/local/share/pywws ou similaire.

Configurer les tâches périodiques

Dans weather.ini vous devriez avoir les sections [logged], [hourly], [12 hourly] et [daily] similaires à celle-ci:

[logged]
services = []
twitter = []
plot = []
text = []

[hourly]
...

Ces sections spécifient ce que devrait faire Hourly à chaque exécution. Les tâches dans la section [logged] sont réalisées à chaque fois qu’une nouvelle donnée est enregistrée, les tâches dans la section [hourly] sont exécutées à chaque heure, les tâches dans la section [12 hourly] sont lancées deux fois par jour, tandis que les tâches dans la section [daily] sont réalisées une fois par jour.

Les entrées dans services sont une liste de services météo en ligne sur lesquels envoyer vos données météo. Les entrées plot et text sont des listes de fichiers gabarits graphes et textes à téléverser sur votre site web, et l’entrée twitter est une liste de gabarits pour les messages à poster sur Twitter. Ajoutez le nom de vos fichiers de gabarit et de services météo à l’entrée correspondante, par exemple:

[logged]
services = ['underground', 'metoffice']
twitter = []
plot = []
text = []

[hourly]
services = []
twitter = ['tweet.txt']
plot = ['7days.png.xml', '24hrs.png.xml', 'rose_24hrs.png.xml']
text = ['24hrs.txt', '6hrs.txt', '7days.txt']

[12 hourly]
services = []
twitter = []
plot = []
text = []

[daily]
services = []
twitter = ['forecast.txt']
plot = ['28days.png.xml']
text = ['allmonths.txt']

Vous pouvez réaliser un test de bon fonctionnement en enlevant la section last update du fichier weather.ini, puis exécutez Hourly de nouveau:

python -m pywws.Hourly -v ~/weather/data

Modifié dans la version 13.05_r1009: The last update information was previously stored in weather.ini, with last update entries in several sections.

Utilisation d’un script

L’installation de pywws inclu un petit script pywws-hourly.py à installer dans /usr/bin ou /usr/local/bin ou similaire. Vous devriez être en mesure d’utiliser ce script en exécutant Hourly:

pywws-hourly.py -v ~/weather/data

Exécuter en tant que tâche ‘cron’

La plupart des systèmes UNIX/Linux possèdent un service ‘cron’ qui à pour but d’exécuter un programme spécifié à un intervalle défini, même si vous n’êtes pas connecté à votre session. Vous éditez un fichier ‘crontab’ pour spécifier ce qui doit être exécuté et quand. Par exemple, pour exécuter Hourly à chaque heure, à zéro minutes de l’heure:

0 * * * *       pywws-hourly.py /home/jim/weather/data

Ceci devrait fonctionner, mais si ce n’est pas le cas vous n’obtiendrez probablement pas de messages d’erreur vous indiquant ce qui ne va pas. Il est préférable d’exécuter un script qui lance Hourly puis vous envoi un courriel avec tout message qui aurait pu être produit. Voici le script que j’utilise:

#!/bin/sh
#
# weather station logger calling script

if [ ! -d /data/weather/ ]; then
  exit
  fi

log=/var/log/log-weather

pywws-hourly.py -v /data/weather >$log 2>&1

# mail the log file
/home/jim/scripts/email-log.sh $log "weather log"

Vous devrez éditer beaucoup pour adapter à vos emplacements de dossier et ainsi de suite, mais il donne une certaine idée de ce qui peut être fait.

Commentaires ou questions? SVP, souscrivez à la liste d’envoi de pywws http://groups.google.com/group/pywws et laissez-le nous savoir.