Uso de XIAO ESP32C3 con Home Assistant a través del servicio ESPHome

Este artículo te guiará a través de la instalación del servicio ESPHome en tu propio entorno de Home Assistant. Utilizando la función WiFi del XIAO ESP32C3, podrás conectar tu XIAO a Home Assistant como parte de tu terminal en casa de una manera muy fluida.
Además, construiremos un Home Assistant con detección de presencia humana en combinación con el módulo más popular de presencia estática humana de 24GHz mmWave, el Human Static Presence Module Lite.
Empezando
A partir del 31 de julio de 2023, se ha solucionado el problema anterior que causaba que el radar dejara de funcionar por completo, así que por favor actualiza los archivos de la biblioteca y el configurador para que el tutorial funcione correctamente.
Si deseas seguir este tutorial en su totalidad, necesitarás preparar lo siguiente.
XIAO ESP32C3 | 24GHz mmWave Human Static Módulo de Presencia Lite |
---|---|
![]() | ![]() |
El objetivo final de este proyecto es implementar el módulo de presencia estática humana de 24GHz mmWave Lite en Home Assistant.
Hemos escrito archivos de configuración completos y bibliotecas para el Módulo de Presencia Estática Humana de 24GHz mmWave Lite para facilitar el despliegue rápido del sensor en Home Assistant en este proyecto.
El contenido de este tutorial pasará por los siguientes pasos:
- Selecciona tu entorno de Home Assistant
- Instala y configura ESPHome en Home Assistant
- Configura la conexión entre el XIAO ESP32C3 y ESPHome
- Configura el Panel de Home Assistant
Por supuesto, si estás interesado en cómo el XIAO ESP32C3 utiliza Grove en Home Assistant, puedes leer este capítulo directamente.
Selecciona tu entorno de Home Assistant
En esta rutina, no ampliaremos sobre cómo instalar el entorno de Home Assistant, asumiremos que ya tienes un dispositivo de Home Assistant funcionando.
Si deseas aprender cómo instalar Home Assistant, puedes consultar el tutorial oficial. Recomendamos encarecidamente que instales Home Assistant utilizando un dispositivo x86, ya que es la forma más fácil de instalar Home Assistant con Supervised.

Según la tabla anterior, lo más adecuado es instalar Home Assistant OS y Home Assistant Supervised, lo que te ahorrará muchos inconvenientes. Si estás ejecutando Home Assistant en Docker con OpenWRT (por ejemplo, usando LinkStar H68K), no te preocupes, también te proporcionaremos una referencia detallada sobre cómo hacerlo.
También hemos escrito cómo instalar Home Assistant para algunos de los productos de Seeed Studio, por favor consúltalos.
- Empezando con Home Assistant en ODYSSEY-X86
- Empezando con Home Assistant en reTerminal
- Empezando con Home Assistant en LinkStar H68K/reRouter CM4
Instalar ESPHome en Home Assistant
Paso 1. Instalar ESPHome
- Escenario 1: Instalación de ESPHome en Home Assistant OS (con la Tienda de Complementos)
Si tienes instalado Home Assistant OS, este cuenta con una Tienda de Complementos, lo que hace mucho más fácil instalar ESPHome.

En la Tienda de Complementos, puedes buscar e instalar ESPHome.

- Escenario 2: ESPHome instalado en Home Assistant bajo OpenWRT Docker/Docker (sin la Tienda de Complementos)
Como estamos instalando el contenedor de Home Assistant, no podemos simplemente descargar el servicio ESPHome a través de la Tienda de Complementos, por lo que se necesita una solución alternativa.
Debemos descargar la imagen de ESPHome.
esphome/esphome:latest

En la página donde se crea el contenedor, necesitamos hacer algunos ajustes sencillos.
- Nombre del contenedor: el nombre de tu contenedor
- Imagen de Docker: elige la imagen esphome que acabas de descargar
- Red: selecciona el modo host
- Variables de entorno (-e): tu variable de entorno

Una vez que hayas completado los campos anteriores, guarda y aplica. Verás que el contenedor ha sido creado. También necesitas iniciarlo.

