Journal Capteurs météo et graphiques Munin

Posté par  (site web personnel) . Licence CC By‑SA.
28
10
sept.
2017

Cher Nal,

Je me suis récemment mis en tête de mesurer la température et l'humidité chez moi de façon à avoir un graphique des mesures sur au moins 24h. Pas convaincu par les stations météo toutes faites, j'ai opté pour des capteurs sans fil avec une base USB et un plugin Munin pour tracer les courbes. Voici un petit tuto/compte-rendu garanti sans soudure.

Il faudra :

  • commander pour 100 € de matériel sur un site en allemand
  • retirer 3 vis et un cavalier d'un capteur
  • avoir un Munin qui tourne (non détaillé ici)
  • télécharger et configurer le plugin

Choix techniques

J'ai d'abord regardé du côté des stations météo toutes faites. Mais si une bonne partie d'entre elles offrent un histogramme de pression atmosphérique sur 12 heures ou plus, je n'ai pas trouvé aussi bien pour ce qui est de la température et de l'humidité. J'ai donc regardé du côté des capteurs pour PC, dans l'idée de les intégrer à mes graphiques Munin existants.

Cherchant à obtenir un système fiable sans trop d'efforts, j'ai cherché parmi les capteurs prêts à l'emploi et si possible avec un plugin Munin existant, et j'ai trouvé la marque allemande ELV.

Achat du matériel

Le matériel consiste en un récepteur USB et jusqu'à 8 capteurs sans fil. Il s'achète sur le site d'ELV, en allemand uniquement. Pour mes besoins j'ai acheté :

L'onglet "Zubehör" de la page de la base USB propose d'autres capteurs compatibles dont un combiné thermo/hygro/pluvio/anémomètre. Le plugin Munin (non officiel) ne supporte que température et humidité, quoiqu'il ne serait peut-être pas difficile de l'adapter.

Attention : la page du ASH 2200 suggère ce boitier de protection extérieur pluie/soleil, mais celui-ci n'est pas fait pour, le capteur ne rentre pas dedans.

Au total j'en ai eu pour 110 €, port et boitier inutile inclus.

Installation du matériel

Sous Linux la base USB-WDE1 est normalement plug'n'play ; le pilote est inclus dans le noyau ; il n'y a qu'à la brancher.

Chaque capteur ASH 2200 a une "adresse" comprise entre 1 et 8 selon la notice et entre 0 et 7 pour le plugin Munin. Un capteur apparait par défaut comme "sensor0" ; si vous en avez plusieurs, il faudra tous les ouvrir (sauf un) pour changer leur adresse.

Pour ouvrir un capteur, il faut retirer 3 vis, elles-mêmes accessibles en enlevant le support mural, le capuchon et la trappe à piles. Sur le circuit du capteur se trouvent 3 cavaliers côte à côte ; en en retirant un ou plusieurs on change l'adresse du capteur. Retirez par exemple le cavalier 1, et le capteur devient "sensor1". Voir la notice pour la liste des combinaisons.

Chaque capteur nécessite 2 piles LR6 (fournies).

Les capteurs disposent de supports muraux mais on peut aussi bien les poser sur un meuble ou à même le sol.

Munin

Je ne détaillerai pas ici comment installer Munin ; on trouve facilement des tutos pour différents systèmes.

On utilise ce plugin. Le dépot Git contient un service système pour surveiller les capteurs, ainsi que le plugin Munin à proprement parler et d'autres outils. J'ai proposé un Makefile à l'auteur mais je ne sais pas s'il sera intégré au dépot.

Pour commencer :

cd /usr/local/src
sudo -s
git clone git://git.cweiske.de/usb-wde1-tools.git
cd usb-wde1-tools
if [[ ! -f Makefile ]]; then wget 'https://raw.githubusercontent.com/nahoj/usb-wde1-tools/master/Makefile'; fi
make install
service usb-wde-log start

On peut déclarer un "host" Munin dédié pour séparer les graphiques du plugin de toutes les données système. Ça se fait dans la conf du "master", chez moi /etc/munin/munin.conf :

# Votre config existante pour un munin-node en local
[mon.domaine.amoi]
    address 127.0.0.1
    use_node_name yes

