[Tuto] Capteur DIY de mesure de monoxyde de carbone

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
fking
Messages : 166
Inscription : 03 nov. 2017, 10:19
Localisation : Liverdun (54)
Contact :

[Tuto] Capteur DIY de mesure de monoxyde de carbone

Message par fking »

Bonjour,
Mon dernier bricolage, un capteur de mesure de monoxyde de carbone.

Matériel :
Un Wemos D1 mini :
https://www.aliexpress.com/item/ESP8266 ... 4c4dntN7aU

Un capteur MQ7 :
https://www.aliexpress.com/item/MQ-7-Ca ... 4c4dntN7aU

Il vous faut au préalable l'IDE Arduino avec les modules et librairies ESP8266 installées
Récupérez sur le Web les librairies MQ7.h et PubSubClient.h, installez-les dans votre IDE Arduino


Branchement :
Image

--> L'alimentation globale se fait via la prise USB du Wemos

Code :

Code : Tout sélectionner

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <PubSubClient.h>
#include <MQ7.h>

///////////////////////////////////
// Variables utilisateur à modifier
///////////////////////////////////

// Identifiants Wifi
const char* ssid = "mettez votre identifiant wifi";
const char* password = "mettez votre mot de passe wifi";

// Adresse du serveur Domoticz
const char* host = "mettez l'adresse IP de votre serveur Domoticz";
const int   port = 8080; // changez le port au besoin

// Index des capteur dans Domoticz
#define IDX_MQ7 XX // remplacez XX par l'index du capteur dans Domoticz

// Numéros des broches capteurs Ultrason
const int AOUTpin=A0;//the AOUT pin of the CO sensor goes into analog pin A0 of the arduino

// variables diverses
MQ7 mq7(A0,3.3);

// Définition des paramètres IP du Wemos
// A MODIFIER EN FONCTION DE VOTRE INSTALLATION !!!
IPAddress ip(192, 168, 1, 167);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 1, 1);
  
///////////////////////////////////////////
// Fin des Variables utilisateur à modifier
// Ne rien modifier ci-dessous
///////////////////////////////////////////


// Définition du client HTTP
HTTPClient http;

void setup()
{
  
  Serial.begin(115200); // initialisation communication série

  //Serial.print("Connecting to ");
  //Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.config(ip, dns, gateway, subnet);
  WiFi.begin(ssid, password);

  // Attente de connexion
  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Print the IP address
  Serial.println(WiFi.localIP());  
}

void loop() 
{

  float valeur=(mq7.getPPM());
  // Construction de la chaine pour le capteur 1 et envoi à Domoticz
  String url1 = "/json.htm?type=command&param=udevice&idx=";
        url1 += String(IDX_MQ7);
        url1 += "&nvalue=";    
        url1 += String(valeur); 
        url1 += "&svalue=";    
        url1 += String(valeur); 
      sendToDomoticz(url1);

  // Delai entre chaque mesure et envoi  
  delay(5000);
}


void sendToDomoticz(String url)
{
  //Serial.print("Connecting to ");
  //Serial.println(host);
  //Serial.print("Requesting URL: ");
  //Serial.println(url);
  http.begin(host,port,url);
  int httpCode = http.GET();
    if (httpCode) 
    {
      if (httpCode == 200) 
      {
        String payload = http.getString();
        //Serial.println("Domoticz response "); 
        //Serial.println(payload);
      }
    }
  //Serial.println("closing connection");
  http.end();
}

Dans DZ, créez un matériel genre MQ7. Créez ensuite un dispositif dans ce matériel, de type "Qualité de l'air", donnez lui le nom que vous voulez. Dans la page des dispositifs, repérez son index

Dans le code changez :
- Le nom de votre réseau wifi
- Votre mot de passe wifi
- L'adresse IP de votre serveur DZ
- Le port de votre serveur DZ si vous avez modifié ce dernier
- L'index du capteur
- Tous les paramètres IP en fonction de votre installation
- Si nécessaire le delay (dernière ligne de la fonction loop() )pour régler l'intervalle entre deux envois de mesure à DZ (5000 millisecondes soit 5 secondes dans le code ci-dessus)

Uploadez le code dans le Wemos. A la fin, reset du Wemos, les mesures doivent apparaitre dans DZ au bout de quelques secondes.

Image

En cas de problème, commencez par dé-commenter les Serial.print pour voir ce qui se passe.

