Nie wieder Offline-Geräte übersehen: Smarter Lösungsansatz für Home Assistant Ausfälle!

In diesem Video zeige ich dir, wie du mit einem cleveren Template Sensor und einer benutzerdefinierten Automation in Home Assistant sicherstellst, dass offline Entitäten und Geräte schnell erkannt und gemeldet werden. Verpasse nie wieder wichtige Ausfälle und halte dein Smart Home stabil und effizient!

5 „Gefällt mir“

@TristansSmartesHeim Super Tipps! Genau die habe ich gesucht - danke Dir.

bzgl deiner Frage „wie füge ich ein Label auch einem Device hinzu“ hilft dir Spook weiter: Label management - Spook 👻 a scary powerful toolbox for Home Assistant.

Spook hilft bei vielen Dingen :wink:

Vielleicht lässt sich da programmatisch etwas machen.

okay, ich habe das Problem mit den Devices anfangs falsch verstanden.

@TristansSmartesHeim
habe die Automatisierung bzw das Template darin nun erweitert, so dass auch Entitäten die zu Geräten mit dem label ignore_status gehören, nicht ausgegeben werden:

alias: update_unavailable_entities_group 2
description: Update unavailable entities group and ignoring Devices
triggers:
  - trigger: event
    event_type: call_service
    event_data:
      domain: group
      service: reload
  - trigger: time_pattern
    minutes: /5
actions:
  - action: group.set
    data:
      object_id: unavailable_entities
      entities: >
        {% set ignore_seconds = 60 %}

        {% set ignore_ts = (now().timestamp() - ignore_seconds) | as_datetime %}

        {% set ignore_label = 'ignore_status' %}  {# Variable für das zu
        ignorierende Label #}


        {# Schritt 1: Liste aller Entitäten sammeln, die als "unavailable"
        gelten und nicht ausgeschlossen sind #}

        {% set entities = states
            | rejectattr('domain', 'in', ['device_tracker', 'select', 'button', 'conversation', 'event', 
                                          'group', 'image', 'input_button', 'input_text', 'remote', 
                                          'tts', 'scene', 'stt', 'update'])
            | rejectattr('entity_id', 'eq', 'group.unavailable_entities')
            | selectattr('state', 'in', ['unavailable'])
            | rejectattr('last_changed', 'ge', ignore_ts)
            | list
        %}


        {# Schritt 2: Liste aller Geräte mit Label `ignore_label` erstellen #}

        {% set devices_to_exclude = namespace(value=[]) %}


        {% for entity in entities %}
          {% set dev_id = device_id(entity.entity_id) %}
          
          {% if dev_id is not none %}
            {% set labels = device_attr(dev_id, 'labels') %}
            
            {% if labels is not none and ignore_label in labels %}
              {% set devices_to_exclude.value = devices_to_exclude.value + [dev_id] %}
            {% endif %}
          {% endif %}
        {% endfor %}


        {# Schritt 3: Entitäten filtern - keine Labels `ignore_label` für
        Entität oder zugehöriges Gerät #}

        {% set result = namespace(value=[]) %}


        {% for entity in entities %}
          {% set dev_id = device_id(entity.entity_id) %}
          
          {% if entity.entity_id not in label_entities(ignore_label) and dev_id not in devices_to_exclude.value %}
            {% set result.value = result.value + [entity.entity_id] %}
          {% endif %}
        {% endfor %}


        {{ result.value | sort }}
mode: single
max_exceeded: silent

1 „Gefällt mir“

Das funktioniert prima! Gibt es auch noch eine Möglichkeit, die Entitäten ganzer Integrationen auszuschließen?

Über das Ausschließen aller Entitäten ganzer Integrationen hab ich noch nicht nachgedacht. Könnte ähnlich wie mit den Labels funktionieren, falls es eine Funktion gibt, um auf diese Eigenschaft (Integration) zuzugreifen.

Label ignore_status automatisch setzen

Alle schon konfigurierten, aber gerade nicht genutzten Geräte erhalten bei mir den Bereich „Lager“ zugeordnet.
Diese Geräte sind natürlich gerade nicht aktiv, doch das braucht ja nicht gemeldet zu werden.
Daher hab ich eine kleine Automation geschrieben, die dem Gerät das Label ‚ignore_status‘ zuordnet, sobald es den Bereich ‚Lager‘ bekommt.

alias: Reaktion auf Änderungen am Gerätebereich Lager
description: ""
triggers:
  - trigger: event
    event_type: device_registry_updated
conditions:
  - condition: template
    value_template: "{{ area_name(trigger.event.data.device_id) == 'Lager' }}"
    enabled: true
actions:
  - action: homeassistant.add_label_to_device
    metadata: {}
    data:
      label_id: ignore_status
      device_id: "{{ trigger.event.data.device_id }}"
mode: single
1 „Gefällt mir“

In der Doku ist das so beschrieben:

rejectattr(‚entity_id‘, ‚in‘,integration_entities(‚hassio‘))

Ich hätte es für die Fritz Tools gebraucht, was aber nicht funktioniert. Vielleicht habe ich auch den Namen flasch geschrieben, aber ich habe sämtliche Variationen versucht. Nun habe ich allen (etwa 20) Entitäten von den Fritz Tolls das Ignore_Label verpasst. War ja nur ne einmalige Sache.

@TristansSmartesHeim

Danke für deine Ausführliche Erklärung in deinem Beitrag/Video :v:

Habe es jetzt mal in meinem Test-System integriert und funktioniert super

1 „Gefällt mir“