Publicado el Deja un comentario

ESPHome. Desarrollo de aplicaciones domóticas con ESP8266 sin programación

Tomás Domínguez Mínguez

Internet de las cosas, también conocido por sus siglas en inglés IoT (Internet of Things), es un concepto propuesto por Kevin Ashton en 1999 para referirse a la conexión e intercambio de datos entre todo tipo de objetos a través de Internet. El éxito de esta tecnología se debe a que amplía enormemente su utilidad, ya que permite controlar objetos a distancia (p. ej., encender o apagar una luz), enviar los datos recogidos por sensores (p. ej., la humedad o la temperatura) o, incluso, notificar alertas (p. ej., alarmas o fallos de funcionamiento). Por todo ello, Internet de las cosas está presente cada vez en más sectores, como el de la medicina, la industria, el transporte, la energía, la agricultura, las ciudades inteligentes y, muy especialmente, el de la domótica, eje central de ESPHome. Desarrollo de aplicaciones domóticas con ESP8266 sin programación.

El término domótica hace referencia al conjunto de técnicas que permiten la automatización y el control inteligente de cualquier aparato eléctrico existente en una vivienda con el fin de aumentar el confort y la seguridad o reducir el consumo energético, entre otros muchos beneficios.

Componentes de un sistema domótico

Un sistema domótico no es una entidad monolítica, sino que está formado por un conjunto de componentes interconectados entre sí:

  • Sensores y actuadores
  • Controlador domótico
  • Red de comunicación

Los sensores son dispositivos que recogen información del entorno. Los hay de muchos tipos, como los de humedad, temperatura, movimiento, distancia, nivel de líquidos, etc. Los actuadores son elementos que modifican el entorno, como los servos, motores, relés, etc. Naturalmente, un mismo dispositivo podrá tener uno o más sensores o actuadores. En las diversas prácticas propuestas en ESPHome. Desarrollo de aplicaciones domóticas con ESP8266 sin programación utilizará muchos de ellos.

El controlador domótico es el cerebro del sistema. Allí es donde reside la lógica que permite automatizar tareas repetitivas que habitualmente se hacen de forma manual. Su comportamiento lo establece un conjunto de reglas que se encargan de dar las órdenes adecuadas a los actuadores en función de los datos recibidos por los sensores.

Con las reglas podrá decidir, por ejemplo, los criterios que determinen cuándo se debe encender o apagar una luz: a una hora del día concreta, al anochecer, cuando un sensor detecte un nivel mínimo de luz o la presencia de una persona, tras el vencimiento de un temporizador, etc.

Aunque lo ideal sería contar con un controladorcomo Home Assistant, en los sistemas domóticos sencillos (no por ello, menos prácticos) ESPHome ofrece todo lo necesario para crear y ejecutar su propia lógica. Por ese motivo, en ESPHome. Desarrollo de aplicaciones domóticas con ESP8266 sin programación se pone de relieve todo lo que tiene que ver con las reglas, especialmente los eventos que las disparan (por ejemplo, se ha pulsado un botón, un sensor acaba de obtener un nuevo valor, el dispositivo se ha desconectado de la red wifi, etc.) y los comandos que realizarían las acciones adecuadas en cada una de estas situaciones (por ejemplo, se hace parpadear un led, se activa un relé, un buzzer comienza a sonar, se muestra un texto en un display, etc.).

Las redes de comunicación son las que hacen posible la interconexión entre sensores, actuadores, controladores e, incluso, con los dispositivos de usuario desde los que se manejan los sistemas domóticos (en particular, los teléfonos móviles). A este respecto, la red de comunicación más usada en el ámbito domótico es la red WiFi 802.11 b/g/n existente en prácticamente todos los hogares (aunque hay otras de carácter más específico como ZingBee o Z-Wave).

Sin embargo, para que los componentes de un sistema domótico puedan comunicarse entre sí, además de conectarse a una red wifi, tienen que ser capaces de hablar algún protocolo a nivel de aplicación. Por poner un símil, si la red wifi fuera la red de carreteras, los protocolos serían las normas de circulación que ordenarían el tráfico. Quizás HTTP sea el más conocido de todos ellos, pero el que realmente destaca sobre los demás es MQTT debido a los escasos recursos que requiere, tanto de comunicaciones como computacionales, lo que facilita su ejecución en microcontroladores sencillos y, por lo tanto, pequeños y baratos, como los basados en el SoC ESP8266. Además, este tipo de microcontroladores reducen el consumo energético, algo importante cuando deben alimentarse con baterías. Esa es la razón de que en ESPHome. Desarrollo de aplicaciones domóticas con ESP8266 sin programación se describan los fundamentos del protocolo MQTT, cómo configurarlo y cómo utilizarlo para recoger información de sensores o controlar actuadores desde un teléfono móvil haciendo uso de una aplicación Android gratuita y un bróker público.

Alternativas de desarrollo de un sistema domótico

Una vez conocida la arquitectura de un sistema domótico, lo más fácil sería montarlo con dispositivos comerciales que solo haya que sacarlos de la caja y encenderlos (requieren una configuración muy básica). Son los que se conocen como dispositivos dependientes de los fabricantes. Es la opción más cómoda, pero adolece de diferentes problemas:

  • Los dispositivos solo hacen lo que indica el fabricante. Si quisiera una nueva funcionalidad tendría que volver a pasar por caja (suponiendo que existiera).
  • Se integran con quien quiere el fabricante, muchas veces solo con productos de su misma marca.
  • Dependen de un servicio en la nube propio que podría desaparecer sin previo aviso, tal como ya ha sucedido con algunas marcas.
  • La privacidad queda en entredicho.

La mejor forma de resolver parcial o totalmente estos problemas sería hacer uso de dispositivos independientes a los que pudiera conectar los sensores y actuadores que quisiera, crear las automatizaciones que hicieran exactamente lo que deseara y se integraran sin problemas con cualquier otro dispositivo mediante HTTP y MQTT.

Existen dos formas de conseguir este objetivo:

  • Sustituir el firmware del dispositivo que hubiera comprado por otro cuyo comportamiento se ajuste a sus necesidades particulares.
  • Utilizar componentes genéricos, como los basados en el SoC ESP8266, en los que se pueda instalar dicho firmware.

Entre los firmwares más conocidos se encuentran ESPHome y Tasmota (seguidos por ESPurna o ESPEasy), si bien cada uno cuenta con sus férreos defensores. Aunque todos ellos tienen sus ventajas y sus limitaciones, ESPHome destaca porque la configuración del firmware se hace a través de un archivo escrito en YAML (lenguaje con una sintaxis muy sencilla, pero muy potente), lo que hace posible el desarrollo de automatizaciones más complejas y, en consecuencia, la creación de sistemas domóticos con comportamientos más sofisticados.

Aunque ESPHome se le conoce por integrarse de forma nativa con Home Assistant, el controlador domótico gratuito y de código abierto más popular, no tiene nada que envidiar a sus competidores cuando lo que se quiere es crear sistemas domóticos desde cero con placas basadas en el SoC ESP8266, motivo por el que este será el enfoque adoptado en ESPHome. Desarrollo de aplicaciones domóticas con ESP8266 sin programación.

¿Qué es ESPHome?

