XIAO ESP32S3 sense conectándose con Home Assistant a través de ESPHome (todos los puertos soportados)
Este Wiki te guiará paso a paso sobre cómo conectar Seeed Studio XIAO ESP32S3 con ESPHome ejecutándose en Home Assistant y enviar los datos del sensor/controlar dispositivos después de conectar módulos Grove al XIAO ESP32S3. ¡Así que comencemos!
¿Qué son ESPHome y Home Assistant?

ESPHome es una herramienta que tiene como objetivo hacer que la gestión de tus placas ESP sea lo más simple posible. Lee un archivo de configuración YAML y crea firmware personalizado que instala en tu dispositivo ESP. Los dispositivos o sensores añadidos en la configuración de ESPHome aparecerán automáticamente en la interfaz de usuario de Home Assistant. ESPHome puede ayudarte a conectar y enviar los datos a dispositivos de Home Assistant.
Preparación del Hardware
Si quieres seguir este tutorial completo, necesitarás preparar lo siguiente.
Seeed Studio XIAO ESP32S3 Sense | Seeed Studio Expansion Board | Dispositivos Home Assistant |
---|---|---|
![]() | ![]() | ![]() |
Sensores Utilizados
- Grove - Sensor de Temperatura y Humedad (BME680)
- Grove - Sensor Inteligente de Calidad del Aire (SGP41)
- Matriz RGB 6x10 para XIAO
Preparación del Software
Instalar Home Assistant
Asegúrate de que ya tienes Home Assistant funcionando. Puedes seguir esta wiki para una guía paso a paso sobre la instalación de Home Assistant en un SBC ODYSSEY-X86 o este enlace para una instrucción detallada sobre el uso de Home Assistant con un Seeed Mini Router.
Instalar ESPHome en Home Assistant
ESPHome está disponible como un Complemento de Home Assistant y se puede instalar simplemente a través de la tienda de complementos.

- Paso 1. Haz clic en INSTALL

- Paso 2. Habilita todas las opciones y haz clic en START

Verás la siguiente ventana si ESPHome se carga exitosamente

Comenzando
Una vez que todo el software y el hardware estén listos, ahora podemos comenzar.
1. Agregar Seeed Studio XIAO ESP32S3 (Sense) a ESPHome
- Paso 1. Haz clic en + NEW DEVICE

- Paso 2. Haz clic en CONTINUE

- Paso 3. Ingresa un Nombre para el dispositivo e ingresa las credenciales WiFi como Nombre de red y Contraseña. Luego haz clic en NEXT

- Paso 4. Selecciona ESP32-S3 y haz clic

- Paso 5. Haz clic en SKIP porque configuraremos esta placa manualmente

- Paso 6. Haz clic en EDIT bajo la placa recién creada

- Paso 7. Esto abrirá un archivo YAML y este archivo se utilizará para establecer todas las configuraciones de la placa. Edita el contenido bajo esp32 como sigue
esphome:
name: esp32s3
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
Nota: Aquí estamos usando la última versión del núcleo de Arduino para ESP32 y soporte de ESP32 para PlatformIO
- Paso 8. Haz clic en SAVE y luego haz clic en INSTALL

- Paso 9. Conecta un extremo de un cable USB Type-C al Seeed Studio XIAO ESP32S3 y el otro extremo a uno de los puertos USB del reRouter CM4 1432

- Paso 10. Haz clic en Plug into the computer running ESPHome Dashboard

- Paso 11. Selecciona el puerto conectado. Es probable que sea
/dev/ttyACM1 porque /dev/ttyACM0
está conectado al reRouter CM4 1432

Es mejor usar Wi-Fi de 2.4GHz
Ahora descargará todos los paquetes de placa necesarios y grabará el firmware de ESPHome en el XIAO ESP32S3. Si la grabación es exitosa, verás la siguiente salida. Si ves algún error, intenta reiniciar tu xiao esp32S3 o entrar en modo bootloader manteniendo presionado el BOTÓN BOOT y conectar el XIAO ESP32S3.

- Paso 12. La ventana anterior muestra los registros en tiempo real de la placa conectada. Ciérrala haciendo clic en STOP

- Paso 13. Si ves el estado de la placa como ONLINE, eso significa que la placa se conectó exitosamente al WiFi

