#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
WiFiClient clientTCP;

const char* ssid     = "ssid";
const char* mot_de_passe = "mot_de_passe";

const String ip_controleur = "192.168.1.123";
const String port = "8080";
String utilisateur="utilisateur";
String mdp_domoticz="mdp_domoticz";

long int delai_max=5000;//30*60*1000;
int seuil_lumiere= 500;
bool dernier_etat_connu=0;
bool etat=0;
bool notification=0;
long int dernier_changement_etat=0;
const int id=7;

void setup() {
  Serial.begin(74880); 
  connexion_reseau();
  Serial.println("Détecteur de lumière oubliée");
}
void connexion_reseau(){
  delay(10);  
  Serial.print("Tentative de connexion: "); 
  Serial.println(ssid); 
  WiFi.begin(ssid, mot_de_passe);  
  while (WiFi.status() != WL_CONNECTED) { 
    delay(500); 
    Serial.print("."); 
  } 
  Serial.println("Connexion au réseau Wi-Fi réalisée"); 
  Serial.println("L'adresse IP est: "); 
  Serial.println(WiFi.localIP());
}
void loop(){
  if(WiFi.status()== WL_CONNECTED){
    int valeur_analogique=analogRead(A0); 
    Serial.print("Valeur broche A0: ");
    Serial.println(valeur_analogique);
    if (valeur_analogique>seuil_lumiere){ 
      etat=1;
    }else{
      etat=0;
    }
    Serial.print("Etat lumière: ");
    Serial.println(etat);
    if(etat!= dernier_etat_connu && etat==1){
      dernier_changement_etat=millis();
      dernier_etat_connu=1;
    }
    if(etat!= dernier_etat_connu && etat==0){
      dernier_etat_connu=0;
      notification=0;
    }
    if((millis() - dernier_changement_etat >= delai_max ) && etat==1 && notification==0) {
      Serial.println("Notification");
      envoi_controleur_interrupteur(id, "On");
      notification=1;
      delay(10000); 
      envoi_controleur_interrupteur(id, "Off");
    }
  }else{
    connexion_reseau();
  } 
  delay(300000);
}

void envoi_controleur_interrupteur(int id, String etat){
  String connexion_domoticz="";
  HTTPClient http;
  if (utilisateur!="" && mdp_domoticz!=""){
    connexion_domoticz=utilisateur+":"+mdp_domoticz+"@";//"+utilisateur+":"+mdp_domoticz+"@"
  }else{
    connexion_domoticz="";
  }    
  http.begin(clientTCP,"http://"+connexion_domoticz+ip_controleur+":"+port+"/json.htm?type=command&param=switchlight&idx="+String(id)+"&switchcmd="+etat);
  int httpCode =http.GET();
  if (httpCode > 0){
    String reponse = http.getString();   
    Serial.println(reponse); 
  } 
    http.end();
}
