Saltar al contenido

Downgrade en Home Assistant: guía completa con mis fallos y cómo los arreglé

22/10/2025

Cuando algo se rompe tras actualizar Home Assistant, hay dos opciones: aguantar el dolor o volver a la última versión que te funcionaba. Yo he pasado por ahí (más de una vez), y en este artículo te cuento mi proceso real: qué salió mal, cómo hice el downgrade en Home Assistant y qué aprendí para no repetir el desastre.

¿Qué es “hacer downgrade”? En cristiano: volver a una versión anterior del software. En Home Assistant puede significar bajar solo el Core (el “cerebro”), o incluso el OS y/o el Supervisor si el problema viene de ahí. ¿Para qué sirve? Para deshacer una actualización que ha roto algo (una integración, un add-on, tu red Zigbee, etc.) y regresar a la última versión que te funcionaba bien. Hecho correctamente, no “borra tu casa”: mantiene tu configuración y datos; aun así, siempre hago copia de seguridad antes porque, según lo que cambió entre versiones, puede haber ajustes que el sistema ya no entienda hacia atrás.


Índice

    Por qué tuve que hacer downgrade

    Después de actualizar a 2025.10.x, la integración Alexa Devices empezó a fallar a lo bestia:

    • Errores tipo AttributeError: 'NoneType' object has no attribute 'get' (alexapy/AlexaAPI).
    • Y TypeError: 'NoneType' object is not subscriptable dentro de aioamazondevices/api.py al acceder a ["data"]["listEndpoints"].

    Traducción: Amazon cambió algo en sus respuestas y la lib del core se encontraba con None. Resultado: banners rojos en la integración y cosas que antes iban, dejaron de ir.

    Mi decisión: bajar a 2025.9.4. El banner desapareció, pero no todo volvió. Tuve que adaptar mis notificaciones a la forma “buena” que sí seguía funcionando.


    Antes de tocar nada: mis imprescindibles

    No me enrollo con “buenas prácticas bonitas”; esto es lo que hago de verdad:

    1. Snapshot completo (incluidos config, add-ons y media).
    2. Copia del snapshot fuera del sistema (NAS o PC).
    3. Anotar versiones actuales: Core / OS / Supervisor / Add-ons críticos (Zigbee2MQTT, Mosquitto, etc.).
    4. Desactivar actualizaciones automáticas de add-ons delicados (Zigbee2MQTT, Mosquitto, MariaDB…) y no tocar HACS hasta estabilizar.
    5. Plan de reversión: si el downgrade sale rana, restauro el snapshot sin pestañear.

    Nota sobre Zigbee2MQTT

    Hace semanas reconstruí toda mi red Zigbee. Desde entonces, no me la juego: el downgrade lo hago sin borrar ni tocar las carpetas de datos de Zigbee2MQTT. Y si tengo que restaurar, restauración parcial (config + add-on Zigbee2MQTT + Mosquitto), no full wipe de todo.


    Downgrade: qué significa exactamente (Core vs OS vs Supervisor)

    • Core: el backend de HA (el “cerebro”).
    • OS: el sistema operativo de HA (si usas Home Assistant OS).
    • Supervisor: gestiona contenedores/add-ons (en instalaciones OS o Supervised).

    Puedes bajar solo Core (lo más habitual), o OS/Supervisor si el problema viene de ahí. Yo solo bajé Core.


    Método A (mi favorito): Snapshot (restore)

    Pros: rollback limpio y probado.
    Contras: pierdes cambios posteriores al snapshot.

    Pasos que sigo:

    1. Crear snapshot justo antes de actualizar (sí, antes; y si no, lo creo ya por si tengo que volver a la versión que tengo ahora).
    2. Si la actualización rompe algo serio → Restore del snapshot que me funcionaba:
      • Restore full si necesito regresar todo tal cual.
      • Restore parcial si solo quiero bajar Core y dejar datos (Zigbee2MQTT, etc.) tal como estaban.

    Método B: CLI (quirúrgico y rápido)

    Cuando sé exactamente a qué versión bajar, tiro de CLI. Comandos (ejecútalos en la consola de HA):

    # Bajar Home Assistant Core a una versión concreta
    ha core update --version 2025.9.4
    
    # (si hiciera falta)
    ha os update --version X.Y.Z
    ha supervisor update --version X.Y.Z
    

    Después de bajar:

    # Validar la configuración antes de levantar todo
    ha core check
    # Reiniciar Core
    ha core restart
    

    Mi opinión: la CLI es rápida y eficiente, pero necesitas claro a qué versión bajar y qué cambió. Si dudas o hay muchos frentes, tira de snapshot.


    El caso “Alexa Devices”: qué rompió y cómo lo dejé estable

    Tras el downgrade, la integración del core dejaba de dar error crítico, pero algunas acciones seguían sin ir como antes (anuncios, grupos de notify, etc.). Lo que sí funciona fiable:

    1) Notificación por dispositivo (TTS) usando notify.send_message

    Formato único que adopté en TODO:

    action: notify.send_message
    target:
      entity_id: notify.papi_hablar
    data:
      message: "Prueba de voz desde Home Assistant"
    

    Mis IDs actuales:
    notify.papi_hablar · notify.echo_show_8_hablar · notify.echo_pop_de_albert_hablar
    (y fuera de Alexa: notify.telegram)

    Para varios altavoces:

    action: notify.send_message
    target:
      entity_id:
        - notify.papi_hablar
        - notify.echo_show_8_hablar
    data:
      message: "Aviso en dos altavoces"
    

    2) Cosas que descarté

    • Grupos de notify tipo alexa_media_papi: con la situación actual, no me despachaban como esperaba. Los quité (menos magia, más control).
    • data: { data: {...} } anidados y type: tts: innecesarios en el patrón nuevo. Fuera.

    3) Limpieza masiva de automatizaciones

    Tenía cientos de automatizaciones con notificaciones viejas. Hice dos cosas:

    • Refactor con VS Code (regex) para pasar todo a: - service: notify.send_message target: entity_id: notify.<dispositivo>_hablar data: message: "..."
    • Scripts de mantenimiento que me hice para no ir línea a línea:
      • Uno que desactiva/elimina automatizaciones que referencian entidades huérfanas (me sobran muchas por probar cacharros).
      • Otro que compara el YAML con el entity registry y me saca todas las entidades desconocidas (para decidir si borro o arreglo).

    Resultado práctico: cero YAML zombie, menos ruido y menos sorpresas al arrancar.


    Mis checklists post-downgrade

    1. Alexa TTS: probar desde Desarrollo → Acciones →
      notify.send_message con target.entity_id: notify.papi_hablar y un message corto.
      Si suena, OK. Si no, reviso logs de alexa_devices (coordinator) y corto por lo sano: no uso announce ni grupos.
    2. Zigbee2MQTT: que los dispositivos respondan, coordinador OK y topics publicando. Si no, no reinstalo: primero restauro parcial Zigbee2MQTT + Mosquitto.
    3. HACS: no lo toco hasta que todo lo demás esté estable.
    4. Validación general: ha core check + “Comprobar configuración” en la UI.

    Lecciones que me llevo

    • No actualizo el mismo día que sale una versión si mi casa depende de ello. Espero a que la comunidad “haga de beta testers” y leo breaking changes.
    • Backups duplicados (snapshot y copia fuera) siempre.
    • Estandarizar patrones de YAML evita que media docena de integraciones me rompan las notificaciones cada temporada.
    • Las integraciones del core (como Alexa Devices) pueden romper por cambios del proveedor. Cuando pase, me quedo con el camino que funciona (en mi caso, TTS con notify.send_message) y sigo con mi vida.

    Preguntas que siempre me hacéis

    ¿Se puede bajar sin romper Zigbee2MQTT?
    Sí. No borres datos del add-on. Si necesitas restaurar, haz restauración parcial (config + add-on), comprueba el puerto del coordinador y listo.

    ¿Qué método es mejor, snapshot o CLI?
    Si tienes prisa y sabes qué haces, CLI. Si hay muchos cambios o dudas, snapshot.

    ¿Cómo elijo la versión a la que bajo?
    La última que te funcionaba. En mi caso, 2025.9.4 fue el “refugio” mientras arreglaba lo de Alexa.


    Plantillas “de verdad” que uso ahora

    Aviso en varios altavoces (nuevo formato):

    - service: notify.send_message
      target:
        entity_id:
          - notify.papi_hablar
          - notify.echo_show_8_hablar
      data:
        message: >
          La lavadora ha terminado. Toca tender o secadora.
    

    Batería al 100% (evitando estructuras antiguas):

    - id: 'tcl_bateria_100'
      alias: TCL batería cargada 100
      trigger:
        - platform: state
          entity_id: sensor.t671h_battery_level
          to: '100'
      condition:
        - condition: state
          entity_id: input_boolean.no_molestar
          state: 'off'
      action:
        - service: notify.send_message
          target:
            entity_id: notify.papi_hablar
          data:
            message: "Albert, tu teléfono está completamente cargado!"
      mode: single
    

    Conclusión

    Hacer downgrade en Home Assistant no es perder el tiempo; es volver a la estabilidad cuando una actualización rompe algo clave. A mí me salvó la vida con Alexa Devices. La clave no es solo bajar de versión: es aprovechar para estandarizar y limpiar. Desde que reorganicé mis notificaciones con notify.send_message y mantengo a raya las automatizaciones huérfanas, todo va más fino.

    Si te encuentras en el mismo lío:

    1. Snapshot,
    2. Downgrade a la última estable que te funcionaba,
    3. Estandariza notificaciones,
    4. Limpia automatizaciones con entidades que ya no existen,
    5. Verifica paso a paso (TTS, Zigbee2MQTT, etc.).

    Y si el día de mañana la integración de Alexa vuelve a cambiar, no me pillará con la casa en el aire.

    Sígueme a YouTube

    downgrade en home assistant