ESPHome 2026.9.0 trae dos breaking changes que no saltan hasta que compilas. Si tu configuración usa modbus_controller con register_count o force_new_range, o dejas que el timezone lo empuje Home Assistant sin declararlo en YAML, la próxima compilación puede reventar. Esto es lo que hay que cambiar, con el YAML de antes y el de después, verificado contra el changelog oficial a 25/09/2026.
1. modbus_controller: register_count y force_new_range desaparecen
El changelog oficial de ESPHome 2026.9.0 lo marca como breaking change: las opciones register_count y force_new_range del componente modbus_controller se retiran, y su lugar lo ocupa una sola opción booleana, reuse_previous_range.
Si tu config actual es algo así:
modbus_controller:
- id: inversor_solax
address: 0x01
modbus_id: hub_rs485
register_count: 16
force_new_range: true
update_interval: 30s
La migración directa es esta:
modbus_controller:
- id: inversor_solax
address: 0x01
modbus_id: hub_rs485
reuse_previous_range: true
update_interval: 30s
Si tenías register_count: 0 o force_new_range: false, no hay un mapeo uno a uno: la opción nueva es una sola bandera. Busca el comportamiento que querías en la documentación del componente antes de copiar el valor por inercia.
2. timezone: se acabó el reemplazo de texto en cliente
El blog de release de ESPHome 2026.9.0 confirma que ya no se hace reemplazo de cadenas C++ para el timezone. Ahora, o defines timezone en el YAML, o dejas que Home Assistant envíe la estructura ya parseada. Para eso necesitas Home Assistant 2026.3.0 o posterior: los clientes más viejos se quedan con el timezone generado por codegen, no con el que envía HA.
Si al compilar la 2026.9.0 te llega un error de timezone, añade la zona a la raíz del YAML y vuelve a compilar:
esphome:
name: nodo-rs485
wifi:
ssid: "MiRed"
password: "..."
timezone: Europe/Madrid
No inventes una zona horaria rara para solucionarlo: usa el valor IANA correcto de tu ubicación, el mismo que utilizarías en Home Assistant.
3. Cómo saber si tu config está afectada
| Config anterior | Cambio en 2026.9.0 | Qué hacer |
|---|---|---|
register_count: N y force_new_range: true |
Ambas opciones desaparecen | Usa reuse_previous_range: true |
| Timezone empujado por Home Assistant 2026.3.0 o anterior | Ya no hay reemplazo de cadena C++ generada | Actualiza HA a ≥2026.3.0 o define timezone en YAML |
| Sin timezone declarado en YAML | La zona depende de lo que envíe HA por API | Define timezone explícito si el log avisa |
4. Qué no hacer
No copietes register_count a ciegas dentro de reuse_previous_range como si fueran equivalentes: no lo son. Y no elimines la opción nueva para que compile de casualidad; si tu integración depende de reutilizar el rango anterior, dejarla fuera cambia el comportamiento, no lo arregla.
Última revisión: 25/09/2026