Raspberry Pi + La Crosse Technology = Station météo connectée !

3

J’ai depuis quelques années déjà une station météo La Crosse Technology WS2307, dont je vous avais présenté l’installation ici. Les capteurs sont toujours positionnés au même endroit que lors de la présentation, par contre mon serveur n’étant plus allumé 24/24 (économies d’énergie ;-), mon système avec le logiciel cumulus n’était plus une solution optimale.

 

WS2357330-328x500

 

 

 

Cette station étant très fiable, je cherchais donc un moyen de réutiliser ses données. C’est là qu’entre en jeu notre petit Raspberry Pi: avec ses fonctions dignes d’un ordinateur, et sa très faible consommation, celui ci va nous permettre de transformer notre station « classique » en station météo connectée :D

La connexion PC de cette station étant en série, il faudra ensuite trouver un cable série vers Usb, de préférence utilisant une puce Prolific PL2303, celle ci étant parfaitement reconnue par Linux. Heureusement, la plupart des cables de ce type utilisent une puce Prolific :D Les modèles plus récents sont fournis avec cet adaptateur, voir ont directement une connexion Usb.

 

I. Installation de Open2300

 

Je pars du principe que le Raspberry est prêt avec une installation de Raspbian propre et fonctionnelle.

Par chance il existe une suite de logiciels pour linux dédiés aux stations La Crosse de la gamme WS23xx: open2300.

Commencez par vous connecter au Raspberry en SSH. On va commencer par télécharger open2300 avec cette commande:

wget http://heanet.dl.sourceforge.net/project/open2300/open2300/1.10/open2300-1.10.zip

 

install

 

 

Puis le décompresser:

unzip open2300-1.10.zip

 

unzip

 

Et enfin aller dans le répertoire qui vient d’être créé:

cd open2300-1.10

 

Là, il va falloir compiler open2300, ce qui se fait de façon automatique avec la commande make, tout simplement:

 

make

 

Branchez ensuite l’adaptateur Usb-Série sur le Raspberry Pi et la station à l’adaptateur. Sur le Raspberry Pi, tapez la commande

lsusb

 

Vous devriez voir l’adaptateur apparaître de cette façon s’il est bien reconnu :

 

adaptateur

 

Vérifiez sous quel nom apparaît l’adaptateur dans le système, avec la commande :

sudo ls -l /dev/tty* | grep dialout

 

Normalement l’adaptateur devrait apparaître sous le nom ttyUSBx:

 

port

 

Notez le nom du port (en principe ttyUSB0 donc), nous en aurons besoin pour configurer Open2300.

Créez le fichier de configuration en utilisant le fichier open2300-dist.conf comme modèle :

sudo cp open2300-dist.conf /usr/local/etc/open2300.conf

 

Il faut ensuite éditer ce fichier afin d’indiquer sur quel port la station se trouve. Tapez :

nano /usr/local/etc/open2300.conf

 

Trouvez la ligne SERIAL_DEVICE et remplacez /dev/ttySO présente par défaut par /dev/ttyUSB0.

 

nano

 

Ctrl+O pour enregistrer, puis Ctrl+X pour quitter.

A ce moment, il est en principe possible de récupérer les données. Pour cela, on va utiliser le programme fetch2300. Toujours dans le répertoire open2300-1.10, tapez :

sudo ./fetch2300

 

Vous devriez maintenant obtenir quelque chose du type en réponse à la commande fetch2300 :

 

fetch2300

 

Il faut patienter, les données mettent quelques minutes à apparaitre.

Si les données apparaissent, bravo: la liaison avec la station météo fonctionne. Il n’y a plus qu’à exploiter les données.

 

II. Envoi des données à Wunderground

 

Ayant une station météo complète, j’aime bien partager mes données, qui peuvent servir à d’autres personnes. Le site Wunderground est très pratique pour cela, et Open2300 dispose justement d’un programme pour envoyer les données automatiquement. Par contre, chose bizarre, celui ci est buggué. Il faut donc commencer par corriger deux fichiers:

 

