0 Members and 1 Guest are viewing this topic.
//Incluimos las librerías mencionadas.#include <ESP8266WiFi.h>#include <Adafruit_MQTT.h>#include <Adafruit_MQTT_Client.h>// Conectamos a nuestro WiFiWiFiClient client;#define SSID_WIFI "Tu_SSID"#define PASS_WIFI "Tu_Password"//Conexión con Adafruit IO#define servidor "io.adafruit.com"#define puerto 1883#define usuario "Usuario"#define API_KEY "contraseña por la API"Adafruit_MQTT_Client mqtt(&client, servidor, puerto, usuario, API_KEY);//Configurar el feed de Adafruit//acá hacemos la petición a nuestro feed.Adafruit_MQTT_Subscribe lights = Adafruit_MQTT_Subscribe(&mqtt, usuario "/feeds/lights"); //Definimos la salida que va a tener el rele para poder conectar una lámpara.const int rele = 5;void setup() { Serial.begin(115200); pinMode(rele,OUTPUT); digitalWrite(rele, LOW); delay(10); // Conectarse a la red WiFi Serial.println(); Serial.println(); Serial.print("Conectando a "); Serial.println(SSID_WIFI); WiFi.begin(SSID_WIFI, PASS_WIFI); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.println("WiFi Conectado"); // Adafruit IO mqtt.subscribe(&lights); // Conectarse a Adafruit IO //Acá hacemos que conecte y si no es posible lo renitente cada 5 seg" int8_t ret; if (!mqtt.connected()) { Serial.print("Conectando a AdafruitIO"); uint8_t intentos = 3; while ((ret = mqtt.connect()) != 0) { Serial.println(mqtt.connectErrorString(ret)); Serial.println("Intentando en 5 segundos"); mqtt.disconnect(); delay(5000); intentos--; if (intentos == 0) { while (1); } } Serial.println("\nConectado!"); }}void loop() { //Espera recibir un mensaje que la conexión a MQTT Adafruit_MQTT_Subscribe *subscription; while ((subscription = mqtt.readSubscription(1000))) { //Comprobar si el mensaje es para el lights if (subscription == &lights) { //Comprobar el mensaje if (strcmp((char *)lights.lastread, "1") == 0){ //el valor que guardamos en IFTTT es el que vamos a analizar y comparar para que esto suceda//si es 1 se va a encender y si es 0 apaga digitalWrite(rele, HIGH); //Encendemos el rele Serial.println("\nLuz Encendida"); } else if (strcmp((char *)lights.lastread, "0") == 0){ digitalWrite(rele, LOW); //Apagamos el Rele Serial.println("\nLuz Apagada!"); } } }}