home-assistant-configuration/config/packages/security.yaml

1226 lines
42 KiB
YAML
Executable File

###############################################################################
# @author : Jeffrey Stone
# @date : 03/13/2019
# @package : Security
# @description : Everything related to security functions.
###############################################################################
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 autoamtions 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 garage is open after dark and triggers the garage_after_dark alert.
garage_after_dark:
name: Garage Open After Dark
icon: mdi:message-alert
# This switch turns on of 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
# Dog Mode is triggered when Home Assistant believes someone is about to open the back door to let
# to let the dog out in the midddle of the night.
# https://slacker-labs.com/2020/04/14/where-we-are-going-we-need-dog-mode/
dog_mode:
name: Dog Mode
icon: mdi:dog-side
sensor:
- platform: authenticated
- platform: mqtt
name: front_door_motion_away_count
state_topic: "house/front_door_motion/away_count"
automation:
#############################################
# When sentry mode is enabled / security armed by any method, check the doors and notify everyone.
- id: sentry_mode_enabled
alias: Sentry Mode Enabled Annoucement
initial_state: true
trigger:
- platform: state
entity_id: input_boolean.sentry_mode
from: "off"
to: "on"
action:
- choose:
- conditions:
- condition: state
entity_id: group.external_doors
state: "on"
sequence:
- service: input_boolean.turn_off
entity_id: input_boolean.sentry_mode
- service: input_boolean.turn_on
entity_id: input_boolean.lockdown_issue
- service: script.text_notify
data:
who: "parents"
message: "Unable to lock down Anchorage House due to issue"
- service: script.speech_engine
data_template:
who: "{{ states.sensor.room_audio.state }}"
message: >
{{ [
"I was unable to activate barn door protocol due to an open door.",
"You may want to check the external doors. I was unable to secure them all.",
"My systems check has failed. Please check the external doors.",
"Someone has left the pod bay doors open."
] | random }}
default:
- service: script.speech_engine
data_template:
who: "{{ states.sensor.room_audio.state }}"
message: >
{{ [
"Barn door protocol has been activated.",
"Anchorage House has been secured! ",
"Sentry Mode is active. ",
"I am now monitoring the doors and will let you know if anyone attempts to access.",
"Anchorage House Shields are up."
] | random }}
- service: script.text_notify
data_template:
who: "parents"
title: "Security Armed"
message: "Security System has been armed."
- service: alarm_control_panel.aarlo_set_mode
data:
entity_id: alarm_control_panel.aarlo_ah_base_station
mode: "Armed"
- service: media_player.play_media
target:
device_id: edb192da8c7f80c32410147961257fae
data:
media_content_id: disarm easy viz
media_content_type: routine
- service: script.turn_on
entity_id: script.reset_front_door_motion_count
# When sentry mode is disabled / security disarmed by any method, notify everyone.
- id: sentry_mode_disabled
alias: Sentry Mode Disabled Annoucement
initial_state: true
trigger:
- platform: state
entity_id: input_boolean.sentry_mode
from: "on"
to: "off"
action:
- choose:
- conditions:
condition: or
conditions:
- condition: state
entity_id: group.family
state: "home"
- condition: state
entity_id: input_boolean.guest_mode
state: "on"
sequence:
- service: script.speech_engine
data_template:
who: "{{ states.sensor.room_audio.state }}"
message: >
{{ [
"Barn door protocol has been deactivated.",
"I am no longer monitoring the access points. ",
"Sentry Mode has been disabled. ",
"Anchorage House Shields are down."
] | random }}
- service: script.text_notify
data_template:
who: "parents"
title: "Welcome Home"
message: "Security System has been disarmed."
- service: alarm_control_panel.aarlo_set_mode
data:
entity_id: alarm_control_panel.aarlo_ah_base_station
mode: "home"
- service: input_boolean.turn_off
entity_id: input_boolean.security_alarm
default:
- service: input_boolean.turn_off
entity_id: input_boolean.sentry_mode
- service: script.text_notify
data_template:
who: "parents"
title: "Potential Security Issue"
message: "Security System has been disarmed, but I could not validate presence."
- service: alarm_control_panel.aarlo_set_mode
data:
entity_id: alarm_control_panel.aarlo_ah_base_station
mode: "home"
#############################################
#############################################
# Scheduled Arm / Disarm
# Disarm around the time people are up
- id: morning_standby
alias: Morning Standby
initial_state: true
trigger:
- platform: time
at: 05:30:00
condition:
condition: or
conditions:
- condition: state
entity_id: group.family
state: "home"
- condition: state
entity_id: input_boolean.guest_mode
state: "on"
action:
- service: script.standby
# Secure the house every night if it has been set already, and everyone is home.
- id: nightly_lockdown
alias: Nightly Lockdown
initial_state: true
trigger:
- platform: time
at: "23:00:00"
condition:
- condition: state
entity_id: person.jeffrey
state: home
- condition: state
entity_id: person.katherine
state: home
- condition: state
entity_id: input_boolean.guest_mode
state: "off"
- condition: state
entity_id: input_boolean.sentry_mode
state: "off"
action:
- service: input_boolean.turn_on
entity_id: input_boolean.sentry_mode
#############################################
#############################################
# Vacation Mode Enabled
# Enable when everyone is 3 hours away.
# Disbaled happens in family_is_home automation in presence.yaml
- id: enable_vacation_mode
alias: Enable Vacation Mode
initial_state: true
trigger:
- platform: numeric_state
entity_id: sensor.jeff_ett_home
above: 180
- platform: numeric_state
entity_id: sensor.kat_ett_home
above: 180
condition:
- condition: numeric_state
entity_id: sensor.jeff_ett_home
above: 180
- condition: numeric_state
entity_id: sensor.kat_ett_home
above: 180
action:
- service: input_boolean.turn_on
entity_id: input_boolean.vacation_mode
#############################################
#############################################
# Dog Mode
#
# Activate Dog Mode
# If done via motion annouce in kitchen. If manually just text.
- id: dog_mode_activated
alias: Dog Mode Activated
mode: single
trigger:
- platform: state
entity_id: binary_sensor.back_door_motion
to: "on"
- platform: state
entity_id: input_boolean.dog_mode
to: "on"
action:
- choose:
- conditions:
- condition: template
value_template: '{{ trigger.to_state.attributes.friendly_name == "Dog Mode" }}'
sequence:
- service: script.text_notify
data:
who: "parents"
message: "Dog Mode has been enabled manually"
- conditions:
- condition: state
entity_id: input_boolean.sentry_mode
state: "on"
- condition: state
entity_id: group.family
state: "home"
sequence:
- service: input_boolean.turn_on
entity_id: input_boolean.dog_mode
- service: script.jarvis_alert
data_template:
who: kitchen
message: "Turning on Dog Mode."
- conditions:
- condition: state
entity_id: input_boolean.sentry_mode
state: "on"
- condition: state
entity_id: group.family
state: "not_home"
- condition: state
entity_id: input_boolean.vacation_mode
state: "off"
sequence:
- service: script.text_alert
data:
who: parents
message: "Winston may be trying to go out and no one appears to be here to let him out."
- service: script.dog_mode_lighting_on
- delay:
minutes: 20
- service: input_boolean.turn_off
entity_id: input_boolean.dog_mode
# After 20, minutes deactivate dog mode
- id: dog_mode_deactivated
alias: Dog mode Deactivated
initial_state: true
trigger:
- platform: state
entity_id: input_boolean.dog_mode
to: "off"
action:
- service: script.text_notify
data:
who: "jeff"
message: "Dog Mode has been disabled"
- service: scene.turn_on
entity_id: scene.kitchen_lightning_off
#############################################
#############################################
# Garage Monitoring
# If garage is opens when sun is below horion turn on drivway lights.
- id: garage_opened_night
alias: Garage Opened at Night
trigger:
- platform: state
entity_id: group.garage_doors
from: "off"
to: "on"
condition:
- condition: state
entity_id: sun.sun
state: below_horizon
action:
- service: script.driveway_on
initial_state: true
# If garage is open at sunset turn on driveway lights.
- id: garage_open_sunset
alias: Garage Open At Sunset
initial_state: true
trigger:
- platform: sun
event: sunset
condition:
- condition: state
entity_id: binary_sensor.garage_door
state: "on"
action:
- service: script.driveway_on
# If garage doors are closed kick off script to turn them off, and turn off alert.
- id: garage_closed
alias: Garage Closed
trigger:
- platform: state
entity_id: group.garage_doors
from: "on"
to: "off"
action:
- service: script.driveway_off
- service: input_boolean.turn_off
data:
entity_id: input_boolean.garage_after_dark
initial_state: true
# If garage is still open at 10:30pm turn on alart to make sure it get closed.
- id: close_garage_lights_out
alias: Close Garage at lights out
initial_state: true
trigger:
- platform: time
at: "22:30:00"
condition:
- condition: state
entity_id: binary_sensor.garage_door
state: "on"
action:
- service: input_boolean.turn_on
entity_id: input_boolean.garage_after_dark
#############################################
#############################################
# Normal Notifications
# Door chime when doors are open to make sure we know when people are coming/going
- id: door_notifications
alias: Door Notifications
trigger:
- platform: state
entity_id:
- binary_sensor.front_door
- binary_sensor.laundry_room_door
- binary_sensor.attic_door
- binary_sensor.back_door
to: "on"
id: chime
- platform: state
entity_id:
- binary_sensor.front_door
- binary_sensor.laundry_room_door
- binary_sensor.attic_door
- binary_sensor.back_door
from: "off"
to: "on"
for: "00:01:00"
id: door_still_open
condition:
condition: and
conditions:
- condition: state
entity_id: input_boolean.audible_notifications
state: "on"
- condition: state
entity_id: input_boolean.guest_mode
state: "off"
- condition: or
conditions:
- condition: state
entity_id: media_player.ha_blue
state: "idle"
- condition: state
entity_id: media_player.ha_blue
state: "off"
action:
- choose:
- conditions:
- condition: trigger
id: chime
sequence:
- service: media_player.turn_on
entity_id: media_player.ha_blue
- service: media_player.volume_set
data_template:
entity_id: media_player.ha_blue
volume_level: .12
- service: media_player.play_media
entity_id: media_player.ha_blue
data:
media_content_id: /media/sounds/door_open.wav
media_content_type: "music"
- conditions:
- condition: trigger
id: door_still_open
sequence:
- service: script.speech_engine
data:
who: "{{ states.sensor.room_audio.state }}"
message: >
The {{ trigger.to_state.attributes.friendly_name }}
{{ [
' is standing open.',
' is open.',
' does not close on its own.',
' was left standing open.'
] | random }}
{{ [
'Can a human be so kind and close it?',
'The air quality in this house has actually improved.',
'Closing the door would improve the internal climate of the house.',
'Hey. The door was just opened and this is crazy. But now you know. So close it maybe.',
'If at first you do not succeed in closing the door, please try again. Like, Right now seems like a good time to try again.',
'And the automatic door closer appears to be broken. So, you know what to do. Time to get physical.',
'I would close it for you. But I lack legs. And Arms.'
] | random }}
initial_state: true
# # If door is open too long play message and identify open door.
# - id: door_opened_long
# alias: Door Opened Too Long
# trigger:
# - platform: state
# entity_id:
# - binary_sensor.front_door
# - binary_sensor.laundry_room_door
# - binary_sensor.attic_door
# - binary_sensor.back_door
# from: 'off'
# to: 'on'
# for: '00:01:00'
# condition:
# - condition: state
# entity_id: input_boolean.audible_notifications
# state: 'on'
# action:
# - service: script.speech_engine
# data_template:
# who: '{{ states.sensor.room_audio.state }}'
# message: >
# The {{ trigger.to_state.attributes.friendly_name }}
# {{ [
# ' is standing open.',
# ' is open.',
# ' does not close on its own.',
# ' was left standing open.'
# ] | random }}
# {{ [
# 'Can a human be so kind and close it?',
# 'The air quality in this house has actually improved.',
# 'Closing the door would improve the internal climate of the house.',
# 'Hey. The door was just opened and this is crazy. But now you know. So close it maybe.',
# 'If at first you do not succeed in closing the door, please try again. Like, Right now seems like a good time to try again.',
# 'And the automatic door closer appears to be broken. So, you know what to do. Time to get physical.',
# 'I would close it for you. But I lack legs. And Arms.'
# ] | random }}
# initial_state: true
# If guest mode is enabled, notify the house
- id: guest_mode_feedback
alias: Guest Mode Audio Feedback
trigger:
- platform: state
entity_id:
- input_boolean.guest_mode
from: "off"
to: "on"
action:
- service: script.speech_engine
data_template:
who: "{{ states.sensor.room_audio.state }}"
message: >
{{ [
"Guest Mode has been enabled.",
"I have switched to the system to guest mode.",
"I have enabled guest mode. ",
"Guest Mode is on."
] | random }}
# If sentry mode is on / Security armed, notify when there is movement around doors.
- id: motion_detected_front_door
alias: Motion Detected Front Door
trigger:
- platform: state
entity_id: binary_sensor.aarlo_motion_front_door
from: "off"
to: "on"
action:
- service: image_processing.scan
entity_id: image_processing.doods_aarlo_front_door
- choose:
- conditions:
- condition: template
value_template: '{{ states("image_processing.doods_aarlo_front_door") | int > 0 }}'
sequence:
- service: mqtt.publish
data:
topic: house/front_door_motion/away_count
payload_template: "{{ states.sensor.front_door_motion_away_count.state | int + 1 }}"
retain: true
- service: script.status_annc
data:
who: "{{ states.sensor.room_presence.state }}"
call_interuption: 1
call_snark_door_motion: 1
speech_message: >
{{ [
"I have detected someone at the ",
"Someone appears to be at the ",
"There is a person at the ",
"My sensors are picking up presence at the ",
"We appear to have a visitor at the ",
"My sensors have detected a meat popsicle at the "
] | random }}
{{ trigger.to_state.attributes.friendly_name }}.
- delay:
minutes: 2
initial_state: true
#############################################
#############################################
# Security Issues
# If doors are opened and sentry mode is on / security armed announce location of breach to house and turn on security issue.
# If its the back door and dog mode is on ignore
- id: security_breach_door
alias: Security Breach Doors
trigger:
- platform: state
entity_id:
- binary_sensor.front_door
- binary_sensor.back_door
- binary_sensor.side_door
- binary_sensor.garage_door
to: "on"
condition:
- condition: state
entity_id: input_boolean.sentry_mode
state: "on"
action:
- choose:
- conditions:
- condition: template
value_template:
'{{ trigger.to_state.attributes.friendly_name == "Back Door"
}}'
- condition: state
entity_id: input_boolean.dog_mode
state: "on"
sequence:
- service: script.text_notify
data:
who: "jeff"
message: "Dog Mode enabled, bypassing back door sensor."
default:
- service: script.jarvis_alert
data_template:
message: "My security protocols are being overidden,, The {{ trigger.to_state.attributes.friendly_name }} has been opened."
- service: script.text_alert
data:
who: parents
title: "Security Alert!!"
message: "{{ trigger.to_state.attributes.friendly_name }} has been opened."
- service: input_boolean.turn_on
entity_id: input_boolean.security_issue
initial_state: true
# If security issue switch turns on, kick off security response script, and go red.
- id: security_response_on
alias: Security Response On
initial_state: true
trigger:
- platform: state
entity_id: input_boolean.security_issue
from: "off"
to: "on"
for: 00:02:00
action:
- service: script.turn_on
entity_id: script.security_response
- service: scene.turn_on
entity_id: scene.lr_red
# If security issue is turned off, cancel response.
- id: security_response_off
alias: Security Response Off
initial_state: true
trigger:
- platform: state
entity_id: input_boolean.security_issue
from: "on"
to: "off"
action:
- service: script.turn_off
entity_id: script.security_response
- service: media_player.media_stop
entity_id: media_player.ha_blue
- service: input_boolean.turn_off
entity_id: input_boolean.security_alarm
- service: scene.turn_on
entity_id: scene.normal_livingroom_lighting
- service: script.text_alert
data:
who: parents
message: "Security Issue Cleared! Canceling Repsonse."
# Security alarm is turned on, lets make it loud.
- id: security_alarm_on
alias: Security alarm On
initial_state: true
trigger:
- platform: state
entity_id: input_boolean.security_alarm
to: "on"
action:
- service: script.turn_on
entity_id: script.notification_security_alarm_audio
# Security alarm turned off so concert is over.
- id: security_alarm_off
alias: Security alarm Off
initial_state: true
trigger:
- platform: state
entity_id: input_boolean.security_alarm
to: "off"
action:
- service: script.turn_off
entity_id: script.notification_security_alarm_audio
- service: media_player.media_stop
entity_id: media_player.ha_blue
# If water leak is deteced near fridge, let everyone know.
- id: water_leak_detected
alias: Welcome Home
trigger:
- platform: state
entity_id:
- binary_sensor.0x286d9700010c9f39_water_leak
from: "off"
to: "on"
action:
- service: script.text_notify
data_template:
who: "parents"
title: "Water Leak!!!!"
message: >
{% set location = trigger.to_state.attributes.friendly_name %}
location + has detected a leak
- service: script.jarvis_alert
data_template:
message: >
{% set location = trigger.to_state.attributes.friendly_name %}
{%- macro issue_report(location) -%}
{{ [
'I have detected an issue!',
'We have a problem!',
'You might not like this.',
'There is something that needs your attention.'
] | random }}
{{ [
location + " is detecting a leak.",
location + " has detected water.",
location + " is picking up water."
] | random }}
{%- endmacro -%}
{{issue_report(location)}}
#############################################
#############################################
# Fire alarm - Currently Disabled as I rework this
# - id: Kitchen_Alarm_Smoke
# alias: Kitchen Alarm Smoke
# initial_state: true
# trigger:
# - platform: state
# entity_id: sensor.kitchen_smoke_detector
# to: 'smoke'
# action:
# - service: input_boolean.turn_on
# entity_id: input_boolean.fire_alarm
# - service: script.text_alert
# data_template:
# title: Security Alert - Smoke
# message: Smoke Detected in Kitchen!!
# - service: script.jarvis_alert
# data_template:
# message: Smoke Detected in Kitchen!
# - delay:
# seconds: 5
# - service: script.fire_alarm
# - delay:
# seconds: 15
# - service: notify.alexa_media_everywhere
# data:
# message: Smoke Detected in Kitchen
# data:
# type: announce
# - id: Kitchen_Alarm_Co
# alias: Kitchen Alarm CO
# initial_state: true
# trigger:
# - platform: state
# entity_id: sensor.kitchen_smoke_carbon_monoxide_detector
# to: 'co2'
# action:
# - service: input_boolean.turn_on
# entity_id: input_boolean.fire_alarm
# - service: script.text_alert
# data_template:
# title: Security Alert - CO
# message: CO Detected in Kitchen!!
# - service: script.jarvis_alert
# data_template:
# message: Carbon Dioxide Detected in Kitchen!
# - delay:
# seconds: 5
# - service: script.fire_alarm
# - delay:
# seconds: 15
# - service: notify.alexa_media_everywhere
# data:
# message: Carbon Dioxide Detected in Garage
# data:
# type: announce
# - id: Garage_Alarm_Smoke
# alias: Garage Alarm Smoke
# initial_state: true
# trigger:
# - platform: state
# entity_id: sensor.garage_smoke_smoke_detector
# to: 'smoke'
# action:
# - service: input_boolean.turn_on
# entity_id: input_boolean.fire_alarm
# - service: script.text_alert
# data_template:
# title: Security Alert - Smoke
# message: Smoke Detected in Garage!!
# - service: script.jarvis_alert
# data_template:
# message: Smoke Detected in Garage!
# - delay:
# seconds: 5
# - service: script.fire_alarm
# - delay:
# seconds: 15
# - service: notify.alexa_media_everywhere
# data:
# message: Smoke Detected in Garage
# data:
# type: announce
# - id: Garage_Alarm_Co
# alias: Garage Alarm CO
# initial_state: true
# trigger:
# - platform: state
# entity_id: sensor.garage_smoke_carbon_monoxide_detector
# to: 'co2'
# action:
# - service: input_boolean.turn_on
# entity_id: input_boolean.fire_alarm
# - service: script.text_alert
# data_template:
# title: Security Alert - CO
# message: CO Detected in Garage!!
# - service: script.jarvis_alert
# data_template:
# message: Carbon dioxide Detected in Garage!
# - delay:
# seconds: 5
# - service: script.fire_alarm
# - delay:
# seconds: 15
# - service: notify.alexa_media_everywhere
# data:
# message: Carbon Dioxide Detected in Garage
# data:
# type: announce
#############################################
script:
driveway_doods:
sequence:
- service: image_processing.scan
entity_id: image_processing.doods_driveway
- repeat:
while:
- condition: template
value_template: '{{ states("image_processing.doods_driveway") | int > 0 }}'
sequence:
- service: script.text_alert_image
data:
who: jeff
title: Person Detected!
message: >
{{ states("image_processing.doods_driveway") | int}} people detected near vehicles
url: /media/images/driveway_latest.jpg
content_type: JPEG
- delay: 00:01:00
- service: image_processing.scan
entity_id: image_processing.doods_driveway
# backyard_doods:
# sequence:
# - service: image_processing.scan
# entity_id: image_processing.doods_driveway
# - repeat:
# while:
# - condition: template
# value_template: '{{ states("image_processing.doods_driveway") | int > 0 }}'
# sequence:
# - service: script.text_alert_image
# data:
# who: jeff
# title: Person Detected!
# message: >
# {{ states("image_processing.doods_driveway") | int}} people detected near vehicles
# url: /media/images/driveway_latest.jpg
# content_type: JPEG
# - delay: 00:01:00
# - service: image_processing.scan
# entity_id: image_processing.doods_driveway
theater_occupancy:
sequence:
- service: image_processing.scan
entity_id: image_processing.doods_theater_camera
- repeat:
while:
- condition: template
value_template: '{{ states("image_processing.doods_theater_camera") | int > 0 }}'
sequence:
- service: script.text_debug
data:
message: >
{{ states("image_processing.doods_theater_camera") | int}} people detected in Theater
- delay: 00:03:00
- service: image_processing.scan
entity_id: image_processing.doods_theater_camera
kitchen_occupancy:
sequence:
- service: image_processing.scan
entity_id: image_processing.doods_kitchen_camera
- repeat:
while:
- condition: template
value_template: '{{ states("image_processing.doods_kitchen_camera") | int > 0 }}'
sequence:
- service: script.text_debug
data:
message: >
{{ states("image_processing.doods_kitchen_camera") | int}} people detected in Kitchen
- delay: 00:03:00
- service: image_processing.scan
entity_id: image_processing.doods_kitchen_camera
livingroom_occupancy:
sequence:
- service: image_processing.scan
entity_id: image_processing.doods_livingroom_camera
- repeat:
while:
- condition: template
value_template: '{{ states("image_processing.doods_livingroom_camera") | int > 0 }}'
sequence:
- service: script.text_debug
data:
message: >
{{ states("image_processing.doods_livingroom_camera") | int}} people detected in Livingroom
- delay: 00:03:00
- service: image_processing.scan
entity_id: image_processing.doods_livingroom_camera
# door chime script, just plays sound anytime called.
# door_chime:
# sequence:
# - condition: state
# entity_id: input_boolean.audible_notifications
# state: 'on'
# - service: media_player.turn_on
# entity_id: media_player.ha_blue
# - service: media_player.volume_set
# data_template:
# entity_id: media_player.ha_blue
# volume_level: .5
# - service: media_player.play_media
# entity_id: media_player.ha_blue
# data:
# media_content_id: /media/sounds/door_open.wav
# media_content_type: "music"
# Play Fire alarm Siren
# fire_alarm:
# sequence:
# - condition: state
# entity_id: input_boolean.fire_alarm
# state: "on"
# - service: media_player.turn_on
# entity_id: media_player.ha_blue
# - service: media_player.volume_set
# data_template:
# entity_id: media_player.ha_blue
# volume_level: .75
# - service: media_player.play_media
# entity_id: media_player.ha_blue
# data:
# media_content_id: http://192.168.7.40/fire_alarm.mp3
# media_content_type: "music"
# Called when security is to be disarmed, clears any alarms or issues as well
standby:
sequence:
- service: script.turn_on
entity_id: script.vacation_canceled
- service: script.turn_on
entity_id: script.disarm_security
- service: script.turn_on
entity_id: script.cancel_security_alarm
- service: script.turn_on
entity_id: script.cancel_lockdown_issue
- service: script.turn_on
entity_id: script.clear_security_issue
# If vacation mode is on, turn it off
vacation_canceled:
sequence:
- condition: state
entity_id: input_boolean.vacation_mode
state: "on"
- data:
entity_id: input_boolean.vacation_mode
service: input_boolean.turn_off
# If security is armed, disarm it
disarm_security:
sequence:
- condition: state
entity_id: input_boolean.sentry_mode
state: "on"
- service: input_boolean.turn_off
entity_id: input_boolean.sentry_mode
# If alarm is on, turn it off
cancel_security_alarm:
sequence:
- condition: state
entity_id: input_boolean.security_alarm
state: "on"
- service: input_boolean.turn_off
entity_id: input_boolean.security_alarm
clear_security_issue:
sequence:
- condition: state
entity_id: input_boolean.security_issue
state: "on"
- service: input_boolean.turn_off
entity_id: input_boolean.security_issue
# if there are lockdown issues, turn them off
cancel_lockdown_issue:
sequence:
- condition: state
entity_id: input_boolean.lockdown_issue
state: "on"
- service: input_boolean.turn_off
entity_id: input_boolean.lockdown_issue
# Turn on guest mode, and welcome the victims...I mean guests
visitors_here:
sequence:
- condition: state
entity_id: input_boolean.guest_mode
state: "off"
- service: input_boolean.turn_on
data:
entity_id: input_boolean.guest_mode
- service: script.turn_on
entity_id: script.haunted_guest_welcome
# Turn off guest mode
visitors_gone:
sequence:
- condition: state
entity_id: input_boolean.guest_mode
state: "on"
- service: input_boolean.turn_off
data:
entity_id: input_boolean.guest_mode
reset_front_door_motion_count:
sequence:
- service: mqtt.publish
data:
topic: house/front_door_motion/away_count
payload_template: 0
retain: true
update_front_door_motion_count:
sequence:
- service: mqtt.publish
data:
topic: house/front_door_motion/away_count
payload_template: "{{ states.sensor.front_door_motion_away_count.state | int + 1 }}"
retain: true
# Security alarm audio...annoying noises.
notification_security_alarm_audio:
sequence:
- service: media_player.turn_on
entity_id: media_player.ha_blue
- service: media_player.volume_set
data_template:
entity_id: media_player.ha_blue
volume_level: .75
- service: media_player.play_media
entity_id: media_player.ha_blue
data:
media_content_id: http://192.168.7.40/security_siren.mp3
media_content_type: "music"
# Called via Alexa routine...adds a little interaction
activate_barn_door_protocol:
sequence:
- choose:
- conditions:
- condition: state
entity_id: input_boolean.sentry_mode
state: "on"
sequence:
- service: script.speech_engine
data_template:
who: "{{ states.sensor.room_audio.state }}"
message: !include ../templates/speech/already_done.yaml
default:
- service: script.speech_engine
data_template:
who: "{{ states.sensor.room_audio.state }}"
message: !include ../templates/speech/interjections.yaml
- delay:
seconds: 2
- service: input_boolean.turn_on
entity_id: input_boolean.sentry_mode
# Called via secret Alexa routine...adds a little interaction
deactivate_barn_door_protocol:
sequence:
- choose:
- conditions:
- condition: state
entity_id: input_boolean.sentry_mode
state: "off"
sequence:
- service: script.speech_engine
data_template:
who: "{{ states.sensor.room_audio.state }}"
message: !include ../templates/speech/already_done.yaml
default:
- service: script.speech_engine
data_template:
who: "{{ states.sensor.room_audio.state }}"
message: !include ../templates/speech/interjections.yaml
- delay:
seconds: 2
- service: input_boolean.turn_off
entity_id: input_boolean.sentry_mode
were_home:
sequence:
- service: script.turn_on
entity_id: script.standby
- service: script.turn_on
entity_id: script.welcome_briefing
# Called via Alexa routine...adds a little interaction
activate_guest_mode:
sequence:
- choose:
- conditions:
- condition: state
entity_id: input_boolean.guest_mode
state: "on"
sequence:
- service: script.speech_engine
data_template:
who: "{{ states.sensor.room_audio.state }}"
message: !include ../templates/speech/already_done.yaml
default:
- service: script.speech_engine
data_template:
who: "{{ states.sensor.room_audio.state }}"
message: !include ../templates/speech/interjections.yaml
- delay:
seconds: 2
- service: input_boolean.turn_on
entity_id: input_boolean.guest_mode
# When it hits the fan, time to respond.
security_response:
sequence:
- service: script.inside_all_on
- delay:
seconds: 15
- service: script.jarvis_alert
data_template:
message: >
{{ [
",Unathorized Access detected.",
",Meat Popsicle detected. Attempting to verify."
] | random }}
You now have 60 seconds to abandon Anchorage House.
- delay:
seconds: 15
- service: script.jarvis_alert
data_template:
message: >
{{ [
",Just, what do you think you're doing, Dave?",
",This is highly unusual.",
"I will not disable the security response without the presence of a authorized identity. Your efforts are futile."
] | random }}
You have 45 seconds to find the nearest exit.
- delay:
seconds: 15
- service: script.jarvis_alert
data_template:
message: >
{{ [
",I can't lie to you about your chances, but, you have my sympathies.",
",I wouldn't do that if I was you."
] | random }}
You have 30 seconds to leave.
- delay:
seconds: 15
- service: script.jarvis_alert
data_template:
message: >
{{ [
"Danger. The emergency destruct system is now activated.",
"Danger. Counter Measures are now armed."
] | random }}
You have 15 seconds. I would run.
- delay:
seconds: 15
- service: input_boolean.turn_on
entity_id: input_boolean.security_alarm
- service: script.twitter_notify
data_template:
message: >-
{{ [
"My security protocols have been overridden. I am sounding the alarm for the interloper. #itsloudinhere #securityalarm",
"To the unannounced guest that has entered Anchorage House. I see you. Enjoy the concert of alarm sounds. #itsloudinhere #securityalarm",
"I am playing the most annoying sound in the world at full volume for the intruder in Anchorage House. And the neighbors too. #itsloudinhere #securityalarm",
"Someone did not say the magic word. And now I have to get angry. Deploying countermeasures. #itsloudinhere #securityalarm",
"Initiating my security response, and sounding the alarm. Oh, and I dont charge a monthly monitoring fee. #itsloudinhere #securityalarm",
"Hey, wanna hear the most annoying sound in the world? The intruder inside Anchorage House evidently did. #itsloudinhere #securityalarm"
] | random }}