En su web oficial (https://esphome.io/), ESPHome se define como un sistema de control remoto de microcontroladores mediante archivos de configuración simples pero flexibles.

De forma muy resumida, un microcontrolador es un circuito integrado que contiene los componentes básicos de un ordenador (un procesador, memoria, capacidad de comunicación, etc.). La diferencia con los ordenadores es que mientras estos se utilizan para tareas de propósito general (ver un vídeo en YouTube, leer el correo electrónico, jugar al Candy Crush, etc.) los microcontroladores se orientan a tareas concretas (modificar el nivel de brillo de una luz, mantener estable la temperatura de una estancia, etc.). De ahí su menor potencia computacional, tamaño y consumo. Aunque no seamos conscientes, estamos rodeados de microcontroladores, ya que están presentes en mandos a distancia, electrodomésticos y, por supuesto, en dispositivos domóticos.

Siguiendo con la diferencia entre ordenadores y microcontroladores, los programas que se ejecutan en los primeros caen dentro de la categoría del software, mientras que a los segundos se le considera firmware. En este sentido, ESPHome es un firmware configurable que solo funciona en microcontroladores ESP8266 y ESP32.

Sus principales ventajas de cara al desarrollo de sistemas domóticos son:

  • Sencillez de uso. No requiere saber programar, ya que su comportamiento se establece en un archivo de configuración muy fácil de entender y modificar.
  • Compatibilidad con innumerables sensores y actuadores. Será difícil que encuentres alguno que no seas capaz de manejar. Pero, incluso en ese improbable escenario, podrás añadir tus propios componentes, si bien en ese caso tendrás que saber programar en C++ (como en Arduino).
    Integración con controladores domóticos. Aunque en ESPHome. Desarrollo de aplicaciones domóticas con ESP8266 sin programación se utiliza de forma autónoma, cuando quieras dar el salto a sistemas domóticos complejos necesitarás integrarlo con un controlador domótico. En este sentido, Home Assistant es la mejor opción, ya que no solo es el controlador domótico gratuito y de código abierto más popular sino porque fue adquirido por Nabu Casa, la empresa patrocinadora de dicho controlador.
  • Conectividad. Permite comunicarse con otros dispositivos conectados a la misma red la wifi o a través de Internet. Además, el manejo de protocolos como HTTP y MQTT facilita el uso de servicios en la nube que amplían notablemente la funcionalidad del sistema.
  • Automatización de tareas. Hace posible la realización de acciones específicas ante ciertas condiciones (por ejemplo, encender una luz cuando se detecte movimiento).

    El hecho de que ESPHome sea un firmware personalizable te habrá hecho pensar que, si el desarrollo de software ya te parecía difícil, el de un firmware te resultará aún mucho más duro. Nada más lejos de la realidad, ya que ESPHome oculta tanto su complejidad como la de los microcontroladores donde se ejecuta. Te lo demostraré con un caso práctico en el que serás capaz encender o apagar una luz desde tu teléfono móvil.

Ejemplo de uso

El circuito electrónico estará compuesto únicamente por una placa ESP8266 (en este ejemplo, un WEMOS D1) y un relé conectado al GPIO13.

El proceso de creación y carga del firmware de ESPHome se resume en cuatro pasos:

  • Crear el fichero de configuración base.
  • Incluir los componentes que representan los sensores y actuadores que tiene conectados.
  • Añadir las reglas que establecen su comportamiento.
  • Generar el firmware y cargarlo en el dispositivo.

El primer y último paso se llevará a cabo mediante dos herramientas: una interfaz de línea de comandos y un panel web. En ESPHome. Desarrollo de aplicaciones domóticas con ESP8266 sin programación  aprenderás a instalarlas y a manejarlas con soltura.

Los dos pasos intermedios requieren saber YAML, ya que es el lenguaje en el que está escrito el archivo de configuración del dispositivo. Su conocimiento es imprescindible para sacar el máximo partido a la infinidad de características de los sensores y actuadores que utilices. Pero, sobre todo, para crear automatizaciones que no tengan nada que envidiar a las definidas en un controlador domótico como Home Assistant. Por ese motivo, ESPHome. Desarrollo de aplicaciones domóticas con ESP8266 sin programación  dedica un capítulo al estudio de su sintaxis, cuya lectura te abrirá las puertas de este lenguaje.

Suponiendo que ya dispones de un archivo de configuración básico (sería ejecutar un comando o pulsar el botón “+ NEW DEVICE” del panel web), solo tendrías que añadir las siguientes líneas de texto YAML para controlar el relé conectado al GPIO13:

switch:

  – platform: gpio

    pin: 13

    name: “interruptor”

La palabra switch identifica el nombre de un dominio, que en ESPHome representa una categoría de componentes similares, en este caso concreto, la de aquellos que se pueden encender (activar) o apagar (desactivar) como, por ejemplo, un relé.

De todas las características que tiene este dominio hay dos que son obligatorias: platform y pin. El valor de la primera indica que el componente será controlado por el nivel (alto o bajo) del GPIO al que está conectado. El valor de la segunda es el número de dicho GPIO. Del resto de características opcionales solo se ha incluido name, que es el nombre con el que aparecerá en la interfaz web del dispositivo.

Si, tal como se acaba de mencionar, el relé se va a manejar desde una interfaz web, es porque el dispositivo ejecuta un servidor web, algo que deberás especificar en el archivo de configuración de esta forma:

web_server:

Aunque este componente software cuenta con diversas opciones de configuración, al no haber hecho referencia a ninguna de ellas, su comportamiento será el definido por defecto en ESPHome.

Una vez añadidas las líneas de texto anteriores al archivo de configuración (no hay ninguna automatización, ya que el relé se controla manualmente), solo tienes que volver a utilizar las herramientas de ESPHome para generar el firmware correspondiente y cargarlo en el dispositivo (sería ejecutar un comando o pulsar el botón “INSTALL” del panel web).

Hecho esto, al acceder al dispositivo desde el navegador web de tu teléfono móvil verías una pantalla en la que aparece el nombre del componente, su estado y un interruptor que te permitirá activarlo o desactivarlo (encender o apagar la luz).

Como acabas de comprobar, el miedo a la programación ya no será excusa para crear tus propios sistemas domóticos porque, con ESPHome, podrás construirlos sin necesidad de escribir una sola línea de código. Solo tendrás que seguir las sencillas indicaciones que se dan en En ESPHome. Desarrollo de aplicaciones domóticas con ESP8266 sin programación


ESPHOME. – Tomás Dominguez Minguez

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *