Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template:
- - trigger:
- - platform: event
- event_type: set_variable
- - platform: event
- event_type: remove_variable
- - platform: event
- event_type: clear_variables
- condition:
- - condition: template
- value_template: >
- {{
- (
- trigger.event.event_type == 'set_variable'
- and trigger.event.data is defined
- and trigger.event.data.key is defined
- and trigger.event.data.value is defined
- )
- or
- (
- trigger.event.event_type == 'remove_variable'
- and trigger.event.data is defined
- and trigger.event.data.key is defined
- )
- or
- trigger.event.event_type == 'clear_variables'
- }}
- action:
- - if: "{{ trigger.event.data.get('log', state_attr('sensor.variables', 'log_events')) }}"
- then:
- - service: logbook.log
- data:
- name: "{{ trigger.event.event_type }}:"
- message: >
- {{ trigger.event.data.key | default('All variables removed') }}
- {%- if trigger.event.event_type == 'set_variable' -%}
- : {{ trigger.event.data.value }}.
- {%- endif -%}
- sensor:
- - unique_id: 4a4c8e53-9e68-4198-9cc5-b336e228ea4d
- name: Variables
- state: Variables
- attributes:
- default_timestamp: false
- log_events: false
- variables: >
- {% set others = dict(this.attributes.get('variables', {}).items() | rejectattr('0', 'eq', trigger.event.data.key)) %}
- {% if trigger.event.event_type == 'set_variable'
- and trigger.event.data.get('set_timestamp', this.attributes.get('default_timestamp', false))
- %}
- {% set value = trigger.event.data.value %}
- {% set value = value.isoformat() if value is datetime else value %}
- {% set new = {trigger.event.data.key: {'value': value, 'timestamp': now().isoformat()}} %}
- {{ dict(others, **new) }}
- {% elif trigger.event.event_type == 'set_variable' %}
- {% set new = {trigger.event.data.key: trigger.event.data.value} %}
- {{ dict(others, **new) }}
- {% elif trigger.event.event_type == 'remove_variable' %}
- {{ others }}
- {% elif trigger.event.event_type == 'clear_variables' %}
- {}
- {% endif %}
Advertisement
Add Comment
Please, Sign In to add comment