Para lograr el mismo efecto que descargar ESPHome en Home Assistant, necesitamos modificar el archivo de configuración en Home Assistant.
Ve a Home Assistant Container.

Vamos a la terminal de Home Assistant:

Ingresa el siguiente comando en la terminal:
vi configuration.yaml
Agrega el siguiente contenido al final de configuration.yaml
.
# Example configuration.yaml entry
panel_iframe:
esphome:
title: "ESPHome"
url: "http://192.168.100.1:6052"
icon: mdi:chip
Sal de el contenedor Docker escribiendo exit
en la terminal del contenedor de Home Assistant. Una vez hecho esto, reinicia el contenedor de Home Assistant.
Crea una nueva página en tu navegador, ingresa la dirección http://homeassistant:8123/ e ingresa con tu cuenta de Home Assistant. Verás que ESPHome aparece en la barra de herramientas a la izquierda.

Configurar la conexión entre el XIAO ESP32C3 y ESPHome
Paso 2. Preparación del hardware
El objetivo de nuestro tutorial es poder ver la información de los datos del Módulo de Presencia Estática Humana de 24GHz mmWave Lite en el panel de Home Assistant.
Conecta el dispositivo al computador a través de la placa principal. El diagrama de conexiones se muestra en la tabla a continuación.
![]() | ||
XIAO ESP32C3 | 24GHz mmWave Human Static Presence Module Lite | |
5V | --> | 5V |
GND | --> | GND |
D2 | --> | RX |
D3 | --> | TX |
Paso 3. Mantén el XIAO ESP32C3 y Home Assistant en la misma red LAN
Estoy seguro de que tu Home Assistant ya ha hecho el trabajo de conectarse a la red, por ejemplo, conectando tu dispositivo mediante un cable de red. Lo único que necesitas hacer es activar una red local (por ejemplo, WiFi) para que el XIAO ESP32C3 también pueda conectarse a esta red.
Usaré el LinkStar H68K como ejemplo a continuación. Mi objetivo es conectar el XIAO al punto de acceso del LinkStar H68K.
En la pestaña Red de OpenWRT, selecciona Inalámbrico --> AGREGAR.

Para Potencia de Transmisión en Configuración del Dispositivo, selecciona automático.
Para la configuración de Interfaz, por favor llena los siguientes campos.
- Configuración General
- Modo: Depende de cómo el LinkStar accede a internet. Si estás usando una conexión por cable selecciona Cliente, si estás conectado por WiFi selecciona Punto de Acceso.
- ESSID: Ingresa el nombre de tu red WiFi, intenta evitar usar espacios o caracteres especiales.
- Red: marca lan.

- Seguridad Inalámbrica
- Cifrado: WPA2-PSK
- Contraseña: Ingresa la contraseña de WiFi que deseas configurar.

Una vez que hayas completado la información anterior, haz clic en Guardar y Aplicar en la esquina inferior derecha y espera unos momentos a que LinkStar abra un punto de acceso.
Cuando ningún dispositivo esté conectado a este punto de acceso, se mostrará como sin señal.

Considerando todo lo anterior, volvamos a la página de Home Assistant.

Haz clic en NUEVO DISPOSITIVO. Luego, haz clic en Continuar.
En la nueva ventana emergente, ingresa el nombre de la aplicación que deseas configurar, así como el nombre y la contraseña del punto de acceso que has configurado en LinkStar (o tu propia red WiFi). Asegúrate de que el XIAO ESP32C3 y Home Assistant estén en la misma red LAN.

Luego, haz clic en Siguiente.
En el tipo de dispositivo, selecciona ESP32-C3.

Luego, haz clic en Siguiente.
Haz clic en la clave de cifrado y guárdala en un lugar seguro, usaremos esta clave en un paso posterior.
Luego, haz clic en SALTAR.
Paso 4. Cambiar el archivo de configuración yaml del XIAO ESP32C3
Después, haz clic en la pestaña del dispositivo que acabamos de crear, utilizando el botón EDITAR en la esquina inferior izquierda.

Ten en cuenta que necesitamos hacer cambios en este archivo YAML. Hemos dividido el contenido que debe modificarse en dos partes principales, correspondientes a uno y dos en el diagrama a continuación.

