5843 lines
188 KiB
YAML
5843 lines
188 KiB
YAML
- alias: keymaster_turn_on_access_limit_back_door_1
|
|
id: keymaster_turn_on_access_limit_back_door_1
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_back_door_1
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_back_door_1'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_back_door_1
|
|
- alias: keymaster_synchronize_codeslot_back_door_1
|
|
id: keymaster_synchronize_codeslot_back_door_1
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_back_door_1
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.back_door_code_slot_1") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_back_door_1'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.back_door_lock
|
|
code_slot: '{{ 1 }}'
|
|
usercode: '{{ states(''input_text.back_door_pin_1'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_back_door_1'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.back_door_lock
|
|
code_slot: '{{ 1 }}'
|
|
- alias: keymaster_override_parent_back_door_1_state_change
|
|
id: keymaster_override_parent_back_door_1_state_change
|
|
trigger:
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
platform: state
|
|
to: 'off'
|
|
action:
|
|
- service: script.keymaster_back_door_copy_from_parent_1
|
|
- alias: keymaster_copy_front_door_name_back_door_1
|
|
id: keymaster_copy_front_door_name_back_door_1
|
|
trigger:
|
|
entity_id: input_text.front_door_name_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.back_door_name_1
|
|
data:
|
|
value: '{{ states(''input_text.front_door_name_1'') }}'
|
|
- alias: keymaster_copy_front_door_pin_back_door_1
|
|
id: keymaster_copy_front_door_pin_back_door_1
|
|
trigger:
|
|
entity_id: input_text.front_door_pin_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.back_door_pin_1
|
|
data:
|
|
value: '{{ states(''input_text.front_door_pin_1'') }}'
|
|
- alias: keymaster_copy_front_door_enabled_back_door_1
|
|
id: keymaster_copy_front_door_enabled_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.enabled_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.enabled_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.enabled_back_door_1
|
|
- alias: keymaster_copy_front_door_notify_back_door_1
|
|
id: keymaster_copy_front_door_notify_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.notify_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.notify_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.notify_back_door_1
|
|
- alias: keymaster_copy_front_door_reset_back_door_1
|
|
id: keymaster_copy_front_door_reset_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.reset_codeslot_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.reset_codeslot_front_door_1.state\
|
|
\ == 'on') %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n\
|
|
{% endif %}\n"
|
|
entity_id: input_boolean.reset_codeslot_front_door_1
|
|
- alias: keymaster_copy_front_door_accesslimit_back_door_1
|
|
id: keymaster_copy_front_door_accesslimit_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.accesslimit_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.accesslimit_front_door_1.state\
|
|
\ == 'on') %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n\
|
|
{% endif %}\n"
|
|
entity_id: input_boolean.accesslimit_back_door_1
|
|
- alias: keymaster_copy_front_door_accesscount_back_door_1
|
|
id: keymaster_copy_front_door_accesscount_back_door_1
|
|
trigger:
|
|
entity_id: input_number.accesscount_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_number.set_value
|
|
entity_id: input_number.accesscount_back_door_1
|
|
data_template:
|
|
value: '{{ states.input_number.accesscount_front_door_1.state | int }}'
|
|
- alias: keymaster_copy_front_door_daterange_back_door_1
|
|
id: keymaster_copy_front_door_daterange_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.daterange_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.daterange_front_door_1.state ==\
|
|
\ 'on') %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n\
|
|
{% endif %}\n"
|
|
entity_id: input_boolean.daterange_back_door_1
|
|
- alias: keymaster_copy_front_door_start_date_back_door_1
|
|
id: keymaster_copy_front_door_start_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.start_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.start_date_back_door_1
|
|
data:
|
|
datetime: '{{ states.input_datetime.start_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_end_date_back_door_1
|
|
id: keymaster_copy_front_door_end_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.end_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.end_date_back_door_1
|
|
data:
|
|
datetime: '{{ states.input_datetime.end_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_sun_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.sun_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sun_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sun_back_door_1
|
|
- alias: keymaster_copy_front_door_sun_inc_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.sun_inc_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sun_inc_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sun_inc_back_door_1
|
|
- alias: keymaster_copy_front_door_sun_start_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.sun_start_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sun_start_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.sun_start_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_sun_end_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.sun_end_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sun_end_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.sun_end_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_mon_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.mon_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.mon_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.mon_back_door_1
|
|
- alias: keymaster_copy_front_door_mon_inc_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.mon_inc_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.mon_inc_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.mon_inc_back_door_1
|
|
- alias: keymaster_copy_front_door_mon_start_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.mon_start_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.mon_start_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.mon_start_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_mon_end_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.mon_end_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.mon_end_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.mon_end_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_tue_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.tue_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.tue_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.tue_back_door_1
|
|
- alias: keymaster_copy_front_door_tue_inc_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.tue_inc_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.tue_inc_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.tue_inc_back_door_1
|
|
- alias: keymaster_copy_front_door_tue_start_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.tue_start_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tue_start_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.tue_start_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_tue_end_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.tue_end_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tue_end_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.tue_end_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_wed_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.wed_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.wed_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.wed_back_door_1
|
|
- alias: keymaster_copy_front_door_wed_inc_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.wed_inc_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.wed_inc_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.wed_inc_back_door_1
|
|
- alias: keymaster_copy_front_door_wed_start_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.wed_start_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.wed_start_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.wed_start_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_wed_end_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.wed_end_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.wed_end_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.wed_end_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_thu_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.thu_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.thu_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.thu_back_door_1
|
|
- alias: keymaster_copy_front_door_thu_inc_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.thu_inc_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.thu_inc_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.thu_inc_back_door_1
|
|
- alias: keymaster_copy_front_door_thu_start_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.thu_start_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.thu_start_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.thu_start_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_thu_end_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.thu_end_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.thu_end_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.thu_end_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_fri_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.fri_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.fri_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.fri_back_door_1
|
|
- alias: keymaster_copy_front_door_fri_inc_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.fri_inc_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.fri_inc_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.fri_inc_back_door_1
|
|
- alias: keymaster_copy_front_door_fri_start_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.fri_start_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.fri_start_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.fri_start_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_fri_end_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.fri_end_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.fri_end_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.fri_end_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_sat_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.sat_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sat_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sat_back_door_1
|
|
- alias: keymaster_copy_front_door_sat_inc_back_door_1
|
|
trigger:
|
|
entity_id: input_boolean.sat_inc_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sat_inc_front_door_1.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sat_inc_back_door_1
|
|
- alias: keymaster_copy_front_door_sat_start_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.sat_start_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sat_start_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.sat_start_date_front_door_1.state }}'
|
|
- alias: keymaster_copy_front_door_sat_end_date_back_door_1
|
|
trigger:
|
|
entity_id: input_datetime.sat_end_date_front_door_1
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_1
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sat_end_date_back_door_1
|
|
data:
|
|
time: '{{ states.input_datetime.sat_end_date_front_door_1.state }}'
|
|
- alias: keymaster_turn_on_access_limit_back_door_2
|
|
id: keymaster_turn_on_access_limit_back_door_2
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_back_door_2
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_back_door_2'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_back_door_2
|
|
- alias: keymaster_synchronize_codeslot_back_door_2
|
|
id: keymaster_synchronize_codeslot_back_door_2
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_back_door_2
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.back_door_code_slot_2") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_back_door_2'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.back_door_lock
|
|
code_slot: '{{ 2 }}'
|
|
usercode: '{{ states(''input_text.back_door_pin_2'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_back_door_2'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.back_door_lock
|
|
code_slot: '{{ 2 }}'
|
|
- alias: keymaster_override_parent_back_door_2_state_change
|
|
id: keymaster_override_parent_back_door_2_state_change
|
|
trigger:
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
platform: state
|
|
to: 'off'
|
|
action:
|
|
- service: script.keymaster_back_door_copy_from_parent_2
|
|
- alias: keymaster_copy_front_door_name_back_door_2
|
|
id: keymaster_copy_front_door_name_back_door_2
|
|
trigger:
|
|
entity_id: input_text.front_door_name_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.back_door_name_2
|
|
data:
|
|
value: '{{ states(''input_text.front_door_name_2'') }}'
|
|
- alias: keymaster_copy_front_door_pin_back_door_2
|
|
id: keymaster_copy_front_door_pin_back_door_2
|
|
trigger:
|
|
entity_id: input_text.front_door_pin_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.back_door_pin_2
|
|
data:
|
|
value: '{{ states(''input_text.front_door_pin_2'') }}'
|
|
- alias: keymaster_copy_front_door_enabled_back_door_2
|
|
id: keymaster_copy_front_door_enabled_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.enabled_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.enabled_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.enabled_back_door_2
|
|
- alias: keymaster_copy_front_door_notify_back_door_2
|
|
id: keymaster_copy_front_door_notify_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.notify_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.notify_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.notify_back_door_2
|
|
- alias: keymaster_copy_front_door_reset_back_door_2
|
|
id: keymaster_copy_front_door_reset_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.reset_codeslot_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.reset_codeslot_front_door_2.state\
|
|
\ == 'on') %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n\
|
|
{% endif %}\n"
|
|
entity_id: input_boolean.reset_codeslot_front_door_2
|
|
- alias: keymaster_copy_front_door_accesslimit_back_door_2
|
|
id: keymaster_copy_front_door_accesslimit_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.accesslimit_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.accesslimit_front_door_2.state\
|
|
\ == 'on') %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n\
|
|
{% endif %}\n"
|
|
entity_id: input_boolean.accesslimit_back_door_2
|
|
- alias: keymaster_copy_front_door_accesscount_back_door_2
|
|
id: keymaster_copy_front_door_accesscount_back_door_2
|
|
trigger:
|
|
entity_id: input_number.accesscount_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_number.set_value
|
|
entity_id: input_number.accesscount_back_door_2
|
|
data_template:
|
|
value: '{{ states.input_number.accesscount_front_door_2.state | int }}'
|
|
- alias: keymaster_copy_front_door_daterange_back_door_2
|
|
id: keymaster_copy_front_door_daterange_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.daterange_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.daterange_front_door_2.state ==\
|
|
\ 'on') %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n\
|
|
{% endif %}\n"
|
|
entity_id: input_boolean.daterange_back_door_2
|
|
- alias: keymaster_copy_front_door_start_date_back_door_2
|
|
id: keymaster_copy_front_door_start_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.start_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.start_date_back_door_2
|
|
data:
|
|
datetime: '{{ states.input_datetime.start_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_end_date_back_door_2
|
|
id: keymaster_copy_front_door_end_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.end_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.end_date_back_door_2
|
|
data:
|
|
datetime: '{{ states.input_datetime.end_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_sun_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.sun_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sun_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sun_back_door_2
|
|
- alias: keymaster_copy_front_door_sun_inc_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.sun_inc_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sun_inc_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sun_inc_back_door_2
|
|
- alias: keymaster_copy_front_door_sun_start_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.sun_start_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sun_start_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.sun_start_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_sun_end_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.sun_end_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sun_end_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.sun_end_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_mon_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.mon_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.mon_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.mon_back_door_2
|
|
- alias: keymaster_copy_front_door_mon_inc_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.mon_inc_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.mon_inc_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.mon_inc_back_door_2
|
|
- alias: keymaster_copy_front_door_mon_start_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.mon_start_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.mon_start_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.mon_start_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_mon_end_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.mon_end_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.mon_end_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.mon_end_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_tue_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.tue_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.tue_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.tue_back_door_2
|
|
- alias: keymaster_copy_front_door_tue_inc_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.tue_inc_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.tue_inc_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.tue_inc_back_door_2
|
|
- alias: keymaster_copy_front_door_tue_start_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.tue_start_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tue_start_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.tue_start_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_tue_end_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.tue_end_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tue_end_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.tue_end_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_wed_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.wed_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.wed_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.wed_back_door_2
|
|
- alias: keymaster_copy_front_door_wed_inc_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.wed_inc_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.wed_inc_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.wed_inc_back_door_2
|
|
- alias: keymaster_copy_front_door_wed_start_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.wed_start_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.wed_start_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.wed_start_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_wed_end_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.wed_end_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.wed_end_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.wed_end_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_thu_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.thu_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.thu_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.thu_back_door_2
|
|
- alias: keymaster_copy_front_door_thu_inc_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.thu_inc_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.thu_inc_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.thu_inc_back_door_2
|
|
- alias: keymaster_copy_front_door_thu_start_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.thu_start_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.thu_start_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.thu_start_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_thu_end_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.thu_end_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.thu_end_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.thu_end_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_fri_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.fri_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.fri_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.fri_back_door_2
|
|
- alias: keymaster_copy_front_door_fri_inc_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.fri_inc_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.fri_inc_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.fri_inc_back_door_2
|
|
- alias: keymaster_copy_front_door_fri_start_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.fri_start_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.fri_start_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.fri_start_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_fri_end_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.fri_end_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.fri_end_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.fri_end_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_sat_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.sat_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sat_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sat_back_door_2
|
|
- alias: keymaster_copy_front_door_sat_inc_back_door_2
|
|
trigger:
|
|
entity_id: input_boolean.sat_inc_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sat_inc_front_door_2.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sat_inc_back_door_2
|
|
- alias: keymaster_copy_front_door_sat_start_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.sat_start_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sat_start_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.sat_start_date_front_door_2.state }}'
|
|
- alias: keymaster_copy_front_door_sat_end_date_back_door_2
|
|
trigger:
|
|
entity_id: input_datetime.sat_end_date_front_door_2
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_2
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sat_end_date_back_door_2
|
|
data:
|
|
time: '{{ states.input_datetime.sat_end_date_front_door_2.state }}'
|
|
- alias: keymaster_turn_on_access_limit_back_door_3
|
|
id: keymaster_turn_on_access_limit_back_door_3
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_back_door_3
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_back_door_3'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_back_door_3
|
|
- alias: keymaster_synchronize_codeslot_back_door_3
|
|
id: keymaster_synchronize_codeslot_back_door_3
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_back_door_3
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.back_door_code_slot_3") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_back_door_3'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.back_door_lock
|
|
code_slot: '{{ 3 }}'
|
|
usercode: '{{ states(''input_text.back_door_pin_3'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_back_door_3'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.back_door_lock
|
|
code_slot: '{{ 3 }}'
|
|
- alias: keymaster_override_parent_back_door_3_state_change
|
|
id: keymaster_override_parent_back_door_3_state_change
|
|
trigger:
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
platform: state
|
|
to: 'off'
|
|
action:
|
|
- service: script.keymaster_back_door_copy_from_parent_3
|
|
- alias: keymaster_copy_front_door_name_back_door_3
|
|
id: keymaster_copy_front_door_name_back_door_3
|
|
trigger:
|
|
entity_id: input_text.front_door_name_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.back_door_name_3
|
|
data:
|
|
value: '{{ states(''input_text.front_door_name_3'') }}'
|
|
- alias: keymaster_copy_front_door_pin_back_door_3
|
|
id: keymaster_copy_front_door_pin_back_door_3
|
|
trigger:
|
|
entity_id: input_text.front_door_pin_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.back_door_pin_3
|
|
data:
|
|
value: '{{ states(''input_text.front_door_pin_3'') }}'
|
|
- alias: keymaster_copy_front_door_enabled_back_door_3
|
|
id: keymaster_copy_front_door_enabled_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.enabled_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.enabled_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.enabled_back_door_3
|
|
- alias: keymaster_copy_front_door_notify_back_door_3
|
|
id: keymaster_copy_front_door_notify_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.notify_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.notify_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.notify_back_door_3
|
|
- alias: keymaster_copy_front_door_reset_back_door_3
|
|
id: keymaster_copy_front_door_reset_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.reset_codeslot_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.reset_codeslot_front_door_3.state\
|
|
\ == 'on') %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n\
|
|
{% endif %}\n"
|
|
entity_id: input_boolean.reset_codeslot_front_door_3
|
|
- alias: keymaster_copy_front_door_accesslimit_back_door_3
|
|
id: keymaster_copy_front_door_accesslimit_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.accesslimit_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.accesslimit_front_door_3.state\
|
|
\ == 'on') %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n\
|
|
{% endif %}\n"
|
|
entity_id: input_boolean.accesslimit_back_door_3
|
|
- alias: keymaster_copy_front_door_accesscount_back_door_3
|
|
id: keymaster_copy_front_door_accesscount_back_door_3
|
|
trigger:
|
|
entity_id: input_number.accesscount_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_number.set_value
|
|
entity_id: input_number.accesscount_back_door_3
|
|
data_template:
|
|
value: '{{ states.input_number.accesscount_front_door_3.state | int }}'
|
|
- alias: keymaster_copy_front_door_daterange_back_door_3
|
|
id: keymaster_copy_front_door_daterange_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.daterange_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.daterange_front_door_3.state ==\
|
|
\ 'on') %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n\
|
|
{% endif %}\n"
|
|
entity_id: input_boolean.daterange_back_door_3
|
|
- alias: keymaster_copy_front_door_start_date_back_door_3
|
|
id: keymaster_copy_front_door_start_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.start_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.start_date_back_door_3
|
|
data:
|
|
datetime: '{{ states.input_datetime.start_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_end_date_back_door_3
|
|
id: keymaster_copy_front_door_end_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.end_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.end_date_back_door_3
|
|
data:
|
|
datetime: '{{ states.input_datetime.end_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_sun_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.sun_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sun_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sun_back_door_3
|
|
- alias: keymaster_copy_front_door_sun_inc_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.sun_inc_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sun_inc_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sun_inc_back_door_3
|
|
- alias: keymaster_copy_front_door_sun_start_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.sun_start_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sun_start_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.sun_start_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_sun_end_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.sun_end_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sun_end_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.sun_end_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_mon_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.mon_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.mon_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.mon_back_door_3
|
|
- alias: keymaster_copy_front_door_mon_inc_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.mon_inc_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.mon_inc_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.mon_inc_back_door_3
|
|
- alias: keymaster_copy_front_door_mon_start_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.mon_start_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.mon_start_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.mon_start_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_mon_end_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.mon_end_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.mon_end_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.mon_end_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_tue_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.tue_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.tue_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.tue_back_door_3
|
|
- alias: keymaster_copy_front_door_tue_inc_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.tue_inc_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.tue_inc_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.tue_inc_back_door_3
|
|
- alias: keymaster_copy_front_door_tue_start_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.tue_start_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tue_start_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.tue_start_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_tue_end_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.tue_end_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tue_end_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.tue_end_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_wed_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.wed_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.wed_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.wed_back_door_3
|
|
- alias: keymaster_copy_front_door_wed_inc_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.wed_inc_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.wed_inc_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.wed_inc_back_door_3
|
|
- alias: keymaster_copy_front_door_wed_start_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.wed_start_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.wed_start_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.wed_start_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_wed_end_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.wed_end_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.wed_end_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.wed_end_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_thu_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.thu_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.thu_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.thu_back_door_3
|
|
- alias: keymaster_copy_front_door_thu_inc_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.thu_inc_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.thu_inc_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.thu_inc_back_door_3
|
|
- alias: keymaster_copy_front_door_thu_start_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.thu_start_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.thu_start_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.thu_start_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_thu_end_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.thu_end_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.thu_end_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.thu_end_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_fri_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.fri_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.fri_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.fri_back_door_3
|
|
- alias: keymaster_copy_front_door_fri_inc_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.fri_inc_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.fri_inc_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.fri_inc_back_door_3
|
|
- alias: keymaster_copy_front_door_fri_start_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.fri_start_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.fri_start_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.fri_start_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_fri_end_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.fri_end_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.fri_end_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.fri_end_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_sat_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.sat_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sat_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sat_back_door_3
|
|
- alias: keymaster_copy_front_door_sat_inc_back_door_3
|
|
trigger:
|
|
entity_id: input_boolean.sat_inc_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sat_inc_front_door_3.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sat_inc_back_door_3
|
|
- alias: keymaster_copy_front_door_sat_start_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.sat_start_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sat_start_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.sat_start_date_front_door_3.state }}'
|
|
- alias: keymaster_copy_front_door_sat_end_date_back_door_3
|
|
trigger:
|
|
entity_id: input_datetime.sat_end_date_front_door_3
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_3
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sat_end_date_back_door_3
|
|
data:
|
|
time: '{{ states.input_datetime.sat_end_date_front_door_3.state }}'
|
|
- alias: keymaster_turn_on_access_limit_back_door_4
|
|
id: keymaster_turn_on_access_limit_back_door_4
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_back_door_4
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_back_door_4'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_back_door_4
|
|
- alias: keymaster_synchronize_codeslot_back_door_4
|
|
id: keymaster_synchronize_codeslot_back_door_4
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_back_door_4
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.back_door_code_slot_4") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_back_door_4'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.back_door_lock
|
|
code_slot: '{{ 4 }}'
|
|
usercode: '{{ states(''input_text.back_door_pin_4'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_back_door_4'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.back_door_lock
|
|
code_slot: '{{ 4 }}'
|
|
- alias: keymaster_override_parent_back_door_4_state_change
|
|
id: keymaster_override_parent_back_door_4_state_change
|
|
trigger:
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
platform: state
|
|
to: 'off'
|
|
action:
|
|
- service: script.keymaster_back_door_copy_from_parent_4
|
|
- alias: keymaster_copy_front_door_name_back_door_4
|
|
id: keymaster_copy_front_door_name_back_door_4
|
|
trigger:
|
|
entity_id: input_text.front_door_name_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.back_door_name_4
|
|
data:
|
|
value: '{{ states(''input_text.front_door_name_4'') }}'
|
|
- alias: keymaster_copy_front_door_pin_back_door_4
|
|
id: keymaster_copy_front_door_pin_back_door_4
|
|
trigger:
|
|
entity_id: input_text.front_door_pin_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_text.set_value
|
|
target:
|
|
entity_id: input_text.back_door_pin_4
|
|
data:
|
|
value: '{{ states(''input_text.front_door_pin_4'') }}'
|
|
- alias: keymaster_copy_front_door_enabled_back_door_4
|
|
id: keymaster_copy_front_door_enabled_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.enabled_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.enabled_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.enabled_back_door_4
|
|
- alias: keymaster_copy_front_door_notify_back_door_4
|
|
id: keymaster_copy_front_door_notify_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.notify_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.notify_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.notify_back_door_4
|
|
- alias: keymaster_copy_front_door_reset_back_door_4
|
|
id: keymaster_copy_front_door_reset_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.reset_codeslot_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.reset_codeslot_front_door_4.state\
|
|
\ == 'on') %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n\
|
|
{% endif %}\n"
|
|
entity_id: input_boolean.reset_codeslot_front_door_4
|
|
- alias: keymaster_copy_front_door_accesslimit_back_door_4
|
|
id: keymaster_copy_front_door_accesslimit_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.accesslimit_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.accesslimit_front_door_4.state\
|
|
\ == 'on') %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n\
|
|
{% endif %}\n"
|
|
entity_id: input_boolean.accesslimit_back_door_4
|
|
- alias: keymaster_copy_front_door_accesscount_back_door_4
|
|
id: keymaster_copy_front_door_accesscount_back_door_4
|
|
trigger:
|
|
entity_id: input_number.accesscount_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_number.set_value
|
|
entity_id: input_number.accesscount_back_door_4
|
|
data_template:
|
|
value: '{{ states.input_number.accesscount_front_door_4.state | int }}'
|
|
- alias: keymaster_copy_front_door_daterange_back_door_4
|
|
id: keymaster_copy_front_door_daterange_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.daterange_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.daterange_front_door_4.state ==\
|
|
\ 'on') %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n\
|
|
{% endif %}\n"
|
|
entity_id: input_boolean.daterange_back_door_4
|
|
- alias: keymaster_copy_front_door_start_date_back_door_4
|
|
id: keymaster_copy_front_door_start_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.start_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.start_date_back_door_4
|
|
data:
|
|
datetime: '{{ states.input_datetime.start_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_end_date_back_door_4
|
|
id: keymaster_copy_front_door_end_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.end_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.end_date_back_door_4
|
|
data:
|
|
datetime: '{{ states.input_datetime.end_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_sun_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.sun_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sun_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sun_back_door_4
|
|
- alias: keymaster_copy_front_door_sun_inc_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.sun_inc_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sun_inc_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sun_inc_back_door_4
|
|
- alias: keymaster_copy_front_door_sun_start_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.sun_start_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sun_start_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.sun_start_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_sun_end_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.sun_end_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sun_end_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.sun_end_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_mon_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.mon_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.mon_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.mon_back_door_4
|
|
- alias: keymaster_copy_front_door_mon_inc_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.mon_inc_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.mon_inc_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.mon_inc_back_door_4
|
|
- alias: keymaster_copy_front_door_mon_start_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.mon_start_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.mon_start_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.mon_start_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_mon_end_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.mon_end_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.mon_end_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.mon_end_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_tue_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.tue_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.tue_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.tue_back_door_4
|
|
- alias: keymaster_copy_front_door_tue_inc_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.tue_inc_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.tue_inc_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.tue_inc_back_door_4
|
|
- alias: keymaster_copy_front_door_tue_start_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.tue_start_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tue_start_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.tue_start_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_tue_end_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.tue_end_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.tue_end_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.tue_end_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_wed_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.wed_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.wed_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.wed_back_door_4
|
|
- alias: keymaster_copy_front_door_wed_inc_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.wed_inc_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.wed_inc_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.wed_inc_back_door_4
|
|
- alias: keymaster_copy_front_door_wed_start_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.wed_start_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.wed_start_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.wed_start_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_wed_end_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.wed_end_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.wed_end_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.wed_end_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_thu_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.thu_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.thu_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.thu_back_door_4
|
|
- alias: keymaster_copy_front_door_thu_inc_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.thu_inc_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.thu_inc_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.thu_inc_back_door_4
|
|
- alias: keymaster_copy_front_door_thu_start_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.thu_start_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.thu_start_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.thu_start_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_thu_end_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.thu_end_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.thu_end_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.thu_end_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_fri_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.fri_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.fri_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.fri_back_door_4
|
|
- alias: keymaster_copy_front_door_fri_inc_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.fri_inc_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.fri_inc_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.fri_inc_back_door_4
|
|
- alias: keymaster_copy_front_door_fri_start_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.fri_start_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.fri_start_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.fri_start_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_fri_end_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.fri_end_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.fri_end_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.fri_end_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_sat_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.sat_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sat_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sat_back_door_4
|
|
- alias: keymaster_copy_front_door_sat_inc_back_door_4
|
|
trigger:
|
|
entity_id: input_boolean.sat_inc_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service_template: "{% if (states.input_boolean.sat_inc_front_door_4.state == 'on')\
|
|
\ %}\n input_boolean.turn_on\n{% else %}\n input_boolean.turn_off\n{% endif\
|
|
\ %}\n"
|
|
entity_id: input_boolean.sat_inc_back_door_4
|
|
- alias: keymaster_copy_front_door_sat_start_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.sat_start_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sat_start_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.sat_start_date_front_door_4.state }}'
|
|
- alias: keymaster_copy_front_door_sat_end_date_back_door_4
|
|
trigger:
|
|
entity_id: input_datetime.sat_end_date_front_door_4
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.override_parent_back_door_4
|
|
state: 'off'
|
|
action:
|
|
- service: input_datetime.set_datetime
|
|
target:
|
|
entity_id: input_datetime.sat_end_date_back_door_4
|
|
data:
|
|
time: '{{ states.input_datetime.sat_end_date_front_door_4.state }}'
|
|
- alias: keymaster_back_door Reset Code Slot
|
|
id: keymaster_back_door Reset Code Slot
|
|
trigger:
|
|
entity_id: input_boolean.reset_codeslot_back_door_1,input_boolean.reset_codeslot_back_door_2,input_boolean.reset_codeslot_back_door_3,input_boolean.reset_codeslot_back_door_4
|
|
platform: state
|
|
to: 'on'
|
|
action:
|
|
- service: script.keymaster_back_door_reset_codeslot
|
|
data_template:
|
|
code_slot: '{{ trigger.entity_id.split(''_'')[-1] }}'
|
|
- alias: keymaster_back_door Lock Notifications
|
|
id: keymaster_back_door Lock Notifications
|
|
trigger:
|
|
platform: event
|
|
event_type: keymaster_lock_state_changed
|
|
event_data:
|
|
lockname: back_door
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.back_door_lock_notifications
|
|
state: 'on'
|
|
action:
|
|
- service: script.keymaster_back_door_manual_notify
|
|
data_template:
|
|
title: back_door
|
|
message: '{{ trigger.event.data.action_text }} {% if trigger.event.data.code_slot
|
|
> 0 %}({{ trigger.event.data.code_slot_name }}){% endif %}'
|
|
- alias: keymaster_back_door User Notifications
|
|
id: keymaster_back_door User Notifications
|
|
trigger:
|
|
platform: event
|
|
event_type: keymaster_lock_state_changed
|
|
event_data:
|
|
lockname: back_door
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ trigger.event.data.code_slot > 0 }}'
|
|
- condition: template
|
|
value_template: '{{ is_state(''input_boolean.notify_back_door_'' + trigger.event.data.code_slot
|
|
| string, ''on'') }}'
|
|
- condition: state
|
|
entity_id: input_boolean.back_door_lock_notifications
|
|
state: 'off'
|
|
action:
|
|
- service: script.keymaster_back_door_manual_notify
|
|
data_template:
|
|
title: back_door
|
|
message: '{{ trigger.event.data.action_text }} ({{ trigger.event.data.code_slot_name
|
|
}})'
|
|
- alias: keymaster_back_door Door Open and Close
|
|
id: keymaster_back_door Door Open and Close
|
|
trigger:
|
|
entity_id: binary_sensor.back_door_window_door_is_open
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.back_door_dooraccess_notifications
|
|
state: 'on'
|
|
- condition: template
|
|
value_template: '{{ trigger.from_state.state in (''on'', ''off'') and trigger.to_state.state
|
|
in (''on'', ''off'') }}'
|
|
action:
|
|
- service: script.keymaster_back_door_manual_notify
|
|
data_template:
|
|
title: back_door
|
|
message: '{% if trigger.to_state.state == ''on'' %}Door Opened{% else %}Door
|
|
Closed{% endif %}'
|
|
- alias: keymaster_back_door Changed Code
|
|
id: keymaster_back_door Changed Code
|
|
trigger:
|
|
entity_id: input_text.back_door_pin_1,input_text.back_door_pin_2,input_text.back_door_pin_3,input_text.back_door_pin_4
|
|
platform: state
|
|
condition:
|
|
- condition: template
|
|
value_template: "{{\n is_state('input_boolean.enabled_back_door_' + trigger.entity_id.split('_')[-1],\
|
|
\ 'on')\n and\n (trigger.from_state.state != trigger.to_state.state)\n}}"
|
|
action:
|
|
- service: persistent_notification.create
|
|
data_template:
|
|
title: back_door LOCK MANAGER
|
|
message: '{{ ''You changed the PIN for back_door code slot '' + trigger.entity_id.split(''_'')[-1]
|
|
+ ''. Please enable it in order to make it active.''}}'
|
|
- service: input_boolean.turn_off
|
|
data_template:
|
|
entity_id: '{{ ''input_boolean.enabled_back_door_'' + trigger.entity_id.split(''_'')[-1]
|
|
}}'
|
|
- alias: keymaster_back_door Reset
|
|
id: keymaster_back_door Reset
|
|
trigger:
|
|
entity_id: input_boolean.back_door_reset_lock
|
|
platform: state
|
|
from: 'off'
|
|
to: 'on'
|
|
action:
|
|
- service: script.keymaster_back_door_reset_lock
|
|
- service: input_boolean.turn_off
|
|
entity_id: input_boolean.back_door_reset_lock
|
|
- alias: keymaster_back_door Decrement Access Count
|
|
id: keymaster_back_door Decrement Access Count
|
|
trigger:
|
|
platform: event
|
|
event_type: keymaster_lock_state_changed
|
|
event_data:
|
|
lockname: back_door
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ is_state(''input_boolean.accesslimit_back_door_'' + trigger.event.data.code_slot
|
|
| string, ''on'') }}'
|
|
- condition: template
|
|
value_template: "{{\n trigger.event.data.code_slot > 0\n and\n (trigger.event.data.action_code\
|
|
\ is undefined or trigger.event.data.action_code in (6, 19))\n}}"
|
|
action:
|
|
- service: input_number.decrement
|
|
data_template:
|
|
entity_id: '{{ ''input_number.accesscount_back_door_'' + trigger.event.data.code_slot
|
|
| string }}'
|
|
- alias: keymaster_back_door_locked
|
|
id: keymaster_back_door_locked
|
|
trigger:
|
|
entity_id: lock.back_door_lock
|
|
platform: state
|
|
to: locked
|
|
action:
|
|
- service: timer.cancel
|
|
entity_id: timer.keymaster_back_door_autolock
|
|
- alias: keymaster_turn_off_retry_back_door
|
|
id: keymaster_turn_off_retry_back_door
|
|
trigger:
|
|
entity_id: lock.back_door_lock
|
|
platform: state
|
|
to: locked
|
|
action:
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.keymaster_back_door_retry
|
|
- alias: keymaster_retry_bolt_closed_back_door
|
|
id: keymaster_retry_bolt_closed_back_door
|
|
trigger:
|
|
platform: state
|
|
entity_id: binary_sensor.back_door_window_door_is_open
|
|
to: 'off'
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.keymaster_back_door_retry
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: input_boolean.keymaster_back_door_autolock
|
|
state: 'on'
|
|
action:
|
|
- service: persistent_notification.create
|
|
data_template:
|
|
title: back_door is closed
|
|
message: '{{ ''The back_door sensor indicates the door has been closed, re-attempting
|
|
to lock.''}}'
|
|
- service: lock.lock
|
|
entity_id: lock.boltchecked_back_door
|
|
- alias: keymaster_back_door_opened
|
|
id: keymaster_back_door_opened
|
|
trigger:
|
|
platform: state
|
|
entity_id: binary_sensor.back_door_window_door_is_open
|
|
to: 'on'
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.keymaster_back_door_autolock
|
|
state: 'on'
|
|
action:
|
|
- service: timer.start
|
|
data_template:
|
|
entity_id: timer.keymaster_back_door_autolock
|
|
duration: "{% if (((as_timestamp(states.sun.sun.attributes.next_dusk)) > (as_timestamp(states.sun.sun.attributes.next_dawn))))\
|
|
\ %}\n {{ states('input_text.keymaster_back_door_autolock_door_time_night')}}\n\
|
|
{% else %}\n {{ states('input_text.keymaster_back_door_autolock_door_time_day')}}\n\
|
|
{% endif %}\n"
|
|
- alias: keymaster_back_door_unlocked_start_autolock
|
|
id: keymaster_back_door_unlocked_ start_autolock
|
|
trigger:
|
|
entity_id: lock.back_door_lock
|
|
platform: state
|
|
to: unlocked
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.keymaster_back_door_autolock
|
|
state: 'on'
|
|
action:
|
|
- service: script.turn_on
|
|
entity_id: script.keymaster_back_door_start_timer
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.keymaster_back_door_retry
|
|
- alias: keymaster_back_door_timer_finished
|
|
id: keymaster_back_door_timer_finished
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.keymaster_back_door_autolock
|
|
state: 'on'
|
|
trigger:
|
|
platform: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.keymaster_back_door_autolock
|
|
action:
|
|
- service: lock.lock
|
|
entity_id: lock.boltchecked_back_door
|
|
- alias: keymaster_back_door_timer_canceled
|
|
id: keymaster_back_door_timer_canceled
|
|
trigger:
|
|
platform: event
|
|
event_type: timer.cancelled
|
|
event_data:
|
|
entity_id: timer.keymaster_back_door_autolock
|
|
action:
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.keymaster_back_door_retry
|
|
- alias: keymaster_back_door_disable_auto_lock
|
|
id: keymaster_back_door_disable_auto_lock
|
|
trigger:
|
|
entity_id: input_boolean.keymaster_back_door_autolock
|
|
platform: state
|
|
to: 'off'
|
|
action:
|
|
- service: timer.cancel
|
|
entity_id:
|
|
- timer.keymaster_back_door_autolock
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.keymaster_back_door_retry
|
|
- alias: keymaster_back_door_enable_auto_lock
|
|
id: keymaster_back_door_enable_auto_lock
|
|
trigger:
|
|
entity_id: input_boolean.keymaster_back_door_autolock
|
|
platform: state
|
|
to: 'on'
|
|
action:
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.keymaster_back_door_retry
|
|
- service: timer.cancel
|
|
entity_id:
|
|
- timer.keymaster_back_door_autolock
|
|
- service: script.turn_on
|
|
entity_id: script.keymaster_back_door_start_timer
|
|
- alias: keymaster_back_door_initialize
|
|
id: keymaster_back_door_initialize
|
|
trigger:
|
|
platform: homeassistant
|
|
event: start
|
|
action:
|
|
- service: input_text.set_value
|
|
entity_id: input_text.keymaster_back_door_autolock_door_time_day
|
|
data:
|
|
value: '{%- set current_value=states(''input_text.keymaster_back_door_autolock_door_time_day'')
|
|
-%} {{ iif(current_value in ['''', ''unknown''], "02:00:00", current_value)}}
|
|
|
|
'
|
|
- service: input_text.set_value
|
|
entity_id: input_text.keymaster_back_door_autolock_door_time_night
|
|
data:
|
|
value: '{%- set current_value=states(''input_text.keymaster_back_door_autolock_door_time_night'')
|
|
-%} {{ iif(current_value in ['''', ''unknown''], "00:05:00", current_value)}}
|
|
|
|
'
|
|
- alias: keymaster_turn_on_access_limit_front_door_1
|
|
id: keymaster_turn_on_access_limit_front_door_1
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_front_door_1
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_front_door_1'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_front_door_1
|
|
- alias: keymaster_synchronize_codeslot_front_door_1
|
|
id: keymaster_synchronize_codeslot_front_door_1
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_front_door_1
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.front_door_code_slot_1") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_1'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 1 }}'
|
|
usercode: '{{ states(''input_text.front_door_pin_1'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_1'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 1 }}'
|
|
- alias: keymaster_turn_on_access_limit_front_door_10
|
|
id: keymaster_turn_on_access_limit_front_door_10
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_front_door_10
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_front_door_10'') | int
|
|
> 0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_front_door_10
|
|
- alias: keymaster_synchronize_codeslot_front_door_10
|
|
id: keymaster_synchronize_codeslot_front_door_10
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_front_door_10
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.front_door_code_slot_10") != "unavailable"
|
|
}}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_10'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 10 }}'
|
|
usercode: '{{ states(''input_text.front_door_pin_10'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_10'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 10 }}'
|
|
- alias: keymaster_turn_on_access_limit_front_door_2
|
|
id: keymaster_turn_on_access_limit_front_door_2
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_front_door_2
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_front_door_2'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_front_door_2
|
|
- alias: keymaster_synchronize_codeslot_front_door_2
|
|
id: keymaster_synchronize_codeslot_front_door_2
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_front_door_2
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.front_door_code_slot_2") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_2'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 2 }}'
|
|
usercode: '{{ states(''input_text.front_door_pin_2'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_2'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 2 }}'
|
|
- alias: keymaster_turn_on_access_limit_front_door_3
|
|
id: keymaster_turn_on_access_limit_front_door_3
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_front_door_3
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_front_door_3'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_front_door_3
|
|
- alias: keymaster_synchronize_codeslot_front_door_3
|
|
id: keymaster_synchronize_codeslot_front_door_3
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_front_door_3
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.front_door_code_slot_3") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_3'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 3 }}'
|
|
usercode: '{{ states(''input_text.front_door_pin_3'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_3'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 3 }}'
|
|
- alias: keymaster_turn_on_access_limit_front_door_4
|
|
id: keymaster_turn_on_access_limit_front_door_4
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_front_door_4
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_front_door_4'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_front_door_4
|
|
- alias: keymaster_synchronize_codeslot_front_door_4
|
|
id: keymaster_synchronize_codeslot_front_door_4
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_front_door_4
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.front_door_code_slot_4") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_4'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 4 }}'
|
|
usercode: '{{ states(''input_text.front_door_pin_4'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_4'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 4 }}'
|
|
- alias: keymaster_turn_on_access_limit_front_door_5
|
|
id: keymaster_turn_on_access_limit_front_door_5
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_front_door_5
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_front_door_5'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_front_door_5
|
|
- alias: keymaster_synchronize_codeslot_front_door_5
|
|
id: keymaster_synchronize_codeslot_front_door_5
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_front_door_5
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.front_door_code_slot_5") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_5'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 5 }}'
|
|
usercode: '{{ states(''input_text.front_door_pin_5'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_5'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 5 }}'
|
|
- alias: keymaster_turn_on_access_limit_front_door_6
|
|
id: keymaster_turn_on_access_limit_front_door_6
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_front_door_6
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_front_door_6'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_front_door_6
|
|
- alias: keymaster_synchronize_codeslot_front_door_6
|
|
id: keymaster_synchronize_codeslot_front_door_6
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_front_door_6
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.front_door_code_slot_6") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_6'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 6 }}'
|
|
usercode: '{{ states(''input_text.front_door_pin_6'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_6'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 6 }}'
|
|
- alias: keymaster_turn_on_access_limit_front_door_7
|
|
id: keymaster_turn_on_access_limit_front_door_7
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_front_door_7
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_front_door_7'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_front_door_7
|
|
- alias: keymaster_synchronize_codeslot_front_door_7
|
|
id: keymaster_synchronize_codeslot_front_door_7
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_front_door_7
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.front_door_code_slot_7") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_7'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 7 }}'
|
|
usercode: '{{ states(''input_text.front_door_pin_7'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_7'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 7 }}'
|
|
- alias: keymaster_turn_on_access_limit_front_door_8
|
|
id: keymaster_turn_on_access_limit_front_door_8
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_front_door_8
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_front_door_8'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_front_door_8
|
|
- alias: keymaster_synchronize_codeslot_front_door_8
|
|
id: keymaster_synchronize_codeslot_front_door_8
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_front_door_8
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.front_door_code_slot_8") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_8'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 8 }}'
|
|
usercode: '{{ states(''input_text.front_door_pin_8'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_8'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 8 }}'
|
|
- alias: keymaster_turn_on_access_limit_front_door_9
|
|
id: keymaster_turn_on_access_limit_front_door_9
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_number.accesscount_front_door_9
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ (states(''input_number.accesscount_front_door_9'') | int >
|
|
0) }}'
|
|
action:
|
|
service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.accesslimit_front_door_9
|
|
- alias: keymaster_synchronize_codeslot_front_door_9
|
|
id: keymaster_synchronize_codeslot_front_door_9
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.pin_synched_front_door_9
|
|
from: 'on'
|
|
to: 'off'
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states("sensor.front_door_code_slot_9") != "unavailable" }}'
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_9'',''on'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.add_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 9 }}'
|
|
usercode: '{{ states(''input_text.front_door_pin_9'').strip() }}'
|
|
- conditions:
|
|
- condition: template
|
|
value_template: '{{ is_state(''binary_sensor.active_front_door_9'',''off'')
|
|
}}'
|
|
sequence:
|
|
- service: keymaster.clear_code
|
|
data_template:
|
|
entity_id: lock.front_door_lock
|
|
code_slot: '{{ 9 }}'
|
|
- alias: keymaster_front_door Reset Code Slot
|
|
id: keymaster_front_door Reset Code Slot
|
|
trigger:
|
|
entity_id: input_boolean.reset_codeslot_front_door_1,input_boolean.reset_codeslot_front_door_2,input_boolean.reset_codeslot_front_door_3,input_boolean.reset_codeslot_front_door_4,input_boolean.reset_codeslot_front_door_5,input_boolean.reset_codeslot_front_door_6,input_boolean.reset_codeslot_front_door_7,input_boolean.reset_codeslot_front_door_8,input_boolean.reset_codeslot_front_door_9,input_boolean.reset_codeslot_front_door_10
|
|
platform: state
|
|
to: 'on'
|
|
action:
|
|
- service: script.keymaster_front_door_reset_codeslot
|
|
data_template:
|
|
code_slot: '{{ trigger.entity_id.split(''_'')[-1] }}'
|
|
- alias: keymaster_front_door Lock Notifications
|
|
id: keymaster_front_door Lock Notifications
|
|
trigger:
|
|
platform: event
|
|
event_type: keymaster_lock_state_changed
|
|
event_data:
|
|
lockname: front_door
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.front_door_lock_notifications
|
|
state: 'on'
|
|
action:
|
|
- service: script.keymaster_front_door_manual_notify
|
|
data_template:
|
|
title: front_door
|
|
message: '{{ trigger.event.data.action_text }} {% if trigger.event.data.code_slot
|
|
> 0 %}({{ trigger.event.data.code_slot_name }}){% endif %}'
|
|
- alias: keymaster_front_door User Notifications
|
|
id: keymaster_front_door User Notifications
|
|
trigger:
|
|
platform: event
|
|
event_type: keymaster_lock_state_changed
|
|
event_data:
|
|
lockname: front_door
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ trigger.event.data.code_slot > 0 }}'
|
|
- condition: template
|
|
value_template: '{{ is_state(''input_boolean.notify_front_door_'' + trigger.event.data.code_slot
|
|
| string, ''on'') }}'
|
|
- condition: state
|
|
entity_id: input_boolean.front_door_lock_notifications
|
|
state: 'off'
|
|
action:
|
|
- service: script.keymaster_front_door_manual_notify
|
|
data_template:
|
|
title: front_door
|
|
message: '{{ trigger.event.data.action_text }} ({{ trigger.event.data.code_slot_name
|
|
}})'
|
|
- alias: keymaster_front_door Door Open and Close
|
|
id: keymaster_front_door Door Open and Close
|
|
trigger:
|
|
entity_id: binary_sensor.front_door_window_door_is_open
|
|
platform: state
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.front_door_dooraccess_notifications
|
|
state: 'on'
|
|
- condition: template
|
|
value_template: '{{ trigger.from_state.state in (''on'', ''off'') and trigger.to_state.state
|
|
in (''on'', ''off'') }}'
|
|
action:
|
|
- service: script.keymaster_front_door_manual_notify
|
|
data_template:
|
|
title: front_door
|
|
message: '{% if trigger.to_state.state == ''on'' %}Door Opened{% else %}Door
|
|
Closed{% endif %}'
|
|
- alias: keymaster_front_door Changed Code
|
|
id: keymaster_front_door Changed Code
|
|
trigger:
|
|
entity_id: input_text.front_door_pin_1,input_text.front_door_pin_2,input_text.front_door_pin_3,input_text.front_door_pin_4,input_text.front_door_pin_5,input_text.front_door_pin_6,input_text.front_door_pin_7,input_text.front_door_pin_8,input_text.front_door_pin_9,input_text.front_door_pin_10
|
|
platform: state
|
|
condition:
|
|
- condition: template
|
|
value_template: "{{\n is_state('input_boolean.enabled_front_door_' + trigger.entity_id.split('_')[-1],\
|
|
\ 'on')\n and\n (trigger.from_state.state != trigger.to_state.state)\n}}"
|
|
action:
|
|
- service: persistent_notification.create
|
|
data_template:
|
|
title: front_door LOCK MANAGER
|
|
message: '{{ ''You changed the PIN for front_door code slot '' + trigger.entity_id.split(''_'')[-1]
|
|
+ ''. Please enable it in order to make it active.''}}'
|
|
- service: input_boolean.turn_off
|
|
data_template:
|
|
entity_id: '{{ ''input_boolean.enabled_front_door_'' + trigger.entity_id.split(''_'')[-1]
|
|
}}'
|
|
- alias: keymaster_front_door Reset
|
|
id: keymaster_front_door Reset
|
|
trigger:
|
|
entity_id: input_boolean.front_door_reset_lock
|
|
platform: state
|
|
from: 'off'
|
|
to: 'on'
|
|
action:
|
|
- service: script.keymaster_front_door_reset_lock
|
|
- service: input_boolean.turn_off
|
|
entity_id: input_boolean.front_door_reset_lock
|
|
- alias: keymaster_front_door Decrement Access Count
|
|
id: keymaster_front_door Decrement Access Count
|
|
trigger:
|
|
platform: event
|
|
event_type: keymaster_lock_state_changed
|
|
event_data:
|
|
lockname: front_door
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ is_state(''input_boolean.accesslimit_front_door_'' + trigger.event.data.code_slot
|
|
| string, ''on'') }}'
|
|
- condition: template
|
|
value_template: "{{\n trigger.event.data.code_slot > 0\n and\n (trigger.event.data.action_code\
|
|
\ is undefined or trigger.event.data.action_code in (6, 19))\n}}"
|
|
action:
|
|
- service: input_number.decrement
|
|
data_template:
|
|
entity_id: '{{ ''input_number.accesscount_front_door_'' + trigger.event.data.code_slot
|
|
| string }}'
|
|
- alias: keymaster_front_door_locked
|
|
id: keymaster_front_door_locked
|
|
trigger:
|
|
entity_id: lock.front_door_lock
|
|
platform: state
|
|
to: locked
|
|
action:
|
|
- service: timer.cancel
|
|
entity_id: timer.keymaster_front_door_autolock
|
|
- alias: keymaster_turn_off_retry_front_door
|
|
id: keymaster_turn_off_retry_front_door
|
|
trigger:
|
|
entity_id: lock.front_door_lock
|
|
platform: state
|
|
to: locked
|
|
action:
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.keymaster_front_door_retry
|
|
- alias: keymaster_retry_bolt_closed_front_door
|
|
id: keymaster_retry_bolt_closed_front_door
|
|
trigger:
|
|
platform: state
|
|
entity_id: binary_sensor.front_door_window_door_is_open
|
|
to: 'off'
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.keymaster_front_door_retry
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: input_boolean.keymaster_front_door_autolock
|
|
state: 'on'
|
|
action:
|
|
- service: persistent_notification.create
|
|
data_template:
|
|
title: front_door is closed
|
|
message: '{{ ''The front_door sensor indicates the door has been closed, re-attempting
|
|
to lock.''}}'
|
|
- service: lock.lock
|
|
entity_id: lock.boltchecked_front_door
|
|
- alias: keymaster_front_door_opened
|
|
id: keymaster_front_door_opened
|
|
trigger:
|
|
platform: state
|
|
entity_id: binary_sensor.front_door_window_door_is_open
|
|
to: 'on'
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.keymaster_front_door_autolock
|
|
state: 'on'
|
|
action:
|
|
- service: timer.start
|
|
data_template:
|
|
entity_id: timer.keymaster_front_door_autolock
|
|
duration: "{% if (((as_timestamp(states.sun.sun.attributes.next_dusk)) > (as_timestamp(states.sun.sun.attributes.next_dawn))))\
|
|
\ %}\n {{ states('input_text.keymaster_front_door_autolock_door_time_night')}}\n\
|
|
{% else %}\n {{ states('input_text.keymaster_front_door_autolock_door_time_day')}}\n\
|
|
{% endif %}\n"
|
|
- alias: keymaster_front_door_unlocked_start_autolock
|
|
id: keymaster_front_door_unlocked_start_autolock
|
|
trigger:
|
|
entity_id: lock.front_door_lock
|
|
platform: state
|
|
to: unlocked
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.keymaster_front_door_autolock
|
|
state: 'on'
|
|
action:
|
|
- service: script.turn_on
|
|
entity_id: script.keymaster_front_door_start_timer
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.keymaster_front_door_retry
|
|
- alias: keymaster_front_door_timer_finished
|
|
id: keymaster_front_door_timer_finished
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.keymaster_front_door_autolock
|
|
state: 'on'
|
|
trigger:
|
|
platform: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.keymaster_front_door_autolock
|
|
action:
|
|
- service: lock.lock
|
|
entity_id: lock.boltchecked_front_door
|
|
- alias: keymaster_front_door_timer_canceled
|
|
id: keymaster_front_door_timer_canceled
|
|
trigger:
|
|
platform: event
|
|
event_type: timer.cancelled
|
|
event_data:
|
|
entity_id: timer.keymaster_front_door_autolock
|
|
action:
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.keymaster_front_door_retry
|
|
- alias: keymaster_front_door_disable_auto_lock
|
|
id: keymaster_front_door_disable_auto_lock
|
|
trigger:
|
|
entity_id: input_boolean.keymaster_front_door_autolock
|
|
platform: state
|
|
to: 'off'
|
|
action:
|
|
- service: timer.cancel
|
|
entity_id:
|
|
- timer.keymaster_front_door_autolock
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.keymaster_front_door_retry
|
|
- alias: keymaster_front_door_enable_auto_lock
|
|
id: keymaster_front_door_enable_auto_lock
|
|
trigger:
|
|
entity_id: input_boolean.keymaster_front_door_autolock
|
|
platform: state
|
|
to: 'on'
|
|
action:
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.keymaster_front_door_retry
|
|
- service: timer.cancel
|
|
entity_id:
|
|
- timer.keymaster_front_door_autolock
|
|
- service: script.turn_on
|
|
entity_id: script.keymaster_front_door_start_timer
|
|
- alias: keymaster_front_door_initialize
|
|
id: keymaster_front_door_initialize
|
|
trigger:
|
|
platform: homeassistant
|
|
event: start
|
|
action:
|
|
- service: input_text.set_value
|
|
entity_id: input_text.keymaster_front_door_autolock_door_time_day
|
|
data:
|
|
value: '{%- set current_value=states(''input_text.keymaster_front_door_autolock_door_time_day'')
|
|
-%} {{ iif(current_value in ['''', ''unknown''], "02:00:00", current_value)}}
|
|
|
|
'
|
|
- service: input_text.set_value
|
|
entity_id: input_text.keymaster_front_door_autolock_door_time_night
|
|
data:
|
|
value: '{%- set current_value=states(''input_text.keymaster_front_door_autolock_door_time_night'')
|
|
-%} {{ iif(current_value in ['''', ''unknown''], "00:05:00", current_value)}}
|
|
|
|
'
|
|
- id: aut_ha_startup
|
|
alias: aut ha startup
|
|
initial_state: true
|
|
trigger:
|
|
- platform: homeassistant
|
|
event: start
|
|
actions:
|
|
- action: script.scr_ha_startup
|
|
- id: aut_masterbdrm_shades_mid_morning
|
|
alias: aut masterbdrm shades mid morning
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: '10:00:00'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.semaphore_good_morning_was_used
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_sleeping
|
|
state: 'off'
|
|
actions:
|
|
- action: cover.set_cover_position
|
|
target:
|
|
entity_id: cover.master_bedroom_outer_shades
|
|
data:
|
|
position: 29
|
|
- id: aut_start_spt_leak_test
|
|
alias: aut start spt leak test
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: input_datetime.daily_start_spt
|
|
- platform: template
|
|
value_template: '{{ (states(''sensor.home_ys_cell_gps_distance'') | float(default=0)
|
|
> 2) and (states(''sensor.home_kt_cell_gps_distance'') | float(default=0) >
|
|
2) and (state_attr(" script.scr_spt_start","last_triggered") != none) }}'
|
|
for:
|
|
minutes: 15
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.dishwasher_on_or_off
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: sensor.top_load_washer
|
|
state: 'off'
|
|
- condition: template
|
|
value_template: "{{ (as_timestamp(now(),'') | int(default=0)) - (as_timestamp(state_attr('automation.aut_start_spt_leak_test',\
|
|
\ 'last_triggered'),'') | int(default=0) )\n > (4 * 60 * 60) }}"
|
|
actions:
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: binary_sensor.water_heater
|
|
state: 'on'
|
|
sequence:
|
|
- wait_for_trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.water_heater
|
|
from: 'on'
|
|
to: 'off'
|
|
for:
|
|
minutes: 5
|
|
- action: script.scr_spt_start
|
|
- id: delayed_spt_leak_test
|
|
alias: aut delayed spt leak test
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.spt_data_status
|
|
from: in_process
|
|
to: aborted
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: binary_sensor.dishwasher_on_or_off
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: sensor.top_load_washer
|
|
state: 'off'
|
|
actions:
|
|
- delay:
|
|
minutes: 15
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: binary_sensor.water_heater
|
|
state: 'on'
|
|
sequence:
|
|
- wait_for_trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.water_heater
|
|
from: 'on'
|
|
to: 'off'
|
|
for:
|
|
minutes: 5
|
|
- action: script.scr_spt_start
|
|
- id: spt_max_aborts_exceeded_error
|
|
alias: aut spt max aborts exceeded error
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ (state_attr(''sensor.spt_data_status'', ''consec_aborts'')
|
|
| int(default=0)) > 3 }}'
|
|
actions:
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: SPT consecutive aborts exceeds threshold
|
|
message: 'SPT consecutive aborts: {{ state_attr(''sensor.spt_data_status'',
|
|
''consec_aborts'') }}'
|
|
- id: aut_start_vacuum
|
|
alias: aut start vacuum
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: 07:35:00
|
|
conditions:
|
|
- condition: time
|
|
weekday:
|
|
- sun
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_vacuum_every_sunday
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
state: 'off'
|
|
- condition: template
|
|
value_template: '{{ states(''person.yang'') != ''home'' }}'
|
|
- condition: template
|
|
value_template: '{{ states(''person.karen'') != ''home'' }}'
|
|
actions:
|
|
- action: script.scr_vacuum_start_custom_cleaning
|
|
- id: aut_assume_awake
|
|
alias: aut assume awake
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ ( states(''sensor.time'') == (state_attr(''input_datetime.assume_awake'',
|
|
''timestamp'') | int(default=0) | timestamp_custom(''%H:%M'', false, ''''))
|
|
) }}
|
|
|
|
'
|
|
actions:
|
|
- action: input_boolean.turn_off
|
|
data:
|
|
entity_id:
|
|
- input_boolean.inp_bool_sleeping
|
|
- input_boolean.inp_bool_visitor_while_sleeping_flag
|
|
- id: aut_assume_asleep
|
|
alias: aut assume asleep
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ ( states(''sensor.time'') == (state_attr(''input_datetime.assume_asleep'',
|
|
''timestamp'') | int(default=0) | timestamp_custom(''%H:%M'', false, ''''))
|
|
) }}
|
|
|
|
'
|
|
actions:
|
|
- action: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.inp_bool_sleeping
|
|
- id: aut_datetime_announcements_on
|
|
alias: aut datetime announcements on
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: input_datetime.announcements_enable
|
|
actions:
|
|
- action: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.inp_bool_announcements
|
|
- id: aut_datetime_announcements_off
|
|
alias: aut datetime announcements off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: input_datetime.announcements_disable
|
|
actions:
|
|
- action: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.inp_bool_announcements
|
|
- id: aut_hourly_announcement
|
|
alias: aut hourly announcement
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time_pattern
|
|
minutes: 0
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: '''The time is {{ now().time().strftime("%-I:%M") | replace(":00",
|
|
" o''clock") | regex_replace(":0(\\d)", " oh \\1") }}'''
|
|
- id: aut_mood_lights_daily_off
|
|
alias: aut mood lights daily off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: input_boolean.inp_bool_sleeping
|
|
to: 'on'
|
|
actions:
|
|
- action: script.scr_reset_mood_lights_to_default
|
|
- action: homeassistant.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.sun_room_uplights
|
|
- switch.candles
|
|
- light.kitchen_leds_upper_master
|
|
- switch.christmas_tree
|
|
- id: aut_good_morning_used_semphore_reset
|
|
alias: aut good morning used semaphore reset
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: '23:59:00'
|
|
actions:
|
|
- action: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.semaphore_good_morning_was_used
|
|
- id: aut_outdoor_lights_failsafe
|
|
alias: aut outdoor lights failsafe
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: 01:05:00
|
|
- platform: state
|
|
entity_id: group.outdoor_lights
|
|
to: 'on'
|
|
for:
|
|
minutes: 120
|
|
actions:
|
|
- action: homeassistant.turn_off
|
|
target:
|
|
entity_id: group.outdoor_lights
|
|
- id: aut_indoor_lights_failsafe
|
|
alias: aut indoor lights failsafe
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: 02:30:00
|
|
actions:
|
|
- action: homeassistant.turn_off
|
|
target:
|
|
entity_id: group.indoor_lights
|
|
- id: aut_party_mode_on
|
|
alias: party mode on
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: input_boolean.party_mode
|
|
from: 'off'
|
|
to: 'on'
|
|
actions:
|
|
- action: light.turn_on
|
|
data:
|
|
entity_id: light.living_room_lights
|
|
brightness_pct: 30
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id:
|
|
- light.track_lights
|
|
- group.kitchen_lights
|
|
- light.sun_room_lights
|
|
- light.eating_area_lights
|
|
- light.entryway_lights
|
|
- id: aut_party_mode_off
|
|
alias: party mode off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: input_boolean.party_mode
|
|
from: 'on'
|
|
to: 'off'
|
|
actions:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.track_lights
|
|
- light.sun_room_lights
|
|
- light.eating_area_lights
|
|
- light.entryway_lights
|
|
- action: lock.lock
|
|
target:
|
|
entity_id:
|
|
- lock.front_door_lock
|
|
- lock.back_door_lock
|
|
- id: aut_datetime_party_mode_on
|
|
alias: aut datetime extended absence on
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: input_datetime.party_mode_start
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.party_mode
|
|
state: 'off'
|
|
actions:
|
|
- action: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.party_mode
|
|
- id: aut_datetime_party_mode_off
|
|
alias: aut datetime extended absence off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: input_datetime.party_mode_end
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.party_mode
|
|
state: 'on'
|
|
actions:
|
|
- action: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.party_mode
|
|
- id: auto_adj_lvrm_brightness
|
|
alias: auto adj lvrm brightness
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.lv_rm_suggested_brightness
|
|
to: null
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.party_mode
|
|
state: 'off'
|
|
- condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: light.living_room_lights
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: media_player.tv_livingrm
|
|
state: 'on'
|
|
actions:
|
|
- action: light.turn_on
|
|
data:
|
|
entity_id: light.living_room_lights
|
|
brightness_pct: '{{ states(''sensor.lv_rm_suggested_brightness'') | int(default=0)
|
|
}}'
|
|
- id: aut_lum_outdoor_lights_solar_trig_on
|
|
alias: aut lum outdoor lights solar trig on
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ (states(''sensor.kflwildw56_backed_up_local_solar_rad_lx'')
|
|
| int(default=0) <= states(''input_number.inp_num_outdoor_lights_on_solar_trig'')
|
|
| int(default=0) ) }}'
|
|
actions:
|
|
action: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.inp_bool_lum_outdoor_lights_solar_trig
|
|
- id: aut_lum_outdoor_lights_solar_trig_off
|
|
alias: aut lum outdoor lights solar trig off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ (states(''sensor.kflwildw56_backed_up_local_solar_rad_lx'')
|
|
| int(default=0) >= states(''input_number.inp_num_outdoor_lights_off_solar_trig'')
|
|
| int(default=0) ) }}'
|
|
actions:
|
|
action: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.inp_bool_lum_outdoor_lights_solar_trig
|
|
- id: aut_lum_mood_lights_f_solar_trig_on
|
|
alias: aut lum mood lights f_solar trig on
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ ( (states(''sensor.filtered_kflwildw56_bu_local_rad_lx'')
|
|
| int(default=0)) <= (states(''input_number.inp_num_mood_lights_on_f_solar_trig'')
|
|
| int(default=0)) ) }}'
|
|
actions:
|
|
action: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.inp_bool_lum_mood_lights_f_solar_trig
|
|
- id: aut_lum_mood_lights_f_solar_trig_off
|
|
alias: aut lum mood lights f_solar trig off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ ( (states(''sensor.filtered_kflwildw56_bu_local_rad_lx'')
|
|
| int(default=0)) >= (states(''input_number.inp_num_mood_lights_off_f_solar_trig'')
|
|
| int(default=0)) ) }}'
|
|
actions:
|
|
action: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.inp_bool_lum_mood_lights_f_solar_trig
|
|
- id: aut_lum_sunrm_shades_trig_on
|
|
alias: aut lum sunrm shades trig on
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ ( (states(''sensor.kflwildw56_backed_up_local_solar_rad_lx'')
|
|
| int(default=0)) >= (states(''input_number.inp_num_sunrm_shades_open_trig'')
|
|
| int(default=0)) ) }}'
|
|
actions:
|
|
action: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.inp_bool_lum_sunrm_shades_trig
|
|
- id: aut_lum_sunrm_shades_trig_off
|
|
alias: aut lum sunrm shades trig off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ ( (states(''sensor.kflwildw56_backed_up_local_solar_rad_lx'')
|
|
| int(default=0)) <= (states(''input_number.inp_num_sunrm_shades_close_low_lux_trig'')
|
|
| int(default=0)) ) }}'
|
|
for:
|
|
minutes: '{{ states(''input_number.inp_num_sunrm_shades_close_low_lux_trig_delay'')
|
|
| int(default=0) }}'
|
|
actions:
|
|
action: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.inp_bool_lum_sunrm_shades_trig
|
|
- id: aut_office_mood_lights_auto_on
|
|
alias: aut office mood lights auto on
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.ys_desktop_availability
|
|
from: 'off'
|
|
to: 'on'
|
|
- platform: template
|
|
value_template: '{{ ( ( as_timestamp(now(), '''') - (as_timestamp(states(''sensor.ys_desktop_lastactive''),
|
|
'''')| float(default=0)) ) | int(default=0) ) < 15 }}'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: group.office_mood_lights
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_lum_outdoor_lights_solar_trig
|
|
state: 'on'
|
|
actions:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.office_monitor_leds
|
|
- action: select.select_option
|
|
entity_id: select.office_cabinet_leds_preset
|
|
data:
|
|
option: Upper Blu-Org
|
|
- id: aut_office_mood_lights_auto_off
|
|
alias: aut office mood lights auto off
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.ys_desktop_availability
|
|
to: 'off'
|
|
- platform: template
|
|
value_template: '{{ ( ( as_timestamp(now(), '''') - (as_timestamp(states(''sensor.ys_desktop_lastactive''),
|
|
'''')| float(default=0)) ) | int(default=0) ) > 3600 }}'
|
|
- platform: state
|
|
entity_id: input_boolean.inp_bool_lum_outdoor_lights_solar_trig
|
|
to: 'off'
|
|
actions:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- group.office_mood_lights
|
|
- id: aut_update_ys_cell_ble_tracker
|
|
alias: aut update ys cell ble tracker
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.ys_cell_ble_room
|
|
to: null
|
|
- platform: homeassistant
|
|
event: start
|
|
actions:
|
|
- data:
|
|
dev_id: ys_cell_ble
|
|
location_name: "{% if states('sensor.ys_cell_ble_room') != 'not_home' -%}\n\
|
|
\ home\n{%- else -%}\n not_home\n{%- endif %}\n"
|
|
action: device_tracker.see
|
|
- id: aut_update_kt_cell_ble_tracker
|
|
alias: aut update kt cell ble tracker
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.kt_cell_ble_room
|
|
to: null
|
|
- platform: homeassistant
|
|
event: start
|
|
actions:
|
|
- data:
|
|
dev_id: kt_cell_ble
|
|
location_name: "{% if states('sensor.kt_cell_ble_room') != 'not_home' -%}\n\
|
|
\ home\n{%- else -%}\n not_home\n{%- endif %}\n"
|
|
action: device_tracker.see
|
|
- id: aut_ups_on_battery_mode
|
|
alias: aut ups on battery mode
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ (states(''sensor.rackups_input_voltage'') | float(default=0))
|
|
<= (states(''sensor.rackups_low_voltage_transfer'') | float(default=0)) }}'
|
|
- platform: template
|
|
value_template: '{{ (states(''sensor.rackups_input_voltage'') | float(default=0))
|
|
>= (states(''sensor.rackups_high_voltage_transfer'') | float(default=0)) }}'
|
|
conditions:
|
|
condition: template
|
|
value_template: '{{ states(''sensor.rackups_status'') != ''unavailable'' }}'
|
|
actions:
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: HA UPS on battery power
|
|
message: 'HA UPS on battery mode: {{ states(''sensor.rackups_status'') }}'
|
|
- id: aut_ups_on_ac_mode
|
|
alias: aut ups on ac mode
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: "{{ ((states('sensor.rackups_input_voltage') | float(default=0))\
|
|
\ > (states('sensor.rackups_low_voltage_transfer') | float(default=0)))\n and\
|
|
\ ((states('sensor.rackups_input_voltage') | float(default=0)) < (states('sensor.rackups_high_voltage_transfer')\
|
|
\ | float(default=0))) }}"
|
|
conditions:
|
|
condition: template
|
|
value_template: '{{ states(''sensor.rackups_status'') != ''unavailable'' }}'
|
|
actions:
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: HA grid power restored
|
|
message: 'HA UPS on AC mode: {{ states(''sensor.rackups_status'') }}'
|
|
- action: homeassistant.turn_on
|
|
target:
|
|
entity_id: group.ceiling_fans
|
|
- id: aut_ups_emergency_shutdown
|
|
alias: auto ups emergency shutdown
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.rackups_battery_runtime
|
|
below: 600
|
|
condition:
|
|
condition: template
|
|
value_template: '{{ states(''sensor.rackups_status'') != ''unavailable'' }}'
|
|
actions:
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: HA UPS emergency shutdown
|
|
message: 'UPS emergency shutdown: {{ states(''sensor.rackups_battery_runtime'')
|
|
}} seconds remaining'
|
|
- action: notify.mobile_app_ys_cell
|
|
data:
|
|
title: HA UPS emergency shutdown
|
|
message: 'UPS emergency shutdown: {{ states(''sensor.rackups_battery_runtime'')
|
|
}} seconds remaining'
|
|
data:
|
|
car_ui: true
|
|
- action: hassio.host_shutdown
|
|
- id: irrig_leak_while_valves_off
|
|
alias: irrig leak while valves off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ (states(''sensor.irrig_report_avg_gpm_zone_0'') | float(default=0))
|
|
> 0 }}'
|
|
condition:
|
|
- condition: template
|
|
value_template: "{{ ( ( as_timestamp(now(), '') - (as_timestamp(states('sensor.uptime'),\
|
|
\ '')\n | float(default=0)) ) | int(default=0) ) > 10 }}"
|
|
actions:
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: 'Irrig leak detected while all valves off: {{ states(''sensor.irrig_report_avg_gpm_zone_0'')
|
|
}} GPM'
|
|
message: 'Irrig leak detected while all valves off: {{ states(''sensor.irrig_report_avg_gpm_zone_0'')
|
|
}} GPM'
|
|
data:
|
|
car_ui: true
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: 'Irrig leak detected while valves all off: {{ states(''sensor.irrig_report_avg_gpm_zone_0'')
|
|
}} GPM'
|
|
message: 'Irrig leak detected while valves all off: {{ states(''sensor.irrig_report_avg_gpm_zone_0'')
|
|
}} GPM'
|
|
- id: irrig_leak_zone_1_front
|
|
alias: irrig leak zone 1 front
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ (states(''sensor.irrig_report_avg_gpm_zone_1'') | float(default=0))
|
|
> states(''input_number.irrig_z1_front_yd_gpm_limit'') | float(default=7) }}'
|
|
actions:
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: 'Irrig leak detected in zone 1 (front): {{ states(''sensor.irrig_report_avg_gpm_zone_1'')
|
|
}} GPM'
|
|
message: 'Irrig leak detected in zone 1 (front): {{ states(''sensor.irrig_report_avg_gpm_zone_1'')
|
|
}} GPM'
|
|
data:
|
|
car_ui: true
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: 'Irrig leak detected in zone 1 (front): {{ states(''sensor.irrig_report_avg_gpm_zone_1'')
|
|
}} GPM'
|
|
message: 'Irrig leak detected in zone 1 (front): {{ states(''sensor.irrig_report_avg_gpm_zone_1'')
|
|
}} GPM'
|
|
- id: irrig_leak_zone_2_drip
|
|
alias: irrig leak zone 2 drip
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ (states(''sensor.irrig_report_avg_gpm_zone_2'') | float(default=0))
|
|
> states(''input_number.irrig_z2_drip_gpm_limit'') | float(default=5) }}'
|
|
actions:
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: 'Irrig leak detected in zone 2 (drip): {{ states(''sensor.irrig_report_avg_gpm_zone_2'')
|
|
}} GPM'
|
|
message: 'Irrig leak detected in zone 2 (drip): {{ states(''sensor.irrig_report_avg_gpm_zone_2'')
|
|
}} GPM'
|
|
data:
|
|
car_ui: true
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: 'Irrig leak detected in zone 2 (drip): {{ states(''sensor.irrig_report_avg_gpm_zone_2'')
|
|
}} GPM'
|
|
message: 'Irrig leak detected in zone 2 (drip): {{ states(''sensor.irrig_report_avg_gpm_zone_2'')
|
|
}} GPM'
|
|
- id: irrig_leak_zone_3_right
|
|
alias: irrig leak zone 3 right
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ (states(''sensor.irrig_report_avg_gpm_zone_3'') | float(default=0))
|
|
> states(''input_number.irrig_z3_right_yd_gpm_limit'') | float(default=10) }}'
|
|
actions:
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: 'Irrig leak detected in zone 3 (right): {{ states(''sensor.irrig_report_avg_gpm_zone_3'')
|
|
}} GPM'
|
|
message: 'Irrig leak detected in zone 3 (right): {{ states(''sensor.irrig_report_avg_gpm_zone_3'')
|
|
}} GPM'
|
|
data:
|
|
car_ui: true
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: 'Irrig leak detected in zone 3 (right): {{ states(''sensor.irrig_report_avg_gpm_zone_3'')
|
|
}} GPM'
|
|
message: 'Irrig leak detected in zone 3 (right): {{ states(''sensor.irrig_report_avg_gpm_zone_3'')
|
|
}} GPM'
|
|
- id: irrig_leak_zone_4_left
|
|
alias: irrig leak zone 4 left
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ (states(''sensor.irrig_report_avg_gpm_zone_4'') | float(default=0))
|
|
> states(''input_number.irrig_z4_left_yd_gpm_limit'') | float(default=13) }}'
|
|
actions:
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: 'Irrig leak detected in zone 4 (left): {{ states(''sensor.irrig_report_avg_gpm_zone_4'')
|
|
}} GPM'
|
|
message: 'Irrig leak detected in zone 4 (left): {{ states(''sensor.irrig_report_avg_gpm_zone_4'')
|
|
}} GPM'
|
|
data:
|
|
car_ui: true
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: 'Irrig leak detected in zone 4 (left): {{ states(''sensor.irrig_report_avg_gpm_zone_4'')
|
|
}} GPM'
|
|
message: 'Irrig leak detected in zone 4 (left): {{ states(''sensor.irrig_report_avg_gpm_zone_4'')
|
|
}} GPM'
|
|
- id: aut_drybox_humidity_above_tolerance
|
|
alias: aut drybox humidity above tolerance
|
|
initial_state: true
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.drybox_relative_humidity
|
|
above: input_number.inp_num_drybox_relative_humidity_threshold
|
|
for:
|
|
hours: 12
|
|
actions:
|
|
- action: notify.persistent_notification
|
|
data:
|
|
title: 'Drybox humidity out of tolerance: {{ states(''sensor.drybox_relative_humidity'')
|
|
}} percent'
|
|
message: 'Drybox humidity out of tolerance: {{ states(''sensor.drybox_relative_humidity'')
|
|
}} percent'
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: 'Drybox humidity out of tolerance: {{ states(''sensor.drybox_relative_humidity'')
|
|
}} percent'
|
|
message: 'Drybox humidity out of tolerance: {{ states(''sensor.drybox_relative_humidity'')
|
|
}} percent'
|
|
- id: aut_expansion_tank_fault
|
|
alias: aut expansion tank fault
|
|
initial_state: true
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id:
|
|
- sensor.water_pressure
|
|
above: 85
|
|
actions:
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: 'Water expansion tank fault: {{ states(''sensor.water_pressure'') }}
|
|
PSI'
|
|
message: 'Water expansion tank fault: {{ states(''sensor.water_pressure'') }}
|
|
PSI'
|
|
data:
|
|
car_ui: true
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: 'Water expansion tank fault: {{ states(''sensor.water_pressure'') }}
|
|
PSI'
|
|
message: 'Water expansion tank fault: {{ states(''sensor.water_pressure'') }}
|
|
PSI'
|
|
- id: aut_freezer_fault
|
|
alias: aut freezer fault
|
|
initial_state: true
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id:
|
|
- sensor.freezer_sensor_temperature
|
|
above: 7
|
|
for:
|
|
minutes: 90
|
|
actions:
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: Freezer temperature too high
|
|
message: Freezer temperature is {{ states('sensor.freezer_sensor_temperature')
|
|
}} F
|
|
data:
|
|
clickAction: lovelace/graphs
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: Freezer temperature too high
|
|
message: TTS
|
|
data:
|
|
tts_text: Freezer temperature problem detected. Currently {{ states('sensor.freezer_sensor_temperature')
|
|
}} degrees
|
|
data:
|
|
car_ui: true
|
|
- id: aut_irrig_valve_leak_notify
|
|
alias: aut irrig valve leak notify
|
|
initial_state: true
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id:
|
|
- sensor.irrig_report_valve_leak_gallons
|
|
above: 0
|
|
condition:
|
|
- condition: template
|
|
value_template: "{{ ( ( as_timestamp(now(), '') - (as_timestamp(states('sensor.uptime'),\
|
|
\ '')\n | float(default=0)) ) | int(default=0) ) > 10 }}"
|
|
actions:
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: 'Leaky irrigation valve detected: {{ states(''sensor.irrig_report_valve_leak_gallons'')
|
|
}} gallons'
|
|
message: 'Leaky irrigation valve detected: {{ states(''sensor.irrig_report_valve_leak_gallons'')
|
|
}} gallons
|
|
|
|
were measured between watering cycles or when the valves should have been
|
|
off.
|
|
|
|
'
|
|
data:
|
|
car_ui: true
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: 'Leaky irrigation valve detected: {{ states(''sensor.irrig_report_valve_leak_gallons'')
|
|
}} gallons'
|
|
message: 'Leaky irrigation valve detected: {{ states(''sensor.irrig_report_valve_leak_gallons'')
|
|
}} gallons
|
|
|
|
were measured between watering cycles or when the valves should have been
|
|
off.
|
|
|
|
'
|
|
- id: aut_spt_leak_notify
|
|
alias: aut spt leak notify
|
|
initial_state: true
|
|
triggers:
|
|
- trigger: state
|
|
entity_id: sensor.spt_data_status
|
|
from: in_process
|
|
to: valid
|
|
for: 00:00:10
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ (states(''sensor.validated_water_static_pressure_test_result'')
|
|
| float(default=0)) <= 0 }}
|
|
|
|
'
|
|
- condition: template
|
|
value_template: "{{ (states('sensor.validated_water_static_pressure_test_result')\
|
|
\ | float(default=0)) < \n ((states('input_number.loss_per_minute_alarm_threshold')\
|
|
\ | float(default=0)) \n * (states('input_number.inp_num_spt_duration') |\
|
|
\ float(default=0))) }}\n"
|
|
actions:
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: SPT water leak detected
|
|
message: 'Leak detected during Static Pressure Test!
|
|
|
|
Test ended: {{ as_timestamp(states.sensor.spt_data_status.last_changed) |
|
|
timestamp_custom(''%d-%b-%Y, %I:%M:%S %p'') }}
|
|
|
|
Total pressure drop: {{ states(''sensor.validated_water_static_pressure_test_result'')
|
|
| float(default=0) }}
|
|
|
|
Drop per minute: {{ states(''sensor.water_static_pressure_loss_per_minute'')
|
|
}}
|
|
|
|
'
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: SPT water leak detected
|
|
message: 'Leak detected during Static Pressure Test!
|
|
|
|
Test ended: {{ as_timestamp(states.sensor.spt_data_status.last_changed) |
|
|
timestamp_custom(''%d-%b-%Y, %I:%M:%S %p'') }}
|
|
|
|
Total pressure drop: {{ states(''sensor.validated_water_static_pressure_test_result'')
|
|
| float(default=0) }}
|
|
|
|
Drop per minute: {{ states(''sensor.water_static_pressure_loss_per_minute'')
|
|
}}
|
|
|
|
'
|
|
- action: notify.persistent_notification
|
|
data:
|
|
title: SPT water leak detected
|
|
message: 'Leak detected during Static Pressure Test!
|
|
|
|
Test ended: {{ as_timestamp(states.sensor.spt_data_status.last_changed) |
|
|
timestamp_custom(''%d-%b-%Y, %I:%M:%S %p'') }}
|
|
|
|
Total pressure drop: {{ states(''sensor.validated_water_static_pressure_test_result'')
|
|
| float(default=0) }}
|
|
|
|
Drop per minute: {{ states(''sensor.water_static_pressure_loss_per_minute'')
|
|
}}
|
|
|
|
'
|
|
- id: aut_leak_detected
|
|
alias: aut leak detected
|
|
mode: single
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id:
|
|
- binary_sensor.leak_refrigerator
|
|
- binary_sensor.leak_dishwasher
|
|
- binary_sensor.leak_kitchen_sink
|
|
- binary_sensor.leak_kitchen_sink_rear
|
|
- binary_sensor.leak_water_heater
|
|
- binary_sensor.leak_karens_sink_water_leak
|
|
- binary_sensor.leak_yangs_sink_water_leak
|
|
- binary_sensor.leak_guest_sink_water_leak
|
|
- binary_sensor.leak_master_toilet_water_leak
|
|
- binary_sensor.leak_guest_toilet_water_leak
|
|
- binary_sensor.leak_washer_contact
|
|
- binary_sensor.leak_laundry
|
|
from: 'off'
|
|
to: 'on'
|
|
actions:
|
|
- action: switch.turn_off
|
|
target:
|
|
entity_id: switch.water_valve
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
priority: high
|
|
message: Water Leak detected at the {{ trigger.entity_id|replace('binary_sensor.leak_',
|
|
'') | replace('_', '') }}
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
priority: high
|
|
message: House water has been turned off. Leak detected at {{ trigger.entity_id
|
|
}}. Turn on manually when leak is resolved.
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: House water turned OFF. Leak detected at {{ trigger.entity_id }}.
|
|
message: House water is OFF. Turn on manually when leak is resolved.
|
|
data:
|
|
car_ui: true
|
|
- action: notify.alexa_yellow_ring
|
|
data:
|
|
message: House water is OFF. Leak detected at {{ trigger.entity_id }}. Turn
|
|
on manually when leak is resolved.
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
message: TTS
|
|
data:
|
|
tts_text: House water turned OFF. Leak detected at {{ trigger.entity_id }}
|
|
priority: high
|
|
ttl: 0
|
|
media_stream: alarm_stream
|
|
data:
|
|
car_ui: true
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: Water leak detected at the {{ trigger.entity_id|replace('binary_sensor.leak_',
|
|
'') | replace('_', '') }}
|
|
message: Water leak detected at the {{ trigger.entity_id|replace('binary_sensor.leak_',
|
|
'') | replace('_', '') }}
|
|
data:
|
|
channel: Urgent
|
|
importance: high
|
|
vibrationPattern: 100, 1000, 100, 1000, 100, 1000
|
|
persistent: 'true'
|
|
tag: persistent
|
|
priority: high
|
|
ttl: 0
|
|
data:
|
|
car_ui: true
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
message: Water leak detected at the {{ trigger.entity_id|replace('binary_sensor.leak_',
|
|
'') | replace('_', '') }}
|
|
- repeat:
|
|
while:
|
|
- condition: template
|
|
value_template: '{{ repeat.index <= 4 }}'
|
|
- condition: state
|
|
entity_id: switch.water_valve
|
|
state: 'off'
|
|
sequence:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
priority: high
|
|
message: Water Leak detected at the {{ trigger.entity_id|replace('binary_sensor.leak_',
|
|
'') | replace('_', '') }}
|
|
- delay:
|
|
seconds: 30
|
|
- id: aut_washer_done_announce
|
|
alias: aut washer done
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.top_load_washer_run_completed
|
|
from: 'off'
|
|
to: 'on'
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: "{% if state_attr('sensor.dryer', 'remain_time') == '0:00:00' %}\n\
|
|
\ The washer cycle has finished and the dryer is available\n{% else %}\n\
|
|
\ {% if (state_attr('sensor.dryer', 'remain_time').split(':')[0]) == '0'\
|
|
\ %}\n The washer cycle has finished. The dryer will be available in {{\
|
|
\ (state_attr('sensor.dryer', 'remain_time').split(':')[1] | int(default=0))\
|
|
\ }}\n minutes\n {% else %}\n The washer cycle has fnished, The dryer\
|
|
\ will be available in {{ (state_attr('sensor.dryer', 'remain_time').split(':')[0]\
|
|
\ | int(default=0)) }}\n hours and {{ (state_attr('sensor.dryer', 'remain_time').split(':')[1]\
|
|
\ | int(default=0)) }} minutes\n {% endif %}\n{% endif %}\n"
|
|
- action: notify.alexa_yellow_ring
|
|
data:
|
|
message: The washer cycle has finished
|
|
- id: aut_dryer_done_announce
|
|
alias: aut dryer done
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.dryer_run_completed
|
|
from: 'off'
|
|
to: 'on'
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: The dryer cycle has finished
|
|
- action: notify.alexa_yellow_ring
|
|
data:
|
|
message: The dryer cycle has finished
|
|
- id: aut_vacuum_done_announce
|
|
alias: aut vacuum done
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: vacuum.rosie
|
|
from: cleaning
|
|
to: docked
|
|
actions:
|
|
- action: notify.alexa_yellow_ring
|
|
data:
|
|
message: Rosie is a dirty girl
|
|
- alias: Probe 1 Target Temp
|
|
initial_state: 'off'
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.target_alert_temp_probe_1
|
|
to: Alert
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: Probe 1 has reached the target temp. Currently {{ states('sensor.igrill_70918f19e8d1_probe_1')
|
|
}} °F
|
|
- action: notify.mobile_app_ys_cell
|
|
data:
|
|
message: TTS
|
|
data:
|
|
tts_text: Probe 1 has reached the target temp. Currently {{ states('sensor.igrill_70918f19e8d1_probe_1')
|
|
}} °F
|
|
data:
|
|
car_ui: true
|
|
- alias: Probe 2 Target Temp
|
|
initial_state: 'off'
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.target_alert_temp_probe_2
|
|
to: Alert
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: Probe 2 has reached the target temp. Currently {{ states('sensor.igrill_70918f19e8d1_probe_2')
|
|
}} °F
|
|
- action: notify.mobile_app_ys_cell
|
|
data:
|
|
message: TTS
|
|
data:
|
|
tts_text: Probe 2 has reached the target temp. Currently {{ states('sensor.igrill_70918f19e8d1_probe_2')
|
|
}} °F
|
|
data:
|
|
car_ui: true
|
|
- alias: Probe 3 Target Temp
|
|
initial_state: 'off'
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.target_alert_temp_probe_3
|
|
to: Alert
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: Probe 3 has reached the target temp. Currently {{ states('sensor.igrill_70918f19e8d1_probe_3')
|
|
}} °F
|
|
- action: notify.mobile_app_ys_cell
|
|
data:
|
|
message: TTS
|
|
data:
|
|
tts_text: Probe 3 has reached the target temp. Currently {{ states('sensor.igrill_70918f19e8d1_probe_3')
|
|
}} °F
|
|
data:
|
|
car_ui: true
|
|
- alias: Probe 4 Target Temp
|
|
initial_state: 'off'
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.target_alert_temp_probe_4
|
|
to: Alert
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: Probe 4 has reached the target temp. Currently {{ states('sensor.igrill_70918f19e8d1_probe_4')
|
|
}} °F
|
|
- action: notify.mobile_app_ys_cell
|
|
data:
|
|
message: TTS
|
|
data:
|
|
tts_text: Probe 4 has reached the target temp. Currently {{ states('sensor.igrill_70918f19e8d1_probe_4')
|
|
}} °F
|
|
data:
|
|
car_ui: true
|
|
- alias: Monitor iGrill Device Connectivity
|
|
initial_state: 'on'
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.igrill_70918f19e8d1_connectivity
|
|
from: 'on'
|
|
to: 'off'
|
|
for:
|
|
minutes: 5
|
|
- platform: state
|
|
entity_id: binary_sensor.igrill_70918f19e8d1_sensor
|
|
from: 'on'
|
|
to: 'off'
|
|
for:
|
|
minutes: 5
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: I Grill Device Disconnected
|
|
- id: aut_auto_living_area_motion
|
|
alias: aut auto living area motion
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.living_area_motion
|
|
to: 'on'
|
|
actions:
|
|
- action: script.scr_check_if_suspicious
|
|
- choose:
|
|
- alias: Turn on pathway lighting if sleeping
|
|
conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_sleeping
|
|
state: 'on'
|
|
- condition: time
|
|
after: 00:01
|
|
before: 07:00
|
|
sequence:
|
|
- action: script.scr_pathway_motion_lighting_on
|
|
default:
|
|
- action: script.scr_motion_lighting_on
|
|
- id: aut_auto_on_living_area_luminosity
|
|
alias: aut auto on living area luminosity
|
|
initial_state: true
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.lv_rm_suggested_brightness
|
|
above: 0
|
|
for:
|
|
minutes: '{{ states(''input_number.inp_num_lvrm_lights_on_delay'') | int(default=0)
|
|
}}'
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ states(''sensor.filtered_living_rm_visible_light'') != ''unknown''
|
|
}}'
|
|
- condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: binary_sensor.living_area_motion
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: media_player.tv_livingrm
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: media_player.tv_livingrm
|
|
state: unknown
|
|
actions:
|
|
- action: script.scr_motion_lighting_on
|
|
- id: aut_auto_off_living_area_luminosity
|
|
alias: aut auto off living area luminosity
|
|
initial_state: true
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.lv_rm_suggested_brightness
|
|
below: 1
|
|
for:
|
|
minutes: '{{ states(''input_number.inp_num_lvrm_lights_off_delay'') | int(default=0)
|
|
}}'
|
|
condition:
|
|
- condition: state
|
|
entity_id: input_boolean.party_mode
|
|
state: 'off'
|
|
- condition: numeric_state
|
|
entity_id: sun.sun
|
|
value_template: '{{ state_attr(''sun.sun'', ''elevation'') }}'
|
|
above: 14.0
|
|
actions:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.living_room_lights
|
|
- id: aut_living_area_lights_motion_timeout
|
|
alias: aut living area lights motion timeout
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.living_area_motion
|
|
to: 'off'
|
|
for:
|
|
minutes: 30
|
|
conditions:
|
|
- condition: state
|
|
entity_id: media_player.tv_livingrm
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: light.eating_area_lights
|
|
state: 'off'
|
|
actions:
|
|
- action: script.scr_great_room_motion_lighting_off
|
|
- id: aut_living_area_pathway_motion_inactive
|
|
alias: aut living area pathway motion inactive
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.living_area_motion
|
|
to: 'off'
|
|
for:
|
|
minutes: 5
|
|
actions:
|
|
- action: script.scr_pathway_motion_lighting_off
|
|
- id: aut_masterbdrm_outer_shades_down_solar_noon
|
|
alias: aut masterbdrm outer shades down solar noon
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ state_attr(''sun.sun'', ''rising'') == false }}'
|
|
actions:
|
|
- action: cover.close_cover
|
|
target:
|
|
entity_id: cover.master_bedroom_outer_shades
|
|
- id: aut_sunrm_shades_down_afternoon
|
|
alias: aut sunroom shades down afternoon
|
|
initial_state: true
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sun.sun
|
|
value_template: '{{ state_attr(''sun.sun'', ''elevation'') }}'
|
|
above: 14.1
|
|
below: 32.5
|
|
conditions:
|
|
condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_inhibit_shades
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'off'
|
|
- condition: template
|
|
value_template: '{{ states(''sensor.filtered_kflwildw56_bu_local_rad_lx'') |
|
|
int(default=0) > (states(''input_number.inp_num_sunrm_shades_part_close_min_reqd_trig_lux'')
|
|
| int(default=0)) }}
|
|
|
|
'
|
|
- condition: numeric_state
|
|
entity_id: sun.sun
|
|
value_template: '{{ state_attr(''sun.sun'', ''azimuth'') }}'
|
|
above: 199
|
|
below: 280
|
|
actions:
|
|
- action: script.scr_check_sunrm_windows
|
|
- action: script.scr_partial_close_sunrm_shades
|
|
data:
|
|
position: '40'
|
|
- id: aut_sunrm_shades_up_afternoon
|
|
alias: aut sunroom shades up afternoon
|
|
initial_state: true
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sun.sun
|
|
value_template: '{{ state_attr(''sun.sun'', ''elevation'') }}'
|
|
above: 0
|
|
below: 14.0
|
|
- platform: numeric_state
|
|
entity_id: sun.sun
|
|
value_template: '{{ state_attr(''sun.sun'', ''azimuth'') }}'
|
|
above: 204
|
|
below: 267
|
|
conditions:
|
|
condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_inhibit_shades
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'off'
|
|
- condition: time
|
|
after: '12:00:00'
|
|
- condition: state
|
|
entity_id: binary_sensor.lum_sunrm_shades_trig
|
|
state: 'on'
|
|
actions:
|
|
- action: cover.open_cover
|
|
target:
|
|
entity_id: cover.sun_room_shades
|
|
- id: aut_sunrm_shades_down_evening
|
|
alias: aut sunroom shades down evening
|
|
initial_state: true
|
|
trigger:
|
|
- platform: sun
|
|
event: sunset
|
|
offset: -00:10:00
|
|
- platform: state
|
|
entity_id: binary_sensor.lum_sunrm_shades_trig
|
|
to: 'off'
|
|
for:
|
|
minutes: '{{ states(''input_number.inp_num_sunrm_shades_close_low_lux_trig_delay'')
|
|
| int(default=0) }}'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_inhibit_shades
|
|
state: 'off'
|
|
actions:
|
|
- action: script.scr_check_sunrm_windows
|
|
- action: script.scr_close_sunrm_shades
|
|
- id: aut_masterbdrm_shades_down_evening
|
|
alias: aut masterbdrm shades down evening
|
|
initial_state: true
|
|
trigger:
|
|
- platform: sun
|
|
event: sunset
|
|
actions:
|
|
- action: cover.close_cover
|
|
target:
|
|
entity_id: cover.master_bedroom_shades
|
|
- id: aut_sunrm_shades_up_morningorbright
|
|
alias: aut sunroom shades up morningorbright
|
|
initial_state: true
|
|
trigger:
|
|
- platform: sun
|
|
event: sunrise
|
|
- platform: state
|
|
entity_id: binary_sensor.lum_sunrm_shades_trig
|
|
to: 'on'
|
|
for:
|
|
minutes: '{{ states(''input_number.inp_num_sunrm_shades_open_delay'') | int(default=0)
|
|
}}'
|
|
conditions:
|
|
condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_inhibit_shades
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_guest_in_sunroom
|
|
state: 'off'
|
|
actions:
|
|
- action: cover.open_cover
|
|
entity_id: cover.sun_room_shades
|
|
- id: aut_arrival_proximity
|
|
alias: aut arrival proximity
|
|
mode: single
|
|
max_exceeded: silent
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ ((states( ''sensor.home_ys_cell_gps_distance'') | float(default=99))
|
|
<= 0.2) and ((states( ''sensor.home_ys_cell_gps_distance'') | float(default=99))
|
|
> 0) and (states(''sensor.home_yang_direction_of_travel'') == ''towards'')}}'
|
|
- platform: template
|
|
value_template: '{{ ((states( ''sensor.home_kt_cell_gps_distance'') | float(default=99))
|
|
<= 0.2) and ((states( ''sensor.home_kt_cell_gps_distance'') | float(default=99))
|
|
> 0) and (states(''sensor.home_karen_direction_of_travel'') == ''towards'')}}'
|
|
actions:
|
|
- action: script.scr_front_door_lights_on
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: Someone special will be home soon
|
|
- id: aut_large_garage_door_opening
|
|
alias: aut large garage door opening
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: cover.large_garage_door
|
|
to: open
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ ( ( as_timestamp(now(), '') - (as_timestamp(states('sensor.uptime'),\
|
|
\ '')\n | float(default=0)) ) | int(default=0) ) > 10 }}"
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: The large garage door has opened
|
|
- action: timer.start
|
|
target:
|
|
entity_id: timer.timer_lg_garage_door
|
|
- action: script.scr_front_door_lights_on
|
|
- action: script.scr_check_if_suspicious
|
|
- id: aut_small_garage_door_opening
|
|
alias: aut small garage door opening
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: cover.small_garage_door
|
|
to: open
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ ( ( as_timestamp(now(), '') - (as_timestamp(states('sensor.uptime'),\
|
|
\ '')\n | float(default=0)) ) | int(default=0) ) > 10 }}"
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: The small garage door has opened
|
|
- action: timer.start
|
|
target:
|
|
entity_id: timer.timer_sm_garage_door
|
|
- action: script.scr_front_door_lights_on
|
|
- action: script.scr_check_if_suspicious
|
|
- id: aut_large_garage_door_closed
|
|
alias: aut large garage door closed
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: cover.large_garage_door
|
|
to: closed
|
|
actions:
|
|
- action: timer.cancel
|
|
target:
|
|
entity_id: timer.timer_lg_garage_door
|
|
- id: aut_small_garage_door_closed
|
|
alias: aut small garage door closed
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: cover.small_garage_door
|
|
to: closed
|
|
actions:
|
|
- action: timer.cancel
|
|
target:
|
|
entity_id: timer.timer_sm_garage_door
|
|
- id: aut_front_door_opening
|
|
alias: aut front door opening
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.front_door_window_door_is_open
|
|
from: 'off'
|
|
to: 'on'
|
|
actions:
|
|
- action: script.scr_front_door_lights_on
|
|
- id: aut_back_door_opening
|
|
alias: aut back door opening
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.back_door_window_door_is_open
|
|
from: 'off'
|
|
to: 'on'
|
|
actions:
|
|
- action: script.scr_back_door_lights_on
|
|
- id: aut_driveway_camera_zone_activity
|
|
alias: aut driveway camera zone activity
|
|
mode: single
|
|
max_exceeded: silent
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id:
|
|
- binary_sensor.driveway_zone_person_occupancy
|
|
- binary_sensor.driveway_zone_car_occupancy
|
|
to: 'on'
|
|
actions:
|
|
- action: script.scr_front_door_lights_on
|
|
- id: aut_frontporch_camera_zone_actvity
|
|
alias: aut frontporch camera zone activity
|
|
mode: single
|
|
max_exceeded: silent
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.frontporch_zone_book_occupancy
|
|
to: 'on'
|
|
- platform: state
|
|
entity_id: binary_sensor.frontporch_zone_suitcase_occupancy
|
|
to: 'on'
|
|
- platform: state
|
|
entity_id: binary_sensor.frontporch_zone_handbag_occupancy
|
|
to: 'on'
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: You have a package at the front door
|
|
- action: notify.alexa_yellow_ring
|
|
data:
|
|
message: You have a package at the front door
|
|
- id: aut_frontporch_activity
|
|
alias: aut frontporch activity
|
|
mode: single
|
|
max_exceeded: silent
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ (is_state(''binary_sensor.doorbell_zone_person_occupancy'',
|
|
''on'')) and (is_state(''binary_sensor.front_ent_soffit_uwave'', ''on'')) }}'
|
|
- platform: template
|
|
value_template: '{{ (is_state(''binary_sensor.frontporch_motion'', ''on'')) and
|
|
(is_state(''binary_sensor.doorbell_zone_person_occupancy'', ''on'')) }}'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: binary_sensor.front_door_window_door_is_open
|
|
state: 'off'
|
|
for: 00:02:00
|
|
- condition: template
|
|
value_template: '{{ ( ( as_timestamp(now(), '''') - (as_timestamp(state_attr(''automation.aut_frontporch_activity'', ''last_triggered''),
|
|
'''') | float(default=0)) ) | int(default=0) ) > 14 }}'
|
|
actions:
|
|
- action: script.scr_front_door_lights_on
|
|
- action: script.scr_frontporch_activity
|
|
- id: aut_front_door_lights_timeout
|
|
alias: aut front door light timeout
|
|
initial_state: true
|
|
mode: restart
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.driveway_zone_car_occupancy
|
|
to: 'off'
|
|
for:
|
|
minutes: '{{ states(''input_number.inp_num_front_door_lights_off_delay'') |
|
|
int(default=0) }}'
|
|
- platform: state
|
|
entity_id: binary_sensor.driveway_zone_person_occupancy
|
|
to: 'off'
|
|
for:
|
|
minutes: '{{ states(''input_number.inp_num_front_door_lights_off_delay'') |
|
|
int(default=0) }}'
|
|
- platform: state
|
|
entity_id: binary_sensor.front_ent_attic_uwave
|
|
to: 'off'
|
|
for:
|
|
minutes: '{{ states(''input_number.inp_num_front_door_lights_off_delay'') |
|
|
int(default=0) }}'
|
|
- platform: state
|
|
entity_id: cover.large_garage_door
|
|
to: closed
|
|
for:
|
|
minutes: '{{ states(''input_number.inp_num_front_door_lights_off_delay'') |
|
|
int(default=0) }}'
|
|
- platform: state
|
|
entity_id: cover.small_garage_door
|
|
to: closed
|
|
for:
|
|
minutes: '{{ states(''input_number.inp_num_front_door_lights_off_delay'') |
|
|
int(default=0) }}'
|
|
- platform: state
|
|
entity_id: lock.front_door_lock
|
|
to: locked
|
|
for:
|
|
minutes: '{{ states(''input_number.inp_num_front_door_lights_off_delay'') |
|
|
int(default=0) }}'
|
|
- platform: state
|
|
entity_id: person.yang
|
|
to: home
|
|
for:
|
|
minutes: '{{ (states(''input_number.inp_num_front_door_lights_off_delay'') |
|
|
int(default=0) + 5) | int(default=0) }}'
|
|
- platform: state
|
|
entity_id: person.karen
|
|
to: home
|
|
for:
|
|
minutes: '{{ (states(''input_number.inp_num_front_door_lights_off_delay'') |
|
|
int(default=0) + 5) | int(default=0) }}'
|
|
actions:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.front_door_lights
|
|
- id: aut_back_door_lights_timeout
|
|
alias: aut back door light timeout
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: lock.back_door_lock
|
|
to: locked
|
|
for:
|
|
minutes: '{{ states(''input_number.inp_num_back_door_lights_off_delay'') | int(default=0)
|
|
}}'
|
|
actions:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.back_door_lights
|
|
- id: aut_outdoor_lighting_auto_off
|
|
alias: aut outdoor lighting auto off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: sun
|
|
event: sunrise
|
|
offset: +00:10:00
|
|
- platform: state
|
|
entity_id: binary_sensor.lum_outdoor_lights_solar_trig
|
|
to: 'off'
|
|
actions:
|
|
- action: homeassistant.turn_off
|
|
target:
|
|
entity_id: group.outdoor_lights
|
|
- id: aut_mood_lights_luminosity_auto_on
|
|
alias: aut mood lights luminosity auto on
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: sun
|
|
event: sunset
|
|
offset: -00:30:00
|
|
- platform: state
|
|
entity_id: binary_sensor.lum_mood_lights_f_solar_trig
|
|
to: 'on'
|
|
for:
|
|
minutes: 10
|
|
conditions:
|
|
- condition: or
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ states(''sensor.kflwildw56_backed_up_local_solar_rad_lx'')
|
|
!= ''unknown'' }}'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'off'
|
|
actions:
|
|
- action: script.scr_mood_lighting_on
|
|
- id: aut_mood_lighting_luminosity_auto_off
|
|
alias: aut mood lighting luminosity auto off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.lum_mood_lights_f_solar_trig
|
|
to: 'off'
|
|
for:
|
|
minutes: 10
|
|
actions:
|
|
- action: script.scr_reset_mood_lights_to_default
|
|
- action: homeassistant.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.sun_room_uplights
|
|
- switch.candles
|
|
- light.kitchen_leds_upper_master
|
|
- switch.christmas_tree
|
|
- id: aut_garage_left_open_while_home
|
|
alias: aut garage door left open while home
|
|
initial_state: true
|
|
trigger:
|
|
- platform: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.timer_lg_garage_door
|
|
- platform: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.timer_sm_garage_door
|
|
actions:
|
|
- action: script.scr_repeat_say_garage_open
|
|
- id: aut_reset_garage_timers
|
|
alias: aut reset garage timers
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: device_tracker.ys_cell_ble
|
|
from: garage
|
|
- platform: state
|
|
entity_id: device_tracker.kt_cell_ble
|
|
from: garage
|
|
conditions:
|
|
condition: or
|
|
conditions:
|
|
- condition: state
|
|
entity_id: cover.large_garage_door
|
|
state: open
|
|
- condition: state
|
|
entity_id: cover.small_garage_door
|
|
state: open
|
|
actions:
|
|
- action: timer.start
|
|
target:
|
|
entity_id:
|
|
- timer.timer_lg_garage_door
|
|
- timer.timer_sm_garage_door
|
|
- id: aut_auto_front_door_lock
|
|
alias: aut auto front door lock
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ ( (((as_timestamp(strptime(states(''sensor.date_time''),''%Y-%m-%d,
|
|
%H:%M''), '''') | int(default=0)) - (as_timestamp(as_timestamp(state_attr(''binary_sensor.front_door_window_door_is_open'',
|
|
''last_tripped_time''), '''') | timestamp_local(''''), '''') | int(default=0)))/60)
|
|
| int(default=0) ) > (states(''input_number.inp_num_auto_front_door_lock_trig_delay'')
|
|
| int(default=0)) }}
|
|
|
|
'
|
|
- platform: state
|
|
entity_id: lock.front_door_lock
|
|
to: unlocked
|
|
for:
|
|
minutes: '{{ (states(''input_number.inp_num_auto_front_door_lock_trig_delay'')
|
|
| int(default=0)) + 30 }}'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.party_mode
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: lock.front_door_lock
|
|
state: unlocked
|
|
for:
|
|
minutes: 2
|
|
- condition: state
|
|
entity_id: binary_sensor.front_door_window_door_is_open
|
|
state: 'off'
|
|
actions:
|
|
- action: lock.lock
|
|
target:
|
|
entity_id: lock.front_door_lock
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: Front door automatically locked
|
|
message: Oops. Someone left it unlocked!
|
|
data:
|
|
car_ui: true
|
|
- id: aut_auto_front_door_lock_party_mode
|
|
alias: aut auto front door lock party mode
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ ( (((as_timestamp(strptime(states(''sensor.date_time''),''%Y-%m-%d,
|
|
%H:%M''), '''') | int(default=0)) - (as_timestamp(as_timestamp(state_attr(''binary_sensor.front_door_window_door_is_open'',
|
|
''last_tripped_time''), '''') | timestamp_local(''''), '''') | int(default=0)))/60)
|
|
| int(default=0) ) > (states(''input_number.inp_num_auto_front_door_lock_trig_party_delay'')
|
|
| int(default=0)) }}
|
|
|
|
'
|
|
- platform: state
|
|
entity_id: lock.front_door_lock
|
|
to: unlocked
|
|
for:
|
|
minutes: '{{ (states(''input_number.inp_num_auto_front_door_lock_trig_party_delay'')
|
|
| int(default=0)) + 30 }}'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.party_mode
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: lock.front_door_lock
|
|
state: unlocked
|
|
for:
|
|
minutes: 2
|
|
- condition: state
|
|
entity_id: binary_sensor.front_door_window_door_is_open
|
|
state: 'off'
|
|
actions:
|
|
- action: lock.lock
|
|
target:
|
|
entity_id: lock.front_door_lock
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: Front door automatically locked
|
|
message: The party's over!
|
|
data:
|
|
car_ui: true
|
|
- id: aut_auto_back_door_lock
|
|
alias: aut auto back door lock
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ ( (((as_timestamp(strptime(states(''sensor.date_time''),''%Y-%m-%d,
|
|
%H:%M''), '''') | int(default=0)) - (as_timestamp(as_timestamp(state_attr(''binary_sensor.back_door_window_door_is_open'',
|
|
''last_tripped_time''), '''') | timestamp_local(''''), '''') | int(default=0)))/60)
|
|
| int(default=0) ) > (states(''input_number.inp_num_auto_back_door_lock_trig_delay'')
|
|
| int(default=0)) }}
|
|
|
|
'
|
|
- platform: state
|
|
entity_id: lock.back_door_lock
|
|
to: unlocked
|
|
for:
|
|
minutes: '{{ (states(''input_number.inp_num_auto_back_door_lock_trig_delay'')
|
|
| int(default=0)) + 30 }}'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: lock.back_door_lock
|
|
state: unlocked
|
|
for:
|
|
minutes: 2
|
|
- condition: state
|
|
entity_id: binary_sensor.back_door_window_door_is_open
|
|
state: 'off'
|
|
actions:
|
|
- action: lock.lock
|
|
target:
|
|
entity_id: lock.back_door_lock
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: Back door automatically locked
|
|
message: Oops. Someone left it unlocked!
|
|
data:
|
|
car_ui: true
|
|
- id: aut_any_window_open
|
|
alias: aut_any_window_open
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: group.window_sensors
|
|
to: 'on'
|
|
for:
|
|
minutes: 2
|
|
actions:
|
|
- action: climate.turn_off
|
|
target:
|
|
entity_id: climate.local_ecobee
|
|
- action: input_select.select_option
|
|
entity_id: input_select.inp_sel_saved_sunroom_hvac
|
|
data:
|
|
option: '{{ states(''climate.sunroom_ac'') }}'
|
|
- action: climate.turn_off
|
|
target:
|
|
entity_id: climate.sunroom_ac
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: A window is open. Climate control is now turned off
|
|
- id: aut_all_windows_closed
|
|
alias: aut_all_windows_closed
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: group.window_sensors
|
|
to: 'off'
|
|
for:
|
|
minutes: 2
|
|
actions:
|
|
- action: climate.turn_on
|
|
target:
|
|
entity_id: climate.local_ecobee
|
|
- action: climate.set_hvac_mode
|
|
entity_id: climate.sunroom_ac
|
|
data:
|
|
hvac_mode: '{{ states(''input_select.inp_sel_saved_sunroom_hvac'') }}'
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: Windows are all closed. Climate control is restored
|
|
- id: aut_master_bedroom_fan_trig_on
|
|
alias: aut master bedroom fan trig on
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.espresense_masterbdrm_ds18b20_temperature
|
|
above: input_number.inp_num_masterbdrmfan_on_temp
|
|
for:
|
|
minutes: 10
|
|
conditions:
|
|
condition: state
|
|
entity_id: fan.master_bedroom_fan
|
|
state: 'off'
|
|
actions:
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.master_bedroom_fan
|
|
data:
|
|
percentage: 30
|
|
- id: aut_master_bedroom_fan_trig_off
|
|
alias: aut master bedroom fan trig off
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.espresense_masterbdrm_ds18b20_temperature
|
|
below: input_number.inp_num_masterbdrmfan_off_temp
|
|
for:
|
|
minutes: 10
|
|
conditions:
|
|
condition: state
|
|
entity_id: fan.master_bedroom_fan
|
|
state: 'on'
|
|
actions:
|
|
action: fan.turn_off
|
|
target:
|
|
entity_id: fan.master_bedroom_fan
|
|
- id: aut_office_fan_trig_50pct
|
|
alias: aut office fan trig 50pct
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.espresense_office_ds18b20_temperature
|
|
above: input_number.inp_num_officefan_50pct_temp
|
|
for:
|
|
minutes: 5
|
|
conditions:
|
|
condition: state
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
state: 'off'
|
|
actions:
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.office_fan
|
|
data:
|
|
percentage: 50
|
|
- id: aut_office_fan_trig_25pct
|
|
alias: aut office fan trig 25pct
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.espresense_office_ds18b20_temperature
|
|
above: input_number.inp_num_officefan_25pct_temp
|
|
for:
|
|
minutes: 5
|
|
- platform: numeric_state
|
|
entity_id: sensor.espresense_office_ds18b20_temperature
|
|
below: input_number.inp_num_officefan_50pct_temp
|
|
for:
|
|
minutes: 5
|
|
conditions:
|
|
condition: state
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
state: 'off'
|
|
actions:
|
|
action: fan.set_percentage
|
|
target:
|
|
entity_id: fan.office_fan
|
|
data:
|
|
percentage: 25
|
|
- id: aut_office_fan_trig_off
|
|
alias: aut office fan trig off
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.espresense_office_ds18b20_temperature
|
|
below: input_number.inp_num_officefan_off_temp
|
|
for:
|
|
minutes: 5
|
|
conditions:
|
|
condition: state
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
state: 'off'
|
|
actions:
|
|
action: fan.turn_off
|
|
target:
|
|
entity_id: fan.office_fan
|
|
- id: aut_departure_security_check
|
|
alias: aut departure security check
|
|
mode: single
|
|
max_exceeded: silent
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: "{{ (states('person.yang') == 'not_home') and (states('person.karen')\
|
|
\ == 'not_home')\n and ((states( 'sensor.home_ys_cell_gps_distance') | float(default=99))\
|
|
\ >= 0.2) \n and ((states( 'sensor.home_kt_cell_gps_distance') | float(default=99))\
|
|
\ >= 0.2) }}"
|
|
actions:
|
|
- action: script.scr_check_garage_open
|
|
- action: script.scr_nobody_home
|
|
- id: aut_arrival_announcement
|
|
alias: aut arrival announcement
|
|
initial_state: true
|
|
mode: queued
|
|
trigger:
|
|
- platform: state
|
|
entity_id: person.yang
|
|
id: yang
|
|
to: home
|
|
- platform: state
|
|
entity_id: person.karen
|
|
id: karen
|
|
to: home
|
|
condition:
|
|
- condition: template
|
|
value_template: "{{ ( ( as_timestamp(now(), '') - (as_timestamp(states('sensor.uptime'),\
|
|
\ '')\n | float(default=0)) ) | int(default=0) ) > 10 }}"
|
|
actions:
|
|
- wait_for_trigger:
|
|
- platform: state
|
|
entity_id: sensor.kt_cell_ble_room
|
|
to: kitchen
|
|
for: 00:00:05
|
|
- platform: state
|
|
entity_id: sensor.kt_cell_ble_room
|
|
to: greatrm
|
|
for: 00:00:05
|
|
- platform: state
|
|
entity_id: sensor.ys_cell_ble_room
|
|
to: kitchen
|
|
for: 00:00:05
|
|
- platform: state
|
|
entity_id: sensor.ys_cell_ble_room
|
|
to: greatrm
|
|
for: 00:00:05
|
|
timeout:
|
|
seconds: 60
|
|
- action: script.scr_arrival_announcement
|
|
data:
|
|
person: '{{ trigger.id }}'
|
|
- id: aut_departure_announcement
|
|
alias: aut departure announcement
|
|
initial_state: true
|
|
mode: queued
|
|
trigger:
|
|
- platform: state
|
|
entity_id: person.yang
|
|
from: home
|
|
for: 00:01:00
|
|
- platform: state
|
|
entity_id: person.karen
|
|
from: home
|
|
for: 00:01:00
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inhibit_presence_announcements
|
|
state: 'off'
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: "{% if (trigger.entity_id|replace('person.', '')) == \"karen\" %}\n\
|
|
\ \"Mistress Karen is away\"\n{% else %}\n \"Master Yang is away\"\n{% endif\
|
|
\ %}\n"
|
|
- id: aut_hvac_fault
|
|
alias: aut hvac fault
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.main_hvac_fault
|
|
from: 'off'
|
|
to: 'on'
|
|
- platform: state
|
|
entity_id: binary_sensor.sunroom_hvac_fault
|
|
from: 'off'
|
|
to: 'on'
|
|
actions:
|
|
- action: notify.alexa_yellow_ring
|
|
data:
|
|
message: "\"{{ (trigger.entity_id) | replace('climate.sunroom_ac', 'sun room')\
|
|
\ \n | replace('binary_sensor.main_hvac_fault', 'main house')\n | replace('binary_sensor.sunroom_hvac_fault',\
|
|
\ 'sun room')\n }} temperature is outside of tolerance!\""
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: HVAC system fault detected
|
|
message: "\"{{ (trigger.entity_id) | replace('climate.sunroom_ac', 'sun room')\
|
|
\ \n | replace('binary_sensor.main_hvac_fault', 'main house')\n | replace('binary_sensor.sunroom_hvac_fault',\
|
|
\ 'sun room')\n }} temperature is outside of tolerance!\""
|
|
data:
|
|
car_ui: true
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: "\"{{ (trigger.entity_id) | replace('climate.sunroom_ac', 'sun room')\
|
|
\ \n | replace('binary_sensor.main_hvac_fault', 'main house')\n | replace('binary_sensor.sunroom_hvac_fault',\
|
|
\ 'sun room')\n }} temperature is outside of tolerance!\""
|
|
- id: aut_lab_rack_fan_fault
|
|
alias: aut rack fan fault
|
|
initial_state: true
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.lab_rack_fan1_speed
|
|
below: 550
|
|
for: 00:10:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.lab_rack_fan2_speed
|
|
below: 550
|
|
for: 00:10:00
|
|
actions:
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: '{{ trigger.entity_id | replace(''sensor.'', '''') }} fault'
|
|
message: "{{ trigger.entity_id | replace('sensor.', '') }} fault: \n currently\
|
|
\ {{ states('{{trigger.entity_id}}') }} RPM\n"
|
|
- id: aut_low_battery_notification
|
|
alias: aut low battery notification
|
|
initial_state: true
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.irrig_battery_percent
|
|
below: 30
|
|
- platform: numeric_state
|
|
entity_id: sensor.drybox_battery_percent
|
|
below: 30
|
|
- platform: numeric_state
|
|
entity_id: sensor.govee_display_battery
|
|
below: 25
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.freezer_sensor_battery
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.front_door_lock_battery_level
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.back_door_lock_battery_level
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.living_area_motion_battery_level
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.sun_room_window_1_battery_level
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.sun_room_window_2_battery_level
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.sun_room_window_3_battery_level
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.sun_room_window_4_battery_level
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.sun_room_window_5_battery_level
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.sun_room_window_6_battery_level
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.front_door_battery_level
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.back_door_battery_level
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.garagehouse_door_battery_level
|
|
below: 30
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.guest_suite_display_battery_percent
|
|
below: 20
|
|
for: 02:00:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.leak_karens_sink_battery
|
|
below: 15
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.leak_yangs_sink_battery
|
|
below: 15
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.leak_guest_sink_battery
|
|
below: 15
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.leak_guest_toilet_battery
|
|
below: 15
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.leak_master_toilet_battery
|
|
below: 15
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.leak_kitchen_sink_battery
|
|
below: 15
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.leak_laundry_sink_battery
|
|
below: 15
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.leak_washer_battery
|
|
below: 15
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.sun_room_remote_1_battery_level
|
|
below: 10
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.sun_room_remote_2_battery_level
|
|
below: 10
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.sun_room_remote_3_battery_level
|
|
below: 10
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.sun_room_remote_4_battery_level
|
|
below: 10
|
|
for: 00:30:00
|
|
- platform: numeric_state
|
|
entity_id: sensor.master_bedroom_shade_1_inner_battery
|
|
below: 20
|
|
- platform: numeric_state
|
|
entity_id: sensor.master_bedroom_shade_1_outer_battery
|
|
below: 20
|
|
- platform: numeric_state
|
|
entity_id: sensor.master_bedroom_shade_2_inner_battery
|
|
below: 20
|
|
- platform: numeric_state
|
|
entity_id: sensor.master_bedroom_shade_2_outer_battery
|
|
below: 20
|
|
- platform: numeric_state
|
|
entity_id: sensor.master_bedroom_shade_3_inner_battery
|
|
below: 20
|
|
- platform: numeric_state
|
|
entity_id: sensor.master_bedroom_shade_3_outer_battery
|
|
below: 20
|
|
- platform: numeric_state
|
|
entity_id: sensor.master_bedroom_shade_4_inner_battery
|
|
below: 20
|
|
- platform: numeric_state
|
|
entity_id: sensor.master_bedroom_shade_4_outer_battery
|
|
below: 20
|
|
actions:
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: 'Low batteries: {{ trigger.entity_id }}'
|
|
message: 'Low batteries: {{ trigger.entity_id }} {{ states(trigger.entity_id)
|
|
}}%'
|
|
- id: aut_software_update_available
|
|
alias: aut software update available
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: binary_sensor.home_assistant_website_update_available
|
|
from: 'off'
|
|
to: 'on'
|
|
for: 00:10:00
|
|
actions:
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
message: "Home Assistant {{states(\"sensor.home_assistant_website\")}} is now\
|
|
\ available.\n Your current version is {{states(\"sensor.current_version\"\
|
|
)}}.\n See https://github.com/home-assistant/home-assistant/releases\n"
|
|
- id: aut_guest_mode_on
|
|
alias: aut guest mode on
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
from: 'off'
|
|
to: 'on'
|
|
actions:
|
|
- action: script.scr_common_guest_mode_on
|
|
- id: aut_guest_mode_off
|
|
alias: aut guest mode off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
from: 'on'
|
|
to: 'off'
|
|
actions:
|
|
- action: script.scr_common_guest_mode_off
|
|
- id: aut_datetime_guest_mode_on
|
|
alias: aut datetime guest mode on
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: input_datetime.guest_arrives
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
state: 'off'
|
|
actions:
|
|
- action: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
- action: script.scr_common_guest_mode_on
|
|
- id: aut_datetime_guest_mode_off
|
|
alias: aut datetime guest mode off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: input_datetime.guest_departs
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
state: 'on'
|
|
actions:
|
|
- action: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
- action: script.scr_common_guest_mode_off
|
|
- id: aut_extended_absence_on
|
|
alias: aut extended absence on
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
from: 'off'
|
|
to: 'on'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
state: 'off'
|
|
actions:
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: Extended absence mode enabled
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: Extended absence mode has been enabled
|
|
message: 'Home Assistant: Extended absence mode enabled'
|
|
data:
|
|
car_ui: true
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: Extended absence mode has been enabled
|
|
message: Extended absence mode enabled
|
|
- action: script.scr_common_extended_absence_on
|
|
- id: aut_extended_absence_off
|
|
alias: aut extended absence off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
from: 'on'
|
|
to: 'off'
|
|
actions:
|
|
- action: script.scr_common_extended_absence_off
|
|
- action: script.scr_say_phrase
|
|
data:
|
|
message: Extended absence mode disabled
|
|
- action: notify.gmail_to_yang
|
|
data:
|
|
title: 'Home Assistant: Extended Absence Mode disabled'
|
|
message: Extended absence mode disabled
|
|
- action: notify.mobile_app_yskt_cell
|
|
data:
|
|
title: Extended absence mode has been disabled
|
|
message: 'Home Assistant: Extended absence mode disabled'
|
|
data:
|
|
car_ui: true
|
|
- id: aut_extended_absence_auto_on
|
|
alias: aut extended absence auto on
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ (states(''sensor.home_ys_cell_gps_distance'') | float(default=0)
|
|
> 100) and (states(''sensor.home_kt_cell_gps_distance'') | float(default=0)
|
|
> 100) }}
|
|
|
|
'
|
|
for: 00:30:00
|
|
conditions:
|
|
condition: and
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'off'
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_guest_mode
|
|
state: 'off'
|
|
actions:
|
|
- action: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
- id: aut_extended_absence_auto_off
|
|
alias: aut extended absence auto off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: sensor.home_ys_cell_gps_distance
|
|
value_template: '{{ states(''sensor.home_ys_cell_gps_distance'') | float(default=0)
|
|
}}'
|
|
below: 30
|
|
for:
|
|
minutes: 10
|
|
- platform: numeric_state
|
|
entity_id: sensor.home_kt_cell_gps_distance
|
|
value_template: '{{ states(''sensor.home_kt_cell_gps_distance'') | float(default=0)
|
|
}}'
|
|
below: 30
|
|
for:
|
|
minutes: 10
|
|
- platform: state
|
|
entity_id: group.whereis_kt
|
|
to: home
|
|
- platform: state
|
|
entity_id: group.whereis_ys
|
|
to: home
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'on'
|
|
actions:
|
|
- action: input_boolean.turn_off
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
- id: aut_datetime_extended_absence_on
|
|
alias: aut datetime extended absence on
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: input_datetime.extended_absence_start
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'off'
|
|
actions:
|
|
- action: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
- id: aut_datetime_extended_absence_off
|
|
alias: aut datetime extended absence off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: time
|
|
at: input_datetime.extended_absence_end
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'on'
|
|
actions:
|
|
- action: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
- id: aut_security_occupied_sim
|
|
alias: aut security occupied sim
|
|
initial_state: true
|
|
trigger:
|
|
- platform: sun
|
|
event: sunset
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_extended_absence_mode
|
|
state: 'on'
|
|
actions:
|
|
- action: script.scr_occupied_sim
|
|
- id: aut_theater_mode_on
|
|
alias: aut theater mode on
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: input_boolean.inp_bool_theater_mode
|
|
from: 'off'
|
|
to: 'on'
|
|
actions:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.living_room_theater_mode
|
|
- id: aut_theater_mode_off
|
|
alias: aut theater mode off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: input_boolean.inp_bool_theater_mode
|
|
from: 'on'
|
|
to: 'off'
|
|
actions:
|
|
- action: scene.turn_on
|
|
target:
|
|
entity_id: scene.living_room_normal_mode
|
|
- id: aut_kitchen_mood_100_bright_white
|
|
alias: aut kitchen mood 100 bright white
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ is_state(''light.island_lights'', ''on'') and is_state(''light.kitchen_cabinet_lights'',
|
|
''on'') and is_state(''light.kitchen_leds_lower'', ''on'') }}'
|
|
actions:
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.kitchen_leds_upper_master
|
|
- action: light.turn_on
|
|
target:
|
|
entity_id: light.kitchen_leds_upper
|
|
- action: select.select_option
|
|
target:
|
|
entity_id: select.kitchen_leds_upper_preset
|
|
data:
|
|
option: All Seg Bright Wht 100%
|
|
- id: aut_kitchen_mood_normal
|
|
alias: aut kitchen mood normal
|
|
initial_state: true
|
|
mode: single
|
|
max_exceeded: silent
|
|
trigger:
|
|
- platform: state
|
|
entity_id: light.island_lights
|
|
to: 'off'
|
|
- platform: state
|
|
entity_id: light.kitchen_cabinet_lights
|
|
to: 'off'
|
|
- platform: state
|
|
entity_id:
|
|
- light.kitchen_leds_lower
|
|
to: 'off'
|
|
actions:
|
|
- if:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_lum_mood_lights_f_solar_trig
|
|
state: 'on'
|
|
then:
|
|
- action: script.scr_turn_on_kitchen_leds_upper
|
|
else:
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id:
|
|
- light.kitchen_leds_upper
|
|
- light.kitchen_leds_upper_master
|
|
- id: hvac_closet_auto_off
|
|
alias: hvac_closet_auto_off
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: light.hvac_closet_lights
|
|
to: 'on'
|
|
actions:
|
|
- delay: 02:00:00
|
|
- action: light.turn_off
|
|
target:
|
|
entity_id: light.hvac_closet_lights
|
|
- id: kitchen_wled_reset
|
|
alias: kitchen wled reset
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id:
|
|
- light.kitchen_leds_upper_master
|
|
- light.kitchen_leds_lower
|
|
to: unavailable
|
|
for: 00:00:10
|
|
actions:
|
|
- action: switch.turn_off
|
|
target:
|
|
entity_id: switch.kitchen_wled_reset
|
|
- delay: 00:00:10
|
|
- action: switch.turn_on
|
|
target:
|
|
entity_id: switch.kitchen_wled_reset
|
|
- id: aut_half_mile_departure
|
|
alias: aut half mile departure
|
|
initial_state: true
|
|
trigger:
|
|
- platform: template
|
|
value_template: '{{ (states(''sensor.home_ys_cell_gps_distance'') | float(default=0)
|
|
> 0.5) }}
|
|
|
|
'
|
|
conditions:
|
|
- condition: state
|
|
entity_id: input_boolean.inp_bool_half_mi_trig_test
|
|
state: 'on'
|
|
- condition: state
|
|
entity_id: sensor.home_ys_cell_gps_direction_of_travel
|
|
state: away_from
|
|
actions:
|
|
- action: notify.mobile_app_ys_cell
|
|
data:
|
|
message: TTS
|
|
data:
|
|
tts_text: Half mile exceeded
|
|
data:
|
|
car_ui: true
|