El sensor del patio que nunca llega
¿Tienes un sensor de temperatura, una ampolleta o un contacto de puerta que en Home Assistant aparece cada dos por tres como "no disponible"? Casi siempre no es el sensor: es que la senal Zigbee no alcanza a cruzar un muro de hormigon o el piso de arriba. La solucion clasica es comprar un repetidor comercial de 15.000 a 30.000 pesos que solo sabe hacer una cosa: repetir. En este tutorial vas a hacer lo mismo (y mas) con un ESP32-C6 que cuesta una fraccion de eso.
Al terminar vas a tener un router Zigbee 3.0 propio, flasheado con ESPHome, sumado a tu red ZHA como un nodo mas de la malla. Sin nube, sin suscripcion, y con la puerta abierta para que despues ese mismo board te entregue sus propios sensores como endpoints Zigbee. Vas a aprender por que el C6 sirve para esto, como dejar la config YAML justa, como flashear por USB y como sortear el problema del huevo y la gallina al momento de emparejar.
Por que un ESP32-C6 y no un repetidor de tienda
El ESP32-C6 es un microcontrolador RISC-V de Espressif que trae radio IEEE 802.15.4 nativa integrada. Ese es el detalle clave: 802.15.4 es exactamente la capa fisica que usa Zigbee. No estas emulando nada ni traduciendo protocolos; el chip habla el mismo idioma de radio que tu coordinador. Con ESPHome y unas pocas lineas de YAML, en minutos queda funcionando como un router Zigbee de verdad que se une a cualquier coordinador Zigbee 3.0, sea ZHA o Zigbee2MQTT, y se queda permanentemente como nodo de la malla.
La diferencia con un repetidor cerrado no es solo el precio. El firmware es abierto y editable (es tu YAML), y ademas es ampliable: el mismo board puede entregar sensores o botones como endpoints Zigbee, algo que una blackbox comercial jamas te va a permitir.
| Caracteristica | ESP32-C6 (ESPHome) | Repetidor Zigbee comercial |
|---|---|---|
| Precio | ~6.000 a 8.000 CLP equiv. | 15.000 a 25.000 CLP equiv. |
| Firmware | Abierto, editable (YAML) | Cerrado |
| Ampliable | Si, suma sensores/botones como endpoints | No, blackbox |
| Compatibilidad | Zigbee 3.0 (ZHA y Zigbee2MQTT) | Normalmente Zigbee 3.0 |
Lo que necesitas
- Un board ESP32-C6 con USB-C (en este tutorial: Waveshare ESP32-C6-DEV KIT-N8).
- Una red Zigbee ya funcionando en Home Assistant (ZHA) con su coordinador (por ejemplo un SONOFF ZBDongle-E).
- El add on ESPHome Device Builder instalado en Home Assistant.
- Un cable USB-C y un puerto USB libre en el computador desde donde vas a flashear.

Antes de partir: dos limitaciones honestas
Hay dos cosas que conviene saber antes de flashear, porque explican decisiones raras que vamos a tomar en la config.
El C6 comparte antena y timing de radio entre WiFi y 802.15.4. Segun la documentacion de ESPHome, tener WiFi en modo estacion y router Zigbee al mismo tiempo genera una red Zigbee inestable. Por eso vamos a armar el router deliberadamente sin WiFi: nada de wifi:, nada de api:, ni actualizaciones OTA por red. Las actualizaciones se hacen solo por cable USB. Para un aparato que despues de la instalacion inicial queda enchufado en un rincon repitiendo paquetes, es un compromiso mas que razonable.
El C6 transmite con apenas ~+3 dBm, bastante menos que un chip Zigbee dedicado con antena externa. Para la mayoria de las casas alcanza de sobra, pero hay un detalle contraintuitivo: si el board queda demasiado pegado al coordinador puede dar problemas. La idea es que el router quede a medio camino entre el coordinador y la zona con mala senal, no al lado del coordinador.
Paso 1: Instala el add on ESPHome en Home Assistant
ESPHome Device Builder es un add on oficial, pero vive en su propio repositorio que no siempre queda registrado en cada instalacion. Si no aparece en la tienda de add ons, abre Ajustes -> Complementos -> Tienda de complementos, arriba a la derecha entra al menu de tres puntos, elige Repositorios y agrega https://github.com/esphome/home-assistant-addon. Despues busca ESPHome Device Builder en la tienda, instalalo e inicialo.

