// Import des librairies
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <ESP8266WebServer.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 "2" // idx de votre capteur sur domoticz
#define BOUTON_PIN 0 // GPIO0 pin D3
#define LED 2 // GPIO2 pin D4
int etat_led = LOW;
int etat_bouton = 0;
HTTPClient http; // on crée l'objet HTTPClient -> http
ESP8266WebServer server (80);
// 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 BoutonPoussoir() {
int lecture = digitalRead(BOUTON_PIN);
if (lecture != etat_bouton) {
etat_bouton = lecture;
if (etat_bouton == LOW) {
etat_led = !etat_led;
Serial.println(etat_led ? "La LED est allumée par le bouton" : "La LED est éteinte par le bouton");
Serial.println("Commande envoyée :");
String url = "/json.htm?type=command¶m=udevice&idx=";
url += String(IDX);
url +="&nvalue=";
url += etat_led;
url += "&svalue=0";
sendDomoticz(url); // On envoie l'url à domoticz
digitalWrite(LED, etat_led);
}
}
}
void allume() {
if (etat_led == LOW)
etat_led = !etat_led;
digitalWrite(LED, etat_led);
Serial.println("La LED est allumée par Domoticz");
server.send(200, "text/plain", "LED on");
}
void eteint() {
if (etat_led == HIGH) {
etat_led = !etat_led;
digitalWrite(LED, etat_led);
Serial.println("La LED est éteinte par Domoticz");
server.send(200, "text/plain", "LED off");
}
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println();
Serial.println("Initialisation !!!");
pinMode(BOUTON_PIN, INPUT);
pinMode(LED, OUTPUT);
digitalWrite(LED, etat_led);
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());
Serial.println();
server.on("/on", allume);
server.on("/off", eteint);
server.begin();
Serial.println("Mise à jour de l'état de la LED vers Domoticz");
String url = "/json.htm?type=command¶m=udevice&idx=";
url += String(IDX);
url +="&nvalue=";
url += etat_led;
url += "&svalue=0";
sendDomoticz(url);
Serial.println("Initialisation OK");
Serial.println();
}
void loop() {
server.handleClient();
BoutonPoussoir();
}