#include #include #include #include "Ctimer.h" HTTPClient http; WiFiClient wifiClient; char ssidWifi[24];//nombre wifi al que conectar char keyWifi[32];//key wifi a conectar char bufAux[32];//key wifi a conectar String ideEsp;//identificador unico por esp String hostMQTT; Ctimer tReporte; bool enviaData=false; int DataSensor=0; bool sensorIn=false; int PinSensor; void configuracion() { strcpy(ssidWifi,"Idhun");//nombre wifi strcpy(keyWifi,"Ardileorca1234.");//key wifi hostMQTT="192.168.2.50";//servidor mqttBroker strcpy(ssidWifi,"IdhunAux");//nombre wifi ideEsp="Esp_ext_01";//idenitificador del esp (sera Ășnico) tReporte.set(60); sensorIn=false; PinSensor=5; } bool conectaWifi() { if(WiFi.status() == WL_CONNECTED) return true; Serial.print("Conectando wifi"); WiFi.begin(ssidWifi, keyWifi); int i=0; while(WiFi.status() != WL_CONNECTED) { i++; delay(1000); Serial.print("."); if(i>20) { Serial.println("Error conexion wifi"); return false; } } Serial.println("Conectado"); return true; } int EnviaPost(char *data) { String URL = hostMQTT+"/"+ideEsp; http.begin(wifiClient, URL); http.addHeader("Content-Type", "text/plain"); http.POST(data); String payload = http.getString(); Serial.println(payload); http.end(); return payload.toInt(); } bool leeSensor() { int val=digitalRead(PinSensor); bool result=val!=DataSensor; DataSensor=result; return result; } void reinicia() { ESP.wdtEnable(1); int i=0; while(i<60){ i++; delay(1000); }; } void SetSensor(int val) { digitalWrite(PinSensor, val); DataSensor=val; } char* GetData() { sprintf(bufAux, "%d", DataSensor); return bufAux; } void setup() { Serial.begin(115200); configuracion(); tReporte.inicia(); } void loop() { bool envia=false; if(sensorIn) envia = envia|| leeSensor(); envia = envia|| tReporte.onTimerReset(); if(envia) { if(!conectaWifi()) { reinicia(); } int resul=EnviaPost(GetData()); if(!sensorIn) SetSensor(resul); } }