Utiliser une Raspberry Pi 2 pour récupérer les données d'une station météo et les mettre en base de données

Motivations

Lors de la première session de formation du projet "Météo Climat tremplin pour l'enseignement des sciences" a été abordée la question des instruments de mesure des paramètres météorologiques et dee l'exploitation des données mesurées. Cette formation a soulevé un engouement important des enseignants du second degré pour l'installation dans leur établissement d'une station météorologique, le recueil des données et éventuellement l'accès aux données d'autres stations ce qui se traduit aussi par la mise en ligne de leurs propres données.

Notre objectif est de proposer une solution légère et peu onéreuse qui permette de façon robuste de remplir ces fonctions et qui puisse aussi s'insérer dans une démarche d'apprentissage du codage; la solution proposée proposant plusieurs niveaux d'accès allant de la simple installation de logiciels à la possibilité de modifier le code source et même la participation à une communauté de développement.


Sommaire

  1. La question posée et la solution choisie

    a. Comment récupérer les données fournies par une station météorologique et les partager en ligne ?

    b. Le logiciel Weewx

  2. Installation sur la Raspberry PI 2

    a. Téléchargement du paquet Debian

    b. Installation du paquet et des dépendances

    c. Configuration du logiciel

  3. Création de la base sqlite puis migration en MySQL

    a. Création de la base sqlite

    b. Dump et création de la base MySQL


Téléchargements

  1. Weewx sur sourceforge
  2. Téléchargements sur le site principal weewx
  3. Weewx sur GitHub

1. La question posée et la solution choisie

Cette réflexion a été initiée pour faire suite à des questions soulevées par les enseignants lors de tentatives infructueuses d'installation ou d'exploitation de logiciels propriétaires. La plupart des problèmes venaient de questions liées au modèle de sécurité et de maintenance à distance des ordinateurs situés dans les salles d'enseignement des collèges et des lycées.

1.a Comment récupérer les données fournies par une station météorologique et les partager en ligne ?

Il existe de nombreux logiciels propriétaires fournis le plus souvent par des vendeurs de matériel et fonctionnellement liés de façon plus ou moins directe à un site d'agrégation hébergé par le vendeur. Les logiciels fermés font l'objet de suspicions voir de démonstrations de l'existence de portes dérobées utilisables pour acquérir des informations à l'insu de leurs utilisateurs; ce qui pose un problème dans le contexte éducatif.

Il existe aussi quelques logiciels maintenus par des amateurs avertis qui les ouvrent à la communauté mais souvent la pérennité de ces outils n'est pas assurée, ce qui conduit à une situation difficile lorsque le porteur cesse son activité.

Nous avons entrepris de rechercher un logiciel opensource qui garantisse un code ouvert et un suivi sur une forge opensource.

Cahier des charges sommaire

  • Le logiciel devra pouvoir s'interfacer au maximum de modèles de stations météorologiques, en particulier aux modèles Davis, Lacrosse et TFA que possèdent les enseignants correspondants du projet.
  • Le logiciel devra être indépendant des fabricants de stations et devra pouvoir s'adapter à dissférents modes de connexion aux stations : connexion USB directe, connection par clé radio USB, connexion WIFI
  • Le logiciel devra pouvoir envoyer les données à la base de données MySQL (ou PostgreSQL) qui fédère toutes les mesures faites par de stations du projet
  • Le logiciel doit pouvoir fournir une page web locale pour affiher les données de la station.
  • le logiciel doit pouvoir fonctionner sur une raspberryPI et si possible un Intel Edison

1.b Le logiciel Weewx

Le logiciel weewx développé par Tom Keffer. Satisfait a plupart (tous) les critères de notre cahier des charges.