Ahora puedes desconectar el XIAO ESP32S3 del reRouter CM4 1432 y simplemente alimentarlo a través de un cable USB. Esto es porque de ahora en adelante, si quieres grabar firmware al XIAO ESP32S3, simplemente puedes hacerlo OTA sin conectar a la placa X86 a través de un cable USB.
-
- Haz clic en los tres puntos y haz clic en Install

-
- Selecciona Wirelessly y enviará los cambios a la placa de forma inalámbrica

- Paso 14. Ve a Settings y selecciona Devices & Services

- Paso 15. Verás ESPHome como una integración descubierta. Haz clic en CONFIGURE

- Paso 16. Haz clic en SUBMIT

- Paso 17. Haz clic en FINISH

2. Conectar Módulos Grove con ESPHome y Home Assistant
Ahora conectaremos módulos Grove al Seeed Studio XIAO ESP32S3 (sense) para que podamos mostrar datos de sensores o controlar los dispositivos usando Home Assistant!
Conocimiento de Desarrollo
Placa de Expansión XIAO
Para usar módulos Grove con Seeed Studio XIAO ESP32S3, usaremos una Seeed Studio Expansion Base for XIAO y conectaremos XIAO ESP32S3 en ella.
Después de eso, los conectores Grove en la placa pueden usarse para conectar módulos Grove

Definiciones de Pines
Necesitas seguir el gráfico a continuación para usar los números de pin internos apropiados al conectar los módulos Grove a los conectores Grove en Grove Shield para Seeed Studio XIAO.

Por ejemplo, si quieres conectar un módulo Grove al puerto D0, necesitas definir el pin en ESPHome como GPIO1. Puedes encontrar más detalles haciendo clic aquí.
Lista de Compatibilidad Grove con ESPHome
Actualmente los siguientes módulos Grove son compatibles con ESPHome
Consulta aquí
Ahora seleccionaremos 6 módulos Grove de la tabla anterior y explicaremos cómo pueden conectarse con ESPHome y Home Assistant.
3. Conexión Grove y Transmisión de Datos
Ahora seleccionaremos varios módulos Grove y explicaremos cómo pueden conectarse con ESPHome y Home Assistant.
Grove - Sensor de Temperatura y Humedad (BME680)
Configuración de Instalación
-
Paso 1. Conecta Grove - Temperature, Humidity, Pressure and Gas Sensor (BME680) a uno de los conectores I2C en la Seeed Studio Expansion Base para XIAO
-
Paso 2. Dentro del archivo xiao-esp32s3-bme680.yaml que creamos antes, cambia el archivo y envíalo OTA al XIAO ESP32S3
# Configuration for ESPHome
esphome:
# Name of the ESP32-S3 device
name: esp32s3
# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# Captive portal configuration
captive_portal:
# I2C configuration for BME680 sensor
i2c:
sda: GPIO5
scl: GPIO6
# BME680 sensor configuration
sensor:
- platform: bme680
temperature:
name: "BME680 Temperature"
oversampling: 16x
pressure:
name: "BME680 Pressure"
humidity:
name: "BME680 Humidity"
gas_resistance:
name: "BME680 Gas Resistance"
address: 0x76
update_interval: 60s
Puedes aprender más sobre el componente BME680 aquí. Te permite usar sensores basados en BME280, BME680, BMP085, BMP280, AHT10, AHT20 y AHT21. Aquí agregamos el componente I²C Bus porque AHT20 se comunica usando el protocolo I2C.
Visualizar en el Panel de Control
- Paso 1. En la página de Resumen de Home Assistant, haz clic en los 3 puntos y haz clic en Edit Dashboard

- Paso 2. Haz clic en + ADD CARD

- Paso 3. Selecciona By ENTITY, escribe temperature y selecciona la casilla de verificación junto a Temperature

-
Paso 4. Repite lo mismo para Humidity, Gas Resitance y Pressure
-
Paso 5. Haz clic en CONTINUE
-
Paso 6. Haz clic en ADD TO DASHBOARD
Ahora tu panel de control de Home Assistant se verá como se muestra a continuación

- Paso 7. También puedes visualizar los datos del sensor como medidores. Haz clic en Gauge bajo BY CARD

- Paso 8. Selecciona Temperature del menú desplegable

-
Paso 9. Haz clic en SAVE
-
Paso 10. Repite lo mismo para Humidity, Gas Resitance y Pressure
-
Ahora tu panel de control se verá como se muestra a continuación

