ESPHome: Instalación y primera prueba con ESP32 (o ESP8266)

Domótica Tutoriales

Después del descubrimiento para poder trabajar con ESPHome, llevo un par de días viendo como funciona y estoy realmente encantado con la manera de trabajar que tiene ESPHome así como con la potencia de lo que podemos hacer con ESP32.

Uno de los problemas que tenía para poder usar ESPHome era la manera de comenzar, no pude dedicarle mucho tiempo por no dejar las cosas paradas y no sabía como comenzar a usarlo para empezar a probar el ESP32 que tenía, tanto la versión con cámara como la versión de desarrollo que compré sin cámara para usarlo con sensores.

Pensaba que ESPHome era similar a ESPEasy, que ha sido el que he usado en los tutoriales DIY  con sensores económicos, pero, en si el enfoque es similar, pero la madurez del proyecto de ESPHome barre notablemente a ESPEasy, por lo que he pensado que podría hacer un tutorial para ayudar a aquellos que no se han animado aun a probarlo para que vean que es sencillo de instalar y de poder usar.

La manera de funcionar también es distinto entre ambos firmware ya que, para poder crear nuestros binarios en ESPHome, instalaremos el pequeño servidor que nos permite configurar diferentes proyectos de microcontrolador desde la web que lanza, pudiendo tener todos desde el mismo sitio e incluso pudiendo flashear directamente si conectamos el ESP32 directamente al equipo donde está instalado.

Si no tienes todavía ningún ESP32, te recomiendo comprar alguno, estos son los que tengo y con los que voy a trabajar en los tutoriales que vaya haciendo de este tipo:

  • ESP32 de desarrollo: Placa de desarrollo que incluye USB para la alimentación así como el propio USB ttl, por lo que no necesitaremos un conversor de serie a USB para poder grabarlo, podéis conseguirlo aquí por unos 5€.
  • ESP32 Cam: Versión con cámara de este microcontrolador, compatible con ESPHome e integrable en Home Assistant (todavía no he podido hacer el tutorial para poder hacerla funcionar con Home Assistant). Podéis comprarlo aquí por unos 7€. Para este, si que necesitáis un usbttl que podéis comprar aquí (incluye algunos cables DuPont) así como cables DuPont (si no tenéis) aquí.

Instalación de ESPHome en nuestro equipo

Para empezar es necesario tener instalado Python 2.7, ya que con Python 3.X no nos funcionará, por lo que tendremos que instalar en nuestro sistema, sea en nuestro PC si queremos usarlo ahí como si es en la propia Rasberry, instalaremos pip2 que es el instalador que funciona con Python 2.

sudo apt-get update
sudo apt-get install python
python2 --version

Si con el último comando vemos que tenemos una versión 2.7.X, pasamos a instalar pip2:

wget https://bootstrap.pypa.io/get-pip.py sudo python2 get-pip.py

Si todo ha terminado sin errores, podemos pasar a instalar ESPHome:

sudo pip2 install esphome

Se descargará todas las dependencias y podremos ver como lo instala, si no da ningún error, podemos empezar a trabajar. Por lo que pasaríamos a lanzar la interfaz web con la que trabajaríamos, desde nuestro usuario pi (o el que uséis normalmente) lanzamos el comando:

esphome config/ dashboard

Ahora sería momento de ir a nuestro navegador para lanzar en el navegador la ip local o la del equipo donde estéis instalando (en mi caso 192.168.1.103 que es el equipo de pruebas) para poder acceder a la web en el puerto 6052, por lo que sería la dirección http://192.168.1.103:6052 y deberíais ver algo así:

Ahora, os haré una pequeña demostración de como usarlo, pero, la idea es poder crear un vídeo para explicar ESPHome algo más facil y así poder empezar a trabajar con el entorno de desarrollo y empezar a exprimir los ESP32 (o ESP8266).

Sensor de temperatura y presión BMP280 con ESPHome en ESP32

Ahora, iré directamente para hacer una demostración, pero como he dicho antes, lo mejor será usar el vídeo para mostrar como funciona el sistema. Para poder crear nuestro proyecto tendremos que seguir estos pasos:

  • Pulsamos sobre el + que está en la esquina superior derecha y se nos abrirá una nueva pantalla que nos pide, lo primero, un nombre, podemos poner el que queramos, pero es obligatorio poner en minúsculas el nombre y sin espacios ni caracteres raros.
  • Una vez puesto el nombre, nos pide el dispositivo sobre el que va a funcionar, nuestro caso es el ESP32, por lo que elegimos el genérico que aparece

  • Ahora, nos pide los datos de nuestra wifi así como una clave para poder actualizar el dispositivo por OTA, ponemos los datos de nuestra Wifi y ya estaría terminada la configuración inicial.

Ahora, veremos en el interfaz la instancia del firmware que queremos crear, si vemos, tenemos un “Edit” debajo del nombre, lo pulsamos y nos aparece una pantalla para poder editar la configuración de dicho dispositivo, es ahora, cuando usaríamos lo que nos indica ESPHome en su documentación.

Como he dicho, he usado un pequeño sensor de temperatura para ver su funcionamiento, un BMP280 así como he configurado el servidor MQTT para poder trabajar en Home Assistant como con cualquier dispositivo MQTT. La configuración i2c es necesaria para decirle en qué pines está puesto el i2c ya que, tenemos 2 en el ESP32

Ahora, una vez terminado tenemos la posibilidad de flashearlo directamente desde ahí, si tenemos conectado el ESP32 o el USBttl directamente en la misma máquina que está instalado ESPHome, por lo que, si miramos arriba, vemos si está detectado el ttyUSB0 (o el número que toque) para elegirlo y pulsar en upload.