- En el ① del contenido, no cambies el nombre del dispositivo excepto el que has configurado. Para el resto del contenido, consulta el código a continuación.
# part 1:
substitutions:
name: "xiao-esp32c3"
friendly_name: "XIAO ESP32C3"
esphome:
name: "${name}"
friendly_name: "${friendly_name}"
name_add_mac_suffix: true
project:
name: "seeedstudio.mmwave_kit"
version: "2.0"
platformio_options:
board_build.flash_mode: dio
board_build.mcu: esp32c3
external_components:
- source: github://limengdu/mmwave-kit-external-components@main
refresh: 0s
esp32:
board: esp32-c3-devkitm-1
variant: esp32c3
framework:
type: esp-idf
# Enable logging
logger:
hardware_uart: USB_SERIAL_JTAG
level: DEBUG
- En el ② del contenido, copia el siguiente código después de
captive_portal:
.
Haz clic aquí para previsualizar el código completo.
# Sets up Bluetooth LE (Only on ESP32) to allow the user
# to provision wifi credentials to the device.
esp32_improv:
authorizer: none
# Sets up the improv via serial client for Wi-Fi provisioning.
# Handy if your device has a usb port for the user to add credentials when they first get it.
# improv_serial: # Commented until improv works with usb-jtag on idf
uart:
id: uart_bus
baud_rate: 115200
rx_pin: 4
tx_pin: 5
parity: NONE
stop_bits: 1
seeed_mr24hpc1:
id: my_seeed_mr24hpc1
text_sensor:
- platform: seeed_mr24hpc1
heart_beat:
name: "Heartbeat"
product_model:
name: "Product Model"
product_id:
name: "Product ID"
hardware_model:
name: "Hardware Model"
hardware_version:
name: "Hardware Version"
keep_away:
name: "Active Reporting Of Proximity"
motion_status:
name: "Motion Information"
custom_mode_end:
name: "Custom Mode Status"
binary_sensor:
- platform: seeed_mr24hpc1
has_target:
name: "Presence Information"
sensor:
- platform: seeed_mr24hpc1
custom_presence_of_detection:
name: "Static Distance"
movement_signs:
name: "Body Movement Parameter"
custom_motion_distance:
name: "Motion Distance"
custom_spatial_static_value:
name: "Existence Energy"
custom_spatial_motion_value:
name: "Motion Energy"
custom_motion_speed:
name: "Motion Speed"
custom_mode_num:
name: "Current Custom Mode"
switch:
- platform: seeed_mr24hpc1
underlying_open_function:
name: Underlying Open Function Info Output Switch
button:
- platform: seeed_mr24hpc1
restart:
name: "Module Restart"
custom_set_end:
name: "End Of Custom Mode Settings"
select:
- platform: seeed_mr24hpc1
scene_mode:
name: "Scene"
unman_time:
name: "Time For Entering No Person State (Standard Function)"
existence_boundary:
name: "Existence Boundary"
motion_boundary:
name: "Motion Boundary"
number:
- platform: seeed_mr24hpc1
sensitivity:
name: "Sensitivity"
custom_mode:
name: "Custom Mode"
existence_threshold:
name: "Existence Energy Threshold"
motion_threshold:
name: "Motion Energy Threshold"
motion_trigger:
name: "Motion Trigger Time"
motion_to_rest:
name: "Motion To Rest Time"
custom_unman_time:
name: "Time For Entering No Person State (Underlying Open Function)"
Luego, haz clic en el botón Guardar en la esquina superior derecha.

Paso 5. Cargar el firmware en el XIAO ESP32C3
- Método 1: Compilar y cargar directamente
Si estás usando un dispositivo x86 y puedes ver el XIAO en el puerto del dispositivo, entonces puedes compilar y cargar el programa en el XIAO.
Conecta el XIAO a tu dispositivo.

Haz clic en los tres puntos en la esquina inferior derecha de la barra del dispositivo y selecciona Instalar.

Haz clic en Conectar al ordenador que ejecuta el panel de ESPHome.

Selecciona el puerto conectado.