Grove -Sensor Inteligente de Calidad del Aire (SGP41)
- Paso 1. Conecta Grove - Sensor Inteligente de Calidad del Aire (SGP41) a uno de los conectores I2C en la Base de Expansión Seeed Studio para XIAO

- Paso 2. Dentro del archivo xiao-esp32S3.yaml que creamos antes, cambia el archivo y envíalo por OTA al XIAO ESP32S3 sense
# Configuration for ESPHome
esphome:
# Name of the ESP32-S3 device
name: esp32s3
# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# Captive portal configuration
captive_portal:
# SPI configuration
spi:
clk_pin: GPIO8
mosi_pin: GPIO10
miso_pin: GPIO9
# I2C configuration for BME680 sensor
i2c:
sda: GPIO5
scl: GPIO6
scan: True
id: bus_a
frequency: 1MHz
# Sensor configuration for SGP4X
sensor:
- platform: sgp4x
voc:
id: sgp41_voc
name: "VOC Index"
nox:
id: sgp41_nox
name: "NOx Index"
- Paso 3. Ejemplo con Compensación compensation (Opcional): El bloque que contiene los sensores utilizados para compensación. Si no se establece, se usarán los valores predeterminados. Utilizaremos el Sensor de Temperatura y Humedad (BME680) para compensar el Sensor Inteligente de Calidad del Aire (SGP41). Aquí está el archivo xiao-esp32S3.yaml actualizado:
# Configuration for ESPHome
esphome:
# Name of the ESP32-S3 device
name: esp32s3
# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# Captive portal configuration
captive_portal:
# SPI configuration
spi:
clk_pin: GPIO8
mosi_pin: GPIO10
miso_pin: GPIO9
# I2C configuration for BME680 sensor
i2c:
sda: GPIO5
scl: GPIO6
scan: True
id: bus_a
frequency: 1MHz
# BME680 sensor configuration
sensor:
- platform: bme680
temperature:
id: bme680_temp
name: "BME680 Temperature"
oversampling: 16x
pressure:
name: "BME680 Pressure"
humidity:
id: bme680_hum
name: "BME680 Humidity"
gas_resistance:
name: "BME680 Gas Resistance"
address: 0x76
# SGP4X sensor configuration
- platform: sgp4x
voc:
name: "VOC Index"
nox:
name: "NOx Index"
compensation:
humidity_source: bme680_hum
temperature_source: bme680_temp
Nota: Este sensor costará 90 ciclos para recopilar suficientes muestras de datos y la advertencia no se puede evitar hasta ahora.

Visualizar en el Panel de Control
Lo mismo que antes.

Cámara OV2640/OV3660 (XIAO ESP32S3 Sense)
Configuración de Instalación
-
Paso 1. Conecta la placa externa de la Cámara OV2640 o OV660 al xiao esp32s3 sense
-
Paso 2. Dentro del archivo xiao-esp32s3-camera.yaml que creamos antes, cambia el archivo y envíalo por OTA al XIAO ESP32S3 sense
# Configuration for ESPHome
esphome:
# Name of the ESP32-S3 device
name: esp32s3
# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# Captive portal configuration
captive_portal:
# Configuration for the ESP32 Camera
esp32_camera:
id: espcam
name: My Camera
external_clock:
pin: GPIO10
frequency: 20MHz
i2c_pins:
sda: GPIO40
scl: GPIO39
data_pins: [GPIO15, GPIO17, GPIO18, GPIO16, GPIO14, GPIO12, GPIO11, GPIO48]
vsync_pin: GPIO38
href_pin: GPIO47
pixel_clock_pin: GPIO13
resolution: 800x600
# Configuration for the ESP32 Camera Web Server
esp32_camera_web_server:
- port: 8080
mode: stream
- port: 8081
mode: snapshot
Nota: Para más información, por favor lee aquí.
Visualizar en el Dashboard
- Paso 1. En la página de Resumen de Home Assistant, haz clic en los 3 puntos y haz clic en Edit Dashboard

- Paso 2. Haz clic en + ADD CARD

- Paso 3. Selecciona By ENTITY, escribe Camera y selecciona My Camera

- Paso 4. Haz clic en Add to Dashboard

- Paso 5. Al ver la transmisión web en el dashboard, está en modo inactivo, actualizándose solo unos pocos fotogramas por minuto. Cambia a modo activo cuando hacemos clic en la tarjeta, típicamente con una tasa de actualización que va desde uno hasta diez fotogramas por segundo. En este tutorial, la tasa de actualización es aproximadamente cuatro fotogramas por segundo.

