Updates nur einmal im Monat machen

Mit der Zeit hat es mich ziemlich gestört, dass mir permanent verfügbare Updates für diverse Integrationen und auch für HAOS angezeigt werden. Mein Gedanke war, dass ich mir einen Update-Tag im Monat vornehme, an dem ich mich konzentriert darum kümmere und dann entscheide, welches Update ich machen möchte und welches nicht.

Dafür habe ich jetzt eine Lösung gefunden. Kurz gesagt funktioniert es so:
Mithilfe einer Automation werden einmal im Monat (bei mir immer am 2.Sonntag) alle Entitäten der Domain “update” aktiviert. Diese Entitäten bleiben dann für 12 Stunden aktiv. In diesen 12 Stunden kann ich mich damit befassen. Nach den 12 Stunden, werden alle vorhandenen Entitäten der Domain “Update” als Liste in dem Attribut einer Helfer-Entität gespeichert und anschließend wieder deaktiviert. Einen Monat später werden die Entitäten aus dieser Liste wieder aktiviert.

Was braucht man dafür:

  1. Spook Integration - konkret die Action homeassistant.disable_entity
  2. Ein Trigger-basierter Sensor, in dessen Attribut die Liste mit den Update-Entitäten gespeichert werden kann - In den Attributen deshalb, weil man im Zustand eines Sensors nur max. 255 Zeichen speichern kann. - Dieser Sensor muss manuell in der configuration.yaml angelegt werden
  3. Eine Automation
    a. Trigger - immer am 2. Sonntag des des Monats
    b. Entitäten aus der Liste aktivieren
    c. 12 Stunden warten
    d. Neue Liste speichern
    e. Update-Entitäten deaktivieren.

In einer Liste muss man deshalb speichern, weil man nach der Deaktivierung unter der Domain “update” ja keine aktiven Entitäten mehr findet - man muss sie aber dennoch irgendwie benennen, um sie wieder aktivieren zu können…

Meine Trigger-Entität heißt update_entitäten_speicher

- trigger:
    - platform: event
      event_type: "speichere_update_liste"
  sensor:
    - name: "Update Entitäten Speicher"
      unique_id: update_entitaten_speicher
      state: "{{ now().isoformat() }}"
      attributes:
          # Hier wird die eigentliche Liste der Entitäten als Attribut abgelegt
        entity_list: "{{ states.update | map(attribute='entity_id') | list }}"

Hiermit kann man sich die LIste zum Test anzeigen lassen (Entwicklerwerkzeuge - Template)

{{ states.update | map(attribute='entity_id') | list }}

Mit dieser Automation wird aktiviert/deaktiviert:

alias: auto_update_HA
description: >-
  Aktiviert Updates am 2. Sonntag im Monat für 12h, Update Entitäten werden anschließßend wieder deaktiviert
triggers:
  - at: "04:00:00"
    trigger: time
conditions:
  - condition: template
    value_template: "{{ now().weekday() == 6 }}"
  - condition: template
    value_template: "{{ 8 <= now().day <= 14 }}"
actions:
  - action: homeassistant.enable_entity
    target:
      entity_id: >
        {% set liste = state_attr('sensor.update_entitaten_speicher',
        'entity_list') %} {{ liste if liste is not none else states.update |
        map(attribute='entity_id') | list }}
    data: {}
  - delay: "12:00:00"
  - event: speichere_update_liste
  - delay: "00:00:05"
  - action: homeassistant.disable_entity
    target:
      entity_id: "{{ states.update | map(attribute='entity_id') | list }}"
    data: {}

Viel Spaß damit

4 „Gefällt mir“

Ich finde die Idee gut weil mich die Update Hinweise auch immer spontan nerven. Vielleicht mach ich es später. Danke für das Aufzeigen :+1:
Den Trick über die Attribute finde ich gut weil ich würde mit 5541 Zeichen die 255 Grenze sprengen

{{ states.update
   | map(attribute='entity_id')
   | map('length')
   | sum }}
1 „Gefällt mir“

Eine Anpassung noch:

Natürlich gibt es im Rahmen einiger Updates dann Neustarts, was dazu führt, dass die Automation angehalten wird. Das hat dann zur Folge, dass dann die Update-Entitäten nicht mehr automatisch deaktiviert werden. Daher muss die Automation angepasst werden:

alias: auto_update_HA
description: >-
  Aktiviert Updates am 2. Sonntag im Monat, Updates werden nur in dieser
  Zeit zugelassen
triggers:
  - at: "04:00:00"
    trigger: time
    id: Update an
  - at: "20:00:00"
    trigger: time
    id: Update aus
conditions:
  - condition: template
    value_template: "{{ now().weekday() == 6 }}"
  - condition: template
    value_template: "{{ 8 <= now().day <= 14 }}"
actions:
  - if:
      - condition: trigger
        id:
          - Update an
    then:
      - action: homeassistant.enable_entity
        target:
          entity_id: >
            {% set liste = state_attr('sensor.update_entitaten_speicher',
            'entity_list') %} {{ liste if liste is not none else states.update |
            map(attribute='entity_id') | list }}
        data: {}
    alias: Update Entitäten aktivieren
  - if:
      - condition: trigger
        id:
          - Update aus
    then:
      - event: speichere_update_liste
      - delay: "00:00:05"
      - action: homeassistant.disable_entity
        target:
          entity_id: "{{ states.update | map(attribute='entity_id') | list }}"
        data: {}
    alias: Update Entitäten deaktivieren

Nice ! Danke dir für die simple Automation, die ständige updates von Wetter Radar Card und ESPHome unterdrücken kann :slight_smile:

Ich empfehle dir noch eine Verlinkung in dem Fred:

Eure nützlichsten Automationen

Moin,
hatte hier schon ein ziemlich ähnliches Thema:

Dir ist klar das es reicht die Sichtbarkeit umzustellen, damit es nicht mehr angezeigt wird?

LG