Paso 2: Crea el dispositivo nuevo
Abre la interfaz (boton Abrir interfaz de usuario en la pagina del add on). En el primer arranque elige la vista de experto, que es la que nos sirve. Luego haz clic en Crear dispositivo -> Crear nuevo proyecto, y como board selecciona ESP32-C6, concretamente ESP32-C6 DevKitC-1: el board Waveshare es pin compatible con ese perfil, asi que esa definicion basta.

Asigna un nombre al dispositivo, por ejemplo ESP32-C6-Zigbee-Router.
Ojo con el WiFi: aunque despues lo vamos a sacar, el asistente de configuracion inicial hoy no deja saltarse la pregunta de WiFi; exige SSID y contrasena para generar una primera config que compile. Ingresa tu WiFi normal y termina con Finalizar configuracion. En el siguiente paso ese WiFi igual sale de la config.

Paso 3: Limpia la config y agrega el componente Zigbee
El asistente deja una config estandar con wifi:, api: y ota:. En el editor YAML de la derecha elimina esos tres bloques por completo y, en su lugar, agrega el Zigbee Component desde el navegador de dispositivo a la izquierda (Agregar componente -> Zigbee Component). La config final debe quedar asi:
esphome:
name: esp32-c6-zigbee-router
friendly_name: ESP32-C6 Zigbee Router
esp32:
board: esp32-c6-devkitc-1
framework:
type: esp-idf
logger:
zigbee:
router: true

Que hace cada linea:
board: esp32-c6-devkitc-1: el board Waveshare es pin compatible con el ESP32-C6-DevKitC-1 oficial, asi que esa definicion alcanza.framework: esp-idf: el componente Zigbee nativo de ESPHome necesita el framework ESP IDF, no Arduino.logger:: salida de depuracion por la conexion serial USB, muy util en la primera puesta a punto.zigbee: router: true: sin mas entradas de sensor o switch, el equipo se queda como router puro, sin endpoints Zigbee propios.
Paso 4: Flashea el board
Conecta el ESP32-C6 por USB-C al computador donde corre el navegador. Abajo a la derecha haz clic en Instalar y elige Conectar a este computador. La firmware se compila; la primera vez demora bastante mas que un proyecto ESPHome normal por las librerias Zigbee y mbedTLS del build ESP IDF (varios minutos, es normal).
Despues de compilar suele aparecer un aviso de que desde esa pagina no se puede flashear por USB. El motivo: Home Assistant corre en http://homeassistant.local:8123, o sea sin HTTPS, y el navegador solo permite WebSerial (la interfaz que necesita el flasheo por USB en el navegador) en sitios seguros. Por eso ESPHome abre automaticamente web.esphome.io en una pestana nueva, que si corre por HTTPS. Tranquilo: los datos de la firmware siguen viajando solo localmente entre el navegador y el board por USB; web.esphome.io solo entrega la interfaz de flasheo.
En web.esphome.io el navegador te pide el puerto serial por un dialogo WebSerial: elige el board. En la mayoria de los Windows aparece como "USB Single Serial (COMx)", nombrado segun el chip CH343 del board. Haz clic en Conectar y el proceso corre solo hasta el mensaje de exito.
Paso 5: Une el router a la red Zigbee
En Home Assistant entra a Ajustes -> Dispositivos y servicios -> ZHA y activa Permit new devices to join (por defecto hasta 254 segundos). El router intenta unirse solo, en segundo plano, cada pocos segundos apenas arranca; no necesitas gatillarlo manualmente.
Truco clave para el primer emparejamiento: Zigbee tiene aca un problema del huevo y la gallina. Para que un equipo nuevo entre a la red necesita contacto de radio directo con el coordinador (o con un router ya conectado), pero el router nuevo recien puede retransmitir una vez que ya esta adentro. Como el C6 transmite con solo ~+3 dBm, si dejas el board en su ubicacion final (la dificil) desde el principio, el emparejamiento puede fallar aunque esa posicion despues funcione perfecto como router. La solucion: para el primer join deja el board en la misma pieza que el coordinador (a pocos metros), activa Permit Join y deja que entre. Recien despues muevelo a su ubicacion definitiva; una vez dentro de la malla, la conexion suele mantenerse estable incluso con senal mas debil.
Cuando el join funciona, el log muestra la linea decisiva:
[I][zigbee:081][Zigbee_main]: Joined network successfully (PAN ID: 0xfe63, Channel:25)
Y en ZHA (Ajustes -> Dispositivos y servicios -> ZHA -> Dispositivos) el router aparece como equipo propio. En una prueba junto al coordinador dio un LQI de 232 y -42 dBm. Despues muevelo del lugar de prueba a la zona problematica: la conexion se mantiene aunque la senal baje.

