nicolas.perenne.free.fr
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.