Flashear ESPHome con esphome-flasher

En mi caso, tengo ESPHome instalado en donde tengo Home Assistant y no me resulta cómodo poder usarlo, por lo que en mi equipo donde trabajo a diario, he instalado esphome-flasher, que siguiendo los pasos que indican en github, es necesario instalar:

sudo pip3 install wxpython
sudo pip3 install esphomeflasher

Y, ahora, si ejecutamos desde la consola:

esphomeflasher

Nos aparecerá una interfaz para poder instalar el binario que descargaremos siguiendo estos pasos dentro de la web de ESPHome, por lo que volvemos a donde tenemos nuestra instancia de ESPHome y en los puntos de la derecha del nombre, elegimos “Compile”.

Nos saldrá una ventana mostrando el proceso de compilación, que, si no hay problemas en la configuración, podremos descargar abajo donde pone “Download binary”, ese fichero, es el que usaremos en esphomeflasher:

Conectamos el ESP32 o el dispositivo que vamos a usar, con o sin USBttl en función de si nos hace falta, seleccionamos el fichero y pulsamos en “Flash ESP”.  El dispositivo debe estar en modo flash, por lo que se necesitará puentear GPIO0 a GND durante el arranque. Si todo está correcto veremos algo así:

El pase de diapositivas requiere JavaScript.

Cuando termina de grabar, reinicia el dispositivo y veremos el log en la consola de lo que está haciendo durante el arranque y veremos también la IP que ha conseguido para poder empezar a trabajar con él, aunque, si estáis usando MQTT lo normal es que no necesitéis ver dicha IP, solo en el servidor MQTT su topic para poder asociarlo a Home Assistant:

Y si nos vamos al servidor MQTT veremos algo así:

Espero que os ayude este pequeño tutorial y pronto intentaré publicar el vídeo para mostrar en vídeo lo que aquí explico. Si tenéis alguna pega, ya sabéis que podéis preguntar en los comentarios así como en el grupo de Telegram o el foro. Nuevamente, gracias a

¿Quieres montarte tu propio sistema Smart Home?

¿Te gustaría empezar poco a poco teniendo Google Home, Alexa o Home Assistant para controlar las luces, calefacción y otros electrodomésticos de la casa? ¡Te ayudamos! Entra en nuestro Grupo de Telégram de Domótica y también puedes entrar a nuestro Foro de Domótica donde podrás empezar a leer y preguntar tus dudas. Además, si quieres estar al tanto de las ofertas de domótica que salen a diario para poder hacerte un sistema de domótica low cost, entra a nuestro Canal de ofertas de domótica y no te perderás ni una o si lo prefieres y no tienes Telegram, puedes entrar a nuestra página de ofertas de domótica o Smart Home en Facebook. ¡Síguenos también en nuestro Facebook, Twitter o Instagram! ¡Te esperamos!

12 Comentarios

  1. Si la instalación se ha realizado correctamente y al intentar ejecutar ESPHome os da el error “TypeError: __init__() got an unexpected keyword argument ‘required'” la solución es instalar una versión más antigua de la librería Voluptuous de esta forma: sudo pip2 install voluptuous==0.11.5 🙂

    Reply
    • Muchísimas gracias. Ya funciona. Por mi cuenta había conseguido llegar a que era un problema con la librería ‘voluptuous’, pero nada más.
      ¿Sabes si alguien ha reportado el problema a ‘esphome’ para que lo miren porque en los requerimientos pone que la versión de esta librería debe ser >= 0.11.5 y < 0.12?

      Reply
  2. Hola
    He intentado seguir este tutorial para instalar ESPHome en un ordenador con Linux Mint 19.2. Ya lo tengo instalado con todas las dependencias pero al intentar arrancar la interfaz web con el comando
    esphome config/ dashboard
    me da el siguiente error:
    Traceback (most recent call last):
    File “/usr/local/bin/esphome”, line 7, in
    from esphome.__main__ import main
    File “/usr/local/lib/python2.7/dist-packages/esphome/__main__.py”, line 10, in
    from esphome import const, writer, yaml_util
    File “/usr/local/lib/python2.7/dist-packages/esphome/writer.py”, line 7, in
    from esphome.config import iter_components
    File “/usr/local/lib/python2.7/dist-packages/esphome/config.py”, line 15, in
    from esphome import core, core_config, yaml_util
    File “/usr/local/lib/python2.7/dist-packages/esphome/core_config.py”, line 6, in
    import esphome.config_validation as cv
    File “/usr/local/lib/python2.7/dist-packages/esphome/config_validation.py”, line 1242, in
    Optional(CONF_COMMAND_TOPIC): All(requires_component(‘mqtt’), subscribe_topic),
    File “/usr/local/lib/python2.7/dist-packages/esphome/voluptuous_schema.py”, line 198, in extend
    ret = super(_Schema, self).extend(schema, extra=extra)
    File “/usr/local/lib/python2.7/dist-packages/voluptuous/schema_builder.py”, line 782, in extend
    return result_cls(result, required=result_required, extra=result_extra)
    TypeError: __init__() got an unexpected keyword argument ‘required’

    ¿Alguna idea de qué puede estar pasando?
    No consigo encontrar ningún foro donde pueda pedir ayuda
    Muchas gracias

    Reply
    • Yo lo he solucionado con la version de voluptuos:

      pip install voluptuous==0.11.5

      Reply

Contestar

Tu e-mail no será publicadoRequired fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Lost Password

Registro