### Navigation

- index
- modules |
- suivant |
- précédent |
- pywws 13.09_r1069 documentation »
- Guides utilisateur »

# Comment configurer le mode ‘live’ 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.

## 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 `LiveLog` à partir de la ligne de commande, avec un haut niveau de commentaires pour que vous puissiez voir ce qui se passe:

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

En moins de cinq minutes (assumant que vous avez un intervalle de relevé 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. Laissez `LiveLog` fonctionner une ou deux minutes de plus, puis arrêtez le processus en tapant ‘<Ctrl>C’.

## 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 une section `[live]` similaire à celle-ci:

    [live]
    services = []
    twitter = []
    plot = []
    text = []

Cette section spécifie ce que devrait faire pywws à chaque fois qu’il reçoit une lecture de la station météo, ex. toutes les 48 secondes. Les entrées `services` sont des listes de services météo en ligne sur lesquels envoyer vos données météo, ex. `['underground']`. Les entrées `plot` et `text` sont des listes de fichiers gabarits de graphe et de texte à téléverser sur votre site web, et l’entrée `twitter` est une liste de gabarits pour les messages à poster sur Twitter. Vous devriez probablement laisser toutes ces entrées vides, sauf pour `services`.

Si vous utilisez YoWindow (http://yowindow.com/) vous pouvez ajouter l’entrée à la section `[live]` pour spécifier votre fichier YoWindow, ex.:

    [live]
    yowindow = /home/jim/data/yowindow.xml
    services = ['underground']
    ...

Si vous ne les avez pas déjà, créez quatre sections supplémentaires dans votre fichier weather.ini : `[logged]`, `[hourly]`, `[12 hourly]` et `[daily]`. Ces sections doivent avoir des entrées similaires à la section `[live]`, et spécifiez ce qui doit être fait chaque fois qu’une donnée est enregistrée (5 à 30 minutes, dépendant de votre intervalle), chaque heure, deux fois par jour et chaque jour. Ajoutez les noms de vos fichiers de gabarit à l’entrée appropriée, 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']

## Utilisation d’un script

L’installation de pywws inclu un petit script `pywws-livelog.py` qui se trouve dans le dossier `/usr/bin` ou `/usr/local/bin` ou similaire. Vous devriez être en mesure d’utiliser ce script pour exécuter `LiveLog`:

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

## Exécuter en arrière-plan

Afin que `LiveLog` continue de fonctionner après avoir fini d’utiliser votre ordinateur, vous devez exécuter ce programme en tant que ‘tâche en arrière-plan’. Sur la plupart des systèmes Linux / UNIX vous pouvez faire celà en ajoutant simplement le symbole (‘&’) à la fin de la ligne de commande. Par exemple:

    pywws-livelog.py ~/weather/data &

Cependant, il peut être utile de savoir ce qui ne va pas si le programme se bloque pour une raison quelconque. `LiveLog` peut enregistrer ces messages dans un fichier d’historique, pour ce faire spécifiez l’option `-l`:

    pywws-livelog.py -v -l ~/weather/data/pywws.log ~/weather/data &

## Redémarrage automatique

Il y a une plusieurs manières de configurer un système Linux pour lancer un programme au démarrage de l’ordinateur. Habituellement pour ce faire, vous devez mettre un fichier dans `/etc/init.d/`, ce qui requière les privilèges ‘root’. Un problème un peu plus difficile est d’assurer qu’un programme redémarre s’il se bloque. Ma solution à ces deux problèmes consiste à exécuter le script cron suivant, toutes les heures.

    #!/bin/sh

    pidfile=/var/run/pywws.pid
    datadir=/data/weather
    logfile=$datadir/live_logger.log

    # exit if process is running
    [ -f $pidfile ] && kill -0 `cat $pidfile` && exit

    # email last few lines of the logfile to see why it died
    if [ -f $logfile ]; then
      log=/var/log/log-weather
      tail -40 $logfile >$log
      /home/jim/scripts/email-log.sh $log "weather log"
      rm $log
      fi

    # restart process
    pywws-livelog.py -v -l $logfile $datadir &
    echo $! >$pidfile

Ce script enregistre l’identificateur de processus exécutant `LiveLog` dans le pidfile. Si le processus fonctionne, le script ne fait rien. Si le processus a bloqué, il m’envoie un courriel contenant les 40 dernières lignes du fichier d’historique (en utilisant un script qui crée un message et l’envoi par sendmail) puis redémarre `LiveLog`. Vous devrez éditer beaucoup pour adapter à vos emplacements de dossier et ainsi de suite, mais il donne une certaine idée de ce qui doit être fait.

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

### Navigation

- index
- modules |
- suivant |
- précédent |
- pywws 13.09_r1069 documentation »
- Guides utilisateur »