Connecter une station météo sous Ubuntu
Par jp.fox le samedi 2 septembre 2006, 16:56
Ubuntu
::
Lien permanent
Avant de faire l'aquisition d'une petite station météo, j'ai recherché quels étaient les modèles, parmis ceux connectables à un ordinateur, compatibles avec Ubuntu (et avec mon budget). En fait, j'ai été surpris par la multitude de solutions qui s'offraient à moi.
Si vous avez l'intention d'acquérir ce type de matériel, je vous recommande donc de chercher tout d'abord une station qui correspond à vos attentes et de vérifier tout simplement si un logiciel Linux existe... et il y a bien des chances !
Pour entrer un peu plus dans le détail, je vais vous présenter comment j'ai connecté une station Lacrosse Technology WS-2308 (ceci est valable pour toute la gamme WS-23XX).
La solution tourne autour du logiciel libre Open2300 qui est un ensemble de petits utilitaires permettant de dialoguer avec la station. Voici la liste de ces utilitaires.
Installation d'Open2300
Tout d'abord, il faut télécharger les sources du logiciels. Choisissez le fichier au format tar.gz sur cette page et enregistrez le dans votre dossier dossier personnel ~/ par exemple.
Ensuite, ouvrez un terminal et lancer les commandes suivantes :
$ tar xvf open2300-1.10.tar.gz $ cd open2300-1.10/ $ sudo cp open2300-dist.conf /etc/open2300.conf $ make $ sudo make install
Il se peut que vous ayez une erreur sur la compilation du module mysql2300... Si vous avez l'intention de l'utiliser il faut alors installer le paquet synaptic libmysqlclient15-dev et relancer les commandes make et make install.
Ensuite, il faut configurer son propre fichier /etc/open2300.conf en fonction de ses besoins... voici les rubriques principales du mien :
# open2300.conf # # Configuration files for open2300 weather station tools # # Default locations in which the programs will search for this file: # Programs search in this sequence: # 1. Path to config file including filename given as parameter (not supported by all tools) # 2. ./open2300.conf (current working directory) # 3. /usr/local/etc/open2300.conf (typical Linux location) # 4. /etc/open2300.conf (typical Linux location) # # All names are case sensitive!!! # Set to your serial port and time zone # For Windows use COM1, COM2, COM2 etc # For Linux use /dev/ttyS0, /dev/ttyS1 etc SERIAL_DEVICE /dev/ttyS0 # /dev/ttyS0, /dev/ttyS1, COM1, COM2 etc TIMEZONE 1 # Hours Relative to UTC. East is positive, west is negative # Units of measure (set them to your preference) # The units of measure are ignored by wu2300 and cw2300 because both requires specific units
WIND_SPEED km/h # select MPH (miles/hour), m/s, or km/h TEMPERATURE C # Select C or F RAIN mm # Select mm or IN PRESSURE hPa # Select hPa, mb or INHG
Le point le plus important étant le paramétre SERIAL_DEVICE qui indique sur quel port série est connectée la station : COM1 : /dev/ttyS0 COM2 : /dev/ttyS1 ...
Afin d'éviter tout problème de droits, tapez la commande suivante en adaptant le ttyS? à votre configuration :
$ sudo chmod a+rw /dev/ttyS0
Ces modifications de droits sont perdues automatiquement au démarrage de la machine suite à la detection des périphériques. Enfin de les réappliquer systématiquement, on peut ajouter cette ligne au fichier /etc/rc.local
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # autorisation de lecture/écriture sur le port Com1 chmod a+rw /dev/ttyS0 exit 0
En cas de problème d'installation, vous trouverez plus d'information sur cette page.
Test d'Open2300
Le moment est venu de voir si votre configuration fonctionne !
Lancez la commande suivante, qui peut prendre une dizaine de secondes pour s'exécuter :
$ fetch2300 Date 2006-Sep-02 Time 16:00:12 Ti 22.2 (....) Tendency Falling Forecast Rainy
Si tout ce passe bien, vous devriez obtenir un résultat similaire 
Envoi des mesures à un site fédérateur de données météorologiques
Vous pouvez par exemple vous inscrire, gratuitement, au site Weather Underground.
URL de l'inscription :
http://www.wunderground.com/signup/signup.asp
Exemple de page générée :
http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IARDECHE3
Modification du fichier de configuration /etc/open2300.conf pour préciser vos paramètres Weather Underground qui vous sont communiqués lors de l'inscription :
#### WEATHER UNDERGROUND variables (used only by wu2300) WEATHER_UNDERGROUND_ID IARDECHE3 # ID received from Weather Underground WEATHER_UNDERGROUND_PASSWORD xxxxxxxxx # Password for Weather Underground
Commande à lancer pour envoyer vos données au site :
$ wu2300
Attention, cette commande réinitialise les mini/maxi de la vitesse du vent sur la station. C'est le moyen utilisé par le logiciel pour calculer les rafales entre deux envois de données.
Le service Citizen Weather est aussi utilisable avec la commande cw2300 et les paramètres CITIZEN_WEATHER_**** du fichier open2300.conf
Automatisation des envois
Le démon cron est tout à fait adapté à la planification de tâches. Pour l'utiliser, il suffit de lancer la commande suivante pour obtenir les tâches déjà planifiées :
$ crontab -l > mycron.txt (avec un L minuscule après le signe moins)
Modifiez ensuite le fichier mycron.txt pour y ajouter la ligne suivante (il se peut que le fichier soit vide à l'ouverture) :
0,30 00-23 * * * /usr/local/bin/wu2300
Ce qui automatisera l'envoi des données de minuit à 23h aux minutes 00 et 30... autrement dit, toutes les demi-heure ! Il nous reste à indiquer à cron la modification :
$ crontab mycron.txt
Aller plus loin
Les commandes fournies par Open2300 permettent aussi de se faire un petit site web plus complet. Par exemple, avec les commandes histlog2300 (qui récupère les 175 valeurs de l'historique de la station), fetch2300 (qui donnent les valeurs actuelles), un peu de script shell et PHP, le planificateur cron, j'ai pu faire ce petit site !
Ajout fait le 03/03/2007
Suite à plusieurs demandes faites dans les commentaires voici plus d'éléments pour réaliser un site internet complet :
En fait, je n'ai pas utilisé le script php fournit avec open2300 ni de base MySQL, j'ai tout réécrit pour avoir quelque chose qui corresponde à ce que je souhaitais.
Tout d'abord, il y a une partie à installer sur le pc ubuntu :
Tout est dans le fichier weather.tar.gz Pour fonctionner, il faut installer les paquets synaptic suivants :
- php5-cli
- cron
- ftp
Il faut aussi avoir compilé open2300 comme vu précédemment.
Dans mon cas, tout est dans le dossier /home/jp/appli/weather/ (si vous le changer de place, il faudra adapté les chemins dans les différents script. Je vous conseille d'ailleurs d'y jeter un oeil pour voir s'il n'y a pas des spécificités à changer comme le dossier ftp ou autres)
Il faut créer un dossier /home/jp/appli/weather/data qui contiendra vos données (adapté à vos chemins)
Il faut ensuite se créer un fichier ~/.netrc qui contient les mots de passe ftp exemple :
machine ftpperso.free.fr login monlogin password monmotdepasse
Après, on planifie la récupération des données sur la station et l'envoi des données sur le site
$ crontab -e
entrer la ligne suivante et sauvegarder :
0,30 00-23 * * * /home/jp/appli/weather/weather.sh
Cela lancera le script toutes les demi heure
Côté site web, il suffit de créer un dossier meteo (par ftp) et d'y transferer le contenu du fichier meteo.tar.gz
En ligne 43 et 128 du fichier index.php, vous pourrez modifier le texte propre à mon site par un qui correspond mieux au votre 
Voilà, je ne sais pas si tout est très clair, j'ai dû faire ce petit complément assez rapidement... désolé de ne pas avoir fait quelque chose de plus paramétrable... un jour peut-être 




Tres joli !
Quelques remarques :
- A quoi sert l'etape crontab -l > mycron.txt ?
- Pourquoi ne pas mettre */30 * * * * /usr/local/bin/wu2300 ?
Pour le cron, je voulais dire... crontab -e
fait pareil sans utiliser un .txt
il est vrai que crontab -e fait la même chose... mais l'éditeur qui est lancé par cette fonction peut en dérouter certains... j'avoue que cela a été un mon cas.

Ma ta solution est toute aussi bonne
Autant récupérer les infos directement sur le net plutôt que de se ruiner dans une station météo.
@jp pareil, je prefere de loin vim a nano... j'ai du switche via :
sudo update-alternatives --set editor /usr/bin/vim
@platzkot si tout le monde disait ca... ;-p
et puis les instructions ici sont assez proche de ce qu'il faut faire pour frog, moins cher et de tres bon gout dans une salle machine :
www.froggyhome.com/index....
Merci Ju pour l'astuce... il est vrai que j'ai beaucoup de mal à me passer de vim !
Quoique maintenant, tu risques de tomber les données de ma station !
Platzkot, remarque que je n'incite personne à acquérir une station météo... Pour ma part, j'habite un plateau assez venté et je voulais me faire une idée de la vitesse du vent et de la température ressentie. Si tu trouves sur internet ces informations pour la commune de Plats (moins de 1000 habitants en Ardèche), fais moi signe
@Ju,
Oui c'est vrai, c'était juste une petite remarque sans prétention et sans bcp de réflexion :p
@jp
Oui, ça doit être chaud de mesurer le vent surtout s'il y a des obstacles (arbres, maison en vis-à-vis...). J'avais lu un article où une personne construisait un anémomètre, mais j'en suis pas encore là :p
Pour aller dans le sens de Platzkot, voici un lien: meteo.minicoque.com/index...
C'est avec ironie, car j'ai moi-même une station, et j'utilise les mêmes technologies (Linux/open2300/WS2300).
Celà dit mon lien te fournira des billes pour voir si tes relevés sont exacts...
Moi ce que j'en dis.
Bonjour à tous.
J'ai un soucis... En effet, apres avoir suivi pas a pas les conseil d'installation ,quand je lance fetch2300 rien ne se passe...
Avez vous une idee?
Merci
Dans le fichier open2300.conf vous êtes sûr d'avoir mis le bon port série ?
SERIAL_DEVICE /dev/ttyS0
Le plus simple est d'essayer avec plusieurs valeurs : ttyS0, ttyS1, ttyS2... sans oublier avec chaque test la fonction correspondante :
$ sudo chmod a+rw /dev/ttyS1
Sinon, il faudrait nous en dire plus sur le "rien ne se passe" ? c'est-à-dire ?
bonjour
la page web inclut dans les htdocs n'arrive pas a trouver les données ?
fetch fonctionne correctement pourtant
Merci pour les conseils car en effet cela vient de cette erreur de port com!
A present j'aiemrai envoyer ces donnees sur mon site et ma base de donnee mysql.
Y a t il une table a creer avec la base ?
Merci pour votre aide.
Bonjour.
Peux tu nous en dire un peu plus sur ta base de donnees et tes tables ?
je ne trouve pas la methode pour creer ces tables et la manieres dont elles seront remplies automatiquement.
Merci pour votre aide a tous.
Voilà voilà

J'ai rajouté un petit complément à la fin billet qui devrait vous en dire plus sur ma façon de faire.
J'espère que vous vous en sortirez
Salut,
Pour commencer, super boulot, ça donne envie
Quelle est la consommation approximative d'un ordinateur allumée 24h/24 ?
Peut on envisager le même principe avec les stations lacross plus haut de gamme (ws25xx par exemple) ?
Par avance merci.
kON!c, merci pour les félicitations
Pour la consommation, et bien, cela dépend du PC mais on peut dire environ 200 à 300 watt soit quelques ampules électriques. Mais il n'est pas nécessaire de laisser son PC allumé, la station a une mémoire de 170 enregistrements (à raison d'une demi heure dans mon cas mais c'est paramétrable), ce qui permet de ne pas se soucier de l'envoie des données. Je n'allume mon PC que lorsque j'en ai besoin.
Concernant les ws25xx, le logiciel open2300 ne semble pas prévu pour... www.lavrsen.dk/twiki/bin/...
Pour ceux qui cherchent comme moi un truc simple a utiliser pour generer des graphs : sourceforge.net/projects/...
Weatheroffice se base sur des données enregistrées dans une base mysql grace a open2300
Bonjour, j'i installer open2300 sou ubuntu hardy, mais le script pour nvoyer sur ftp sembl pasfonctionné chez moi, j'i une erreur de login.
pour le fichier .netrc dans quel repertoire doit t'il être mis ?
Merci pour votre aide
Cordialement
Manu
Le fichier .netrc doit être créé dans le dossier personnel (/home/votrelogin/.netrc ou autrement dit ~/.netrc)
merci le transfert fonctionne.
j'ai rajouter chmod a+rw /dev/ttyS0 dans /etc/rc.local
puisdans crontab -e
0,15 09-22 * * * /home/cocolapin/weather/weather.sh
pour que le script s'éxecute toute les 15 minutes de 09h00 à 22h00, mais j'ai beau relancé ubuntu, rien ne ce fait.
es ce que pour fonctionné, je doit executé le script qeather.sh en premier sans fermer apres le fenetre du terminal ou un problème de chmod ?
Bonne journée
j'ai rien dit, juste après le redemarre, 15 minutes plus tard, c'est apparu.
Dernière question, es ce que Open2300 permet de remettre à 0 toute les donnée, car il m'affiche 1290 mm de pluie ?
Pour la remise à zéro : oui bien sûr... suffit de lire la doc
www.lavrsen.dk/twiki/bin/...
minmax2300 rtotal
Sa marche, merci, j'avais rien compris car c'est en Anglais, mais bon il n'y avais rien de compliquer.
Encore merci, pour la maj en ligne j'ai passer de 15 à 30 minutes car 15 min sa merdé un peu.
J'ai plus qu'à changer mon anémomètre qui ne marche plus que 5 minutes quand je le branche puis l'affichage disparait.
sur la page qui affiche les mesures actuelle, il y à un lien "
Evolution au cours de la journée" y' à t'il un truc à régler pour que sa marche.
Désoler pour toute ses questions.
Encore merci
normalement rien de particulier, si tu as bien envoyé toutes les pages contenues dans le fichier meteo.tar.gz, cela devrait fonctionner sans soucis. Quelle erreur as-tu lorsque tu clique sur le lien "Evolution..." ?
rien de particulier, voici le lien :
ne faite pas attention au donnée vent et T° ressentie, y'à un blème à l'anémomètre.
j'ai oubliez le lien désoler !!
meteo-provence.com/ws2300...
Je pense que la station n'est pas à l'heure, les données dans les fichiers sont daté de 2001.
meteo-provence.com/ws2300...
date réglé, merci j'avais pas remarqué.
J'ai effacé les ancienne donnée, j'ai effectué une mise en ligne, mais sa change rien.
y'à t'il besoin d'une base sql ?
non pas besoin de mysql, ça va marché, c'est juste que la station ne mémorise les mesures que toutes les heures (même si on lance le script plus souvent).
Pour changer la fréquence de mémorisation c'est avec la commande suivante :
interval2300 interval-en-minutes 0
j'ai mis interval2300 15 j'ai attendu que le script se fasse, toujours rien, je verais demain en allumant mon pc y'aura plus de données.
Bonne soirée à tous
bon, toujours rien. dommage.
Peux-tu lancer le script /home/cocolapin/weather/weather.sh dans un terminal et m'envoyer ce qui s'affiche ainsi qu'une archive de ton dossier /home/cocolapin/weather/data/ par mail ? (voir "Contact" dans la colonne de droite du blog)
Cannot open file /home/cocolapin/weather/data/ws2308.log
j'ai aussitôt penser à un problème de permission, en fait c'était un fichier ou seul root pouvez le modifier, petit sudo chmod 777 ws2308.log, crontab à lancer le script et sa marche.
Cool
Pourras-tu me dire quand ton site sera vraiment en route... je ferai un petit billet sur mon blog
ok pas de problème.
Bonjour dans la page des graphiques, quelle modification pourrais je faire pour que les graphiques des pluie sur 24 heure et pluie totale soit sur la page ?
Désoler de poser tant de question.
Disons que ça fait partie des améliorations que je dois faire depuis plus d'un an maintenant. Ce graphe est un peu particulier car la station enregistre des cumuls et non des valeurs comme pour les autres mesures... promis ça va venir.
super c'est cool sa !!
Par contre chose bizarre, les graphismes on fonctionné jusqu'à hier soir 20h30, plus plus rien.
dernière donnée presente dans ws2308.log
20080531201900 2008-May-31 20:19:00 24.4 17.9 14.4 47 80 183.6 0.0 N 14.4 74.59 1013.200
Bon, ben c'est réparé, deréglage de la station.
Ca me fessait envie depuis longtemps. Je surveillais ce billet depuis longtemps ... mais voilà c'est fait ! Station, presque installée, il manque plus qu'un mat pour l'anémomètre. J'ai également des problèmes pour l'affichage des graphs, à creuser.
En tout cas merci pour ce billet
siouwind.fr/meteo/
Bon ben c'est nickel tout ça ! ça marche pile poil. Merci merci :D
Pour envoyer les mesures toutes les 10 minutes de 0 à 23h:
*/10 00-23 * * * /home/konic/Meteo/weather.sh
Bonjour, super votre script simple et efficace ! Merci ! J'ai juste un petit bug avec l'envoi en FTP la commande mput 'find ...' ne semble pas fonctionner sur mon serveur VSFtpd pouvez vous m'expliquer ce qu'elle fait mis à par chercher les fichiers *.txt ?
mput c'est pour l'envoi groupé il me semble.
Le find s'execute en local dans le /home.../data ?
Merci pour votre aide
@belu: la ligne mput permet d'envoyer plusieurs fichier à la fois mais uniquement ceux qui sont plus récent que le fichier current.txt (en local)... c'est à dire uniquement ceux qui ont été modifiés suite à la dernière récupération de données issues de la station. Elle peut être remplacée par :
`find *.txt -newer current.txt -printf "put %f\n"`
Merci ça a l'aire de fonctionner.
La transmission des données au site http://www.wunderground.com (par wu2300 ne semble pas fonctionner, même en modifiant les sources (voir http://www.chassignet.fr/Meteo/Evet...).
Comment faites vous ?
Bonjour,
Je viens d'installer open2300 sur un mini PC Packard Bell imax mini.
J'ai des problèmes de liaison entre le PC et la station.
J'utilise un adaptateur USB-Série utilisant le driver PL2303.
Au démarrage du PC, la liaison ne fonctionne pas, il me faut parfois attendre 30 min avant que fetch2300 se mette à fonctionner...
J'ai également installé Open2300 sur un vieux portable DELL Latitude 100, à des fins de tests.
Là, je n'ai aucun problème de liaison... ;(
Auriez-vous une idée à me soumettre ?
Enfin, lorsque je lance CW2300, je n'ai plus de liaison non plus.
Il semble que ce scripts bloque le port USB/série.
Comment faire pour débloquer ce foutu port ?
D'avance merci de l'aide que vous voudrez bien m'apporter.
Philippe
Bonjour.
J'ai correctement installer Open2300 via un .deb trouver sur le site de OpenSuse qui fonctionne a merveille sur Ubuntu 10.04 (The Lucid Lynx), car quand je le compiler ca ne marchait pas avec la méthode décrite ci dessus. Et voila, desormais je souhaiterais faire une page web tel que ces 3 site que j'ai trouvé: http://www.photorock.com/meteo/ | http://etablissements.ac-amiens.fr/... | http://meteo.savennieres.free.fr/. Comment dois je m'y prendre SVP ?
ben c'est expliqué dans l'article ci-dessus
OK, donc la j'ai bien installer les fichier de meteo.tar.gz sur mon serveur: le site est bien créé mais le problème maintenant c'est que je n'arrive pas a envoyé les données sur le serveur.
Je m'explique: lorsque je lance weather.sh il me demande " Password:Name (ftp.membres.lycos.fr:root)" mais en fait mon dossier weather est dans /etc et du coup je ne sais pas ou mettre le fichier ".netrc".
J'imagine que mon home n'est pas sa place ? et que c'est "sendweather" qui me demande mes informations de connexion vu que je lui indique "open ftp.membres.lycos.fr", il manque quelque chose ?
Si le cron est lancé par l'utilisateur root, la place du fichier .netrc et dans le dossier /root
D'accord, mais desormais je ne comprend plus rien, je me retrouve avec ca:
root@HP-PAVILLON-B:/home/arnaud# /etc/weather/weather.sh
...
Error - .netrc file not correct permissions.
Remove password or correct mode (should be 600).
Please login with USER and PASS
Please login with USER and PASS
ftp: bind: Address already in use
Please login with USER and PASS
Please login with USER and PASS
Please login with USER and PASS
Please login with USER and PASS
Pour des raisons de sécurité, le fichier .netrc ne doit pas être visible des autres utilisateurs :
chmod 600 /root/.netrc
Bon apparament il arrive desormais a se connecter mais j'ai un probleme au niveau du fichier loaddata.php avec ca:
Could not reset
PHP Notice: Undefined offset: 1 in /etc/weather/loaddata.php on line 17
PHP Notice: Undefined index: DWSmax in /etc/weather/loaddata.php on line 78
PHP Notice: Undefined index: TWSmax in /etc/weather/loaddata.php on line 78
PHP Notice: Undefined index: DWSmax in /etc/weather/loaddata.php on line 83
PHP Notice: Undefined index: TWSmax in /etc/weather/loaddata.php on line 83
PHP Notice: Undefined index: WSmax in /etc/weather/loaddata.php on line 83
Bonjour. Bon, quand je disais que ça arrivait a se connecter, ca ne marchait pas tout a fait: Les valeurs ont changés mais m'affiche 0 partout donc il arrive bien à accéder au fichier situé sur le serveur mais les valeurs de la station ne s'affiche pas. Voila ce que donne mon site: http://membres.multimania.fr/ultima... (Désolé d'être sous Multimania avec leur pub, mais c'est juste pour essai c'est tout ^^). C'est agacent quand même. Sous Windows, avec HeavyWeather + GraphWeather ou avec WUHU, je n'avait aucun soucis: je maitrisait parfaitement même mais alors la, comme je débute sous Linux, sans interface graphique, je panique complètement.
Ca y est, j'ai trouvé d'où venait l'erreur: du fichier weather.sh, au niveau de la commande /etc/weather/sendweather: dans ton fichier weather.sh il y avait une commande
"# Site cwop
/usr/local/bin/cw2300."
Je l'ai effacer car je n'en n'avait pas l'utilité mais je l'avais pas totalement effacé et j'ai laisser par erreur le 300 qui venait de cw2300 de la ligne qui se situait dessous. Donc je l'ai retiré, j'ai relancer weather.sh et la ça marche NI-Kel. Je te remercie vraiment de l'aide que tu m'a fourni , jp.fox, et sur ce je te souhaite une bonne soirée
Bonjour. J'ai encore un petit problème concernant les mini / maxi de la mesure du vent: je n'arrive pas a obtenir les valeurs extrême de la journée. J'aimerais obtenir ces valeurs comme sur les autres sites météo que j'ai pu voir et que j'ai listé post #47. Comment faire ?
Voici ma page météo: http://meteobourgueil.iceheberg.fr/...
@UD37 : les valeurs maxi du vent correspondent aux rafales affichées en rouge sur les courbes journalières. Elle semble bien être récupérer puisqu'elles apparaissent bien sur ton site. http://meteobourgueil.iceheberg.fr/...
Pour récupérer les rafales, le programme réinitialise les min/max du vent à chaque relevé, c'est le seul moyen de connaître les rafales. Du coup, il est normale que dans le tableau des valeurs courantes la max du vent est celui depuis la dernière relève.
Sinon, il faut lancer cw2300 qu'une fois par jour au lieu de le lancer à chaque fois. Mais du coup on perd les rafales.
Bonjour, après réinstallation de mon serveur avec open2300, et weather, j'ai ce message que je ne sais pas comment régler :
PHP Notice: Undefined offset: 1 in /home/meteo/meteo/loaddata.php on line 17
Voici la ligne 17 :
list($parameter,$parvalue)=explode(" ", $value);Merci pour tout le travail déjà effectué