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 :

--> 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¶m=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 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.

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

