JLindvig

Globale Variabler

Nov 11th, 2025
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 2.54 KB | None | 0 0
  1. template:
  2.   - trigger:
  3.       - platform: event
  4.         event_type: set_variable
  5.       - platform: event
  6.         event_type: remove_variable
  7.       - platform: event
  8.         event_type: clear_variables
  9.     condition:
  10.       - condition: template
  11.         value_template: >
  12.          {{
  13.               (
  14.                 trigger.event.event_type == 'set_variable'
  15.                 and trigger.event.data is defined
  16.                 and trigger.event.data.key is defined
  17.                 and trigger.event.data.value is defined
  18.               )
  19.               or
  20.               (
  21.                 trigger.event.event_type == 'remove_variable'
  22.                 and trigger.event.data is defined
  23.                 and trigger.event.data.key is defined
  24.               )
  25.               or
  26.               trigger.event.event_type == 'clear_variables'
  27.           }}
  28.     action:
  29.       - if: "{{ trigger.event.data.get('log', state_attr('sensor.variables', 'log_events')) }}"
  30.         then:
  31.           - service: logbook.log
  32.             data:
  33.               name: "{{ trigger.event.event_type }}:"
  34.               message: >
  35.                {{ trigger.event.data.key | default('All variables removed') }}
  36.                 {%- if trigger.event.event_type == 'set_variable' -%}
  37.                   : {{ trigger.event.data.value }}.
  38.                 {%- endif -%}
  39.     sensor:
  40.       - unique_id: 4a4c8e53-9e68-4198-9cc5-b336e228ea4d
  41.         name: Variables
  42.         state: Variables
  43.         attributes:
  44.           default_timestamp: false
  45.           log_events: false
  46.           variables: >
  47.            {% set others = dict(this.attributes.get('variables', {}).items() | rejectattr('0', 'eq', trigger.event.data.key)) %}
  48.             {% if trigger.event.event_type == 'set_variable'
  49.                 and trigger.event.data.get('set_timestamp', this.attributes.get('default_timestamp', false))
  50.             %}
  51.               {% set value  = trigger.event.data.value %}
  52.               {% set value = value.isoformat() if value is datetime else value %}
  53.               {% set new = {trigger.event.data.key: {'value': value, 'timestamp': now().isoformat()}} %}
  54.               {{ dict(others, **new) }}
  55.             {% elif trigger.event.event_type == 'set_variable' %}
  56.               {% set new = {trigger.event.data.key: trigger.event.data.value} %}
  57.               {{ dict(others, **new) }}
  58.             {% elif trigger.event.event_type == 'remove_variable' %}
  59.               {{ others }}
  60.             {% elif trigger.event.event_type == 'clear_variables' %}
  61.               {}
  62.             {% endif %}
  63.  
Advertisement
Add Comment
Please, Sign In to add comment