Existen múltiples plataformas que permiten conectar todo un sistema IoT, recogiendo datos desde los dispositivos conectados, almacenándolos y analizándolos en tiempo real. Entre algunas de estas plataformas tenemos la plataforma Adafruit IO, desarrollada y mantenida por la conocida empresa Adafruit Industries.

Con esta plataforma podremos agregar, almacenar y visualizar datos en tiempo real en la nube desde dispositivos IoT conectados. También nos permitirá interactuar con los dispositivos desde paneles de control (dashboards) basados en la web. Es compatible con dispositivos como Arduino, Raspberry Pi y ESP8266 entre otros. Puede trabajar con APIs REST y MQTT. La versión gratuita permite el envío de 30 datos por minuto, almacenar los datos por 30 días, disparos de alarma o triggers cada 15 minutos, mantener hasta 5 paneles con 10 campos o feeds por panel.

Como suele ser habitual en estos casos, lo primero es crear una cuenta en la página https://io.adafruit.com y usar la opción “Get Started for Free”. Aparecerá el clásico cuestionario en el que debemos indicar el nombre (FIRST NAME), apellido (LAST NAME), email, nombre de usuario (USERNAME) y la clave que desemos (PASSWORD). El Username es público y visible en Adafruit IO, Forums, etc. Para finalizar la creación de la cuenta debemos pulsar CREATE ACCOUNT. En unos minutos nos enviarán un email de bienvenida y listo, ya podemos empezar.

Posteriormente, cada vez que queramos entrar en nuestra cuenta, bastará con que indiquemos nuestro email o nombre de usuario, y la password.

Cada vez que entremos en nuestra cuenta de Adafruit IO veremos un breve resumen de los paneles de trabajo o Dashboards que tengamos (máximo 5 en la versión gratuita). En la imagen aparece un ejemplo en el que se señala las opciones que nos permiten ver el perfil (“Profile”) y la clave o (“My key”) que Adafruit IO nos ha asignado.

Con la opción “Profile” podemos ver las características de la cuenta actual, nuestros Dashboards y Feeds públicos, actividades realizadas, etc. También nos brinda la posibilidad de actualizar a la versión de pago mediante el botón «Upgrade to IO».

Con la opción “My Key” Adafruit IO nos muestra el nombre de usuario y la clave que se nos asigna. Esa clave tiene especial importancia porque la debemos añadir en todos nuestros códigos o programas de aplicación. Por si lo viéramos necesario, disponemos del botón REGENERATE KEY que nos permitiría cambiarla.

 

LOS “FEEDS” O CAMPOS

Los Feeds son algo así como las variables que forman el nexo de unión para la transferencia de datos entre el dispositivo IoT y la propia plataforma. En la versión gratuita disponemos de un máximo de 10 Feeds diferentes, que es tanto como decir que podemos hacer transferencias de hasta 10 datos diferentes entre uno o varios dispositivos IoT. En la imagen podemos ver los 10 Feeds que hemos utilizado en los ejemplos.

Mediante “view all” se visualiza un listado de todos los Feds con el nombre y la clave o “key” de cada uno de ellos, así como su último valor y la antigüedad del mismo.

Al hacer clic sobre el nombre de cualquiera de ellos, podemos ver y editar sus características: info, privacidad, sharing o intercambio, historial del feed, etc. Por otra parte, si activamos la casilla que hay a la izquierda del nombre de cada Feed, se nos brinda la posibilidad de deshabilitar el Feed e incluso de borrarlo.

LOS DASHBOARDS O PANELES DE TRABAJO

En Adafruit IO se conoce como “Dashboard” lo más parecido a un panel de trabajo. Sobre el Dashboard iremos colocando los bloques o “widgets” que conforman nuestro proyecto, y que servirán para transferir información entre la plataforma Adafruit IO y el dispositivo IoT. En la versión gratuita hay un máximo de 5 Dashboards o paneles diferentes. En la imagen podemos ver los paneles que hemos creado para los ejemplos que más adelante explicaremos.

 

Si activamos la casilla que hay a la izquierda del nombre de cada Dashboard, podremos editar el nombre, la clave y la descripción del mismo mediante el botón Edit Dashboard. Mediante Delete Dashboard también lo podemos borrar.