Enjoy !!!
Fais le ou ne le fais pas , essayer ne veut rien dire.
cyberbob
Messages : 511
Inscription : 28 nov. 2016, 19:43
Localisation : Belgique

Re: [DIY] Capteur de mesure de monoxyde de carbone

Message par cyberbob »

Slt,

Est-ce possible aussi de le faire avec Espeasy en prenant analog input ?
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky
fking
Messages : 166
Inscription : 03 nov. 2017, 10:19
Localisation : Liverdun (54)
Contact :

Re: [DIY] Capteur de mesure de monoxyde de carbone

Message par fking »

Bonjour,
Je viens de tester en ESPEasy, je récupère bien une valeur :

Image

Mais elle ne remonte pas dans DZ :

Image
Fais le ou ne le fais pas , essayer ne veut rien dire.
jackslayter
Messages : 1040
Inscription : 30 sept. 2014, 14:40
Localisation : Isère (38)

Re: [DIY] Capteur de mesure de monoxyde de carbone

Message par jackslayter »

ça marche pas non plus chez moi, je suis donc obligé de passer par les rules
une fois les rules activées (dans l'onglet tools/system/advanced) il faut ajouter cette rule

Code : Tout sélectionner

on DEVICE_NAME#VALUE_NAME do
 SendToHTTP IP,PORT,/json.htm?param=udevice&type=command&idx=DZ_IDX&nvalue=[DEVICE_NAME#VALUE_NAME]
endon
ce qui donne :

Code : Tout sélectionner

on sensor#Analog do
 SendToHTTP 192.168.1.100,8080,/json.htm?param=udevice&type=command&idx=25&nvalue=[sensor#Analog]
endon
Raspberry Pi + RFLink + Domoticz Beta
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
cyberbob
Messages : 511
Inscription : 28 nov. 2016, 19:43
Localisation : Belgique

Re: [DIY] Capteur de mesure de monoxyde de carbone

Message par cyberbob »

fking a écrit : 05 déc. 2018, 09:31 Bonjour,
Je viens de tester en ESPEasy, je récupère bien une valeur :
Mais elle ne remonte pas dans DZ :
L'idx dans easyesp (ici 716) correspond elle bien a l'idx du capteur virtuel dans domoticz (dans "Réglage/Dispositif") ?
C'est avec l'idx que les valeurs vont remonter dans domoticz.
Ici pour un capteur UV, la valeur est divisée par 68 pour correspondre a l'échelle des UV, via la formule dans "Formula UV"
A voir pour un capteur monoxyde ?
espeasy.jpg
espeasy.jpg (56.05 Kio) Consulté 11045 fois
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky
fking
Messages : 166
Inscription : 03 nov. 2017, 10:19
Localisation : Liverdun (54)
Contact :

Re: [DIY] Capteur de mesure de monoxyde de carbone

Message par fking »

Oui l'index est bon, pas de soucis.
Mais je ne vais pas plus loin dans cette direction, mon code perso fonctionne correctement
Fais le ou ne le fais pas , essayer ne veut rien dire.
lolomin
Messages : 29
Inscription : 26 sept. 2015, 18:20

Re: [DIY] Capteur de mesure de monoxyde de carbone

Message par lolomin »

Salut,

Je viens de tomber sur ce topic qui m'intéresse fortement puisque j'aimerai pouvoir récupérer les valeurs de CO dans mon salon où j'utilise un poele à granulés et m'en servir à la fois pour le côté informel et également en cas d'élévation anormal de la concentration en CO dans la pièce (alerte/notification Télégram par exemple + déclenchement alarme/sonnerie des détecteurs de fumées ...). Je n'ai pas trouvé de device prêt à l'emploi/grand public connecté en ZWave, Zigbee ou Wifi permettant de récupérer les valeurs en PPM et de les grapher ...

Néanmoins, j'ai quelques doutes sur le montage effectué ici, est-il fiable ?
Surtout en voyant cette vidéo : https://www.youtube.com/watch?v=lX2YQBl-ggQ

Qu'en est-il également pour les personnes l'ayant mis en oeuvre concernant l'alimentation en 5V, possible de trouver une petite alimentation portable plutôt que du 5V via micro USB qui nécessite donc une prise de courant ? Quid également de l'intégration / boitier ?

Merci d'avance pour vos retours.

lolo
Répondre