Avec nano, modifiez le fichier linux2300.c. Trouvez cette ligne et commentez la:

//sprintf(buffer, « GET %s\nHTTP/1.0\n\n », urlline);

 

puis insérer à la suite celle ci:

sprintf(buffer, « GET %s HTTP/1.0\r\nUser-Agent: open2300/1.10-2\r\nAccept: */*\r\nHost: weatherstation.wunderground.com\r\nConnection: Keep-Alive\r\n\r\n », urlline);

 

linux2300

 

Modifiez de la même facon le fichier wu2300.c. Commentez les lignes:

//sprintf(urlline, « http://%s%s?ID=%s&PASSWORD=%s »,

//WEATHER_UNDERGROUND_BASEURL,WEATHER_UNDERGROUND_PATH,

//config.weather_underground_id,config.weather_underground_password);

 

Puis insérez celles ci:

sprintf(urlline, « %s?ID=%s&PASSWORD=%s »,

WEATHER_UNDERGROUND_PATH,

config.weather_underground_id,config.weather_underground_password);

 

wu2300

 

Il faut alors recompiler les programmes, en faisant « make », puis ensuite « make install ».

Il n’y a plus qu’à renseigner les identifiants de votre compte Wunderground, en faisant de nouveau

nano /usr/local/etc/open2300.conf

 

Trouvez les lignes concernant Wunderground et saisissez vos identifiants (l’ID de la station météo déclarée sur Wunderground, et votre mot de passe):

 

conf

 

Maintenant, si vous lancez la commande

sudo ./wu2300

 

Quelques minutes après, vous devriez voir remonter vos informations sur le site Wunderground. Il n’y a plus qu’à automatiser cela avec une tache cron :D

Faites un

crontab -e

 

puis insérez cette ligne:

*/30 * * * * sudo /home/pi/open2300-1.10/wu2300

 

crontabwunderground

 

Cette commande va interroger la station et envoyer les informations à Wunderground toutes les 30min.

Voilà pour Wunderground !

 

III. Génération d’un fichier XML pour box domotique

 

Partager ses données, c’est bien, mais c’est bien aussi de pouvoir s’en servir soi même. On va donc créer un fichier XML qui sera facilement consultable par la plupart des box domotiques.

Tout d’abord, on commence par installer le serveur Apache pour que la box domotique puisse s’y connecter et consulter le fichier:

sudo apt-get install apache2 php5 libapache2-mod-php5

 

install-apache

 

Dans un navigateur internet, tapez l’adresse IP de votre Raspberry. Si vous obtenez cette page, Apache est correctement installé et démarré:

 

itwork

 

En étant dans le répertoire open2300-1.10, tapez la commande

sudo ./xlm2300 /var/www/xml-file

 

Attendez quelques minutes le temps que le fichier soit généré. Maintenant, si vous tapez dans votre navigateur internet http://IP_RASPBERRY/xml-file, vous devriez voir le fichier xml généré avec les infos de votre station:

 

xml

 

Si vous obtenez cela, c’est que tout fonctionne correctement. Il n’y a plus qu’à créer une tache cron pour automatiser la génération du fichier.

Une nouvelle fois

crontab -e

 

Puis ajoutez cette ligne en bas du fichier:

*/10 * * * * sudo /home/pi/open2300-1.10/xml2300 /var/www/xml-file

 

crontabxml

 

 

Ctrl+O pour enregistrer, puis Ctrl+X pour quitter.

Ici, j’ai demandé la génération du fichier xml toutes les 10min, car je veux avoir des données « fraiches » sur ma box domotique (pour fermer automatiquement le store banne quand il y a du vent, etc…).

C’est fini pour la configuration d’Open2300 ! Vous pouvez maintenant laisser tourner le Raspberry tout seul dans son coin. Chez moi il est rangé dans la baie de brassage à côté de la station météo. Il a juste besoin d’une alimentation et d’une connexion ethernet, pas de clavier, ni souris ni écran, il peut donc se caler facilement n’importe où. Et avec sa consommation de 3w, ce n’est pas lui qui va gonfler la facture d’électricité ;-)

 