Il s'agit d'un logiciel opensource exposé sur deux forges opensources classiques GitHub et SourceForge le développeur principal est très actif et très réactif (une journée pour obtenir l'ajout du port sur le connecteur MySQL par exemple :-) Thanks Tom!).

Le logiciel est compatible avec un grand nombre de modèles de stations météo amateur ou amateur averti, la liste des stations disponibles est très complète et nous permet d'envisager de le déployer dans de nombreux établissements quelque soient les choix techniques effectués par les financeurs des stations.

Le logiciel propose un fichier de configuration modulaire extrêmement complet qui permet en utilisant les options par défaut de parvenir à avoir un fonctionnement "simple" et presque spontané qui utilise une base de données légère sqlite3. Une configuration avancée permet tout aussi facilement de se connecter à une base MySQL sur un serveur distant.

Le logiciel propose de nombreuses fonctionnalités y compris la création de pages web. le logiciel s'installe et a été testé avec succès sur une RaspberryPI2 sous Debian Jessie.

2. Installation sur la Raspberry PI 2

2.a Téléchargement du paquet Debian

La méthode douce

Permet d'utiliser le dernier paquet créé par l'auteur mais ne prend pas en compte les toutes dernières modifications faites sur la forge.

wget (site en panne au moment de la rédaction)
gunzip 

La méthode dure

Nécessaire si vous souhaitez exploiter les derniers développements mis en ligne par les auteurs.

git clone  https://github.com/weewx/weewx.git
cd weewx
make deb-changelog
make deb-pacakage
cp build/weewx_3.3.0b1-1_all.deb ..
cd ..

2.b Installation du paquet et des dépendances

sudo apt-get install python-mysqldb mysql-client
sudo dpkg -i weewx_3.2.1-1_all.deb

prévoir les informations sur le modèle, la position de la station (Lat, Lon). Suivant les paquets déjà installés il est possible qu'il faille ajouter quelques installations pour satisfaire les dépendances de weewx. Il suffit de prendre les noms de paquets demandés et apt-get install nomPaquet. À ce jour aucun problème lors de ces installations.

2.c Configuration du logiciel

L'installation fournit une infrastructure "Debian" classique. Le fichier de configuration se trouve dans /etc/weewx et s'appelle weewx.conf.

cd /etc/weewx
sudo jed weewx.conf

Modifier la partie concernant la base de données pour une connaxion à une base MySQL externe soit au moins les paramètres suivants avec vos propres valeurs

  • database = archive_mysql
  • table_name = MyTableName
  • database_name = weewx
  • host = xxxxxxxxx.yyyyyyyyyyyy.fr
  • user = UserName
  • password = pwpwpwpwpwpwpw

Voici ce que cela donne :

##############################################################################

#   This section binds a data store to a database.

[DataBindings]

    [[wx_binding]]
        # The database must match one of the sections in [Databases].
        # This is likely to be the only option you would want to change.
        database = archive_mysql
        # The name of the table within the database
        table_name = MyTableName
        # The manager handles aggregation of data for historical summaries
        manager = weewx.wxmanager.WXDaySummaryManager
        # The schema defines the structure of the database.
        # It is *only* used when the database is created.
        schema = schemas.wview.schema

##############################################################################

#   This section defines various databases.

[Databases]

    # A SQLite database is simply a single file
    [[archive_sqlite]]
        database_type = SQLite
        database_name = weewx.sdb

    # MySQL
    [[archive_mysql]]
        database_type = MySQL
        database_name = weewx
    port = 34107

##############################################################################

#   This section defines defaults for the different types of databases.

[DatabaseTypes]

    # Defaults for SQLite databases
    [[SQLite]]
            driver = weedb.sqlite
        # Directory in which the database files are located
        SQLITE_ROOT = /var/lib/weewx

    # Defaults for MySQL databases
    [[MySQL]]
        driver = weedb.mysql
        # The host where the database is located
        host = xxxxxxxxx.yyyyyyyyyyyy.fr
        # The user name for logging in to the host
        user = UserName
        # The password for the user name
        password = pwpwpwpwpwpwpw

##############################################################################

Il est maintenant possible d'utiliser les instructions wee_config wee_database wee_device wee_extension wee_reports weewxd en se reportant au manuel ou à la doc weewx.

3. Création de la base sqlite puis migration en MySQL

3.a Création de la base sqlite

Il est important de bien choisir les unités AVANT de construire la base avec wee. Ici wee est mis en msystème métrique weewx (c'est ce que nous supposons, ce qui permet d'avoir notamment la pression en mbar ?).

##############################################################################

#   This service acts as a filter, converting the unit system coming from
#   the hardware to a unit system in the database.

[StdConvert]

    # The target_unit affects only the unit system in the database. Once
    # chosen it cannot be changed without converting the entire database.
    # Modification of target_unit after starting weewx will result in
    # corrupt data - the database will contain a mix of US and METRIC data.
    #
    # The value of target_unit does not affect the unit system for
    # reporting - reports can display US, Metric, or any combination of units.
    #
    # In most cases, target_unit should be left as the default: US
    #
    # In particular, those migrating from a standard wview installation
    # should use US since that is what the wview database contains.

    # DO NOT MODIFY THIS VALUE UNLESS YOU KNOW WHAT YOU ARE DOING!
    target_unit = METRICWX    # Options are 'US', 'METRICWX', or 'METRIC'

##############################################################################

Une fois weewx.conf correctement configuré créer la base de données avec wee_database --create-archive. Une base sqlite est créée dans le rpertoire /var/lib/weewx/ et a pour nom weewx.sdb. Il est maintenant nécessaire de faire un dump de cette base et d'utiliser le dump pour exporter la structure dans une base MySQL.

3.b Dump et création de la base MySQL

Créer un dossier Weewx pour conserver les données de weewx cd;mkdir Weewx;cd Weewx puis copier dans ce dossier la base sqlite cp /var/lib/weewx/weewx.sdb . Faire un dump de la base

sqlite3 weewx.sdb
SQLite version 3.8.7.1 2014-10-29 13:59:56
Enter ".help" for usage hints.
sqlite> .output dumpTFA1.txt
sqlite> .dump
jessie-rpi.€ : ls
dumpTFA1.txt  weewx.sdb

Éditer le fichier dumpTFA1.txt pour supprimer les lignes de début et de fin :

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
COMMIT;

puis remplacer les guillements anglais " par des simples quotes '. Utliser le fichier obtenu pour créer la base MySQL.


Webographie

  1. Site principal Raspberry
  2. Site weewx

Commentaires