# Ajoutez ceci
[domaine.amoi;Weather]
    address 127.0.0.1
    use_node_name no                                                                                                                                                                                 

Il faut ensuite configurer le plugin dans la conf de munin-node, pour moi en ajoutant à /etc/munin/plugin-conf.d/munin-node :

[usb-wde1_*]
env.logfile /tmp/usb-wde1-last
env.host_name Weather
env.sensors 0 1
env.sensor0 Inside
env.sensor1 Outside
# à adapter en fonction de vos capteurs

Et pour finir, exécuter :

service munin-node restart

Si tout va bien, au bout d'une ou deux exécutions de Munin (toutes les 5 minutes) vous devriez voir apparaitre votre nouveau host, vos graphiques et vos données.

En cas de souci, pour investiguer, référez-vous à la doc du plugin et à la doc de résolution des problèmes de Munin.

  • # Il manque des courbes.

    Posté par  (site web personnel) . Évalué à 3.

    Et le résultat ?

    J'aurais aimé savoir ce que tu as appris en réalisant cela, et si cela t'a paru pertinent dans le cadre de ton besoin.

    • [^] # Re: Il manque des courbes.

      Posté par  (site web personnel) . Évalué à 7.

      Voici les courbes :

      Température Humidité
      Température Humidité

      Je n'ai mes capteurs que depuis 8 jours. Ce qui me surprend pour l'instant est la stabilité des valeurs pour l'intérieur. Mes capteurs ne sont séparés que par 3 mètres et une porte-fenêtre que j'ai parfois laissée ouverte plusieurs heures, et pourtant en une semaine la température intérieure n'a pas bougé de l'intervalle 25-27 °C… Quant à l'humidité, bien que plus variable, elle reste plus ou moins dans la plage recommandée des 40-60 %.

      Entre temps j'ai écrit un plugin Munin pour comparer à mes mesures les valeurs donnés par des sites météo ; je ferai peut-être une suite au journal quand j'aurai eu les premiers résultats.

      • [^] # Re: Il manque des courbes.

        Posté par  (site web personnel) . Évalué à 7. Dernière modification le 11 septembre 2017 à 11:56.

        J'ai une solution maison (arduino / esp8266) depuis plus de 3 ans et cela donne à peu près cela :

        Temperature

        Orange : extérieur
        Jaune : cuisine
        Gris : Grenier (Pas forcement bien isolé, d'ou l'écart fort jour / nuit)
        Rose : Pallier

        J'ai limité l'affichage à quelques pièces uniquement pour faciliter la lecture (j'en ai 3 de plus).

        Déjà on peut voir que je suis plus au Nord que toi … pour moi la période d'allumage de chaudière approche à grand pas.

        Qu'ai-je appris de cette expérience (rapidement) :
        * Faire du suivi de température extérieure demande du vrai matériel et n'autorise pas la bidouille si tu ne veux pas que la condensation ne fausse tes mesures ou te ruine les capteurs (sans parler du froid qui change le comportement des batteries LIPO).
        * Prendre des bons capteurs de température / humidité : BME280 et/ou si7021 et pas des merdes comme les DHTXX.
        * Avec un chauffage central, un suivi par pièce te permet d'optimiser le placement de ta sonde de déclenchement de chauffe (avant j'avais deux degrés de différence entre le 1er étage et le rez de chaussée). J'ai mis des têtes de radiateur thermostatique des mes pièces du bas pour limiter la surchauffe.
        * L'isolation de mon grenier aménagé aurait pu être mieux faite. Mais les deux velux chauffent énormément la journée.
        * Avant que netatmo (ou concurrent le propose), je me suis fait des abaques pour optimiser l'heure de démarrage de la chaudière en fonction de la température extérieure : à 6H30 tous les matins il fait 19° dans la maison même si la chaudière doit commencer à chauffer une heure plus tôt.
        * Quand ton épouse te dit il fait pas froid là ?, tu peux tenter de lui prouver qu'en fait non (pas gagné).

        • [^] # Re: Il manque des courbes.

          Posté par  . Évalué à 4.

          Quand ton épouse te dit il fait pas froid là ?, tu peux tenter de lui prouver qu'en fait non (pas gagné).

          Alors, j'ai lu dans ce bouquin (que je recommande d'ailleurs), qu'il n'y a pas que la température de l'air qui compte pour le ressenti. Il y a aussi la température des murs. Grosso modo, c'est comme un rayonnement (qu'il soit positif ou négatif) de la part des murs. En la règle empirique, c'est la moyenne entre la température de l'air et celle des murs qui donne la température du ressenti.

          Bon, je n'irai pas jusqu'à mettre des sondes dans les murs ;)

          • [^] # Re: Il manque des courbes.

            Posté par  (Mastodon) . Évalué à 3.

            C'est surtout que le ressenti n'est pas le même chez tout le monde, dans l'espace et dans le temps.Donc bon t'auras beau vouloir appuyer toutes sortes de théories scientifiques sur les températures des murs ou le taux d'humidité dans l'air si quelqu'un te dis qu'il trouve qu'il fait froid (ou chaud), ben tu peux pas dire grand chose. Moi s'il fait 20°C au mois de février au fin fond des alpes je suis en t-shirt. S'il fait la même température en été alors que les autres semaines précédentes étaient chaudes je frissone et j'enfile un pull. C'est le propre du ressenti.

            Jami: beabb2b063da0a2f0a2acaddcd9cc1421245d5de

          • [^] # Re: Il manque des courbes.

            Posté par  . Évalué à 2.

            Tu l'as lu en diagonale ! :-p

            Il me semble que la température ressentie est aussi liée aux courants d'air et à l'humidité.

          • [^] # Re: Il manque des courbes.

            Posté par  (site web personnel) . Évalué à 1.

            La température ressentie est calculable en extérieur (avec le vent + le taux d'hygrométrie)

            Pour l'intérieur c'est plus difficile (peu de vent la plupart du temps surtout en hiver ou on ne fait pas beaucoup de courant d'air). Par contre en effet le taux d'humidité a un rapport avec la température ressentie dans les maisons donc maitriser l'hygrométrie intérieure est important (VMC, déshumidificateur, aérer, …).

            Ensuite il faut aussi savoir que chauffer de l'air saturé d'humidité est plus couteux que de l'air sec donc avoir de l'air plus sec à l'intérieur permet aussi des économies d'énergie (en plus d'améliorer la qualité de vie surtout pour les allergiques).

            • [^] # Re: Il manque des courbes.

              Posté par  . Évalué à 2.

              Ensuite il faut aussi savoir que chauffer de l'air saturé d'humidité est plus couteux que de l'air sec donc avoir de l'air plus sec à l'intérieur permet aussi des économies d'énergie (en plus d'améliorer la qualité de vie surtout pour les allergiques).

              C'est thermodynamiquement probable mais cela a vraiment un impact significatif sur la facture ?

              • [^] # Re: Il manque des courbes.

                Posté par  (site web personnel) . Évalué à 1.

                Je ne pense pas (ensuite je serai incapable de citer mes sources donc j'ai certainement tort), je gère l'hygrométrie et le renouvellement d'air dans ma maison essentiellement pour mes filles et leurs allergies.

            • [^] # Re: Il manque des courbes.

              Posté par  (site web personnel) . Évalué à 3.

              La température ressentie est calculable en extérieur (avec le vent + le taux d'hygrométrie)

              Le ressenti de la température est aussi une affaire très personnelle… certains sont en bras de chemise à 15°C, d'autres en pull-over à 22°C.

              Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

              • [^] # Re: Il manque des courbes.

                Posté par  . Évalué à 3.

                certains les hommes sont en bras de chemise à 15°C, d'autres les femmes en pull-over à 22°C.

                Ces deux espèces ont un comportement vraiment différent vis à vis de la température.
                Cela dit, dans les différents élevages que j'ai vu (donc sujets jeunes, élevages généralement limités de 1 à 4 sujets) c'est moins net, voir pas du tout. Ce sont plutôt les reproducteurs qui exhibent ces différences.

  • # Quel protocole

    Posté par  . Évalué à 1.

    Sais-tu quel protocole est utilisé ? Ca n'a pas l'air d'être un protocole classique. On trouve des adaptateurs ZWave-USB pour environ 30 euros qui offre ensuite une grande gamme de capteurs. Par contre, je n'ai aucune idée de la portée. Est-ce que les infos se récupères facilement ? Souvent c'est juste une interface série sous Linux, avec un protocole en ASCII.

    Et justement, quelle portée as-tu avec ce matériel ?

  • # Errata : capteurs compatibles

    Posté par  (site web personnel) . Évalué à 2.

    À la réflexion et contrairement à ce que je disais dans le journal, je doute fortement que le capteur quadruple thermo/hygro/pluvio/anémomètre s'utilise avec le même récepteur USB-WDE1.

  • # Solution 433 MHz

    Posté par  . Évalué à 6.

    Pour mon appartement, j'ai opté pour une solution « 433 MHz »
    * capteurs Oregon Scientific (par ex. THN132 à ~20 €)
    * conso-mètre OWL-CM180 (~ 40 €)
    * récepteur radio RTL-USB (~10 €) + logiciel rtl_433 (à priori, c'est compatible 868 MHz)
    * raspberry pi pour gérer l'ensemble (logiciel maison + domoticz pour jouer)

    Au début, c'était juste pour jouer, et finalement on obtient plein d'info avec ces capteurs :
    * le prix réel du bain des enfants
    * l'influence de la voisine du dessous
    * l’existence de marées atmosphériques
    * la conso à vide de l'appartement
    * la relation (ou pas) entre la température de la pièce et la sensation de froid du conjoint
    * …

    • [^] # Re: Solution 433 MHz

      Posté par  (site web personnel) . Évalué à 2.

      Visiblement, ton installation utiliser le protocole radio rfxcom.
      Peut-tu donner les références de ton récepteur USB ? Personnellement, j'en ai pas trouvé aussi bon marché. C'était soit une centaine d'euro, soit un montage open-source à base d'arduino pour ~35 euros ( http://www.rflink.nl/blog2/ ).

      • [^] # Re: Solution 433 MHz

        Posté par  . Évalué à 4.

        J'utilise un « DVB FM DVB-T RTL SDR RTL2832+R820T SDR E4000 Tuner Enregistreur Récepteur ».
        Il est disponible pour une dizaine d'euros sur le net.
        Le décodage est fait par le logiciel rtl_433. Il faut savoir qu'il utilise 30 % du CPU du raspberry en permanence.

        La solution avec le boitier RFXcom est plus propre (décodage matériel). Mais à 100 €, c'est un peu cher quand on veut juste « jouer un peu ».

    • [^] # Re: Solution 433 MHz

      Posté par  (site web personnel, Mastodon) . Évalué à 6.

      Moi j'utilise des vieux produits rfxcom un transceiver xpl ethernet et un receiver usb sur un raspberri pi 2
      J'envoi le tout sur le lan en xpl
      mon serveur domotique (lxc sur mon serveur à la cave) tourne en python/php/perl (fait par moi même en m'appuyant sur des script fait maison)

      j'ai 8 capteurs oregon scientific et un en enocean (pour l'enocean c'est un vieux rapsberri pi avec une carte enocean).

      Après les températures sont consigné dans une base mysql et dans du rdd ce qui permet d'avoir le rendu suivant:

      Extérieur sur 24h

      Extérieur sur 365j

      Pour le deuxième graphe j'ai un cron qui tourne chaque nuit pour calculer la moyenne du jour précédent et min max et qui enregistre le résultat dans une table, parce que le faire calculer à l'appel de la page sur une année mettrait le serveur à genou.

      • [^] # Re: Solution 433 MHz

        Posté par  . Évalué à 4.

        • j'ai un peu la même chose avec une chaudière Viessmann connecté à un Rasp. J'envoie toutes les 10s la puissance instantanée dans une base sqlite ce qui me permet en théorie de calculer la consommation de gaz. Pour le reste, ce sont des températures et autres valeurs qui alimentent la même base toutes les 60s.
        • j'ai mis en place un frontal MQTT ce qui me permet d'exporter mes données vers le cloud ou vers un Smartphone
        • tout cela est écrit en Ruby

        pour l'affirmation suivante :

        Pour le deuxième graphe j'ai un cron qui tourne chaque nuit pour calculer la moyenne du jour précédent et min max et qui enregistre le résultat dans une table, parce que le faire calculer à l'appel de la page sur une année mettrait le serveur à genou.

        il est possible de faire des requêtes SQL avec un GROUP BY par jour, par semaine ou par mois puis de calculer min, max et moyenne.

        PS: salutations à la ville de Courroux depuis Toulouse. Mon fils y a des attaches.

        • [^] # Re: Solution 433 MHz

          Posté par  (site web personnel) . Évalué à 2.

          C'est où Courroux ? En Guyane ?

          • [^] # Re: Solution 433 MHz

            Posté par  . Évalué à 3.

            Kourou et Couroux : non :-) en regardant bien les températures négatives, l'hiver, on peut avoir un premier indice. Ce n'est pas en France, ce n'est pas un DOM ou TOM.

          • [^] # Re: Solution 433 MHz

            Posté par  (site web personnel, Mastodon) . Évalué à 3. Dernière modification le 12 septembre 2017 à 07:58.

            Nous sommes en Suisse dans le canton du Jura dans l’agglomération de Delémont à 40km de Bâle (ça fait tout de suite moins exotique).
            Moi personnellement j’apprécierai d'avoir le climat de la Guyanne Française en hiver ;-)

            Ce qui est intéressant c'est de voir comment les autres ont fait, ça donne des idées.

            Courroux sur Wikipedia

        • [^] # Re: Solution 433 MHz

          Posté par  . Évalué à 2.

          Tu utilises quoi pour récupérer les infos de ta chaudière Viessmann ? Optolink ? Tu as des conseils ?

    • [^] # Re: Solution 433 MHz

      Posté par  . Évalué à 3.

      Même chose à peu près ici : capteurs 868Mhz Lacrosse + recepteur RTL-USB branché sur un Raspberry Pi.
      Les capteurs n'etaient pas supporté par rtl_433, j'ai donc modifié le programme et fait des pull requests pour rajouter le support des sondes LaCrosse TX29 et TX35. Ces capteurs sont en 868Mhz.

      Pour le tracage des courbes, j'ai plutot opté pour le service Weather Underground.

  • # Ma solution

    Posté par  . Évalué à 7.

    Il y a quelques temps j'ai ressenti plus ou moins le même besoin et j'ai mis ça en place :

    Matériel :
    * un raspberry pi 0 w (https://www.kubii.fr/fr/pi-zero-w/1855-starter-kit-pi-zero-w-3272496007031.html : 30 € environ)
    * un BME280 (ou un clone je ne sais pas) (http://www.ebay.fr/itm/GY-BME280-3-3V-Breakout-Temperature-Humidity-Barometric-Pressure-Digital-Sensor-/263033357120 : 4 €)
    * un câble réseau entre les 2 (récup)
    * une station à soucoupe bricolée avec des soucoupes de pot fleurs (il ressemble à ça : https://www.station-meteo.com/plan-abri-meteo-avec-sous-pot-a-fleurs/), le matériel m'a couté 19 €, peinture comprise.

    Logiciel :
    * influxdb pour le stockage
    * grafana pour la restitution
    * un micro script en bash pour l'insertion (toutes les 5 minutes, crontab)

    #!/bin/bash
    bme280=$(python /usr/local/bin/bme280.py)
    temperature=$(grep 'Temperature' <<< "$bme280" | cut -d' ' -f2)
    pressure=$(grep 'Pressure' <<< "$bme280" | cut -d' ' -f2)
    pressure=$(echo "$pressure+233/8.36" | bc)
    humidity=$(grep 'Humidity' <<< "$bme280" | cut -d' ' -f2)
    
    echo "$temperature $pressure $humidity"
    influx -database meteo -execute "insert temperature value=$temperature" 2> /dev/null
    influx -database meteo -execute "insert pressure value=$pressure" 2> /dev/null
    influx -database meteo -execute "insert humidity value=$humidity" 2> /dev/null

    Au final ça donne ça :

    http://pix.toile-libre.org/?img=1505149861.png
    grafana

    Tout ça me donne normalement des résultats très fiables et précis. Il y a une station Météo France pas très loin de chez moi qui publie ses relevés sur le net ces derniers sont cohérents avec les miens.

    Les stations météo m'intéressaient depuis longtemps. Mais les boites noires du commerce ne sont pas ma tasse de thé. Ce qui me plaît le plus dans ma solution c'est que c'est parfaitement hackable. Chaque brique est basique et parfaitement interchangeable. J'ai l'impression du coup que c'est très fiable, j'ai mis ça en place le 15 août (férié :D) depuis ça tourne silencieusement.

    • [^] # Re: Ma solution

      Posté par  (site web personnel) . Évalué à 3.

      C'est a peu près ce que j'avais fait sauf que j'avais utilisé un Arduino avec transmission RF. Par contre le BME280 n'a pas passé l'hiver : la membrane du capteur a été bouffée par l'humidité. Ensuite je suis dans le Nord et l'hiver ou je l'avais installé on avait eu des températures en dessous de -10.

    • [^] # Re: Ma solution

      Posté par  (site web personnel) . Évalué à 1.

      Bonjour,

      comment est-ce que le capteur et le raspberry pi communiquent ? je pensais que le capteur se connectait physiquement sur le raspberry pi, mais la phrase "un câble réseau entre les 2" me fait douter.

      Autre question : influxdb et grafana tournent sur le raspberry pi ou c'est sur un autre serveur ?

      Merci pour le partage.

      • [^] # Re: Ma solution

        Posté par  . Évalué à 4.

        Le capteur est branché sur les ports GPIO du pi (exemple : http://gilles.thebault.free.fr/spip.php?article48 ). Le câble réseau permet de déporter franchement le capteur, je dois avoir une dizaine de mètres entre les 2. Mais il est possible de faire beaucoup plus, probablement supérieur à 100 mètres.

        Pour influxdb et grafana, ils tournent bien sur ce même pi. C'est un 0W qui est très peu puissant, mais influxdb n'est attaqué qu'une fois toutes les 5 minutes, et grafana utilise beaucoup de javascript (la majeure partie du boulot est faite par le client web à ce que j'ai lu). Ceci dit il est possible (probable) que je réorganise ça : si j'ajoute des capteurs à la station méteo, si je me mets à monitorer d'autres choses etc je pense que ce sera un pi 3 qui centralisera tout ça.

  • # DJU et suivi de consommation énergétique

    Posté par  (site web personnel) . Évalué à 6.

    Bonjour,

    Comme je vois ici quelques graphes avec des mesures de température extérieure j'en profite pour vous suggérer de comparer votre consommation énergétique (pour le chauffage) avec les DJU (Degré jour unifié).
    https://fr.wikipedia.org/wiki/Degr%C3%A9_jour_unifi%C3%A9
    http://climatheque.meteo.fr/Docs/DJC-methode.pdf

    Cela peut permettre de détecter une dérive de vos consommations. Notamment en traçant Conso (kW.h) = f(DJU cumulés)

    Météo France fournit les DJU pour un lieu donné pour un mois donné mais c'est une information payante
    http://services.meteofrance.com/e-boutique/climatologie/dju-detail.html

    Lorsque l'on a sa propre station météo on peut se calculer ses propres DJU.

    La bibliothèque Python pandas-degreedays
    http://pandas-degreedays.readthedocs.io/
    https://github.com/scls19fr/pandas_degreedays
    permet de faire ce type de calcul à partir de Series Python Pandas

    Cordialement

  • # Autonomie ?

    Posté par  (site web personnel) . Évalué à 2.

    Quelle est l'autonomie des capteurs ?

    Sinon, pour vlad59, que reproches tu aux DHT ? Je trouve leur rapport qualité prix plutôt bon, et c'est simple à mettre en œuvre sur un Pi, tout comme les DS18B20. La précision n'est pas folle, mais ça suffit pour la plupart des usages domestiques.

    J'ai donc un Pi qui envoi les données d'un DHT22 vers EmonCMS, la température extérieure est pour l'instant récupérée via le METAR du Bourget sur http://tgftp.nws.noaa.gov/data/observations/metar/decoded/ , mais j'aimerais prendre la vrai température dehors sans fil sur mon balcon. Voila ce que ça donne dans EmonCMS :

    fait pas chaud en ce moment

    Je vais donc me pencher sur la solution proposé dans ce journal, mais s'il faut changer les piles tout les mois, ça va vite me saouler :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.