IV. Récupération des données sur la box eedomus

 

Bon, je ne vais pas vous laisser en plan, je vais vous expliquer comment récupérer les informations de la station sur notre box eedomus. Pour les autres box, je vous invite à consulter mes autres tutos qui parlent de XML, vous trouverez la marche à suivre très facilement ;-)

Sur la box eedomus, donc, il faudra créer autant de capteurs HTTP que de données qu’on souhaite récupérer. Le principe est toujours le même:

On crée un capteur HTTP:

 

capteurhttp

 

Puis on le configure. On commence par lui donner un nom, on l’affecte à une pièce, et on définit son usage (ici température):

 

configcapteur

 

En type de données, on sélectionne « Nombre décimal », et on complète l’unité utilisée, ici « °C ».

Enfin, on indique l’adresse à laquelle se trouve le fichier xml (adresse IP du Raspberry/xml-file) et le chemin Xpath pour trouver l’info qu’on souhaite. Pour récupérer la température extérieure, le chemin est donc //Temperature/Outdoor/Value

Enfin on règle la fréquence pour récupérer les infos, ici 10min.

Je vous donne les chemins des différentes valeurs, ca vous évitera de chercher:

  • Température extérieure: //Temperature/Outdoor/Value
  • Température ressentie: //Windchill/Value
  • Température intérieure: //Temperature/Indoor/Value
  • Humidité extérieure: //Humidity/Outdoor/Value
  • Humidité intérieure: //Humidity/Indoor/Value
  • Précipitations sur la dernière heure: //Rain/OneHour/Value
  • Précipitations sur 24h: //Rain/TwentyFourHour/Value
  • Pression: //Pressure/Value
  • Vitesse du vent: //Wind/Value
  • Direction du vent: //Wind/Direction/Text
  • Tendance: //Forecast

 

En jouant avec la personnalisation possible de l’eedomus, voici ce que ca peut donner par exemple:

 

eedomus

 

 

Toutes les données sont historisées, permettant de créer les graphiques qu’on souhaite, et toutes ces données sont utilisables dans des scénarios domotiques.

 

V. Conclusion

 

Ce n’était pas le tutorial le plus simple à faire, surtout quand on est un peu néophyte avec linux. Mais vous avez là toutes les étapes à suivre pour transformer votre station Lacrosse Technology en station météo connectée, utilisable même par votre système domotique ! Et tout cela en local ;-) Pour cela il ne vous faudra donc qu’un petit Raspberry. A 40€, l’opération reste intéressante pour recycler sa « vieille » station météo :D Le système tourne maintenant depuis plusieurs jours chez moi sans soucis, et j’en suis vraiment content !

Partager

3 commentaires

  1. Bonjour,

    Ca marche presque de mon côté, j’ai simplement une erreur de compilation lors du « make » du wu2300.c

    Plusieurs lignes de ce type apparaissent :
    warning pointer targets in passing argument 1 of « http_request_url » differ in signedness…

    Une idée ?

    Merci !

  2. Bonjour Cédric,

    Tout comme l’appréciation générale : merci et bravo ! Tuto clair et efficace, j’ai une WS 2308 qui était branché en permanence sur un PC sous Windows et comme tu le précises, niveau économie d’énergie c’est pas le top, la solution du raspberry avec l’adaptateur USB a été la révélation :-) merci encore.

    J’ai eu cependant le PB du « Could not reset » assez courant apparemment mais la solution du « chmod a+rwx /dev/ttyUSB0 » n’a pas corrigé le PB. Après avoir changé de port USB, créé un faut port série, etc… sans succès, j’ai fait une réinitialisation usine de la station météo et ça a résolu le PB. Ouf. Si ça peut aider…

    Maintenant reste à continuer mon application androïd pour récupérer tout ça.

    Bonne continuation.

Laisser une réponse

Ne ratez plus aucune news !

Inscrivez vous à notre newsletter, et recevez chaque mois toute l'actualité du blog pour ne plus rien louper: actualité, guides, tutoriaux, concours !

Merci pour votre inscription !