Hola que tal, les comento mi problema ya que no se como resolverlo.
Resulta que tengo unos interruptores wifi con el modulo esp8266 01 que se conectan a Internet para luego ejecutar el código que enciende y apaga una luz(además de enviar datos de estado a la pag del bróker, etc) . El tema es que si se interrumpe Internet no me funciona el encendido manual apretando el botón. Cosa que no debiera ocurrir ya que uno se queda a oscuras.
Mi consulta es si hay manera de hacer que, mientras el modulo intenta reconectarse, pueda funcionar el código, o por lo menos la parte donde se activa el botón en forma manual. Dejo el código en cuestión por si hay algún error.
Espero me puedan ayudar.
Mil gracias.
#define IO_USERNAME "xxxxxxxxx"
#define IO_KEY "xxxxxxxxxxxx"
#define WIFI_SSID "xxxxxxxxxx"
#define WIFI_PASS "xxxxxxxx"
#include "AdafruitIO_WiFi.h"
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
#include <ESP8266WiFi.h>
#include <AdafruitIO.h>
#include <Adafruit_MQTT.h>
#include <ArduinoHttpClient.h>.
const int buttonPin = 2;
const int ledPin = 0;
int ledState = HIGH;
int buttonState;
int lastButtonState = LOW;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
// set up the 'command' feed
AdafruitIO_Feed *command = io.feed("luzdormitorio");
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
// start the serial connection
Serial.begin(115200);
// connect to io.adafruit.com
Serial.print("Connecting to Adafruit IO");
io.connect();
// wait for a connection
while(io.status() < AIO_CONNECTED) {
Serial.print(".");
delay(50);
}
// we are connected
Serial.println();
Serial.println(io.statusText());
command->onMessage(handleMessage);
}
void loop() {
io.run();
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
ledState = !ledState;
digitalWrite(ledPin, ledState);
Serial.print("sending -> ");
Serial.println(ledState);
command->save(ledState);
}
}
}
lastButtonState = reading;
}
// Esta función se llama cada vez que aparece un mensaje de 'comando'
// se recibe de Adafruit IO. estaba adjunto a
// el feed de comandos en la función setup () anterior
void handleMessage(AdafruitIO_Data *data) {
int command = data->toInt();
if (command == 1){ //light up the LED
Serial.print("received <- ");
Serial.println(command);
digitalWrite(ledPin, HIGH);
} else {
Serial.print("received <- ");
Serial.println(command);
digitalWrite(ledPin, LOW);
}
}