{"id":2858,"date":"2022-06-03T08:00:59","date_gmt":"2022-06-03T06:00:59","guid":{"rendered":"https:\/\/domo.rem81.com\/?p=984"},"modified":"2024-03-29T09:49:42","modified_gmt":"2024-03-29T08:49:42","slug":"ha-mesure-qualite-de-lair-pm1-0-pm2-5-m10-0-2","status":"publish","type":"post","link":"https:\/\/domo.rem81.com\/index.php\/2022\/06\/03\/ha-mesure-qualite-de-lair-pm1-0-pm2-5-m10-0-2\/","title":{"rendered":"HA-Mesure Qualit\u00e9 de l&rsquo;air PM1.0-PM2.5-M10.0"},"content":{"rendered":"\n\n\n\n<h1 class=\"wp-block-heading\">Intro<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dans un <a href=\"https:\/\/domo.rem81.com\/index.php\/2021\/11\/01\/ha-mesure-de-la-qualite-de-lair-co2-et-pm2-5-2\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2021\/11\/01\/ha-mesure-de-la-qualite-de-lair-co2-et-pm2-5-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">article pr\u00e9c\u00e9dent<\/a>, j&rsquo;abordais le d\u00e9tournement du boitier de mesure de qualit\u00e9 de l&rsquo;air <a href=\"https:\/\/www.ikea.com\/fr\/fr\/p\/vindriktning-capteur-qualite-de-lair-70498242\/\" target=\"_blank\" rel=\"noreferrer noopener\">Vindriktning<\/a> commercialis\u00e9 par IKEA. Celui ci est \u00e9quip\u00e9 d&rsquo;un capteur Pm2.5 <a href=\"https:\/\/esphome.io\/components\/sensor\/pm1006.html\" target=\"_blank\" rel=\"noreferrer noopener\">pm1006<\/a> qui fonctionne correctement mais  la gamme de mesure se limite au PM2.5 et la pr\u00e9cision semble t&rsquo;il n&rsquo;est pas au rendez vous.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En parcourant les sensors \u00ab\u00a0Air Quality\u00a0\u00bb de EspHome, j&rsquo;ai d\u00e9couvert le PMS5003 qui propose lui une \u00e9tendue de mesures bien sup\u00e9rieure pour un prix raisonnable. J&rsquo;en ai profit\u00e9 pour y associer un MHZ-19B qui lui mesure le taux de CO2 plus un afficheur local et un bandeau de 8 leds.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;ensemble est raccord\u00e9 \u00e0 un ESP32 Mini qui assure une puissance de traitement sup\u00e9rieure \u00e0 un ESP8266.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin j&rsquo;ai int\u00e9gr\u00e9 le tout sur un joli circuit imprim\u00e9 dont j&rsquo;ai sous trait\u00e9 la fabrication \u00e0 <a rel=\"noreferrer noopener\" href=\"https:\/\/jlcpcb.com\/\" target=\"_blank\">https:\/\/jlcpcb.com\/<\/a> pour un rapport qualit\u00e9 prix tr\u00e8s attrayant.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Descriptif mat\u00e9riel<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Capteur de particules PMS 5003<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"354\" height=\"308\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-11.png\" alt=\"\" class=\"wp-image-2094\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-11.png 354w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-11-300x261.png 300w\" sizes=\"auto, (max-width: 354px) 100vw, 354px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Mesure fiable et en temps r\u00e9el des concentrations de poussi\u00e8res PM2,5 ! Ce capteur utilise la diffusion laser pour rayonner les particules en suspension dans l&rsquo;air, puis recueille la lumi\u00e8re diffus\u00e9e pour obtenir la courbe de la variation de la lumi\u00e8re diffus\u00e9e dans le temps. Le microprocesseur calcule le diam\u00e8tre \u00e9quivalent des particules et le nombre de particules de diam\u00e8tre diff\u00e9rent par unit\u00e9 de volume.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp; Concentrations de PM1,0, PM2,5 et PM10,0 dans les unit\u00e9s standard et environnementales<br>&nbsp;&nbsp;&nbsp; Particules par 0,1 L d&rsquo;air, class\u00e9es en bacs de 0,3 um, 0,5 um, 1,0 um, 2,5 um, 5,0 um et 10 um.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp; Plage de mesure : 0,3~1,0\uff1b1.0~2,5\uff1b2.5~10 \u03bc m<br>&nbsp;&nbsp;&nbsp; Port\u00e9e effective : 0~500 \u03bc g\/m\u00b3<br>&nbsp;&nbsp;&nbsp; Port\u00e9e maximale : * \u22651000 \u03bc g\/m\u00b3<br>&nbsp;&nbsp;&nbsp; R\u00e9solution : 1 \u03bc g\/m\u00b3<br>&nbsp;&nbsp;&nbsp; Volume standard : 0.1L<br>&nbsp;&nbsp;&nbsp; Alimentation en courant continu : Typ:5.0 \/ Min:4.5 \/ Max : 5.5V<br>&nbsp;&nbsp;&nbsp; Courant actif : \u2264100 mA<br>&nbsp;&nbsp;&nbsp; Courant de veille : \u2264200 \u03bc \u03bc A<br>&nbsp;&nbsp;&nbsp; Plage de temp\u00e9rature de fonctionnement : -10~+60 \u2103<br>&nbsp;&nbsp;&nbsp; Plage d&rsquo;humidit\u00e9 de travail : 0~99%<br>&nbsp;&nbsp;&nbsp; Plage de temp\u00e9rature de stockage : -40~+80 \u2103<br>&nbsp;&nbsp;&nbsp; Dimensions du module capteur : 50 \u00d7 38 \u00d7 21mm<br>&nbsp;&nbsp;&nbsp; Poids (c\u00e2ble et adaptateur inclus) : 42.2g<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fiche technique<\/strong><\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/pms5003-english-v2.3-1.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Contenu embarqu\u00e9 pms5003-english-v2.3.\"><\/object><a id=\"wp-block-file--media-0c61b3a7-fb7f-4569-8d3a-0761442540e6\" href=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/pms5003-english-v2.3-1.pdf\">pms5003-english-v2.3<\/a><a href=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/pms5003-english-v2.3-1.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-0c61b3a7-fb7f-4569-8d3a-0761442540e6\">T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"595\" height=\"538\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-20-1.png\" alt=\"\" class=\"wp-image-1388\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-20-1.png 595w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/01\/image-20-1-300x271.png 300w\" sizes=\"auto, (max-width: 595px) 100vw, 595px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-423fadce-5872-4cc5-a139-19a8eb0ff517\">\n<li>Sur le PMS-5003:\n<ul class=\"wp-block-list\">\n<li><strong>PMS-5003 &lt;&#8211;&gt; ESP32 Mini<\/strong><\/li>\n\n\n\n<li>Validation <strong>&lt;&#8211;&gt;<\/strong> SET (IO27)<\/li>\n\n\n\n<li>TX <strong>&lt;&#8211;&gt;<\/strong> RX (IO25)<\/li>\n\n\n\n<li>GND <strong>&lt;&#8211;&gt;<\/strong> GND <\/li>\n\n\n\n<li>VCC (+5v) <strong>&lt;&#8211;&gt;<\/strong> VCC<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Capteur de Co2<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le capteur Co2 est un <a rel=\"noreferrer noopener\" href=\"https:\/\/fr.aliexpress.com\/item\/1005002125913199.html?spm=a2g0s.9042311.0.0.715e6c37KAOSxq\" target=\"_blank\">MH-Z19B<\/a> qui mesure la teneur de CO2 sur une \u00e9chelle de 400 \u00e0 10000 ppm et communique en UART.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"869\" height=\"567\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/12\/image-1.png\" alt=\"\" class=\"wp-image-1111\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/12\/image-1.png 869w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/12\/image-1-300x196.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2021\/12\/image-1-768x501.png 768w\" sizes=\"auto, (max-width: 869px) 100vw, 869px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-4162a44b-54ca-4048-ad07-102079155d7a\">\n<li>Sur le MH-Z19:\n<ul class=\"wp-block-list\">\n<li><strong>MH-Z19 &lt;&#8211;&gt; ESP32 Mini<\/strong><\/li>\n\n\n\n<li>TX <strong>&lt;&#8211;&gt;<\/strong> RX (IO16)<\/li>\n\n\n\n<li>RX <strong>&lt;&#8211;&gt;<\/strong> TX (IO17)<\/li>\n\n\n\n<li>GND <strong>&lt;&#8211;&gt;<\/strong> GND <\/li>\n\n\n\n<li>VCC (+5v) <strong>&lt;&#8211;&gt;<\/strong> VCC<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">ESP32 Mini<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">J&rsquo;ai choisi un <a href=\"https:\/\/www.amazon.fr\/gp\/product\/B08TBPBJGV\/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&amp;psc=1\" data-type=\"URL\" target=\"_blank\" rel=\"noreferrer noopener\">ESP32 Mini<\/a>, car l&rsquo;ESP8266 est trop juste en puissance de calcul si on utilise l&rsquo;int\u00e9gration  ESPHOME plus un afficheur plus un bandeau Led, j&rsquo;ai gal\u00e9r\u00e9 avec, je ne le recommande pas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Afficheur Oled<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vous en trouverez sans probl\u00e8me sur <a rel=\"noreferrer noopener\" href=\"https:\/\/www.amazon.fr\/AZDelivery-128x64-Arduino-Raspberry-microcontr%C3%B4leur\/dp\/B074N9VLZX\/ref=pd_day0fbt_img_sccl_1\/260-2074638-0290232?pd_rd_w=mpOgy&amp;content-id=amzn1.sym.eb575755-8305-4dca-a190-ccf98a29b2c2&amp;pf_rd_p=eb575755-8305-4dca-a190-ccf98a29b2c2&amp;pf_rd_r=QZ9PGK7FZSZCJ270F8P3&amp;pd_rd_wg=PuT1Y&amp;pd_rd_r=37d75cc4-096b-4efb-aa99-ff2d765e0773&amp;pd_rd_i=B074N9VLZX&amp;th=1\" target=\"_blank\">Amazon<\/a> ou en chine<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"381\" height=\"264\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-10-1.png\" alt=\"\" class=\"wp-image-2093\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-10-1.png 381w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-10-1-300x208.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-10-1-135x93.png 135w\" sizes=\"auto, (max-width: 381px) 100vw, 381px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;afficheur utilise une police de caract\u00e8re \u00ab\u00a0Arial\u00a0\u00bb, vous pouvez t\u00e9l\u00e9charger le fichier arial.ttf <a rel=\"noreferrer noopener\" href=\"https:\/\/www.freefontspro.com\/fr\/14454\/arial.ttf\" data-type=\"URL\" data-id=\"https:\/\/www.freefontspro.com\/fr\/14454\/arial.ttf\" target=\"_blank\">ici<\/a> puis le transf\u00e9rer dans un dossier \u00ab\u00a0fonts\u00a0\u00bb de votre \u00ab\u00a0\/config\/esphome\u00a0\u00bb.  Bien entendu vous pouvez utiliser une autre police de caract\u00e9res, \u00ab\u00a0size\u00a0\u00bb d\u00e9termine la taille des caract\u00e8res.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"2560\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2.jpg\" alt=\"\" class=\"wp-image-2085\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2.jpg 2560w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-300x300.jpg 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-1024x1024.jpg 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-150x150.jpg 150w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-768x768.jpg 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-1536x1536.jpg 1536w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-2048x2048.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Bandeau led<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il n&rsquo;est pas indispensable mais il permet de visualiser rapidement d&rsquo;un simple coup d\u2019\u0153il le niveau de pollution.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stick NeoPixel RGB 8 leds<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"600\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-7.png\" alt=\"\" class=\"wp-image-2080\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-7.png 600w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-7-300x300.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-7-150x150.png 150w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Mise en oeuvre<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">j&rsquo;utilise le logiciel Eagle d&rsquo;Autodesk pour la cr\u00e9ation des circuits imprim\u00e9, puis je sous traite la fabrication chez   <a rel=\"noreferrer noopener\" href=\"https:\/\/jlcpcb.com\/\" target=\"_blank\">https:\/\/jlcpcb.com\/<\/a> pour un rapport qualit\u00e9 prix tr\u00e8s attrayant et un rendu \u00ab\u00a0professionnel\u00a0\u00bb<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"365\" height=\"634\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-4-1.png\" alt=\"\" class=\"wp-image-2071\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-4-1.png 365w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-4-1-173x300.png 173w\" sizes=\"auto, (max-width: 365px) 100vw, 365px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Sch\u00e9ma Electronique<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"574\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-3-1-1024x574.png\" alt=\"\" class=\"wp-image-2069\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-3-1-1024x574.png 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-3-1-300x168.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-3-1-768x430.png 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-3-1.png 1103w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Circuit imprim\u00e9<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"2560\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_085326-scaled-1.jpg\" alt=\"\" class=\"wp-image-2072\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_085326-scaled-1.jpg 2560w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_085326-scaled-1-300x300.jpg 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_085326-scaled-1-1024x1024.jpg 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_085326-scaled-1-150x150.jpg 150w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_085326-scaled-1-768x768.jpg 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_085326-scaled-1-1536x1536.jpg 1536w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_085326-scaled-1-2048x2048.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Mise en boitier<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cela reste \u00e0 faire, je cherche le boitier id\u00e9al!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_091932-scaled-1-1024x1024.jpg\" alt=\"\" class=\"wp-image-2086\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_091932-scaled-1-1024x1024.jpg 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_091932-scaled-1-300x300.jpg 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_091932-scaled-1-150x150.jpg 150w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_091932-scaled-1-768x768.jpg 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_091932-scaled-1-1536x1536.jpg 1536w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_091932-scaled-1-2048x2048.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Logiciel<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">J&rsquo;ai raccord\u00e9 un bouton poussoir me permettant ainsi de faire d\u00e9filer diff\u00e9rentes pages de mesure sur l&rsquo;ecran Oled.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" data-id=\"2083\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092008-scaled-2-1024x1024.jpg\" alt=\"\" class=\"wp-image-2083\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092008-scaled-2-1024x1024.jpg 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092008-scaled-2-300x300.jpg 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092008-scaled-2-150x150.jpg 150w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092008-scaled-2-768x768.jpg 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092008-scaled-2-1536x1536.jpg 1536w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092008-scaled-2-2048x2048.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" data-id=\"2085\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-1024x1024.jpg\" alt=\"\" class=\"wp-image-2085\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-1024x1024.jpg 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-300x300.jpg 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-150x150.jpg 150w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-768x768.jpg 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-1536x1536.jpg 1536w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/IMG_20220603_092001-scaled-2-2048x2048.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Code ESP Home<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>substitutions:\n  device_name: esp138-qualite-air\n  adress_ip: \"192.168.0.138\"\n  friendly_name: esp138\n  time_timezone: \"Europe\/Paris\"\n  \nesphome:\n  name: ${device_name}\n  platform: ESP32\n  board: mhetesp32minikit\n  #board: wemos_d1_mini32\n  \n  platformio_options:\n    lib_deps: NeoPixelBus@2.6.0\n  on_boot:\n    then:\n      - light.control:\n          id: rgb_led\n          brightness: 0.25\n          state: on\nwifi:\n  networks:\n    - ssid: !secret wifi_mi4\n      password: !secret mdpwifi_mi4\n      priority: 2   \n\n    - ssid: !secret wifi_esp\n      password: !secret mdpwifi_esp\n      priority: 1\n      \n    - ssid: !secret wifi\n      password: !secret mdpwifi\n      priority: 0\n  reboot_timeout: 5min\n\n  manual_ip:\n    static_ip: ${adress_ip}\n    gateway: 192.168.0.1\n    subnet: 255.255.255.0\n\n# Enable logging\nlogger:\n  baud_rate: 0\n\n# Enable Home Assistant API\napi:\n\nota:\n\nweb_server:\n  port: 80\n  \nfont:\n  - file: \"fonts\/arial.ttf\"\n    id: arial\n    size: 15\n\n# Led WS2812 RGB  \nlight:\n\n  - platform: neopixelbus\n    num_leds: 8 \n    pin: GPIO4 #gpio0\n    name: \"RGB strip\"\n    variant: ws2812\n    id: rgb_led\n    default_transition_length: 0s  \n\n    \ni2c:\n  sda: GPIO21 #\n  scl: GPIO22 #\n  scan: True\n  id: bus_a\n  \nuart:\n  - id: uart_a\n    rx_pin: GPIO25 #\n    baud_rate: 9600\n\n  - id: uart_b\n    rx_pin: GPIO16 # GPIO16\n    tx_pin: GPIO17 # GPIO17\n    baud_rate: 9600\n#    debug:\n#      direction: BOTH\n    \nglobals:\n  - id: bp_mode\n    type: int\n    initial_value: '1'\n    \nsensor:\n  - platform: pmsx003\n    uart_id: uart_a\n    type: PMSX003\n    pm_1_0:\n      name: \"Concentration de particules &lt;1.0\u00b5m\"\n      id: pm1_0\n      accuracy_decimals: 0\n      filters:\n        - sliding_window_moving_average:\n            window_size: 15\n            send_every: 10\n            send_first_at: 1\n\n    pm_2_5:\n      name: \"Concentration de particules &lt;2.5\u00b5m\"\n      id: pm2_5\n      accuracy_decimals: 0\n      filters:\n        - sliding_window_moving_average:\n            window_size: 15\n            send_every: 10\n            send_first_at: 1\n\n      on_value:\n  # de 0 \u00e0 7 \/ 8 leds    \n  # Led 0\n          - if:\n              condition:\n                sensor.in_range:\n                  id: pm2_5\n                  below: 25\n              then: \n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 0\n                    range_to: 0\n                    red: 0%\n                    green: 100%\n                    blue: 0%\n                    color_brightness: 100%\n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 1\n                    range_to: 7\n                    red: 0%\n                    green: 0%\n                    blue: 0%\n                    color_brightness: 0%  \n  # led 1                  \n          - if:\n              condition:\n                sensor.in_range:\n                  id: pm2_5\n                  above: 25 \n                  below: 35 \n              then: \n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 0\n                    range_to: 1\n                    red: 0%\n                    green: 100%\n                    blue: 0%\n                    color_brightness: 100%\n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 2\n                    range_to: 7\n                    red: 0%\n                    green: 0%\n                    blue: 0%\n                    color_brightness: 0%  \n  # Led 2              \n          - if:\n              condition:\n                sensor.in_range:\n                  id: pm2_5\n                  above: 35\n                  below: 45\n              then: \n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 0\n                    range_to: 2\n                    red: 0%\n                    green: 100%\n                    blue: 0%\n                    color_brightness: 100%\n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 3\n                    range_to: 7\n                    red: 0%\n                    green: 0%\n                    blue: 0%\n                    color_brightness: 0%     \n  # led 3                  \n          - if:\n              condition:\n                sensor.in_range:\n                  id: pm2_5\n                  above: 45\n                  below: 55\n              then: \n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 0\n                    range_to: 3\n                    red: 75%\n                    green: 75%\n                    blue: 0%\n                    color_brightness: 100%\n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 4\n                    range_to: 7\n                    red: 0%\n                    green: 0%\n                    blue: 0%\n                    color_brightness: 0%     \n  # led 4\n          - if:\n              condition:\n                sensor.in_range:\n                  id: pm2_5\n                  above: 55\n                  below: 65\n              then: \n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 0\n                    range_to: 4\n                    red: 75%\n                    green: 75%\n                    blue: 0%\n                    color_brightness: 100%\n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 5\n                    range_to: 7\n                    red: 0%\n                    green: 0%\n                    blue: 0%\n                    color_brightness: 0%  \n  # led 5\n          - if:\n              condition:\n                sensor.in_range:\n                  id: pm2_5\n                  above: 65\n                  below: 75\n              then: \n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 0\n                    range_to: 5\n                    red: 100%\n                    green: 0%\n                    blue: 0%\n                    color_brightness: 100%\n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 6\n                    range_to: 7\n                    red: 0%\n                    green: 0%\n                    blue: 0%\n                    color_brightness: 0%      \n  # led 6\n          - if:\n              condition:\n                sensor.in_range:\n                  id: pm2_5\n                  above: 75\n                  below: 85\n              then: \n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 0\n                    range_to: 6\n                    red: 100%\n                    green: 0%\n                    blue: 0%\n                    color_brightness: 100%\n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 7\n                    range_to: 7\n                    red: 0%\n                    green: 0%\n                    blue: 0%\n                    color_brightness: 0%    \n  # Led 7\n          - if:\n              condition:\n                sensor.in_range:\n                  id: pm2_5\n                  above: 85\n              then: \n                - light.addressable_set:\n                    id: rgb_led\n                    range_from: 0\n                    range_to: 7\n                    red: 100%\n                    green: 0%\n                    blue: 0%\n                    color_brightness: 100%\n\n    pm_10_0:\n      name: \"Concentration de particules &lt;10.0\u00b5m\"\n      id: pm10_0\n      accuracy_decimals: 0\n      filters:\n        - sliding_window_moving_average:\n            window_size: 15\n            send_every: 10\n            send_first_at: 1\n            \n    pm_0_3um:\n      name: \"Nb de particules &gt;0.3\"\n      id: pm_03_um\n      unit_of_measurement: \"ppd\" \n      accuracy_decimals: 0\n\n    pm_0_5um:\n      name: \"Nb de particules &gt;0.5\"\n      id: pm_05_um\n      unit_of_measurement: \"ppd\" \n      accuracy_decimals: 0\n\n    pm_1_0um:\n      name: \"Nb de particules &gt;1.0\"\n      id: pm_10_um\n      unit_of_measurement: \"ppd\" \n      accuracy_decimals: 0\n\n    pm_2_5um:\n      name: \"Nb de particules &gt;2.5\"\n      id: pm_25_um\n      unit_of_measurement: \"ppd\" \n      accuracy_decimals: 0\n\n    pm_5_0um:\n      name: \"Nb de particules &gt;5.0\"\n      id: pm_50_um\n      unit_of_measurement: \"ppd\" \n      accuracy_decimals: 0\n\n    pm_10_0um:\n      name: \"Nb de particules &gt;10.0\"\n      id: pm_100_um\n      unit_of_measurement: \"ppd\"\n      accuracy_decimals: 0\n\n      \n  - platform: wifi_signal\n    name: \"${friendly_name} WiFi Signal Sensor\"\n    update_interval: 60s\n\n  - platform: uptime\n    name: \"${friendly_name} Uptime Sensor\"\n    update_interval: 60s\n    \n  - platform: mhz19\n    uart_id: uart_b\n    id: mh_z19\n    co2:\n      name: \"MH-Z19 CO2 Value\"\n      id: co2\n      accuracy_decimals: 0\n      filters:\n        - sliding_window_moving_average:\n            window_size: 12 # moyenne sur 12 lecture\n            send_every: 6 # envoi toutes les 6 lectures\n            send_first_at: 1 # envoi \u00e0 la premiere lecture\n            \n    temperature:\n      name: \"MH-Z19 Temperature\"\n      id: temp\n      filters:\n        - sliding_window_moving_average:\n            window_size: 24\n            send_every: 12\n            send_first_at: 1\n            \n    update_interval: 10s\n    automatic_baseline_calibration: false    \n\n\n# Il s'agit d'un mod\u00e8le de capteur qui effectue une moyenne mobile de 30 minutes de PM2,5\n# il supprime les valeurs aberrantes et de rendre le contr\u00f4le plus fluide\n\n  - platform: template\n    name: \"Concentration de particules &lt;2.5\u00b5m median\"\n    id: pm2_5_median\n    icon: mdi:chemical-weapon\n    unit_of_measurement: \u00b5g\/m\u00b3\n    lambda: |-\n      return id(pm2_5).state;\n    update_interval: 60s\n    filters:\n      - median:\n          window_size: 30\n          send_every: 30\n          send_first_at: 15\n\nbinary_sensor:\n  - platform: gpio\n    name: bp_mod\n    id: button\n    pin:\n      number: GPIO14 # GPIO 15TMS\n      inverted: true\n      mode:\n        input: true\n        pullup: true\n    on_click:\n      - min_length: 25ms\n        max_length: 500ms\n        then:\n          - lambda: |-\n              if (id(bp_mode) &lt; 3) { id(bp_mode) += 1; }\n              else { id(bp_mode) = 1; }\n              \n  - platform: gpio\n    name: bp_mod2\n    id: button2\n    pin:\n      number: GPIO13 # TCK\n      inverted: true\n      mode:\n        input: true\n        pullup: true\n        \n#Etat de la connection\n  - platform: status\n    name: \"${friendly_name} Status\"\n\ninterval:\n  - interval: 60s\n    then:\n      - switch.turn_on: val_mes\n      - delay: 10s\n#     - switch.turn_on: val_mes\n      - switch.turn_off: val_mes\n      - delay: 30s\n\nswitch:   \n  - platform: gpio\n    pin: \n      number: GPIO27 #\n    id: val_mes\n    name: \"${friendly_name} Validation mesure\"\n    \n  - platform: template\n    name: \"Calibration zero Mh-Z19 CO2\"\n    turn_on_action:\n      - mhz19.calibrate_zero: mh_z19\n      - switch.turn_off: co2_cal\n    id: co2_cal\n\n  - platform: restart\n    name: \"${friendly_name} Restart\"\n\n# gestion afficheur\n\ndisplay:\n  - platform: ssd1306_i2c\n    model: \"SSD1306 128x64\"\n    address: 0x3C\n    brightness: 100%\n    lambda: |-\n      if (id(bp_mode) == 1 )\n        {\n        it.printf(0,0,id(arial),\"PM1.0=%.2f\",id(pm1_0).state);\n        it.printf(0,15,id(arial),\"PM2.5=%.2f\",id(pm2_5).state);\n        it.printf(0,30,id(arial),\"PM10.0=%.2f\",id(pm10_0).state);\n        it.printf(0,45,id(arial),\"CO2=%.0f\",id(co2).state);\n        }\n      else if (id(bp_mode) == 2 )\n        {\n        it.printf(0,0,id(arial),\"0.3UM=%.1f\",id(pm_03_um).state);\n        it.printf(0,15,id(arial),\"0.5UM=%.1f\",id(pm_05_um).state);\n        it.printf(0,30,id(arial),\"1.0UM=%.1f\",id(pm_10_um).state);\n        it.printf(0,45,id(arial),\"2.5UM=%.1f\",id(pm_25_um).state);        \n        }\n      else if (id(bp_mode) == 3 )\n        {\n        it.printf(0,0,id(arial),\"5.0UM=%.1f\",id(pm_50_um).state);\n        it.printf(0,15,id(arial),\"10.0UM=%.1f\",id(pm_100_um).state);  \n        }\n\n      <\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"493\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-8-1024x493.png\" alt=\"\" class=\"wp-image-2088\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-8-1024x493.png 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-8-300x144.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-8-768x370.png 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-8-1536x739.png 1536w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-8.png 1560w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Affichage Local<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Un exemple minimaliste.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"427\" height=\"632\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-5.png\" alt=\"\" class=\"wp-image-2076\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-5.png 427w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2022\/06\/image-5-203x300.png 203w\" sizes=\"auto, (max-width: 427px) 100vw, 427px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>type: entities\nentities:\n  - entity: sensor.concentration_de_particules_1_0um\n  - entity: sensor.concentration_de_particules_10_0um\n  - entity: sensor.concentration_de_particules_2_5um\n  - entity: sensor.concentration_de_particules_2_5um_median\n  - entity: sensor.mh_z19_co2_value\n  - entity: sensor.mh_z19_temperature\n  - entity: sensor.nb_de_particules_0_3\n  - entity: sensor.nb_de_particules_0_5\n  - entity: sensor.nb_de_particules_1_0\n  - entity: sensor.nb_de_particules_10_0\n  - entity: sensor.nb_de_particules_2_5\n  - entity: sensor.nb_de_particules_5_0\n  - entity: binary_sensor.bp_mod\n  - entity: binary_sensor.bp_mod2\n  - entity: automation.vmc_niv0_automatismes\ntitle: esp138-qualite-air\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s quelques semaines d&rsquo;exp\u00e9rience, les retours sont positifs, reste \u00e0 valider la v\u00e9racit\u00e9 des mesures, mais sans mesure \u00e9talon, on ne peut que faire confiance aux constructeurs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">J&rsquo;ai remarqu\u00e9 que de temps en temps, la mesure de CO2 ne varie plus, j&rsquo;active le switch \u00ab\u00a0calibration zero mh-z19\u00a0\u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">je l&rsquo;utilise pour piloter ma VMC en cas de valeur PM2.5 ou de CO2 trop \u00e9l\u00e9v\u00e9e.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro Dans un article pr\u00e9c\u00e9dent, j&rsquo;abordais le d\u00e9tournement du boitier de mesure de qualit\u00e9 de l&rsquo;air Vindriktning commercialis\u00e9 par IKEA. Celui ci est \u00e9quip\u00e9 d&rsquo;un capteur Pm2.5 pm1006 qui fonctionne &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[17],"class_list":["post-2858","post","type-post","status-publish","format-standard","hentry","category-homeassistant","tag-esphome"],"_links":{"self":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/2858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/comments?post=2858"}],"version-history":[{"count":7,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/2858\/revisions"}],"predecessor-version":[{"id":3052,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/2858\/revisions\/3052"}],"wp:attachment":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/media?parent=2858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/categories?post=2858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/tags?post=2858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}