// Import des librairies
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include "DHT.h"
// PARAMÈTRES À MODIFIER SELON VOTRE CONFIG
#define ssid "XXXXXXX" // ssid
#define password "YYYYYYYYYYYYYYYYYY" // mdp ssid
#define Domotocz "192.168.X.X" // adresse de domoticz
#define portDomotocz 8084 // port de domoticz
#define IDX "1" // idx de votre capteur sur domoticz
#define DHTPIN 4 // GPIO4 pin D2
#define DHTTYPE DHT21 // DHT 21 / DHT 22 / DHT 11
HTTPClient http; // on crée l'objet HTTPClient -> http
DHT dht(DHTPIN, DHTTYPE); // on crée l'objet DHT -> dht
// fonction qui envoie les datas sur domoticz
void sendDomoticz(String url){
Serial.print("connection à Domoticz : ");
Serial.print(Domotocz);
Serial.print(":");
Serial.println(portDomotocz);
WiFiClient client; // on crée l'objet WiFiClient -> client
http.begin(client,Domotocz,portDomotocz,url); // on envoie les datas
int httpCode = http.GET();
if (httpCode) {
if (httpCode == 200) { // si on a bien reçu les datas
String payload = http.getString();
Serial.println(payload);
Serial.print("datas envoyées : "); // on affiche l'url envoyée
Serial.println(url);
} else { // sinon
Serial.println("echec de la connexion à Domoticz");
return;
}
}
Serial.println("fermeture de la connection");
http.end();
Serial.println();
}
void setup() {
Serial.begin(115200);
Serial.println("Initialisation !!!");
dht.begin();
//Serial.setDebugOutput(true);
Serial.println("Connecting Wifi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
float hic = dht.computeHeatIndex(t, h, false);
int hum_stat;
if ( h > 70 ) {
hum_stat = 3;
} else if ( h < 30 ) {
hum_stat = 2;
} else if ( h >= 30 & h <= 45 ) {
hum_stat = 0;
} else if ( h > 45 & h <= 70 ) {
hum_stat = 1;
}
Serial.printf("Humidité: %.2f %c Temperature: %.2f °C Heat index: %.2f °C \n", h, 37, t, hic);
// on construit l'url a envoyée à domoticz
// qui doit etre de cette forme (/json.htm?type=command¶m=udevice&idx=_VOTREIDX_&nvalue=0&svalue=_VOSDATAS_;
String url = "/json.htm?type=command¶m=udevice&idx=";
url += String(IDX);
url +="&nvalue=0&svalue=";
url += String(t); url += ";";
url += String(h); url += ";";
url += String(hum_stat); url += ";";
sendDomoticz(url); // On envoie l'url à domoticz
delay(10000);
}