Al hacer clic sobre su nombre veremos el panel al completo, con todos los bloques o widgets que hayamos empleado en el proyecto. En la imagen podemos ver el panel o Dashboard del proyecto “Luz ambiente”. Se trata de un dispositivo IoT dotado de un sensor de luz a base de una célula LDR que transmite a la plataforma su valor, la tensión analógica que produce y la resistencia interna que presenta. Ya lo veremos, pues será nuestro primer ejemplo de este tema.

En el panel o Dashboard hemos empleado 7 bloques o widgets diferentes para representar los resultados enviados por el dispositivo IoT remoto a través de internet:

1. Bloque del tipo gráfico que muestra la evolución del valor de un sensor LDR.
2. Bloque del tipo indicador luminoso. Se activa cuando el valor de la LDR esté por debajo de un determinado umbral.
3. Bloque del tipo texto que representa el último valor numérico de la célula LDR.
4. Bloque gráfico que muestra la evolución de la tensión Vo en el sensor LDR.
5. Bloque tipo instrumento analógico para mostrar el valor de la tensión Vo.
6. Bloque gráfico para representar la evolución de la resistencia interna de la LDR.
7. Bloque de texto para mostrar numéricamente el último valor recibido de la resistencia interna de la célula LDR.

Al hacer clic sobre el botón que hay en el ángulo superior derecho del panel o Dashboard podemos optar por una serie de opciones relativas a ese panel:

– Edit Layout. Permite editar la posición y características de cada uno de los bloques o widgets que hay en el panel.
– Create New Block. Permite añadir nuevos bloques o widgets al panel.
– View Fullscreen. Vista a pantalla completa del panel o Dashboard.
– Share Links. Permite copiar el enlace a este panel y poder así compartirlo.
– Dark Mode. Cambia el estilo o color del panel.
– Block Borders. Se visualizan o no los bordes de los bloques o widgets.
– Dashboard Privacy. El panel se hace público o privado.

LOS BLOQUES O WIDGETS

Con los bloques diseñamos nuestro panel o Dashboard con los que Adafruit IO se comunica con los dispositivos IoT enviándoles información o recibiéndola de ellos, a través de los campos o feeds. Para añadir bloques en el panel basta con seleccionar “Create New Block”.

Aparecerá una ventana con todos los widgets disponibles. De momento hay 16 diferentes:

1. Interruptor. Envía a un feed o campo dos valores distintos, que pueden ser numéricos o de texto, en función de la posición en que se encuentre,
2. Pulsador. Similar al interruptor. Al accionarlo envía un valor y al soltarlo envía otro.
3. Slider deslizante. Envía a un feed o campo un valor numérico comprendido entre un mínimo y un máximo según la posición a la que lo llevemos.
4. Indicador analógico. Representa, entre un mínimo y un máximo, el valor numérico recibido desde un feed o campo.
5. Caja de texto. Sirve para enviar a un feed o recibir de éste un valor alfanumérico.
6. Stream. Muestra los datos alfanuméricos recibidos desde uno o varios feeds.
7. Image. Visualiza imágenes recibidas desde un dispositivo IoT dotado de cámara (p.e. Raspberry Pi).
8. Gráfico. Representa sobre una gráfica los valores que se van recibiendo de un feed o campo.
9. Selector de color (Picker). Permite seleccionar un color y enviar al feed el valor RGB en hexadecimal.
10. Mapa. Visualiza sobre el mapa la ubicación recibida en el campo o feed y que representa la latitud, longitud y altura.
11. Control remoto. Representa al mando de control remoto que comercializa Adafruit, y envía al feed el código de la tecla pulsada.
12. Icono. Permite representar el estado o valor de un campo o feed mediante un icono.
13. Indicador luminoso. Representa a una lámpara o led que se activa cuando el valor del feed o campo alcanza un determinado valor.
14. Teclado. Emula un teclado de 3×4. Envía al feed el código de la tecla pulsada.
15. Texto multilínea. Visualiza un texto de varias líneas recibido en un feed o campo.
16. Inspector. Permite crear un bloque con los enlaces a otros paneles o Dashboards.

Cada uno de los bloques o widgets que empleamos en nuestro panel o Dashboard debe de estar relacionado con un campo o feed y tiene su propia configuración para adaptarlo a las necesidades de cada caso.

Para editarlos basta con seleccionar “Edit Layout” en el Dashboard; entonces todos los bloques o widgets del panel se mostrarán con un pequeño engranaje en el ángulo superior derecho de cada uno de ellos. Estaremos en el modo edición, que finaliza con los botones Cancel o Save Layout tras hacer los ajustes que veamos oportunos.

