503 lines
18 KiB
YAML
503 lines
18 KiB
YAML
input_boolean:
|
|
# Main security switch. If this is on, the security is armed.
|
|
sentry_mode:
|
|
name: Sentry Mode
|
|
icon: mdi:security
|
|
# Vacation mode is automagically set when we are 3 hours from the house, and turns off when we return.
|
|
# This is used to modify some of the normal automations.
|
|
vacation_mode:
|
|
name: Vacation Mode
|
|
icon: mdi:airplane-takeoff
|
|
# Guest mode is use to modify automations when we have guests.
|
|
# In some cases this prevents security from being set to prevent security alarm going off
|
|
guest_mode:
|
|
name: Guest Mode
|
|
icon: mdi:account-multiple
|
|
# This switch powers the security alarm and gives an easy way to kill the alarm.
|
|
# When it is on, the alarm is going off
|
|
security_alarm:
|
|
name: Security Alarm
|
|
icon: mdi:speaker-wireless
|
|
# This switch powers the fire alarm.
|
|
# When on the fire alarm is going off.
|
|
fire_alarm:
|
|
name: Fire Alarm
|
|
icon: mdi:speaker-wireless
|
|
# This switch turns on if the security system checks that fire when someone tries to arm the system
|
|
# finds a door open, or another condition that would prevent the system from being able to monitor properly.
|
|
lockdown_issue:
|
|
name: Lockdown Issue
|
|
icon: mdi:lock-reset
|
|
# This switch is turned on if there is a security breach. Turning on this switch starts the countdown to the alarm.
|
|
security_issue:
|
|
name: Security Issue
|
|
icon: mdi:alert-circle-outline
|
|
skip_disarm:
|
|
name: Skip Disarm
|
|
icon: mdi:security
|
|
skip_rearm:
|
|
name: Skip Rearm
|
|
icon: mdi:security
|
|
|
|
input_datetime:
|
|
morning_alarm_disarm:
|
|
name: Morning Alarm Disarm
|
|
icon: mdi:shield-off
|
|
has_date: false
|
|
has_time: true
|
|
morning_alarm_rearm:
|
|
name: Morning Alarm Rearm
|
|
icon: mdi:shield-home
|
|
has_date: false
|
|
has_time: true
|
|
|
|
alarm_control_panel:
|
|
- platform: template
|
|
panels:
|
|
nerdhome_alarm_panel:
|
|
name: Nerd Home Alarm Panel
|
|
unique_id: d7eb8335-4998-49bf-957e-231aeed35179
|
|
value_template: "{{ states('alarm_control_panel.stratton_ave_alarm') }}"
|
|
code_arm_required: false
|
|
arm_away:
|
|
- if:
|
|
- condition: state
|
|
entity_id: binary_sensor.security_faults
|
|
state: 'off'
|
|
then:
|
|
- service: alarm_control_panel.alarm_arm_away
|
|
target:
|
|
entity_id: alarm_control_panel.stratton_ave_alarm
|
|
data:
|
|
code: !secret ring_alarm_code
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id:
|
|
- input_boolean.lockdown_issue
|
|
else:
|
|
- service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.lockdown_issue
|
|
arm_home:
|
|
- if:
|
|
- condition: state
|
|
entity_id: binary_sensor.security_faults
|
|
state: 'off'
|
|
then:
|
|
- service: alarm_control_panel.alarm_arm_home
|
|
target:
|
|
entity_id: alarm_control_panel.stratton_ave_alarm
|
|
data:
|
|
code: !secret ring_alarm_code
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id:
|
|
- input_boolean.lockdown_issue
|
|
- if:
|
|
- condition: template
|
|
value_template: "{{ silent != 1 and is_state('input_boolean.vacation_mode','off') }}"
|
|
then:
|
|
- service: script.status_annc
|
|
data:
|
|
who: living_room
|
|
call_security_armed: 1
|
|
else:
|
|
- service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.lockdown_issue
|
|
disarm:
|
|
- service: alarm_control_panel.alarm_disarm
|
|
target:
|
|
entity_id: alarm_control_panel.stratton_ave_alarm
|
|
data:
|
|
code: !secret ring_alarm_code
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.lockdown_issue
|
|
- if:
|
|
- condition: template
|
|
value_template: "{{ silent != 1 and is_state('input_boolean.vacation_mode','off') }}"
|
|
then:
|
|
- service: script.status_annc
|
|
data:
|
|
who: living_room
|
|
call_security_not_armed: 1
|
|
|
|
template:
|
|
- binary_sensor:
|
|
- name: Living Room Windows
|
|
unique_id: fb4ab414-3ceb-44d2-8276-66027a936329
|
|
device_class: window
|
|
state: >
|
|
{% set windows_open = states.binary_sensor
|
|
| selectattr('entity_id','in',area_entities('living_room'))
|
|
| selectattr('attributes.device_class','eq','window')
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='attributes.friendly_name')
|
|
| list | count %}
|
|
{{ windows_open > 0 }}
|
|
attributes:
|
|
windows_open: >
|
|
{% set windows_open = states.binary_sensor
|
|
| selectattr('entity_id','in',area_entities('living_room'))
|
|
| selectattr('attributes.device_class','eq','window')
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='attributes.friendly_name')
|
|
| list %}
|
|
{{ windows_open }}
|
|
- name: Kitchen Windows
|
|
unique_id: 55c8c1a9-862b-4844-a34b-f44a11d1935c
|
|
device_class: window
|
|
state: >
|
|
{% set windows_open = states.binary_sensor
|
|
| selectattr('entity_id','in',area_entities('kitchen'))
|
|
| selectattr('attributes.device_class','eq','window')
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='attributes.friendly_name')
|
|
| list | count %}
|
|
{{ windows_open > 0 }}
|
|
attributes:
|
|
windows_open: >
|
|
{% set windows_open = states.binary_sensor
|
|
| selectattr('entity_id','in',area_entities('kitchen'))
|
|
| selectattr('attributes.device_class','eq','window')
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='attributes.friendly_name')
|
|
| list %}
|
|
{{ windows_open }}
|
|
- name: Downstairs Bathroom Windows
|
|
unique_id: cb3ed72e-d2a2-40f0-8db9-bc834a90f865
|
|
device_class: window
|
|
state: >
|
|
{% set windows_open = states.binary_sensor
|
|
| selectattr('entity_id','in',area_entities('downstairs_bathroom'))
|
|
| selectattr('attributes.device_class','eq','window')
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='attributes.friendly_name')
|
|
| list | count %}
|
|
{{ windows_open > 0 }}
|
|
attributes:
|
|
windows_open: >
|
|
{% set windows_open = states.binary_sensor
|
|
| selectattr('entity_id','in',area_entities('downstairs_bathroom'))
|
|
| selectattr('attributes.device_class','eq','window')
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='attributes.friendly_name')
|
|
| list %}
|
|
{{ windows_open }}
|
|
- name: Security Faults
|
|
unique_id: fe4e7867-6abb-43c5-adde-67971b64cc08
|
|
device_class: problem
|
|
state: >
|
|
{% set faults = states('sensor.total_faults') | int %}
|
|
{{ faults > 0 }}
|
|
- sensor:
|
|
- name: "Bypassed Sensors"
|
|
unique_id: 612f1314-494b-40f8-8c20-d5310aa17ab4
|
|
state: >-
|
|
{{ states.select
|
|
| selectattr('state','in',['Faulted','Always'])
|
|
| map(attribute='entity_id')
|
|
| map('device_id')
|
|
| list }}
|
|
- name: "Window Faults"
|
|
unique_id: 79b8ffe8-3f7c-4d4e-9809-b2023da1d497
|
|
unit_of_measurement: 'faults'
|
|
state: >-
|
|
{% set bypass = states('sensor.bypassed_sensors') %}
|
|
{% set window_sensors = states.binary_sensor
|
|
| selectattr('attributes.device_class','eq','window')
|
|
| rejectattr('attributes.is_group','eq',true)
|
|
| rejectattr('entity_id','in',integration_entities('template'))
|
|
| rejectattr('attributes.entity_id','defined')
|
|
| list %}
|
|
{% set windows_open = window_sensors
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='entity_id')
|
|
| map('device_id')
|
|
| list %}
|
|
{% set id = namespace(devices=[]) %}
|
|
{% for device_id in windows_open %}
|
|
{% if device_id in bypass %}
|
|
{% set id.devices = id.devices + [device_id] %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% set window_faults = windows_open
|
|
| reject('in',id.devices)
|
|
| list
|
|
| count %}
|
|
{{ window_faults }}
|
|
attributes:
|
|
faulted: >
|
|
{% set bypass = states('sensor.bypassed_sensors') %}
|
|
{% set window_sensors = states.binary_sensor
|
|
| selectattr('attributes.device_class','eq','window')
|
|
| rejectattr('attributes.is_group','eq',true)
|
|
| rejectattr('entity_id','in',integration_entities('template'))
|
|
| rejectattr('attributes.entity_id','defined')
|
|
| list %}
|
|
{% set windows_open = window_sensors
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='entity_id')
|
|
| map('device_id')
|
|
| list %}
|
|
{% set id = namespace(devices=[]) %}
|
|
{% for device_id in windows_open %}
|
|
{% if device_id in bypass %}
|
|
{% set id.devices = id.devices + [device_id] %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% set device_list = windows_open
|
|
| reject('in',id.devices)
|
|
| list %}
|
|
{% set fn = namespace(friendly=[]) %}
|
|
{% for device_id in device_list %}
|
|
{% if device_id in device_list %}
|
|
{% set name = device_attr(device_id,'name') %}
|
|
{% set fn.friendly = fn.friendly + [name] %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ fn.friendly }}
|
|
icon: >-
|
|
{% if states('sensor.window_faults') | int > 0 %}
|
|
mdi:window-open
|
|
{% else %}
|
|
mdi:window-closed
|
|
{% endif %}
|
|
- name: "Door Faults"
|
|
unique_id: 22421a5a-e650-409d-8ec7-53ca06ca8c0c
|
|
unit_of_measurement: faults
|
|
state: >-
|
|
{% set bypass = states('sensor.bypassed_sensors') %}
|
|
{% set door_sensors = states.binary_sensor
|
|
| selectattr('attributes.device_class','eq','door')
|
|
| rejectattr('attributes.is_group','eq',true)
|
|
| rejectattr('entity_id','in',integration_entities('template'))
|
|
| rejectattr('attributes.entity_id','defined')
|
|
| list %}
|
|
{% set doors_open = door_sensors
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='entity_id')
|
|
| map('device_id')
|
|
| list %}
|
|
{% set id = namespace(devices=[]) %}
|
|
{% for device_id in doors_open %}
|
|
{% if device_id in bypass %}
|
|
{% set id.devices = id.devices + [device_id] %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% set door_faults = doors_open
|
|
| reject('in',id.devices)
|
|
| list
|
|
| count %}
|
|
{{ door_faults }}
|
|
attributes:
|
|
faulted: >
|
|
{% set bypass = states('sensor.bypassed_sensors') %}
|
|
{% set door_sensors = states.binary_sensor
|
|
| selectattr('attributes.device_class','eq','door')
|
|
| rejectattr('attributes.is_group','eq',true)
|
|
| rejectattr('entity_id','in',integration_entities('template'))
|
|
| rejectattr('attributes.entity_id','defined')
|
|
| list %}
|
|
{% set doors_open = door_sensors
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='entity_id')
|
|
| map('device_id')
|
|
| list %}
|
|
{% set id = namespace(devices=[]) %}
|
|
{% for device_id in doors_open %}
|
|
{% if device_id in bypass %}
|
|
{% set id.devices = id.devices + [device_id] %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% set device_list = doors_open
|
|
| reject('in',id.devices)
|
|
| list %}
|
|
{% set fn = namespace(friendly=[]) %}
|
|
{% for device_id in device_list %}
|
|
{% if device_id in device_list %}
|
|
{% set name = device_attr(device_id,'name') %}
|
|
{% set fn.friendly = fn.friendly + [name] %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ fn.friendly }}
|
|
icon: >-
|
|
{% if states('sensor.door_faults') | int > 0 %}
|
|
mdi:door-open
|
|
{% else %}
|
|
mdi:door-closed
|
|
{% endif %}
|
|
- name: "Windows Open"
|
|
unique_id: 780770d2-8b5a-4c96-aee4-459281cc3471
|
|
unit_of_measurement: 'open'
|
|
state: >-
|
|
{% set windows = states.binary_sensor
|
|
| selectattr('attributes.device_class','eq','window')
|
|
| selectattr('attributes.entity_id','eq',null)
|
|
| rejectattr('entity_id','search','windows') %}
|
|
{% set windows_open = windows
|
|
| selectattr('state','eq','on')
|
|
| list
|
|
| count %}
|
|
{{ windows_open }}
|
|
attributes:
|
|
open: >
|
|
{% set windows = states.binary_sensor
|
|
| selectattr('attributes.device_class','eq','window')
|
|
| selectattr('attributes.entity_id','eq',null)
|
|
| rejectattr('entity_id','search','windows') %}
|
|
{% set window_names = windows
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='attributes.friendly_name')
|
|
| list %}
|
|
{{ window_names }}
|
|
icon: >-
|
|
{% if states('sensor.windows_open') | int == 0 %}
|
|
mdi:window-closed
|
|
{% else %}
|
|
mdi:window-open
|
|
{% endif %}
|
|
- name: "Front Windows Open"
|
|
unique_id: ff8a0e1b-806d-44c5-a5b9-2be0b4c0f893
|
|
unit_of_measurement: 'open'
|
|
state: >-
|
|
{% set windows = [
|
|
states.binary_sensor.front_window_1,
|
|
states.binary_sensor.front_window_2
|
|
] %}
|
|
{% set windows_open = windows | selectattr('state','eq','on') | list | count %}
|
|
{{ windows_open }}
|
|
attributes:
|
|
open: >
|
|
{% set windows = [
|
|
states.binary_sensor.front_window_1,
|
|
states.binary_sensor.front_window_2
|
|
] %}
|
|
{% set window_names = windows
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='attributes.friendly_name')
|
|
| list %}
|
|
{{ window_names }}
|
|
icon: >-
|
|
{% if states('sensor.front_windows_open') | int == 0 %}
|
|
mdi:window-closed
|
|
{% else %}
|
|
mdi:window-open
|
|
{% endif %}
|
|
- name: "Living Room Windows Open"
|
|
unique_id: d7b12353-3017-4640-b871-323425ea62d1
|
|
unit_of_measurement: 'open'
|
|
state: >-
|
|
{% set windows_open = states.binary_sensor
|
|
| selectattr('entity_id','in',area_entities('living_room'))
|
|
| selectattr('attributes.device_class','eq','window')
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='entity_id')
|
|
| list | count %}
|
|
{{ windows_open }}
|
|
attributes:
|
|
open: >
|
|
{% set windows_open = states.binary_sensor
|
|
| selectattr('entity_id','in',area_entities('living_room'))
|
|
| selectattr('attributes.device_class','eq','window')
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='entity_id')
|
|
| list | count %}
|
|
{{ windows_open }}
|
|
icon: >
|
|
{% if states('sensor.living_room_windows_open') | int == 0 %}
|
|
mdi:window-closed
|
|
{% else %}
|
|
mdi:window-open
|
|
{% endif %}
|
|
- name: "Doors" #! This sensor is only for exterior doors, and interior doors that are NOT excluded from security protocols
|
|
unique_id: 61b1a98a-51a4-4faa-947d-7883de2430c0
|
|
unit_of_measurement: 'open'
|
|
state: >-
|
|
{% set doors = expand('binary_sensor.exterior_doors') %}
|
|
{% set doors_open = doors
|
|
| selectattr('state','eq','on')
|
|
| list
|
|
| count %}
|
|
{{ doors_open }}
|
|
attributes:
|
|
open: >
|
|
{% set doors = expand('binary_sensor.exterior_doors') %}
|
|
{% set door_names = doors
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='attributes.friendly_name')
|
|
| list %}
|
|
{{ door_names }}
|
|
icon: >-
|
|
{% if states('sensor.doors_open') | int == 0 %}
|
|
mdi:door-closed
|
|
{% else %}
|
|
mdi:door-open
|
|
{% endif %}
|
|
- name: "Interior Doors" # This sensor is not used for security purposes, only for information
|
|
unique_id: 772aa056-881a-4778-ba5b-19e46afc107a
|
|
unit_of_measurement: 'open'
|
|
state: >-
|
|
{% set exterior = expand('binary_sensor.exterior_doors')
|
|
| map(attribute='entity_id')
|
|
| list %}
|
|
{% set interior = states.binary_sensor
|
|
| selectattr('attributes.device_class','eq','door')
|
|
| rejectattr('entity_id','in',exterior)
|
|
| rejectattr('entity_id','eq','binary_sensor.exterior_doors')
|
|
| selectattr('state','eq','on')
|
|
| list
|
|
| count %}
|
|
{{ interior }}
|
|
attributes:
|
|
open: >
|
|
{% set exterior = expand('binary_sensor.exterior_doors')
|
|
| map(attribute='entity_id')
|
|
| list %}
|
|
{% set interior = states.binary_sensor
|
|
| selectattr('attributes.device_class','eq','door')
|
|
| rejectattr('entity_id','in',exterior)
|
|
| rejectattr('entity_id','eq','binary_sensor.exterior_doors')
|
|
| selectattr('state','eq','on')
|
|
| map(attribute='attributes.friendly_name')
|
|
| list %}
|
|
{{ interior }}
|
|
icon: >-
|
|
{% if states('sensor.interior_doors') | int == 0 %}
|
|
mdi:door-closed
|
|
{% else %}
|
|
mdi:door-open
|
|
{% endif %}
|
|
- name: Faults
|
|
unique_id: 1629a83a-a46c-4041-9e49-8e54c5195388
|
|
unit_of_measurement: 'faults'
|
|
state: >-
|
|
{% set window_faults = states('sensor.window_faults') | int %}
|
|
{% set door_faults = states('sensor.door_faults') | int %}
|
|
{{ door_faults + window_faults }}
|
|
attributes:
|
|
faulted: >
|
|
{% set windows = state_attr('sensor.window_faults','faulted') %}
|
|
{% set doors = state_attr('sensor.door_faults','faulted') %}
|
|
{{ doors + windows }}
|
|
icon: >-
|
|
{% if states('sensor.total_faults') | int == 0 %}
|
|
mdi:shield-home
|
|
{% else %}
|
|
mdi:shield-off
|
|
{% endif %}
|
|
- name: Air Leaks
|
|
unique_id: e0a7b343-1d67-447c-a543-85a4b93d3d93
|
|
unit_of_measurement: 'open'
|
|
state: >-
|
|
{% set windows_open = states('sensor.windows_open') | int %}
|
|
{% set doors_open = states('sensor.doors_open') | int %}
|
|
{{ doors_open + windows_open }}
|
|
icon: >-
|
|
{% if states('sensor.air_leaks') | int == 0 %}
|
|
mdi:leak-off
|
|
{% else %}
|
|
mdi:leak
|
|
{% endif %}
|