Guía práctica para combinar ESP con IFTTT

- Categorías : Otras novedades , Productos

¿Qué es IFTTT?

Connected

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”.

IFTTT

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

Alexa_Amazon_IFTTT

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:

IFTTT_platform

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".

Recpie_iftttt

 

 

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.

turn_off_wifi

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.

Webhooks

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:

Sparkfun_espSparkfun_right

Puerta cerrada                                                                                   Puerta abierta

 

-          NodeMCU V3:

ESP_lftnodemcu

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.

 

 

Add_if_this_than

 

A continuación, buscamos “Webhooks” y al seleccionarla le daremos después a “Receive a web request”.

Choose_a_trigger

Clicamos en “Connect”:

Connect_a_service

Después nos indica que le demos un nombre a nuestro evento, por ejemplo ESP. Luego podremos cambiarlo. Una vez puesto, clicamos 'Create Trigger'.

Complete_trigger

Ya tenemos el If, vamos a darle a Add para añadir la acción.

 

create your own ifttt

 

Como queremos que nos envíe una notificación al correo, buscamos email y lo seleccionamos.

 

choose_a_Service

Seleccionamos la acción “Send me an email”.

send_me_an_email

Ahora podemos escribir tanto el asunto como el cuerpo del email, nos aparece por defecto:

send_an_email_ifttt

Por lo que cambiamos por ejemplo a:

event_name

Si continuamos, nos pide ya introducir la dirección de correo.

 

review_and_finish

Le damos a “finish” y veremos el “review” de nuestra applet, donde podemos cambiar el título.

 

if_maker_event

 

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.

Puerta_abierta

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”.

 

my_services

 

 

Entramos en Webhooks, y le damos a “Documentation”

 

Documentacion

 

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”.

webhooks_key

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.

 

Congratulatins

Si le damos a Test it también.

Event_has_been_triggered

 

Al correo nos llegará el mensaje con el asunto y el texto descrito:

Puerta_abierta

 

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

Thingspeak_channel

 

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).

Detector_puerta

 

5.       Crear acciones ThingSpeak ThingHTTP

 

Después de esto, debemos crear nuestra acción, para ello entramos en Apps y seleccionamos “ThingHTTP”.

 

Thingspeak

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!"}

 

 Thingspeak

Ahora ya puedes clicar en Save ThingHTTP para guardarlo.

 

6.       Crear la aplicación ThingSpeak React

 

Regresa a Apps y selecciona ahora “React”.

Thingspeak_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:

 

Puerta_react

 

Guárdala y nos quedaría así: 

new_react  

 

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

 

Sketch

Preferencias

Después, buscamos e instalamos las librerías. Para ello vamos a “Herramientas>Placa: >Gestor de tarjetas”

Herramientas

 

En el gestor buscamos “esp8266” e instalamos la siguiente librería:

gestor_de_librerias

 

También instalamos la librería ThingSpeak:

libreria_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”.

 

Wifi_channels

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”.

nodemcu 

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.

 

el_event

 

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/

 

 

Share