Template - Wer hat das Licht eingeschaltet?

Warum ist das Licht wieder an? Wer hat es eigeschaltet?
War eine Automatisierung am Werk, oder hat jemand über die Home Assistant App das Licht eingeschaltet?

Hier mal eine Automatisierung, die beim Zustandswechsel einer Light Entität als Benachrichtigung ausgibt, wer das Licht ein bzw. ausgeschaltet hat.
Dabei wird unterschieden zwischen physisch per Schalter, über die Dashboard UI oder über eine Automatisierung.

Möglich ist dies über die Context ID
Dabei wird unterschieden in:

  • ID
  • Parent ID
    und
  • User ID
    Je nach dem Welcher Wert vorhanden ist, lässt sich daraus Rückschließen, wer das Licht eingeschaltet hat.

alias: trigger.to_state.context.user_id
description: ""
trigger:
  - platform: state
    entity_id:
      - light.licht_1
    variables:
      id: "{{trigger.to_state.context.id}}"
      parent: "{{ trigger.to_state.context.parent_id }}"
      user: "{{ trigger.to_state.context.user_id }}"
      ident: "{{ (id != None, parent != None, user != None) }}"
condition: []
action:
  - service: notify.xyz
    metadata: {}
    data:
      message: |
        {% if ident == (true, false, false) %}
          physisch
        {% elif ident == (true, false, true) %}
          Dashboard UI
        {% elif ident == (true, true, false) %}
          Automatisierung
        {% else %}
          unknown
        {% endif %}
mode: single

Darüberhinaus lässt damit z.B. auch eine Lichtautomatik realisieren.
Wird das Licht physisch per Schalter eingeschaltet, kann man die Automatisierung über den BM deaktivieren.
Direkt oder über einen Helfer.
Und wird das Licht über den Schalter wieder ausgeschaltet, wird die die Automatisierung über den BM wieder aktiviert.

EDIT:
Der Vollständigkeitshalber hier noch das zugehörige Template um den Namen der Person zu ermitteln, die das Licht eingeschaltet hat. Bzw. gleich die zugehörige Automatisierung.

alias: Wer hat das Licht eingeschaltet
description: ""
triggers:
  - entity_id:
      - light.xyz
    to: on
    variables:
      user_id: "{{ trigger.to_state.context.user_id }}"
      user_name: >
        {% set user = None %}
        {% set matching_users = states.person | selectattr('attributes.user_id', '==', user_id) | list %}
        {% set user = matching_users | first if matching_users | length > 0 else "System" %}
        {{ user if user == "System" else state_attr(user.entity_id,"friendly_name") }}
    trigger: state
conditions: []
actions:
  - metadata: {}
    data:
      message: |
        {{ user_name }} hat das Licht eingeschaltet.
    action: notify.xyz
mode: single

Gruß
Osorkon