nicolas.perenne.free.fr

Accueil Monitorage
CV3F
Etats Finis Seamer95


U.K. flag

La version 0.2 de getWind est une évolution de permettant la sauvegarde distante des mesures dans une table MySQL.

Les valeurs paramétrables sur la ligne de commande sont maintenant augmentées de l'option -l:

root@OpenWrt:~# getWind -h
Usage: getWind [-d file] [-k] [-a length] [-o period] [-c count] [-h]
 -d <file>:   specify the device <file>
              (default: /dev/ttyS0)
 -k:          keep trying even if nothing currently happens
              on the specified port or if the MySQL server
              is unreachable (default: no)
 -a <length>: compute averages of <length>
              successive values (default: 20)
 -o <period>: output averages every <period>
              wind acquisition (default: 10)
 -c <count>:  output <count> averages and exit
              (default: go on endlessly)
 -l <file>:   connect to the MySQL server specified in <file>
              (default: output directed to 'stdout')
 -h :         this help screen

Le fichier donné en argument de l'option -l doit contenir les lignes suivantes:

host <chaîne de caractères>
login <chaîne de caractères>
password <chaîne de caractères>
database <chaîne de caractères>
table <chaîne de caractères>
station <nombre entier>
instrument <nombre entier>

N.B. D'après la doc. MySQL: "password encryption is handled automatically by the client API"... Qui plus est si le serveur est disponible tout le temps le mot de passe n'est transmis qu'une seule fois, au démarrage du système d'acquisition (la connection n'est pas ré-ouverte à chaque insertion dans la base).

La structure de la table attendue par getWind est définie par le script de création SQL suivant:

create table mesures (
  id integer auto_increment not null,
  horodate timestamp,
  station integer,
  instrument integer,
  vitesse double(5,2),
  direction double(4,1),
  temperature double(4,1),
  primary key(id)
);

Si une connection au serveur MySQL a effectivement été initiée mais disparait en cours de route suite à un problème réseau ou au re-démarrage du serveur, alors le programme se termine même avec -k. Cependant une reprise automatique peut dans ce cas être assurée au niveau système par une crontab idoine (voir ci-dessous).

Le code-source est disponible dans ici. Cette archive ne contient pas seulement le programme C, mais aussi tout ce qu'il faut pour installer sur le routeur un automatisme d'acquisition et de sauvegarde distante: vérifier le makefile pour adapter éventuellement certaines directives puis taper sur l'hôte

nico@Herminet1:~/sources/C/CV3F$ make full_install

et sur la cible

root@OpenWrt:~# /etc/init.d/getwind enable
root@OpenWrt:~# crontab tab4cron

La première ligne sert à lancer automatiquement getWind à chaque démarrage du routeur, la seconde amorce la crontab qui vérifie tous les quarts d'heure que le programme ne s'est pas terminé (à cause d'une rupture de connection MySQL, voir ci-dessus); si tel est effectivement le cas, la crontab se chargera de relancer getWind.