Ahora se descargarán todos los paquetes necesarios de la placa y se grabará el firmware de ESPHome en el XIAO ESP32C3. Si la grabación es exitosa, verás la siguiente salida.

Si no puedes encontrar el puerto después de conectar el XIAO a tu dispositivo, puedes intentar usar el segundo método.
- Método 2: Cargar el firmware compilado usando otro equipo
Algunas rutas de software como LinkStar H68K no soportan el reconocimiento de dispositivos MCU externos, por lo que primero debemos descargar el firmware compilado y luego cargarlo desde otro PC.
Haz clic en el botón Instalar en la esquina superior derecha. Luego, selecciona la última opción Descarga manual.

Selecciona Formato moderno.

Luego, tomará un tiempo para descargar y compilar, así que por favor ten paciencia. Una vez que todo esté listo, el firmware se descargará automáticamente a tu computadora.

Para cargar el firmware en el XIAO ESP32C3, hay un par de opciones. Aquí mostramos 2 formas de hacerlo:
- Opción 1: usar la herramienta web de ESPHome para cargarlo.
Asegúrate de tener los controladores correctos instalados. A continuación se encuentran los controladores para los chips comunes usados en dispositivos ESP.
Controladores CP2102: Windows & Mac
Abre la herramienta web de ESPHome con el navegador Chrome o Edge.
Haz clic en CONECTAR.

Selecciona el puerto serial del XIAO ESP32 en la ventana emergente.

Haz clic en INSTALAR y luego selecciona el archivo .bin
descargado en los pasos anteriores.


- Opción 2: Usando la herramienta esphome-flasher.
Si aún no puedes cargar el firmware utilizando el primer método después de instalar el controlador y cambiar de navegador, puedes intentar usar el segundo método. Consulta el tutorial oficial para obtener métodos e instrucciones de instalación específicos.
Si deseas observar los mensajes de registro del XIAO ESP32C3, también puedes verlos a través del botón Ver Registros de este software.

Una vez que la carga se haya completado, puedes desconectar el XIAO ESP32C3 del PC (a menos que necesites ver los registros) y simplemente alimentar el XIAO por separado.
Si todo va bien, el XIAO ESP32C3 buscará y se conectará al WiFi que le hayas configurado.
Al igual que yo, uso la red de LinkStar H68K. Puedes encontrarla en las opciones de red y ver la dirección IP que le ha asignado el LinkStar H68K.

Normalmente, en este punto, en Home Assistant, el estado del dispositivo cambiará de offline a online. Esto indica que el XIAO ESP32C3 está correctamente conectado a la red y listo para interactuar con Home Assistant.

Configurar Panel de Home Assistant
Paso 6. Conectar al XIAO ESP32C3
Si no tienes muchos dispositivos de Home Assistant en tu red local, Home Assistant puede buscar automáticamente y agregar tus dispositivos ESP en la pestaña de Dispositivos. Puedes ver este dispositivo dentro de la pestaña Dispositivos y Servicios en Configuración.


Si no se detecta automáticamente, también puedes conectar al XIAO ESP32C3 usando su dirección IP.
Haz clic en AÑADIR INTEGRACIÓN y busca esphome.

Luego, ingresa la dirección IP del XIAO ESP32C3 con el número de puerto 6053. Luego haz clic en ENVIAR.

Si la dirección IP y el número de puerto ingresados son correctos, verás que se te pedirá que ingreses la clave de cifrado, que te pedimos guardar en el paso 4.
Luego haz clic en ENVIAR.

At this point, the steps to add the device have been successfully completed.

Paso 7. Descripción general de las funciones del módulo 24GHz mmWave
Para ayudarte a entender rápidamente todas las capacidades del conjunto y el uso de estas funciones, debes leer esta sección con atención. Si deseas obtener más información detallada, te recomendamos que dediques tiempo a leer el manual de usuario del producto.
Para detalles sobre la configuración y los parámetros del panel de control, hemos preparado una descripción detallada en la documentación de ESPHome, así que por favor dirígete allí para leer la descripción completa y los detalles.

Paso 8. Configurar el panel de Home Assistant
Si encuentras que las tarjetas predeterminadas son aburridas o poco amigables para presentar los datos, Home Assistant ofrece una amplia variedad de paneles prediseñados para elegir.
Puedes crear tu propio panel para adaptarlo a tus preferencias.