Toma algunas horas hasta que los equipos de la red se reorienten hacia el router nuevo. Despues de varias horas el mapa se ve como uno espera: los sensores del sector con mala senal se cuelgan del nuevo nodo. Ese termometro que a traves de un piso de hormigon no reportaba nada, ahora entrega datos de forma confiable y a un costo minimo.

Variantes y mejoras
El original se queda en el repetidor puro, pero el verdadero valor del C6 esta en lo que puedes hacer despues. Tres ideas para llevarlo mas lejos:
El router que ademas es sensor (endpoints Zigbee propios). El componente
zigbee:de ESPHome permite declarar entidades adicionales (sensor, binary_sensor, switch) que ocupan sus propios endpoints Zigbee. En vez de gastar un board solo para repetir, conectale un sensor de temperatura y humedad y expon esa lectura directo a ZHA, sin WiFi ni MQTT de por medio. Asi el mismo aparato que extiende la malla tambien mide el ambiente del rincon donde lo pusiste: dos funciones, un board.Un boton fisico como control Zigbee. Suma un pulsador a un GPIO libre y declaralo como
binary_sensordentro del bloque Zigbee. Queda como un mando fisico barato para gatillar automatizaciones en Home Assistant (apagar luces, activar una escena), aprovechando que el nodo ya esta en la malla.Varios routers para cubrir una casa grande. Como cada C6 cuesta muy poco, puedes armar dos o tres y repartirlos por la casa formando una malla propia. Regla de oro del emparejamiento: agrega uno a la vez, siempre haciendo el primer join cerca del coordinador o de un router ya conectado, y recien despues muevelo a su posicion final.
Personalizacion para Chile
Para este proyecto la lista real de materiales es corta. Puedes conseguir los componentes centrales en MechatronicStore; el catalogo maneja placas ESP32 y accesorios de conexion, aunque el modelo exacto de C6 puede variar segun stock (confirma disponibilidad antes de comprar). Estos son los materiales del BOM real:
- Board ESP32-C6 con USB-C (en el tutorial: Waveshare ESP32-C6-DEV KIT-N8). Es el corazon del proyecto: debe ser C6, porque es el que trae la radio 802.15.4 nativa. Un ESP32 clasico o un C3 no sirven para Zigbee router.
- Cable USB-C para alimentar y flashear. Cualquier cable USB-C de datos (no solo carga) funciona.
- Coordinador Zigbee (SONOFF ZBDongle-E), solo si todavia no tienes una red ZHA armada. Si ya corres Home Assistant con Zigbee, este ya lo tienes.
Costo aproximado del proyecto en mercado chileno, asumiendo que ya tienes el coordinador y Home Assistant corriendo: alrededor de $8.000 a $12.000 CLP solo por el board y el cable. Si necesitas sumar el coordinador, agrega la referencia del ZBDongle-E aparte. Nota honesta: no todos los modelos exactos de board C6 estan siempre en stock local, asi que revisa el catalogo de MechatronicStore o pide el equivalente C6 con USB-C disponible.
Recursos
- Tutorial original (aleman), en el que esta inspirado este articulo: ESP32-C6 als Zigbee Router einrichten de Philipp Schweizer en raspberry.tips.
- Documentacion del componente Zigbee de ESPHome: esphome.io/components/zigbee
- Add on oficial ESPHome para Home Assistant: github.com/esphome/home assistant-addon
Version chilena con componentes en stock local en MechatronicStore.





