NodeJS aplicado a la domótica con GH y GA
Comienza a formarte con este curso de NodeJS aplicado a la domótica en un sector con un enorme...

No necesitas gastar miles de euros para automatizar tu casa de forma avanzada. Home Assistant permite centralizar el control de tus dispositivos, crear rutinas inteligentes y mejorar tu confort. Aquí aprenderás a construir tu propio sistema domótico desde cero.
¿Es “Do it yourself!” tu lema de vida? ¿Quieres conocer en mayor medida Home Assistant? ¿Quieres encontrar un sistema de domótica en el que integrar dispositivos de más de mil marcas?
Si has dicho sí a algunas de estas preguntas quiero darte la bienvenida a este artículo. A continuación, hablaremos de domótica, de Home Assistant y de cómo podemos extender este sistema para que se adapte mejor a nosotros.
Además, veremos ejemplos de marcas, como Tapo, que han creado integraciones oficiales para hacer que sus dispositivos sean compatibles con Home Assistant y aprenderemos a emularles.
En resumen, vamos a ver cómo podemos extender Home Assistant para adaptar la domótica a nuestras necesidades en lugar de tener que adaptarnos nosotros a la domótica.
¡Manos a la domótica!
DIY (Do it yourself!) es un término que desde 1912 se asocia con la filosofía de mejorar tu propia casa a partir de materiales básicos y sin ayuda de expertos, aprendiendo y disfrutando en el proceso, reduciendo costes y personalizando el resultado final. Sin embargo, con los años ha surgido todo un movimiento ético y social basado en el DIY, en el que se promueve que todas y todos somos capaces de realizar una gran variedad de trabajos sin necesitar la ayuda de expertos.
Esta filosofía ha calado muy fuerte en el ámbito de la informática, la electrónica y la domótica, donde a partir de elementos básicos, herramientas open-source y nuestras habilidades de programación podemos crear herramientas personalizadas que nos faciliten la vida y hagan que nuestra casa sea más nuestra que nunca.
El primer paso para poder ampliar nuestro Home Assistant es preparar el entorno de desarrollo, para ello necesitaremos cumplir dos requisitos: tener instalado Home Assistant y poder acceder a los ficheros internos de Home Assistant.
Home Assistant es un sistema de domótica que se puede ejecutar de muchas maneras y en muchos dispositivos diferentes, de manera que siempre se adapta a las necesidades de los usuarios. Cada dispositivo tiene sus propios requisitos, pero de manera general se puede afirmar que se Home Assistant requiere de:
Home Assistant se puede instalar en multitud de dispositivos y de múltiples maneras, sin embargo, los métodos de instalación más frecuentes y los recomendados de manera oficial son los siguientes:
Arduino es una plataforma de desarrollo basada en una placa electrónica de hardware libre que incorpora un microcontrolador y una serie de pines para conectar el Arduino con otros dispositivos. Esto hace que Arduino sea una plataforma perfecta para controlar sensores y dispositivos electrónicos sin tener que recurrir a software propietario de grandes empresas.
Existe una gran cantidad de sensores y actuadores que se pueden controlar mediante Arduino, sin embargo, todos ellos tienen algo en común, el proceso para conectarlos siempre es el siguiente:
El método más sencillo para conectar nuestro Arduino con Home Assistant es utilizar el protocolo de comunicación MQTT. Concretamente lo que haremos será enviar toda la información recabada por nuestro Arduino a un servidor MQTT, el cual estará escuchando nuestra instancia de Home Assistant.
De esta manera toda la información recibida por nuestro Arduino también estará disponible en Home Assistant. Este proceso es muy sencillo de realizar con Home Assistant gracias al addon Mosquitto broker. Cuando añadimos dicho addon se crea automáticamente un broker mqtt en nuestra instancia de Home Assistant, de manera que no tenemos que preocuparnos por crear y controlar un servidor MQTT externo.
Home Assistant ofrece una gran cantidad variedad de formas de integración con múltiples lenguajes gracias a sus dos APIs principales, la API REST Home Assistant y la API WebSocket. Si bien estas dos API son agnósticas respecto al lenguaje de programación recomendamos utilizar Node.js ya que existe un proyecto open-source node-homeassistant que introduce la API REST Home Assistant como una librería fácil de usar, basada en promesas y adaptada a Node.js.
Utilizando Node.js y la librería node-homeassistant podemos crear scripts que interactúen con Home Assistant de manera sencilla y con todas. Dentro de esta librería queremos destacar dos componentes: el objeto base Home Assistant y la representación de sus estados.
Objeto Base: la librería hacer uso de un objeto base Home Assistant para representar nuestra instancia de Home Assistant. En el siguiente snippet de código podemos ver sus parámetros y un ejemplo.
const hass = new HomeAssistant({
host: "http://localhost" // dirección de nuestro Home Assistant
port: 8123, //puerto en el que se ejectura Home Assistant, por defecto 8123
token: "xxx-xxx-xxx-xxx" //token de seguridad de Home Assistant
)}
Estados: Representa los estados de los diferentes objetos de Home Assistant. Permite tanto recuperar el estado de los objetos como modificarlo.
//Ejemplo recuperar la temperatura medida por nuestro sensor
hass.states.get('sensor', 'temperature'); //El primer parámetro indica el dominio del sensor y el segundo indica la entidad en concreto
//Ejemplo para actualizar el estado de una entidad
hass.states.update('sensor', 'temperature', {
state: 80,
attributes: {
unit_of_measurement: '°F'
}
}); //Para actualizar el estado de una entidad los dos primeros parámetros vuelven a ser el dominio y la entidad objetivo, el tercer parámetro es un diccionario en el que se indica el nuevo valor y atributos opcionales, como es en este caso la unidad de medida
Para integrar el código desarrollado con Home Assistant solamente necesitamos obtener el token de seguridad de la API de Home Assistant. Para ello seguiremos los siguientes pasos:
Si te ha quedado alguna duda mira la siguiente imagen.
Python es el lenguaje propuesto por Home Assistant para crear nuevos componentes que utilizaremos en nuestras integraciones. Mediante nuevos componentes podemos integrar nuevos sensores y dispositivos, agruparlos para crear una superentidad o adaptar un dispositivo ya existente a nuestras necesidades.
A la hora de desarrollar nuevos componentes debemos tener en cuenta 4 aspectos claves:
Estructura del directorio: los nuevos componentes que desarrollemos deben estructurarse en nuevas integraciones, es decir, como paquetes que expanden las funcionalidades de Home Assistant. Concretamente el código se debe estructurar de la siguiente manera:
config/
└── custom_components/
└── mi_nuevo_componente/
├── __init__.py
├── sensor.py (o el tipo de plataforma que estés creando, ej. switch.py, light.py)
└── manifest.json
Las nuevas integraciones se deben guardar dentro de la carpeta custom_components la cual podemos encontrar en dentro de la carpeta config.
Fichero manifest.json: este es el archivo básico de todas las nuevas integraciones de Home Assistant. Recoge todos los metadatos asociados al proyecto, por ejemplo, recoge el nombre de los autores, el número de la versión, el nombre del proyecto, las dependencias y los requisitos.
Fichero init.py: al igual que con la mayoría de los frameworks de Python este fichero será el punto de inicio de nuestro código. En este fichero definiremos la lógica de inicialización y registraremos los nuevos componentes.
Ficheros de componentes: en estos ficheros implementaremos nuestros nuevos componentes, los cuáles generalmente serán entidades o dispositivos que heredarán de las clases básicas de Home Assistant y las expandirán con nuevos métodos que amplíen sus funcionalidades.
Es tan importante desarrollar nuevas funcionalidades como probarlas y evaluarlas. Para implementar y evaluar nuevos componentes recomendamos el siguiente flujo de trabajo:
Implementación de archivos clave: el primer paso a realizar consistirá en crear e implementar los tres archivos vistos previamente y siguiendo la estructura de carpetas presentadas. Es recomendable incluir logs a lo largo de nuestro código que nos permitan entender qué está pasando en cada momento.
Reinicio de Home Assistant: a continuación es necesario reiniciar Home Assistant para que los cambios ejecutados sobre el código se apliquen.
Configuración de componentes: a continuación deberemos configurar los componentes que hemos creado, ya sea a través de una integración tipo helper o a través del fichero configuration.yaml.
Pruebas exhaustivas: finalmente deberemos probar de manera exhaustiva nuestra integración, asegurando así que los nuevos componentes se comportan correctamente.
Home Assistant es un sistema extremadamente flexible capaz de utilizar una gran cantidad de protocolos de comunicación para conectarse e integrarse con una gran variedad de dispositivos. A continuación, veremos algunos de estos protocolos y cómo integrar dispositivos.
MQTT (Message Queuing Telemetry Transport) es un protocolo estándar diseñado para IoT (Internet of Things). Está basado en un modelo publicación/suscripción, lo cuál lo hace idóneo para cuando tenemos muchos sensores enviando información a intervalos de tiempo irregulares a Home Assistant. Además, tal y como hemos mencionado previamente, el uso de MQTT dentro de Home Assistant es muy sencillo gracias al addon Mosquitto broker, el cuál permite desplegar un servidor MQTT dentro de Home Assistant.
Además de MQTT hay muchos otros protocolos que también se puede utilizar con Home Assisant. Destacan:
La manera más sencilla de integrar nuevos dispositivos con Home Assitant es a través de alguna de las muchas integraciones oficiales y comunitarias disponibles. A continuación, vamos a repasar algunas de las más útiles:
Existen muchos casos prácticos en los que la domótica, y especialmente Home Assistant, nos facilitan el día a día y nos hacen estar más cómodos en nuestros hogares y oficinas. A continuación vamos a ver algunos de los más comunes.
Las luces y la climatización son algunos de los primeros casos de uso que surgieron en la domótica. Poder apagar y encender estos dispositivos en franjas de tiempo determinadas o en función de si hay alguna persona cerca son casos de uso útiles tanto en tiendas como en nuestros hogares. A continuación vamos a entrar en más detalle.
Luces inteligentes:
Climatización inteligente:
Otro caso de uso clásico de Home Asdsistant es la monitorización de energía y seguridad, entendiendo seguridad desde una perspectiva amplia, en la que entra el desde el control de alarmas y cámaras de vigilancia hasta la gestión de detección de fugas de gas o la capacidad de supervisar a tus mascotas cuando estás fuera de casa.
Seguridad del hogar:
Gestión y monitoreo de energía:
Home Assistant es un sistema de domótica open-source que se caracteriza por ser fácilmente extensible. Si bien la forma más sencilla de crear integraciones que amplíen sus funcionalidades es utilizando Python ofrece alternativas para utilizar el lenguaje de programación de nuestra elección.
El hecho de que Home Assistant sea fácilmente extensible se puede apreciar en los miles de proyectos (tanto open-source como creados por empresas privadas) creados por la comunidad, los cuales amplían las funcionalidades de Home Assistant y hacen posibles miles de casos de uso diversos que nos permiten desde ver cómo se encuentran nuestras mascotas mientras estamos de viaje hasta hacer una micro gestión de nuestro consumo eléctrico que tenga un gran impacto en nuestra factura de la luz. Mientras Home Assistant sea tan diverso, satisfaga tantos casos de uso continuará siendo respaldado por una gran comunidad y por tanto se mantendrá como el mejor sistema de domótica open-source.
¡Si Home Assistant no se adapta a tus necesidades adapta Home Assistant!
También te puede interesar
Comienza a formarte con este curso de NodeJS aplicado a la domótica en un sector con un enorme...
Curso para aprender a programar en Arduino desde cero de manera practica para que puedas crear tu propios...
Comienza a descubrir todo el potencial que ofrece el hardware más utilizado para todo tipo de proyectos, sobre todo de IoT, gracias...
Configurar tu hogar con Home Assistant es como enseñarle a tu casa a hablar contigo. Desde recordarte que cerraste la puerta hasta...