Publicado : 10/10/2020 Guía práctica para combinar ESP con IFTTT - Categorías : Otras novedades , Productos ¿Qué es IFTTT? IFTTT son las siglas en inglés de “If This, Then That”, cuya traducción es “Si esto, entonces aquello”, lo cual nos da una idea de su utilidad. En español se conoce como SIEEE, Si (ocurre) esto, entonces (haz) aquello. IFTTT es un servicio web que sirve de herramienta gratuita para conectar dos servicios o dispositivos. Con su ayuda, tenemos la oportunidad de conectar nuestro propio proyecto con servicios como Google Assistant, Amazon Alexa, Facebook, Twitter o Dropbox, y esto es solo una fracción de las posibilidades. Puedes conectarte directamente con más de 600 marcas. Usar IFTTT es muy simple y no requiere (casi) habilidades de programación. Este tipo de servicio web permite crear y programar acciones (llamadas recetas o Applets) para automatizar diferentes tareas y acciones en Internet, desde su sitio web y también desde su aplicación móvil, como por ejemplo, subir a Twitter la misma foto que se publicó en Facebook, Telegram o Instagram. Están fundamentadas en la automatización de acciones en las redes sociales y otras áreas de la web, incrementando la productividad del usuario y estrictamente hablando de las redes sociales ayuda a incrementar la presencia. De este modo puedes crear lo que llaman “applets” propias, o puedes usar las miles existentes creadas por otros usuarios o marcas para llevar a cabo tus “recetas”. Básicamente, esta plataforma web hace de intermediario entre sus más de 600 servicios asociados para poder combinarlos con acciones y automatismos. Sus características principales son: · Comunicación entre servicios web. · Compatibilidad con iOS y Android. · Incrementa la velocidad de productividad. Debido a sus características, sus principales usos son, como ya hemos avanzado algunos, los siguientes: · IFTTT (con dispositivos compatibles asociados previamente) es usado en un amplio rango de automatización de dispositivos domésticos, por ejemplo, encender luces si detecta movimiento en una habitación, así como la conectividad con asistentes por voz. · Los profesionales en mercadeo pueden seguir las menciones que les interesen en canales de noticias RSS. · También puede automatizar la publicación del mismo contenido a través de diferentes redes sociales Puedes usar esta herramienta tanto para tu empresa, proyectos como para tu día a día. Puede entre muchas cosas notificarte que cojas el paraguas si va a llover, guardarte en un Google Sheets tus canciones que marques como favorito en Spotify, etc. Esta plataforma tiene también una enorme capacidad en el mundo IoT, siendo un vínculo perfecto entre máquinas y servicios web. Nociones básicas en IFTTT Desde la web y la app es muy sencillo de usar e intuitivo, el único problema es que está exclusivamente en inglés. Para utilizar los beneficios de IFTTT, lo primero que debemos hacer es crear una cuenta (también podemos usar una cuenta de Google o Facebook). Si nos registramos en la web, a continuación, vamos a “Platform” dentro de tu perfil: A continuación, le damos a “Get Started” y recibiremos un correo con información. Básicamente nos vienen a decir lo siguiente: Como usuario de la plataforma, tendrás acceso a un ecosistema de más de 600 servicios de clase mundial, miles de desarrolladores activos y millones de consumidores. También podrás obtener información valiosa sobre cómo las personas se conectan y utilizan sus productos para que puedas personalizar aún más tus experiencias. Para construir el mejor servicio posible en IFTTT, debes acostumbrarte a la terminología IFTTT. Si aún no lo ha hecho, te proporcionan una descripción general rápida para ayudarte a comenzar. Terminología: · Trigger: Piensa en los triggers (desencadenantes) como eventos en su servicio. Algunos triggers de ejemplo son "Cualquier publicación nueva" o "Nueva foto agregada al álbum" o "Cualquier movimiento nuevo". · Trigger Fields: Como su nombre indica, estos “campos de disparo” permiten a los usuarios introducir filtros o modificadores para un activador determinado. Por ejemplo, cuando un usuario selecciona el activador "Nueva foto agregada al álbum", se le pedirá el nombre del álbum. · Ingredientes: Los atributos emitidos por un trigger determinado se denominan ingredientes. Para el trigger "Nueva foto agregada al álbum", habría ingredientes para "PhotoURL" y "TakenAt". · Queries (Consultas): Una consulta proporciona una forma de solicitar datos adicionales que un trigger no incluye. Por ejemplo, cuando ocurre el trigger del servicio Google Calendar "Nuevo evento agregado", es posible que necesite información sobre los asistentes al evento. La consulta "Lista de asistentes" devuelve los datos deseados. · Query Fields (Campos de consulta): Los campos de consulta son como campos de formulario y, a menudo, se rellenan con ingredientes de un trigger. Por ejemplo, la consulta "Lista de asistentes" contiene campos para "Identificación de calendario" e "Identificación de evento". · Actions: Por el contrario, piense en las acciones como enviar datos o crear recursos en su servicio. Algunas acciones de ejemplo son "Crear publicación" o "Subir foto" o "Encender luces". · Action Fields: Al crear un Applet, el usuario reúne estos ingredientes en los campos de acción de la acción. Los campos de acción son como campos de formulario. Para la acción "Crear publicación", habría un campo de acción para "Título" y otro para "Cuerpo de la publicación". La primera prueba IFTTT práctica Como hemos visto, hay infinidad de “recetas” posibles, como por ejemplo un applet que te apague el WiFi cuando estés fuera de casa para ahorrar energía. Ahora bien, ¿cómo es posible que captemos algo del mundo físico, como por ejemplo pulsar un botón, y lo traducimos a una acción en el mundo virtual? La calve de esto se basa en los servicios web, lo cual relaciona estos dos mundos. Los servicios web o API web son una interfaz software que permite la comunicación entre diferentes sistemas, pudiendo acceder a bases de datos, servicios, herramientas, etc… a través de URLs. El servicio Maker de IFTTT funciona de este modo también, recolectando los datos en páginas PHP. A través de URLs lazaremos eventos que ejecutarán acciones, como por ejemplo guardar la temperatura recogida, enviar un tweet, encender una luz o lo que sea. Para usar completamente las posibilidades de IFTTT debemos conocer Webhooks. Los webhooks aportan una solución sencilla para el intercambio de datos entre aplicaciones web de uso diario, o incluso entre nuestro sitio web y esas aplicaciones. Este es un método que permite comunicar en tiempo real, a través de HTTP, dos aplicaciones o servicios web, de forma sencilla y sin necesidad de infraestructura extra, cuando se cumplan ciertos criterios. En muchos casos el mismo servicio que nos da un webhook podríamos lograrlo con una API y, posiblemente, sea una solución más flexible, estable e independiente. Pero en otros muchos casos sea por la poca dimensión del proyecto, la complejidad de hacerlo o el conocimiento técnico requerido, no resulta viable. Entonces un webhook podría resultar una solución más asequible. EJEMPLO PUERTA ABIERTA CON ESP8266 Vamos a crear un applet que nos notifique por correo electrónico cuando se abra la puerta, la cual simularemos con un circuito haciendo uso de una placa de desarrollo. Pondremos dos ejemplos, usando la placa SparkFun ESP8266 Thing - Dev y la placa NodeMcu V3 Lua ESP8266 ESP-12E CH340. Para ello, simularemos uno de los numerosos sensores de detección de puerta abierta existentes en el mercado, llevando un pin de nuestra placa a tierra o a 3,3V. Esta última simulará que este el circuito cerrado, por lo tanto, la puerta cerrada y, cuando se abra, llevaremos el cable a tierra. En medio por seguridad pondremos una resistencia de 10K. 1. Montamos el circuito: El cable amarillo representa el sensor, si lo dispones puedes probarlo con él, si no, simplemente lo simulamos del siguiente modo desde el pin GPIO4 en cada una de las placas. Las configuraciones son las siguientes: - SparkFun Thing – Dev Board: Puerta cerrada Puerta abierta - NodeMCU V3: Puerta cerrada Puerta abierta 2. Creación de la Applet A continuación, entramos en la web de IFTTT, y vamos a Create>Applets. Nos mostrará la siguiente pantalla, donde le daremos a Add. A continuación, buscamos “Webhooks” y al seleccionarla le daremos después a “Receive a web request”. Clicamos en “Connect”: Después nos indica que le demos un nombre a nuestro evento, por ejemplo ESP. Luego podremos cambiarlo. Una vez puesto, clicamos 'Create Trigger'. Ya tenemos el If, vamos a darle a Add para añadir la acción. Como queremos que nos envíe una notificación al correo, buscamos email y lo seleccionamos. Seleccionamos la acción “Send me an email”. Ahora podemos escribir tanto el asunto como el cuerpo del email, nos aparece por defecto: Por lo que cambiamos por ejemplo a: Si continuamos, nos pide ya introducir la dirección de correo. Le damos a “finish” y veremos el “review” de nuestra applet, donde podemos cambiar el título. Si cambiamos de opinión siempre podemos cambiarlo, para ello vamos a “settings“ y modificamos el campo requerido, por ejemplo, vamos a cambiar el evento por “puerta_abierta”y el Body, que será el mensaje a entregar por email. 3. Clave (key) Webhooks Una vez creada la Applet, vamos a ver la clave personal que hará que podamos comunicarnos exclusivamente con ella y con seguridad entre nuestras aplicaciones. Para ello vamos en nuestro perfil al apartado “My services”. Entramos en Webhooks, y le damos a “Documentation” Nuestra clave será ese conjunto de letras y números. Desde aquí podemos copiar tanto la clave (key), como la dirección para como indica ahí, “lanzar un evento”. Si copiamos esa dirección en el navegador, veremos como nos muestra en la ventana el mensaje diciendo que el evento ha ocurrido, así como nos llegará un email confirmándolo. Si le damos a Test it también. Al correo nos llegará el mensaje con el asunto y el texto descrito: 4. Creación canal ThingSpeak A continuación, deberemos crear un enlace entre nuestra placa y la web. Para ello vamos a usar ThingSpeak. Dirígete a thingspeak.com, y regístrate de manera gratuita. Una vez logeado, selecciona “Mis canales” y crea un nuevo canal con los siguientes parámetros: Nombre: Detector puerta Descripción: La que quieras Campo 1: Puerta Guarda el canal y se te presentará el panel de control de este canal. Copia la ID del canal (que se muestra como “Channel ID” a continuación). 5. Crear acciones ThingSpeak ThingHTTP Después de esto, debemos crear nuestra acción, para ello entramos en Apps y seleccionamos “ThingHTTP”. Esto nos permitirá crear una solicitud HTTP personalizada para activar uno de nuestros subprogramas IFTTT. Haz clic en “New ThingHTTP “y completa los campos con lo siguiente (asegúrate de reemplazar \ <IFTTT_SECRET_KEY> con tu clave de canal de webhooks IFTTT única): Nombre: Sensor Puerta A URL: https: //maker.ifttt.com/trigger/Puerta/with/key/ \ <IFTTT_SECRET_KEY> Método: POST Tipo de contenido: application/json Cuerpo: {"value1": "¡La puerta se ha abierto!"} Ahora ya puedes clicar en Save ThingHTTP para guardarlo. 6. Crear la aplicación ThingSpeak React Regresa a Apps y selecciona ahora “React”. Haz clic en New React. Usaremos las aplicaciones React para activar nuestra aplicación ThingHTTP cada vez que se publiquen datos en cada uno de los campos de nuestro canal, en nuestro caso en “Puerta”. ThingHTTP activará nuestro subprograma IFTTT personalizado. Completa los siguientes parámetros para la aplicación React: Guárdala y nos quedaría así: 7. Código Arduino IDE Ahora que tenemos nuestros canales de datos y el subprograma IFTTT configurados, es hora de programar la placa de desarrollo ESP8266. Para ello vamos a programarlo en el Arduino IDE para que nos llegue la notificación cada vez que lo activamos en nuestra placa. Una vez tengamos todo lo anterior listo, vamos a instalarnos las librerías correspondientes. Como siempre en Arduino IDE, vamos a Archivo>Preferencias, y copiaremos la siguiente dirección en el Gestor de URLs Adicionales de tarjetas: http://arduino.esp8266.com/stable/package_esp8266com_indez.json Después, buscamos e instalamos las librerías. Para ello vamos a “Herramientas>Placa: >Gestor de tarjetas” En el gestor buscamos “esp8266” e instalamos la siguiente librería: También instalamos la librería ThingSpeak: En un nuevo sketch, copiamos el siguiente código, en el cual tendremos que cambiar el pin LED en función de la placa que usemos en Pin Definitions -> const int LED_PIN = X ; /* * PUERTA ABIERTA - Solectro Shop 2020 * basado en: IoT Kit - IoT Buttons * Author: Shawn Hymel (SparkFun Electronics) * Date: October 30, 2016 * * Conexión: * Puerto GPIO | Componente * -------------|---------------- * 4 | Resistencia */ #include #include "ThingSpeak.h" // WiFi and Channel parameters const char WIFI_SSID[] = ""; const char WIFI_PSK[] = ""; unsigned long CHANNEL_ID = ; const char * WRITE_API_KEY = ""; // Pin definitions const int BTN_A_PIN = 4; // const int LED_PIN = 5; // Para placa SparkFun 5, para NodeMCU 2 // Global variables WiFiClient client; int last_btn_a = HIGH; void setup() { // Set up LED for debugging pinMode(LED_PIN, OUTPUT); Serial.begin(115200); connectWiFi(); // Connect to WiFi ThingSpeak.begin(client); // Initialize connection to ThingSpeak } void loop() { int btn_a; int rnd; // Look for a falling edge on button A with debounce btn_a = digitalRead(BTN_A_PIN); if ( (btn_a == LOW) && (last_btn_a == HIGH) ) { digitalWrite(LED_PIN, LOW); ThingSpeak.writeField(CHANNEL_ID, 1, 1, WRITE_API_KEY); Serial.println("Puerta abierta"); if ( digitalRead(BTN_A_PIN) == LOW ) { digitalWrite(LED_PIN, HIGH); delay(30); } } last_btn_a = btn_a; } // Attempt to connect to WiFi void connectWiFi() { byte led_status = 0; // Set WiFi mode to station (client) WiFi.mode(WIFI_STA); // Initiate connection with SSID and PSK WiFi.begin(WIFI_SSID, WIFI_PSK); // Blink LED while we wait for WiFi connection while ( WiFi.status() != WL_CONNECTED ) { digitalWrite(LED_PIN, led_status); led_status ^= 0x01; delay(100); } // Turn LED off when we are connected digitalWrite(LED_PIN, HIGH); } Deberemos sustituir todos los campos con “< >”, por lo que debemos poner nuestra configuración del WiFi, poniendo el nombre (SSID) y la contraseña (PSK), así como la ID de ThingSpeak y la clave de la “WRITE API”, que puede encontrar yendo a su canal ThingSpeak y haciendo clic en la pestaña “API Keys”. P.Ej: const char WIFI_SSID[ ] = "miRed08"; Ahora, como siempre en Arduino, debemos configurar la placa que usamos, el puerto donde está conectado, y en el caso de NodeMCU, podemos seleccionar que LED queremos usar, nosotros hemos usado el “2”. Una vez configurado el puerto y la placa, le podemos dar a subir el código. A continuación, simulando la apertura de la puerta, abrimos el circuito llevando el cable de la resistencia a tierra, podemos ver como parpadea el LED azul de nuestra placa, y nos llega un email. Con esto ya tenemos todos los pasos a seguir para crear un Applet, parecen muchos, pero son muy intuitivos y puedes gestionar muchas aplicaciones distintas. Prueba a cambiar el tipo de notificación por un “tweet”, un SMS o una notificación en Android. 8. Conclusión Como has podido observar, la plataforma IFTTT ofrece un montón de posibilidades, y su versión gratuita permite la creación de hasta 3 applets propias. Puedes consultar infinidad de ejemplos en internet, desde usos sencillos como el ejemplo que hemos puesto, hasta conectar asistentes personales por voz, como por ejemplo en las siguientes webs: https://learn.sparkfun.com/tutorials/internet-of-things-experiment-guide/all https://www.makeuseof.com/tag/wifi-connected-button-esp8266-tutorial/ https://electronesblog.wordpress.com/2017/07/09/ifttt-arduino/ https://www.instructables.com/id/Control-Your-Projects-With-Google-Assistant-and-Ad/