Home Assistant

Update-Center in HA: alle Firmware-Updates an einem Ort

Der update-Domain in Home Assistant ist eine der am meisten unterschätzten Errungenschaften der letzten zwei Jahre. Sie sammelt Updates aus völlig unterschiedlichen Welten – HA Core, Supervisor, Operating System, HACS-Komponenten, Add-ons, ZHA-Coordinator-Firmware, Zigbee-Endgeräte, Matter-Geräte – und macht sie als gewöhnliche Entitäten verfügbar. Damit lassen sich Updates zentral überwachen, vor Updates automatisch Backups erstellen, und der wachsende Wildwuchs von Firmware-Quellen wird endlich beherrschbar.

Was die update-Domain liefert

Jede update.*-Entität hat denselben State – on (Update verfügbar) oder off (aktuell) – sowie Attribute wie installed_version, latest_version, release_summary und release_url. Das ist das gemeinsame Format, mit dem sich alles in einem einzigen Template-Sensor zusammenfassen lässt. In einem typischen HA-Setup finden sich Dutzende dieser Entitäten:

  • update.home_assistant_core_update
  • update.home_assistant_supervisor_update
  • update.home_assistant_operating_system_update
  • update.hacs_update
  • update.button_card_update
  • update.advanced_ssh_web_terminal_update
  • update.file_editor_update
  • update.home_assistant_connect_zbt_1_ea77a868_firmware
  • update.eve_weather_20ebs9901_firmware
  • update.eve_energy_20ecl1301_firmware
  • update.aqara_wasser_sensor_firmware
  • update.bewegungsmelder_aqara_firmware
  • update.gardena_smart_system_update

Ohne Bündelung verteilen sich diese auf das Settings-Menü, die HACS-Seite, das ZHA-Dashboard und das Hersteller-Portal. Mit einem Template-Sensor wird daraus eine Zahl auf dem Dashboard.

Pending-Updates als Template-Sensor

In configuration.yaml oder unter Helfer → Vorlage:


template:
  - sensor:
      - name: "Updates ausstehend"
        unique_id: updates_ausstehend
        state: >
          {{ states.update | selectattr('state', 'eq', 'on') | list | count }}
        unit_of_measurement: "Updates"
        icon: mdi:package-up
        attributes:
          liste: >
            {{ states.update
               | selectattr('state', 'eq', 'on')
               | map(attribute='name')
               | list | join(', ') }}
          kritisch: >
            {{ states.update
               | selectattr('state', 'eq', 'on')
               | selectattr('attributes.entity_picture', 'search', 'home-assistant')
               | list | count }}


Das Resultat: ein einziger Sensor sensor.updates_ausstehend, dessen Wert anzeigt, wie viele Komponenten Updates haben. Das Attribut liste enthält die Klartextnamen für eine Push-Notification, kritisch zählt nur HA-Core-relevante Updates separat.

Auto-Backup vor Core-Updates

Ein häufiger Schmerzpunkt: Core-Update wird angeklickt, irgendetwas bricht, das letzte Backup ist drei Wochen alt. Eine Automation erzwingt frische Backups, bevor ein Update überhaupt installiert werden darf:


automation:
  - alias: Auto-Backup vor Core-Update
    trigger:
      - platform: state
        entity_id: update.home_assistant_core_update
        to: "on"
    action:
      - service: backup.create_automatic
        data:
          name: "Pre-Update {{ now().strftime('%Y-%m-%d_%H-%M') }}"
      - service: persistent_notification.create
        data:
          title: "HA Core Update bereit"
          message: >
            Version {{ state_attr('update.home_assistant_core_update', 'latest_version') }}
            verfügbar. Backup erstellt.
            Release Notes:
            {{ state_attr('update.home_assistant_core_update', 'release_url') }}


Die backup.create_automatic-Aktion (ab HA 2025.1) nutzt die in den Backup-Einstellungen konfigurierten Ziele (lokal, Network Share, Google Drive via HACS). Wer den Backup-Manager bereits sauber konfiguriert hat, bekommt die 3-2-1-Strategie automatisch korrekt versioniert.

Wöchentliche Push-Notification

Statt täglich von Update-Badges genervt zu werden, lohnt sich ein gebündelter Wochenreport:


automation:
  - alias: Wochenreport Updates
    trigger:
      - platform: time
        at: "08:00:00"
    condition:
      - condition: time
        weekday: [sun]
      - condition: template
        value_template: "{{ states('sensor.updates_ausstehend') | int > 0 }}"
    action:
      - service: notify.mikes_iphone_17_pro
        data:
          title: "{{ states('sensor.updates_ausstehend') }} Updates verfügbar"
          message: "{{ state_attr('sensor.updates_ausstehend', 'liste') }}"
          data:
            push:
              interruption-level: time-sensitive


interruption-level: time-sensitive setzt die iOS-Notification über aktive Fokus-Modi. Wer Android nutzt, ersetzt das durch priority: high und ttl: 0.

Stolperfallen in der Praxis

Zigbee-Endgerät-Updates (update.*_firmware) über ZHA brauchen aktivierte OTA-Quellen und können bei Batteriegeräten Stunden dauern – während des Updates ist das Gerät nicht ansprechbar. Nie automatisch installieren, sondern manuell zu einem ruhigen Zeitpunkt anstossen. Bei Aqara-Sensoren gilt: erst Batterie wechseln, dann Update. Bei IKEA-Geräten muss das Endgerät zwingend wach sein – einmal kurz auslösen und sofort den Update-Button klicken.

HACS-Updates lassen sich aktivieren durch experimental: true in den HACS-Einstellungen, sind dann aber selten kritisch. Add-ons hingegen sollten in einem Zwei-Wochen-Rhythmus durchgewinkt werden, weil Sicherheits-Patches oft nur dort eintreffen.

Fazit

Der update-Domain reduziert Wartungsfrust auf einen einzigen Dashboard-Wert und eine wöchentliche Push. In Kombination mit dem Backup-Manager wird daraus eine selbstdokumentierende Update-Strategie: Backup, Update, Release-Notes im Notification-Verlauf. Wer einmal eine fehlgeschlagene Core-Migration ohne aktuelles Backup zurückgespielt hat, weiss, warum diese fünf Minuten YAML jeden Aufwand wert sind.

← Zurück zur Übersicht