Micrófono PDM para Asistente de Voz
Configurar la Configuración
- Paso 1. Dentro del archivo xiao-esp32s3-microphone.yaml que creamos antes, cambia el archivo y envíalo OTA al XIAO ESP32S3 sense
# Configuration for ESPHome
esphome:
name: esp32s3
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Over-the-Air update configuration
ota:
# Wi-Fi configuration
wifi:
ssid: "your wifi name"
password: "your password"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
# Captive portal configuration
captive_portal:
# Configuration for the status LED light
light:
- platform: status_led
id: light0
name: "Voice Assistant State"
pin:
number: GPIO21
inverted: true
# Configuration for I2S audio
i2s_audio:
i2s_lrclk_pin: GPIO46 # Note: labeled as "useless"
i2s_bclk_pin: GPIO42
# Configuration for the microphone using I2S audio
microphone:
- platform: i2s_audio
id: echo_microphone
i2s_din_pin: GPIO41
adc_type: external
pdm: true
# Configuration for the Voice Assistant
voice_assistant:
microphone: echo_microphone
# Configuration for the binary sensor (Boot Switch)
binary_sensor:
- platform: gpio
pin:
number: GPIO2
mode:
input: true
pullup: true
name: Boot Switch
internal: true
on_press:
- voice_assistant.start:
- light.turn_off: light0
on_release:
- voice_assistant.stop:
- light.turn_on: light0
Nota: Para más información, por favor lee aquí.
Visualizar en el Dashboard
- Paso 1. En la página de Resumen de Home Assistant, haz clic en los 3 puntos y haz clic en Edit Dashboard

- Paso 2. Haz clic en + ADD CARD

- Paso 3. Selecciona By ENTITY, luego selecciona Esp32S3 Assist in progress,Esp32S3 Assist in progress, Esp32S3 Finished speaking detection, Status y voice assistant state


- Paso 4. Haz clic en Add to Dashboard

- Paso 5. Cuando presiones el Button(D1) en la Seeed Studio Expansion Base para XIAO, el led definido por el usuario (GPIO2) se encenderá en el esp32s3 y podrás hablar con esphome a través del voice assitant.

Nota: Para más información, por favor léelo.
Matriz RGB 6x10 para XIAO
Configuración de Instalación
-
Paso 1. Primero necesitas conectar la Matriz RGB 6x10 al XIAO, consulta este Wiki para más detalles.
-
Paso 2. Copia la información .yaml de abajo y envíala por OTA al XIAO ESP32S3.
esphome:
name: sixtyled
friendly_name: sixtyled
esp32:
board: seeed_xiao_esp32s3
variant: esp32s3
framework:
type: arduino
version: latest
platform_version: 6.4.0
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Sixtyled Fallback Hotspot"
password: "MoLTqZUvHwWI"
captive_portal:
light:
- platform: esp32_rmt_led_strip
rgb_order: GRB
pin: GPIO1
num_leds: 60
rmt_channel: 0
chipset: ws2812
name: "XIAO LEDS"
Visualizar en el Dashboard
- Paso 1. Abre la ruta
Setting - Devices&services - ESPHome - sixtyled(el nombre que estableciste)
para añadir la tarjeta al dashboard.

- Paso 2. En la página Overview de Home Assistant, haz clic en los 3 puntos y haz clic en Edit Dashboard

- Paso 3. Haz clic en + ADD CARD

- Paso 4. Selecciona By ENTITY, escribe xiao y selecciona la casilla de verificación junto a sixtyled XIAO LEDS

- Paso 5. Haz clic en CONTINUE y Add to Dashboard

- Paso 6. Posteriormente, puedes encontrar una tarjeta en la sección "Overview" donde puedes controlar la MATRIZ RGB 6x10 para XIAO. Aquí, puedes alternar su estado de encendido/apagado y personalizar su color y brillo.

✨ Proyecto de Colaborador
- Este proyecto está respaldado por el Proyecto de Colaborador de Seeed Studio.
- Gracias a los esfuerzos de Zachary y tu trabajo será exhibido.
- Gracias a los esfuerzos de python y la fuente del proyecto se comparte aquí.
Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para atender diferentes preferencias y necesidades.