Nouvelle carte OSHW pour mesurer la qualité de l’air intérieur

Posté par  (site web personnel) . Édité par Ysabeau 🧶 🧦, Nÿco, Benoît Sibaud et Davy Defaud. Modéré par Davy Defaud. Licence CC By‑SA.
32
5
sept.
2019
Administration système

Après cet été caniculaire, comme vous avez pu le vérifier avec votre Thermomètre, il est temps de s’intéresser à l’air que nous respirons. Et pour cela, quoi de mieux qu’expérimenter avec un petit capteur connecté pour surveiller ou notifier des alertes ?

Leon Anavi en a fait son challenge en proposant un produit dont je vous fais la primeur d’essayer.

gas-detector

Sommaire

Matériel

En ouvrant le colis venant de Plovdiv Bulgarie on y trouve quelques autocollants KiCad car le projet a été conçu avec et les designs sont publiés (OSHW ou open source hardware).

Coté matériel, il s’agit toujours du processeur ESP8266 (4 Mio) avec les périphériques suivants :

  • un capteur de Gaz type MQ (connecté sur le port analogique) ;
  • un écran OLED (I²C) ;
  • un port USB pour l’alimentation.

Il y a aussi des pins UART, d’autres broches I²C pour ajouter d’autres capteurs (BMP180, HTU21D), lesquels pourront reposer sur le support en acrylique et, en option, un câble de débogage USB/UART.

Le capteur MQ-135, qui est sensible à la présence de benzène, d’alcool et de fumée, est plutôt destiné à un usage intérieur.

Comme indiqué dans les spécifications, il faudra l'étalonner et le préchauffer en le laissant tourner vingt‐quatre heures dans un endroit neutre.

Logiciel

Côté logiciel, le micrologiciel de référence utilise l’API Arduino et les sources sont aussi disponibles.

L’utilisation est assez classique, dans l’état initial, l’utilisateur doit avant tout se connecter sur le point d’accès Wi‐Fi de l’appareil (ssid="ANAVI Gas Detector FFFFFF").

