¿Qué es un sensor?
Los sensores son dispositivos que tienen la capacidad de detectar una acción o estímulo externo y transmitirlo adecuadamente. En IoT existen cientos de tipos de sensores que podemos utilizar para medir ciertos parámetros del entorno como temperatura, humedad o detectar movimiento y transmitirlos usando internet. Es decir, uno puede tener un sensor de temperatura en una parte del mundo y estar monitoreando las mediciones a miles de kilómetros de distancia.
A los fines prácticos voy a contarles como armar un dispositivo IoT multisensor custom y cómo conectarlo a internet para transmitir a HA datos de temperatura, humedad y detectar movimiento en una habitación de mi casa en tiempo real.
Dispositivo Iot multisensor custom
Para construir un dispositivo IoT multisensor custom se necesitan varios componentes electrónicos: al menos un componente especifico que nos de la lectura de la temperatura, la humedad y otro componente que detecte el movimiento. Además, algo que lo procese y que tenga la capacidad de enviar esa información a Home Assitant via wifi. Para todo esto utilice una placa de desarrollo NODE MCU.
¿Qué son las placas de desarrollo para IoT ?
Ejemplos de placas de desarrollo o KITs
Las placas de desarrollo para IoT son placas electrónicas que ya tienen incorporada en su arquitectura ciertas capacidades que nos permiten que el desarrollo de dispositivos IoT sea más fácil. Estas placas nos ponen a disposición capacidades como procesamiento de datos, memoria, capacidad de conectarse por wifi a internet y tienen un puerto USB por donde podemos alimentarla y conectarla a una PC/MAC para el código fuente que será el encargado de controlar la placa y los dispositivos que conectemos a ella. También disponen de pines entrada y pines de salida que nos sirven para conectar diversos componentes electrónicos y leer sus estados o controlarlos.
NODE MCU
NodeMCU es una de las placas de desarrollo de IoT más usadas ya que las mismas son de bajo costo y una alta prestación de funcionalidades. Existen diferentes modelos de varias marcas con características y funcionalidades diferentes dependiendo del SoC o microcontrolador que utilizan, como pueden ser la familia de los ESP8266 o ESP32.
Ejemplo NODE MCU
Dentro de las características de Node MCU se encuentran:
- Conversor Serie-USB para poder programar y alimentar a través del USB
- Fácil acceso a los pines
- Pines de alimentación para sensores y componentes
LEDs para indicar estado - Botón de reset
NODE MCU V3 Pinout
Dispositivo IoT multisensor custom
Nuestro sensor custom consta de los siguientes componentes:
- NODE MCU
- Sensor de temperatura y humedad DHT11
- Sensor de movimiento PIR
- Pantalla OLED
Componentes electrónicos usados
A continuación, les voy a mostrar un ejemplo del cableado de un sensor DHT11 para medir temperatura y humedad ambiente.
Ejemplo de cableado de un sensor DHT11 y NODE MCU para medir temperatura y humedad
Utilizo solo el ejemplo del DHT11 y no del PIR o la pantalla OLED porque es tan sencillo como se ve en la imagen anterior. Se pueden conectar todos los sensores que quieran a NODE MCU siempre que se respete la alimentación de cada uno de ellos y el Data Pin del sensor que va conectado a los pines Dx de la NODE MCU. Aquí pueden encontrar infinidad de proyectos DYI con NODE MCU y animarse a desarrollar su propio dispositivo.
El dispositivo cableado y funcionando se ve así:
Dispositivo Iot multisensor custom (temperatura,humedad, movimiento)
Conectando nuestro dispositivo Iot a internet
Como vimos en los párrafos anteriores, ya tenemos nociones de hardware de un dispositivo IoT. Sabemos qué placa podemos usar y cómo podemos hacer el cableado a ella de un sensor de temperatura y humedad. ¿Qué nos falta ahora para que la placa informe los datos a algún lugar donde podamos almacenarlos y visualizarlo? El próximo paso es desarrollar y subir a nuestra placa NODE MCU el código fuente que hará que la placa lea constantemente las mediciones del sensor de temperatura y humedad y que las envíe a algun servidor los datos usando internet.
Código fuente
Las placas NODE MCU se programan utilizando el IDE de Arduino y usan un lenguaje de programación llamado LUA. Existe actualmente la posibilidad de programar estas placas usando Python y en este video está muy bien explicado. No voy a extenderme mucho más en este punto porque es para un post separado. Lo importante aquí es que para llevar adelante cualquier ejemplo les recomiendo tener instalado el IDE de Arduino y utilizar LUA.
Enviando las mediciones Adafruit
Conocemos a Adafruit porque es la empresa que fabrica las placas Arduino y tiene una plataforma dónde nos permite que nuestros dispositivos Iot custom puedan enviar información. Por ejemplo, si estamos midiendo temperatura nuestro dispositivo (más adelante vamos a ver el código fuente) usando MQTT puede enviar esos datos a la plataforma de Adafruit. Allí se almacena la información y se puede optar por visualizarla en tableros personalizables. También se puede optar por configurar alarmas o disparar acciones en otras plataformas (realmente es muy completa).
Si quieren saber un poco más acerca de MQTT pueden leer este post dónde está muy bien explicado y en detalle.
io.adafruit.com
Para usar Adafruit es necesario que te des de alta una cuenta en la plataforma. Cuando tengas una cuenta lo más importante que para comunicarte vas a necesitar tener tu usuario y tu key. Luego, es necesario que crees un feed. Adrafruit básicamente actua como un broker MQTT y tu NODE MCU es la que se encarga de publicar los datos en el feed.
Aquí abajo te dejo un snapshot del código fuente que necesitás para comunicar tu NODE MCU y ADAFRUIT para que veas lo sencillo que es.
Y en este repo tienen el archivo .ino listo para usar con el IDE de Arduino en donde tendremos que tener conectada nuestra NODE MCU a la PC por USB para subir nuestro código. Aquí hay un excelente tutorial que indica cómo hacerlo.
Código fuente para enviar información desde una NODE MCU a 3 feeds de Adafruit.
Algunas consideraciones de este código fuente.
El mismo corresponde a una placa NODE MCU que tiene conectados dos sensores, uno de movimiento (PIR) y otro de temperatura y humedad (DHT).
El PIR está conectado al PIN GPIO 13 y el DHT al PIN GPIO 2 de la placa. Si conectan los sensores a otros PINES deberán cambiarlo en el código fuente para indicar los pines donde están los sensores. Por otro lado, y como la placa necesita conectarse a internet para comunicarse con Adafruit, es necesario que también tenga acceso a internet usando el wifi. En la línea 37 de la imagen de arriba deben ingresar las credenciales de la red wifi que vaya a utilizar el dispositivo.
Aquí les dejo une ejemplo del tablero del sensor que tengo en una parte de mi casa:
Tablero de Adafruit para el sensor IoT custom.
Home Assistant
Como vimos anteriormente, ya conectamos nuestra placa NODE MCU usando una conexión wifi y enviamos los datos de los sensores a la plataforma Adafruit para que podamos registrarlos y visualizarlos.
¿Pero qué pasa si quiero que esos datos vayan a mi Home Assistant y no a Adafruit?
Bueno, para eso existe una excelente alternativa que nos facilita mucho la tarea y donde no hace falta que desarrollemos nada.
ESPHome es un add-on de Home Assistant que utilizando solo archivos de configuración genera el código fuente que necesitan las NODE MCU para conectarse a Home Assistant:
Agregando ESPHome a Home Assistan
En la primera configuración de la NODE MCU tendrá que estar conectada vía USB a la PC donde esté corriendo HA. Pero luego de la primera configuración la placa quedará lista para recibir actualizaciones over the air (OTA). Entonces, si quisiéramos enviar nuevas configuraciones a nuestros dispositivos IoT que se encuentren dentro de nuestra red wifi se pueden enviar vía wifi y sin necesidad de volver a conectar físicamente el dispositivo.
Aquí les dejo la configuración (se hace en archivos YAML) para conectar un sensor del tipo binario (como el PIR). Como verán es mucho más fácil y no es necesario saber programar para hacerlo, solo con esto alcanza para que el sensor se conecte a nuestro Home Assistant:
Configuración para conectar un sensor usando ESPHome.
Finalmente, en Home Assistant los sensores y sus mediciones se ven así:
Home Assistant mostrando info de los sensores configurados con ESPHome
¿Por qué es importante poder conectar a Home Assistant tus dispositivos IoT custom?
La respuesta es porque es el corazón de una de las funcionalidades más interesantes de Home Assistant que es la de hacer scripts de automatización. Esos scripts tienen la capacidad de leer la información que envían los sensores y de ejecutar acciones en base a esas mediciones. Volvamos por un momento al ejemplo del aire acondicionado: si el clima del living se dispara a mas de 27 grados se puede tener un script que active el AC automáticamente. Entonces, aquí lo que debemos pensar es en la cantidad de posibilidades que tenemos. Los sensores son nuestros “sentidos” en nuestro ecosistema IoT. Por ejemplo podemos diseñar nuestros sensores custom que monitoreen otro tipo de parámetros ambientales y disparen acciones en invernaderos, datacenters y la lista es casi infinita, tal como lo es el mundo del IoT.
En el próximo artículo veremos cómo instalar Home Assistan en un cluster de Kubernetes montado sobre Raspberry Pi.
¡Hasta el próximo artículo!



Diego Genise,
Solution Architect



Diego Genise,