Por ejemplo, la opción de controlar la salida de la información se convierte en un interruptor bonito.

Convirtiendo la velocidad del movimiento humano en una visualización de panel de control.

Esto es lo que se me ocurrió. Parece que tiene todo lo necesario para convertirse en un centro de control de hogar inteligente.

Hasta ahora, hemos concluido con éxito el contenido del tutorial.
Conectar Grove a Home Assistant usando XIAO ESP32C3
Por supuesto, el XIAO ESP32C3 ofrece más que solo soporte para el Módulo de Presencia Estática Humana de 24GHz en Home Assistant, y puedes encontrar más tutoriales para tu propio uso en este documento.
¡Deja que fluya tu creatividad!
Solución de problemas
Pregunta frecuente 1: Recibí el siguiente error al subir el firmware utilizando la herramienta Web de ESPhome, ¿cómo puedo solucionarlo?

R: Si aparece este mensaje mientras subes el firmware, desconecta el XIAO ESP32C3 del PC. Luego, mantén presionado el BOTÓN BOOT, conecta la placa a tu PC mientras mantienes presionado el botón BOOT y luego suéltalo para entrar en el modo de arranque. En este punto, simplemente vuelve a conectar y sube el firmware nuevamente.
Pregunta frecuente 2: No puedo instalar esphome flasher en Linux siguiendo el tutorial de esphome flasher.
R: Al ejecutar los siguientes comandos, necesitas seleccionar la versión de tu sistema, de lo contrario ocurrirá un error. Por ejemplo, mi computadora es Ubuntu 22.04, entonces el comando que debería ejecutarse es el siguiente.
sudo apt install python3
pip3 install -U \
-f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-22.04/ \
wxPython
pip3 install esphomeflasher
Pregunta frecuente 3: Llené correctamente el WiFi y la contraseña, ¿por qué no veo la dirección IP del XIAO ESP32C3?
R: Si tienes este problema, verifica que la antena del XIAO ESP32C3 esté correctamente conectada. Si la antena ya está conectada, asegúrate de que el XIAO no esté a más de 3 metros del LinkStar si es posible (a menos que hayas reemplazado la antena por una más potente).
Si aún no ves el XIAO, puedes usar el software esphome flasher para revisar la información del registro del XIAO y verificar la conexión a través de los registros.
También puedes desconectar y volver a conectar el XIAO para que intente buscar la red WiFi y conectarse nuevamente.
Pregunta frecuente 4: Usé el firmware de Jlink, pero obtuve el error "Programming of range @address 0x08000000 failed (block verification error) Program failed Failed to program and verify target". ¿Cómo puedo solucionarlo?
Si estás utilizando el firmware de Jlink y aparece este error, podrías estar en alguna de las siguientes situaciones:
- Tu sensor ya no está funcionando correctamente y no puedes recibir ningún mensaje de él.
- Estás intentando usar un firmware inválido o incorrecto.
Si tu radar funcionaba correctamente antes, verifica nuevamente que estás utilizando el firmware correcto. ¡El firmware varía según el radar y el modelo del sensor! Además, la actualización de firmware vía UART no es la misma que la actualización vía Jlink. ¡Por favor, detén el proceso antes de continuar con los siguientes pasos!
He confirmado que mi producto muestra este mensaje de error en caso de una excepción.
Si tu radar no funciona en absoluto, entonces puede ser normal que aparezca este mensaje de error.
Debido a la operación anormal del radar, es posible que se haya activado el mecanismo de protección de lectura/escritura, lo que impide al usuario volver a programar el producto. Para solucionar esto, es necesario desbloquear dicho mecanismo.
Dado el alto riesgo de desproteger las lecturas y escrituras, no divulgamos públicamente el método para hacerlo. Sin embargo, hemos colocado el procedimiento en el archivo zip aquí para quienes lo necesiten. Una vez que el radar defectuoso haya sido desbloqueado, se podrá actualizar el firmware nuevamente para restaurar su funcionamiento normal.
Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte soporte y asegurarnos de que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.