#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 int port=8080;
String utilisateur="utilisateur";
String mdp_domoticz="mdp_domoticz";

const int id_texte=1;
const int id_interrupteur=2;

void setup() { 
  Serial.begin(74800); 
  connexion_reseau();
}

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(){
    String memoirelibre=String(ESP.getFreeHeap());
    envoi_vers_controleur(id_texte,"0",memoirelibre);
    envoi_controleur_interrupteur(id_interrupteur, "On");
    delay(10000);
}

void envoi_vers_controleur(int id, String nvalue, String svalue){
    HTTPClient http;
    String connexion_domoticz="";
    if (utilisateur!="" && mdp_domoticz!=""){
      connexion_domoticz=utilisateur+":"+mdp_domoticz+"@";//"+utilisateur+":"+mdp_domoticz+"@"
    }else{
      connexion_domoticz="";
    }
    if (nvalue!="" && svalue!=""){
      http.begin(clientTCP,"http://"+connexion_domoticz+ip_controleur+":"+port+"/json.htm?type=command&param=udevice&idx="+String(id)+"&nvalue="+nvalue+"&svalue="+svalue);
    }else if(nvalue==""){
      http.begin(clientTCP,"http://"+connexion_domoticz+ip_controleur+":"+port+"/json.htm?type=command&param=udevice&idx="+String(id)+"&svalue="+svalue);
    }else{
      http.begin(clientTCP,"http://"+connexion_domoticz+ip_controleur+":"+port+"/json.htm?type=command&param=udevice&idx="+String(id)+"&nvalue="+nvalue);
    }
    int httpCode =http.GET();
    if (httpCode > 0){
      String reponse = http.getString();   
      Serial.println(reponse); 
    }else{
      Serial.println(millis());
    } 
    http.end();   //Close connection  
}
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();
}
