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 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 sensor: - platform: template sensors: windows_open: friendly_name: "Windows" unit_of_measurement: 'open' value_template: >- {% set windows = [ states.binary_sensor.front_window_near, states.binary_sensor.kitchen_big_window, states.binary_sensor.mud_room_window, states.binary_sensor.stairway_window_lower, ] %} {% set windows_open = windows | selectattr('state','eq','on') | list | count %} {{ windows_open }} icon_template: >- {% set windows = [ states.binary_sensor.front_window_near, states.binary_sensor.kitchen_big_window, states.binary_sensor.mud_room_window, states.binary_sensor.stairway_window_lower, ] %} {% set windows_open = windows | selectattr('state','eq','on') | list | count %} {% if windows_open == 0 %} mdi:window-closed {% else %} mdi:window-open {% endif %} doors_open: friendly_name: "Doors" unit_of_measurement: 'open' value_template: >- {% set doors = [ states.binary_sensor.front_door, states.binary_sensor.back_door, ] %} {% set doors_open = doors | selectattr('state','eq','on') | list | count %} {{ doors_open }} icon_template: >- {% set doors = [ states.binary_sensor.front_door, states.binary_sensor.back_door, ] %} {% set doors_open = doors | selectattr('state','eq','on') | list | count %} {% if doors_open == 0 %} mdi:door-closed {% else %} mdi:door-open {% endif %} total_faults: friendly_name: Faults unit_of_measurement: 'open' value_template: >- {% set windows_open = states('sensor.windows_open') | int %} {% set doors_open = states('sensor.doors_open') | int %} {{ doors_open + windows_open }} icon_template: >- {% set windows_open = states('sensor.windows_open') | int %} {% set doors_open = states('sensor.doors_open') | int %} {% set faults = ( doors_open + windows_open ) %} {% if faults == 0 %} mdi:shield-home {% else %} mdi:shield-off {% endif %} automation: - id: 51819f36-2407-496c-afcd-ae160d747f0a alias: Scheduled Alarm Disarm trigger: - platform: time at: input_datetime.morning_alarm_disarm - platform: time at: input_datetime.master_bedroom_wakeup condition: - condition: state entity_id: group.adults state: 'home' - condition: state entity_id: input_boolean.vacation_mode state: 'off' - condition: state entity_id: input_boolean.guest_mode state: 'off' - condition: or conditions: - condition: state entity_id: input_boolean.work_today state: 'on' - condition: state entity_id: input_boolean.kallen_school_today state: 'on' action: - service: script.security_disarm - id: f51eb02f-3f44-4b5d-a389-762b8ca88e2a alias: Scheduled Alarm Rearm trigger: - platform: time at: input_datetime.morning_alarm_rearm condition: - condition: state entity_id: group.adults state: 'home' - condition: state entity_id: input_boolean.vacation_mode state: 'off' - condition: state entity_id: input_boolean.guest_mode state: 'off' - condition: time after: '04:30' before: '13:30' - condition: or conditions: - condition: state entity_id: input_boolean.work_today state: 'on' - condition: state entity_id: input_boolean.kallen_school_today state: 'on' action: - if: - condition: state entity_id: input_boolean.work_today state: 'on' then: - service: script.security_scheduling - if: - condition: and conditions: - condition: time before: "14:00:00" after: "12:00:00" weekday: - mon - tue - wed - thu - fri - condition: state entity_id: input_boolean.kallen_school_early_release state: "on" then: - stop: School early release - service: script.security_arm_home - id: c7927c59-e0fe-48b9-b308-dd90fb774920 alias: Lockdown Issue trigger: - platform: state entity_id: input_boolean.lockdown_issue from: "off" to: "on" action: - service: persistent_notification.create data: title: Lockdown Issue notification_id: lockdown_issue message: >- {% set extdoors = expand('binary_sensor.exterior_doors') | selectattr('state','eq','on') | map(attribute='name') | list | join(', ') %} {% set windows = expand('binary_sensor.windows') | selectattr('state','eq','on') | map(attribute='name') | list | join(', ') %} A lockdown issue has been caused by the following sensors: Doors:{% if is_state('binary_sensor.exterior_doors','on') %} {{ extdoors }} {% else %} None {% endif %} Windows:{% if is_state('binary_sensor.windows','on') %} {{ windows }} {% else %} None {% endif %} - service: script.text_urgent_alert data: who: 'parents' title: 'Security Not Armed!' message: >- {% set extdoors = expand('binary_sensor.exterior_doors') | selectattr('state','eq','on') | map(attribute='name') | list | join(', ') %} {% set windows = expand('binary_sensor.windows') | selectattr('state','eq','on') | map(attribute='name') | list | join(', ') %} A lockdown issue has been caused by the following sensors: Doors:{% if is_state('binary_sensor.exterior_doors','on') %} {{ extdoors }} {% else %} None {% endif %} Windows:{% if is_state('binary_sensor.windows','on') %} {{ windows }} {% else %} None {% endif %} - service: scene.create data: scene_id: light_state_before_lockdown_issue snapshot_entities: - light.living_room_color_1 - light.living_room_color_2 - light.living_room_color_3 - light.tina_lamp_side - light.tina_lamp_top - light.tina_desk_strip - delay: seconds: 1 - service: switch.turn_off target: entity_id: - switch.adaptive_lighting_living_room - switch.adaptive_lighting_tina_lamp - service: light.turn_on target: entity_id: - light.living_room_lights - light.tina_lamp - light.tina_desk_strip data: color_name: red brightness_pct: 100 - service: script.status_annc data_template: who: common call_interruption: 1 call_lockdown_issue: 1 - wait_template: "{{ is_state('binary_sensor.security_faults','off') or is_state('input_boolean.lockdown_issue','off') }}" timeout: minutes: 10 - service: input_boolean.turn_off target: entity_id: input_boolean.lockdown_issue - delay: seconds: 3 - if: - condition: state entity_id: binary_sensor.security_faults state: 'off' then: - if: - condition: state entity_id: binary_sensor.people_present state: 'off' then: - service: script.security_arm_away else: - service: script.security_arm_home - service: script.status_annc data_template: who: common call_security_armed: 1 else: - service: script.speech_engine data: who: common message: 'I am unable to resolve the security issue, so I am giving up. Please report the issue to Tony if applicable.' - service: persistent_notification.dismiss data: notification_id: lockdown_issue - service: scene.turn_on target: entity_id: scene.light_state_before_lockdown_issue - delay: seconds: 3 - service: switch.turn_on target: entity_id: - switch.adaptive_lighting_living_room - switch.adaptive_lighting_tina_lamp script: security_arm_home: alias: Security Arm - Home sequence: - 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 - 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 security_arm_away: alias: Security Arm - Away sequence: - 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: alarm_control_panel.alarm_arm_away target: entity_id: alarm_control_panel.alexa_guard_9ee3b - 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 security_disarm: alias: Security Disarm sequence: - service: alarm_control_panel.alarm_disarm target: entity_id: alarm_control_panel.stratton_ave_alarm data: code: !secret ring_alarm_code - service: alarm_control_panel.alarm_disarm target: entity_id: alarm_control_panel.alexa_guard_9ee3b - service: input_boolean.turn_off target: entity_id: input_boolean.lockdown_issue - service: script.status_annc data: who: living_room call_security_not_armed: 1