URL: https://linuxfr.org/news/nouvelle-carte-oshw-pour-mesurer-la-qualite-de-l-air-interieur Title: Nouvelle carte OSHW pour mesurer la qualité de l’air intérieur Authors: rzr Ysabeau 🧶, Nÿco, Davy Defaud et Benoît Sibaud Date: 2019年09月04日T17:10:27+02:00 License: CC By-SA Tags: webthing, oshw, esp8266, capteur, iot, internetofthings et mqtt Score: 32 Après cet été caniculaire, comme vous avez pu le vérifier avec votre [Thermomètre](https://linuxfr.org/news/un-thermometre-oshw-base-esp8266), 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.  ---- [Commander le produit](https://www.crowdsupply.com/anavi-technology/gas-detector) [Sources pour KiCad](https://github.com/AnaviTechnology/anavi-gas-detector) [Vidéo](https://player.vimeo.com/video/348903801) ---- # Matériel En ouvrant le colis venant de Plovdiv Bulgarie on y trouve quelques autocollants [KiCad](http://kicad-pcb.org/) car le projet a été conçu avec et [les designs sont publiés](https://github.com/AnaviTechnology/anavi-gas-detector) (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 ([I2C](https://fr.wikipedia.org/wiki/I2C "Inter‐Integrated Circuit")) ; * un port USB pour l’alimentation. Il y a aussi des pins UART, d’autres broches I2C 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](https://www.olimex.com/Products/Components/Sensors/Gas/SNS-MQ135/resources/SNS-MQ135.pdf), 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](https://github.com/AnaviTechnology/anavi-gas-detector-sw). 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](https://github.com/AnaviTechnology/anavi-gas-detector-sw/issues/1). 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](https://iot.mozilla.org/). Il est possible de faire facilement une mini passerelle MQTT vers HTTP en utilisant le module [MQTT interne à IoTjs](https://github.com/jerryscript-project/iotjs/blob/master/docs/api/IoT.js-API-MQTT.md) et [IoTjs-express](https://github.com/rzr/iotjs-express/) pour la partie REST. Et en utilisant [webthing-iotjs](https://github.com/rzr/webthing-iotjs/), j’ai partagé un [exemple de proxy webthing](https://github.com/rzr/webthing-example/tree/iotjs/mqtt/level/master) 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](https://github.com/rzr/aframe-smart-home) 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](https://github.com/mozilla-iot/webthing-arduino/). Inspirez‐vous de l’exemple [LEDLamp déjà réalisé pour gérer l’Anavi light](https://linuxfr.org/news/microcontroleur-de-del-base-sur-esp8266). 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](https://maps.luftdaten.info/#13/48.1268/-1.6357) 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.