A modo de ejemplo vamos a editar el indicador luminoso haciendo clic en su engranaje y seleccionando la opción “Edit Block”. En cualquier caso debemos recordar que cada bloque o widget tiene sus propios parámetros de configuración.

En una primera ventana debemos indicar el feed o campo al que ese bloque o widget quedará asociado. En el ejemplo “valorLDR”.

El dispositivo IoT remoto deberá transmitir un feed con el mismo nombre y un valor. En este caso se supone que será el valor capturado por un sensor de luz del tipo LDR.

Algunos bloques se pueden asociar a varios feeds y otros solo sólo puede estar asociado únicamente a uno. Sin embargo, un mismo feed, se puede asociar a diferentes bloques o widgets.

Al pulsar “Next step >” pasamos a la siguiente ventana para terminar con la configuración del bloque. En este caso, el indicador luminoso tiene pocos parámetros.

– Block Title. Para poner un título o nombre al propio bloque, “Poca iluminación” en este ejemplo.
– On Color. Permite seleccionar el color del indicador cuando se active.
– Off Color. Permite seleccionar el color del indicador cuando se desactive.
– Conditions. Aquí establecemos la condición que se debe de dar para que el indicador se ilumine o no. Precisamente esta condición viene dada en función del feed al que lo habíamos asociado, “valorLDR”. En el ejemplo estamos estableciendo que el indicador se ilumina si “valorLDR” es menor de 300.
– Test Value. Aquí podemos introducir diferentes valores de prueba para ver la reacción del indicador.
– Update block. Actualiza el bloque con la nueva configuración.

LOS “TRIGGERS” O DISPARO DE ALARMAS

Es una opción muy interesante, sobre todo en las versiones de pago de Adafruit IO. Cuando se produce un determinado evento, puede desencadenar una de estas acciones:

  • Publicar un mensaje en uno de los feeds, y por lo tanto en los bloques o widgets que estuvieran asociados a él.
  • Enviar un correo electrónico (solo en la versión de pago).
  • Enviar un mensaje webhook o notificación a la URL que indiquemos.

Mediante “view all” podemos visualizar todos los triggers o alarmas programadas, dos en el ejemplo de la imagen.

Al hacer clic sobre el ID de cualquiera de ellas, podemos ver su configuración actual. Con «New Trigger» podemos crear una nueva alarma y, activando la casilla de la izquierda, podemos editarla, activarla/desactivarla o borrarla.

Los triggers o alarmas pueden ser de dos tipos: Reactivas o Temporales (Schedule).

En la imagen de la derecha vemos una alarma Reactiva que se produce cuando el feed “valorLDR” es menor que 100. Desencadena la publicación del mensaje “Estoy a oscuras” sobre el mismo feed “valorLDR”.

En esta otra imagen de abajo tenemos una alarma temporal (Schedule). Publica el mensaje “ok” sobre el feed “tensionLDR” cada 30 minutos. Podemos seleccionar entre minutos, horas, días, semanas, meses y años.

LO ÚLTIMO: DISPOSITIVOS WIPPERSNAPPER

Recientemente Adafruit IO ha añadido una nueva funcionalidad conocida como “WipperSnapper”. Se encuentra en fase Beta así que todavía su funcionamiento no es definitivo.

Aseguran que se trata de una interface con Adafruit IO fácil de usar y que permite convertir cualquier tarjeta controladora con capacidad WiFi en un dispositivo IoT sin necesidad de escribir una sola línea de programa. Más información en:

https://learn.adafruit.com/quickstart-adafruit-io-wippersnapper

De momento está listo para trabajar con las siguientes tarjetas comercializadas por Adafruit Industries: FunHouse, Metro ESP32-S2, MagTag, HUZZAH32, Metro M4 Express AirLift y PyPortal.

Para terminar, debemos decir que Adafruit IO es, en el fondo, un servicio de mensajería que emplea el protocolo MQTT con un esquema de publicador/suscriptor y un Broker que acepta los mensajes publicados por el cliente y los difunde entre los clientes suscritos. Haciendo un resumen diremos que, cuando un dispositivo IoT envía un mensaje a un feed o campo de Adafruit IO, está publicando. Cuando un dispositivo IoT recibe un mensaje desde un feed de Adafruit IO se dice que está suscrito.

 


Este tutorial forma parte del contenido del curso tutorizado y en línea Internet de las Cosas organizado por el Campus Tecnológico e impartido por MK Electrónica.