Ensuite, via le navigateur Web (http://192.168.4.1/) il faut configurer quelques paramètres, Wi‐Fi local, serveur MQTT, (par exemple, un serveur mosquitto dans son réseau local ou sinon un serveur public sur Internet, tel que mqtt.eclipse.org). Relevez également le « machineid » associé au produit qui nous sera utile plus tard.

Un redémarrage plus tard, l’écran affiche l’adresse IP du contrôleur Wi‐Fi, il est possible de vérifier le trafic via un subscriber MQTT de type mosquito.

Pour référence la trace ressemble à :

mosquitto_sub -h ${host} -t "#" -v
homeassistant/binary_sensor/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/DangerousGas/config {"device_class":"gas","name":"FFFFF Dangerous Gas","unique_id":"anavi-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF-DangerousGas","state_topic":"workgroup/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/DangerousGas",“device”:{"identifiers":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF","manufacturer":"ANAVI Technology","model":"ANAVI Gas Detector","name":"FFFFF","sw_version":"e491cbccda9e73ef23d235532606a251","connections":[["mac","ff:ff:ff:ff:ff:ff:ff"]]}}
homeassistant/sensor/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/AirConductivity/config {"unit_of_measurement":"%","value_template »:"{{ value_json.Conductivity | round(2) }}","name":"6998b Air Conductivity »,"unique_id":"anavi-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF-AirConductivity","state_topic":"workgroup/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/AirConductivity","device":{"identifiers":"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF","manufacturer":"ANAVI Technology","model":"ANAVI Gas Detector","name","6998b","sw_version":"e491cbccda9e73ef23d235532606a251","connections":[["mac","ff:ff:ff:ff:ff:ff:ff"]]}}
workgroup/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/wifi/ssid {"ssid":"Private"}
workgroup/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/wifi/bssid {"bssid":"ff:ff:ff:ff:ff:42"}
workgroup/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/wifi/rssi {"rssi":-44}
workgroup/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/wifi/ip {"ip":"192.100.0.42"}
workgroup/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/sketch {"sketch":“e491cbccda9e73ef23d235532606a251"}
workgroup/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/AirQuality {"Quality":"Good"}
workgroup/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/DangerousGas OFF
workgroup/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/AirConductivity {"Conductivity":9}

On notera que plusieurs topics sont utilisés, mais que le principal est :

workgroup/${machineid}/AirConductivity {"Conductivity":9}

D’ailleurs, je me demande s’il n’est pas préférable de ne pas tout regrouper dans une structure JSON sur un seul topic.

Il est aussi possible de le connecter dans une gateway IoT homeassistant, mais pour ma part j’ai prévu de l’utiliser autrement avec la plate‐forme IOT de Mozilla.

Il est possible de faire facilement une mini passerelle MQTT vers HTTP en utilisant le module MQTT interne à IoTjs et IoTjs-express pour la partie REST.

Et en utilisant webthing-iotjs, j’ai partagé un exemple de proxy webthing prêt à être connecté à la passerelle de Mozilla.

L’exemple est assez facile d’utilisation :

$ iotjs index.js "8888" "gateway.local" "1883" "workgroup/${machineid}/AirConductivity" Conductivity
$ curl http://localhost:8888/properties
{"Conductivity":13}

Ensuite, il suffit de déployer l’application sur la passerelle Mozilla, qui est un système Raspbian tout à fait conventionnel.

Capteur

À partir de là, un petit challenge pour les plus curieux : essayez d’intégrer ce capteur dans un digital twin de SmartHome et de visualiser ainsi le capteur dans un environnement plus large (XR).

À noter qu’il est également possible de « reflasher » le micrologiciel pour prendre en charge WebThing sous l’API Arduino. Inspirez‐vous de l’exemple LEDLamp déjà réalisé pour gérer l’Anavi light.

Vous pouvez naturellement conserver la carte et remplacer le capteur par un autre de même type (MQ), ou bien un capteur analogique 5 V, ou un capteur série tel que le SDS01 qu’on utilise à Rennes pour mesurer la présence de particules dans l’air extérieur.

Ah oui, j’allais oublier, le produit est commandable à partir de 25 €. Mais surtout, cela participe à supporter une activité d’un contributeur OSHW indépendant.

Aller plus loin

  • # Le capteur MQ-135: sensible à la présence de benzène, d’alcool et de fumée

    Posté par  . Évalué à 4.

    Sont-ce là les seuls composés à surveiller?
    Qu'est-ce qui défini un air sain?

    J'imagine que le dispositif ici doit aussi être couplé à une sonde mesurant l'humidité.

    Et sinon, que donnent les tests? Merci.

  • # esp8266: faille

    Posté par  . Évalué à 3.

    Matheus Garbelini a récemment écrit un billet et partagé le code de source d'un PoC concernant ses récentes études de ce module: en gros, ça va trancher chérie.

    Ne l'utilisez pas pour le contrôle d'une serrure. :)

    Ensuite, l'esp8266 étant aussi un module assez commun dans certaines appliances IoT, il est possible que celles-ci ne soient jamais patchées.

    • [^] # Re: esp8266: faille

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

      C'est plutôt : "ça va couper chérie" non ?

    • [^] # Re: esp8266: faille

      Posté par  . Évalué à 1.

      Si tu regardes les détails des 3 failles, la première force l'ESP8266 à rebooter (ce qui n'est pas forcément un soucis de sécurité, seulement tu perds ton périphérique).
      Les deux autres nécessitent que l'ESP8266 soit connecté en EAP (cas très très rare chez les particuliers).

      Dans la pratique, ce n'est pas Hiroshima.

    • [^] # Re: esp8266: faille

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

      A quoi tu t'attends avec des blobs binaires?

      La stack wifi des ESP est un gros blob binaire.

    • [^] # Re: esp8266: faille

      Posté par  . Évalué à 2.

      Je viens d'aller voir sur le billet l'ESP32 (2éme génération remplaçante de l'ESP8266) est touchée aussi par les mêmes failles

  • # détecteur de gaz Epoxy ?

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

    Est-ce que ça existe un détecteur de gaz Epoxy ?

  • # OSWH / OSHW ?

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

    Je pense qu'il y a une typo dans le titre sur « OSWH » (j'imagine que c'est OSHW).

    Ça pourrait être bien d'ailleurs de rappeler dans l'article ce que cela signifie (en une phrase), pour remettre dans le contexte.

  • # Typo dans le titre?

    Posté par  . Évalué à 5.

    Ne serait-ce pas "OSHW" (Open-Source HardWare) plutôt que "OSWH" ?

  • # Lost in translation stallionning

    Posté par  . Évalué à 3.

    Comme indiqué dans les spécifications, il faudra le calibrer en le laissant tourner vingt‐quatre heures dans un endroit neutre.

    Primo, en bon français on parlera d'étalonnage, calibration c'est un anglicisme.

    Secundo, la procédure décrite m'ayant paru farfelue, je suis allé voir ces spécifications chez Olimex dans lesquelles on peut lire quelque chose d'un peu plus sérieux :

    SENSITVITY ADJUSTMENT
    Resistance value of MQ-135 is difference to various kinds and various concentration gases. So,When using this components, sensitivity adjustment is very necessary. we recommend that you calibrate the detector for 100ppm NH 3 or 50ppm Alcohol concentration in air and use value of Load resistancethat( R L ) about 20 KΩ(10KΩ to 47 KΩ).
    When accurately measuring, the proper alarm point for the gas detector should be determined after considering the temperature and humidity influence.

    La seule mention de 24 heures, c'est dans la partie D: Sensitivity Characteristics et ça parle de Preheat Time ce qui englobe autant l'étalonnage que la mise en service.

Suivre le flux des commentaires

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