Skip to content

Instantly share code, notes, and snippets.

@martintamare
Created November 7, 2021 16:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save martintamare/2e92d7cd1bd8d275c2c197e8208eba0a to your computer and use it in GitHub Desktop.
Save martintamare/2e92d7cd1bd8d275c2c197e8208eba0a to your computer and use it in GitHub Desktop.
blueprint:
name: Blueprint - Vacation Mode
description: Vacation Mode - Replay Sensors to Light & Cover Behavior
domain: automation
input:
vacation_mode_toggle:
name: Vacation Mode - Input Boolean
selector:
entity:
domain: input_boolean
replay_sensor_1:
name: Replay Sensor (1)
selector:
entity:
domain: sensor
target_1:
name: Target (1)
selector:
entity:
replay_sensor_2:
name: Replay Sensor (2)
selector:
entity:
domain: sensor
target_2:
name: Target (2)
selector:
entity:
replay_sensor_3:
name: Replay Sensor (3)
selector:
entity:
domain: sensor
target_3:
name: Target (3)
selector:
entity:
replay_sensor_4:
name: Replay Sensor (4)
selector:
entity:
domain: sensor
target_4:
name: Target (4)
selector:
entity:
replay_sensor_5:
name: Replay Sensor (5)
selector:
entity:
domain: sensor
target_5:
name: Target (5)
selector:
entity:
replay_sensor_6:
name: Replay Sensor (6)
selector:
entity:
domain: sensor
target_6:
name: Target (6)
selector:
entity:
replay_sensor_7:
name: Replay Sensor (7)
selector:
entity:
domain: sensor
target_7:
name: Target (7)
selector:
entity:
replay_sensor_8:
name: Replay Sensor (8)
selector:
entity:
domain: sensor
target_8:
name: Target (8)
selector:
entity:
replay_sensor_9:
name: Replay Sensor (9)
selector:
entity:
domain: sensor
target_9:
name: Target (9)
selector:
entity:
replay_sensor_10:
name: Replay Sensor (10)
selector:
entity:
domain: sensor
target_10:
name: Target (10)
selector:
entity:
# Declare blueprint inputs as variables for use in {{templates}}
variables:
replay_sensor_1: !input replay_sensor_1
target_1: !input target_1
replay_sensor_2: !input replay_sensor_2
target_2: !input target_2
replay_sensor_3: !input replay_sensor_3
target_3: !input target_3
replay_sensor_4: !input replay_sensor_4
target_4: !input target_4
replay_sensor_5: !input replay_sensor_5
target_5: !input target_5
replay_sensor_6: !input replay_sensor_6
target_6: !input target_6
replay_sensor_7: !input replay_sensor_7
target_7: !input target_7
replay_sensor_8: !input replay_sensor_8
target_8: !input target_8
replay_sensor_9: !input replay_sensor_9
target_9: !input target_9
replay_sensor_10: !input replay_sensor_10
target_10: !input target_10
# Automation Mode - Parallel
mode: parallel
# Trigger when replay sensor changes state
trigger:
- platform: state
entity_id: !input replay_sensor_1
- platform: state
entity_id: !input replay_sensor_2
- platform: state
entity_id: !input replay_sensor_3
- platform: state
entity_id: !input replay_sensor_4
- platform: state
entity_id: !input replay_sensor_5
- platform: state
entity_id: !input replay_sensor_6
- platform: state
entity_id: !input replay_sensor_7
- platform: state
entity_id: !input replay_sensor_8
- platform: state
entity_id: !input replay_sensor_9
- platform: state
entity_id: !input replay_sensor_10
# As long as Vacation Mode is on
condition:
- condition: state
entity_id: !input vacation_mode_toggle
state: 'on'
action:
- variables:
corresponding_target: >
{% if trigger.entity_id == replay_sensor_1 %}
{{ target_1 }}
{% elif trigger.entity_id == replay_sensor_2 %}
{{ target_2 }}
{% elif trigger.entity_id == replay_sensor_3 %}
{{ target_3 }}
{% elif trigger.entity_id == replay_sensor_4 %}
{{ target_4 }}
{% elif trigger.entity_id == replay_sensor_5 %}
{{ target_5 }}
{% elif trigger.entity_id == replay_sensor_6 %}
{{ target_6 }}
{% elif trigger.entity_id == replay_sensor_7 %}
{{ target_7 }}
{% elif trigger.entity_id == replay_sensor_8 %}
{{ target_8 }}
{% elif trigger.entity_id == replay_sensor_9 %}
{{ target_9 }}
{% elif trigger.entity_id == replay_sensor_10 %}
{{ target_10 }}
{% endif %}
- choose:
# Replay turned on && entity_id is "LIGHT"
- conditions:
condition: and
conditions:
- condition: template
value_template: '{{ trigger.to_state.state == "1" }}'
- condition: template
value_template: '{{ corresponding_target.split(".")[0] == "light" }}'
sequence:
- service: light.turn_on
data:
entity_id: '{{ corresponding_target }}'
- service: system_log.write
data:
message: 'Vacation - Replay Lighting (Blueprint): {{trigger.to_state.entity_id}}: turning on: {{ corresponding_target }}'
level: info
# Replay turned on && entity_id is "COVER"
- conditions:
condition: and
conditions:
- condition: template
value_template: '{{ trigger.to_state.state == "1" }}'
- condition: template
value_template: '{{ corresponding_target.split(".")[0] == "cover" }}'
sequence:
- service: cover.open_cover
data:
entity_id: '{{ corresponding_target }}'
- service: system_log.write
data:
message: 'Vacation - Replay Cover (Blueprint): {{trigger.to_state.entity_id}}: opening:{{ corresponding_target }}'
level: info
# Replay turned off
- conditions:
condition: and
conditions:
- condition: template
value_template: '{{ trigger.to_state.state == "0" }}'
- condition: template
value_template: '{{ corresponding_target.split(".")[0] == "light" }}'
sequence:
- service: light.turn_off
data:
entity_id: '{{ corresponding_target }}'
- service: system_log.write
data:
message: 'Vacation - Replay Lighting (Blueprint): {{trigger.to_state.entity_id}}: turning off:{{ corresponding_target }}'
level: info
# Replay turned off
- conditions:
condition: and
conditions:
- condition: template
value_template: '{{ trigger.to_state.state == "0" }}'
- condition: template
value_template: '{{ corresponding_target.split(".")[0] == "cover" }}'
sequence:
- service: cover.close_cover
data:
entity_id: '{{ corresponding_target }}'
- service: system_log.write
data:
message: 'Vacation - Replay Lighting (Blueprint): {{trigger.to_state.entity_id}}: closing:{{ corresponding_target }}'
level: info
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment