############################################################################### # @author : Mahasri Kalavala # @date : 04/15/2017 # @package : Home Security # @description : Home Security System Sensors and Automations ############################################################################### homeassistant: customize: group.home_security_system: order: 7 alarm_control_panel.home: friendly_name: Home Security System icon: mdi:security sensor.my_alarm_control_panel: friendly_name: Home Security System icon: mdi:security simplisafe: accounts: - username: !secret simplisafe_username password: !secret simplisafe_password ############################################################################### # _ _ _ # /\ | | | | (_) # / \ _ _| |_ ___ _ __ ___ __ _| |_ _ ___ _ __ ___ # / /\ \| | | | __/ _ \| '_ ` _ \ / _` | __| |/ _ \| '_ \/ __| # / ____ \ |_| | || (_) | | | | | | (_| | |_| | (_) | | | \__ \ # /_/ \_\__,_|\__\___/|_| |_| |_|\__,_|\__|_|\___/|_| |_|___/ # ############################################################################### automation: ############################################################################### # Leeo light - color indication of Home Security System # BLUE for Secured (Home and Away), and RED for OFF or Trigerred ############################################################################### - alias: Home Security Status Leeo Color initial_state: true trigger: platform: state entity_id: alarm_control_panel.home condition: - condition: template value_template: "{% if trigger.from_state %} True {% else %} False {% endif %}" - condition: template value_template: "{{ states('alarm_control_panel.home') != 'unknown' }}" - condition: template value_template: "{{ states('alarm_control_panel.home') | trim != '' }}" action: - service_template: > {% if states('alarm_control_panel.home') == "armed_home" %} script.xiaomi_blue {% elif states('alarm_control_panel.home') == "armed_away" %} script.xiaomi_green {% elif states('alarm_control_panel.home') == "triggered" %} script.xiaomi_red {% elif states('alarm_control_panel.home') == "disarmed" %} script.xiaomi_red {% endif %} ############################################################################### # Notify Security System State Change ############################################################################### - alias: Notify Home Security Status Change initial_state: true trigger: platform: state entity_id: alarm_control_panel.home condition: - condition: template value_template: "{{ states('input_boolean.security_system_alerts') == 'on' }}" - condition: template value_template: > {%- if state_attr('automation.notify_home_security_status_change', 'last_triggered') -%} {{ (as_timestamp(now()) - as_timestamp(state_attr('automation.notify_home_security_status_change', 'last_triggered'))) > 90 }} {%- else -%} true {%- endif -%} action: - service: script.notify_me data_template: message: > {% if states('alarm_control_panel.home') == "armed_home" %} Your home is now secured! {% elif states('alarm_control_panel.home') == "armed_away" %} Your Home Security System is now set to Away mode! {% elif states('alarm_control_panel.home') == "triggered" %} Attention!: Your Home Security System is triggered! It has been notified to the authorities. {% elif states('alarm_control_panel.home') == "disarmed" %} Attention!: Your Home Security System is turned OFF. {% endif %} - service: script.voice_notify data_template: message: > {% if states('alarm_control_panel.home') == "armed_home" %} Your home is now secured! {% elif states('alarm_control_panel.home') == "armed_away" %} Your Home Security System is now set to Away mode! {% elif states('alarm_control_panel.home') == "triggered" %} Attention!: Your Home Security System is triggered! It has been notified to the authorities. {% elif states('alarm_control_panel.home') == "disarmed" %} Attention!: Your Home Security System is turned OFF. {% endif %} - condition: template value_template: "{{ states('alarm_control_panel.home') != 'disarmed' }}" - service: input_boolean.turn_on entity_id: input_boolean.notify_camera_alerts ############################################################################### # A gentle 10 minute reminder that the Home Security system is OFF ############################################################################### - alias: Home Security System WatchDog 10 minutes initial_state: true trigger: - platform: state entity_id: - alarm_control_panel.home to: "disarmed" for: minutes: 10 action: - service: script.notify_me data: message: "Home Security System is OFF for more than 10 minutes!" ############################################################################### # A gentle reminder that the home security is OFF for more than 30 minutes ############################################################################### - alias: Home Security System WatchDog 30 minutes initial_state: true trigger: - platform: state entity_id: - alarm_control_panel.home to: "disarmed" for: minutes: 30 condition: - condition: template value_template: "{{ states('input_boolean.security_system_alerts') == 'on' }}" action: - service: script.notify_me data: message: "Home Security System is OFF for more than 30 minutes!" ############################################################################### # When home security system is turned OFF or turned to Home mode from "away" # means, someone reached home from outside ############################################################################### - alias: Turn ON Thermostat upon reaching home initial_state: true trigger: platform: state entity_id: alarm_control_panel.home condition: - condition: template value_template: > {% if trigger.from_state.state == 'armed_away' and (trigger.to_state.state == 'armed_home' or trigger.to_state.state == 'disarmed') %} true {% else %} false {% endif %} action: - service: climate.set_away_mode data_template: entity_id: climate.dining_room away_mode: "false" # ############################################################################### # # TURN HOME SECURITY SYSTEM ON AT BED TIME # ############################################################################### # - alias: Night HomeSecurity On # initial_state: true # trigger: # platform: time_pattern # minutes: "/5" # seconds: 00 # condition: # - condition: template # value_template: "{{ states('sensor.bedtime_hour')|int == now().hour|int }}" # - condition: template # value_template: "{{ states('sensor.bedtime_minute')|int == now().minute|int }}" # - condition: template # value_template: "{{ states('alarm_control_panel.home') != 'away' }}" # - condition: template # value_template: "{{ states('alarm_control_panel.home') == 'disarmed' }}" # - condition: template # value_template: "{{ states('input_boolean.security_system_alerts') == 'on' }}" # action: # - service: alarm_control_panel.alarm_arm_home # data: # entity_id: alarm_control_panel.home # - service: script.notify_me # data: # message: "It's bedtime, you forgot to turn ON Home Security System. Turned it ON for you." ############################################################################### # Check for Garage Door Status when Home Security System State changes ############################################################################### - alias: Home Security System And Garage Door Check initial_state: true trigger: - platform: time_pattern minutes: '/15' seconds: 00 condition: condition: and conditions: - condition: template value_template: "{{ states('alarm_control_panel.home') == 'armed_home' or states('alarm_control_panel.home') == 'armed_away' }}" - condition: or conditions: - condition: template value_template: "{{ states('binary_sensor.door_window_sensor_158d0004231f7b') == 'on' }}" - condition: template value_template: "{{ states('binary_sensor.door_window_sensor_158d0004248d5b') == 'on' }}" action: - service: switch.turn_on entity_id: switch.garage - service: script.notify_me data_template: message: > Attention! Your home Security system is set to {{ states('alarm_control_panel.home').split('_')[1] | upper }} mode. BUT THE {% if states('binary_sensor.door_window_sensor_158d0004231f7b') == "on" -%}DOUBLE CAR {%- else %}SINGLE CAR {% endif %}GARAGE DOOR IS STILL OPEN! - service: camera.snapshot data_template: entity_id: "camera.garage_camera" filename: "{{ '/home/homeassistant/.homeassistant/www/downloads/camera/garage/garage_' ~ (state_attr('automation.home_security_system_and_garage_door_check','last_updated') ~ '').replace('-','_').replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" - service: notify.telegram data_template: title: "Garage" message: "Home Security System is ON, but Garage Doors are OPEN!" data: photo: - file: "{{ '/home/homeassistant/.homeassistant/www/downloads/camera/garage/garage_' ~ (states.binary_sensor.motion_sensor_158d00024ee084.last_updated ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" caption: "Garage" - condition: template value_template: "{{ states('alarm_control_panel.home') == 'armed_home' }}" - service: script.voice_notify data_template: message: > {%- set doors = "" %} {%- if states('binary_sensor.door_window_sensor_158d0004231f7b') == "on" and states('binary_sensor.door_window_sensor_158d0004248d5b') == "on" %} {%- set doors = "Both garage doors" %} {%- elif states('binary_sensor.door_window_sensor_158d0004248d5b') == "on"%} {%- set doors = state_attr('binary_sensor.door_window_sensor_158d0004248d5b', 'friendly_name') %} {%- elif states('binary_sensor.door_window_sensor_158d0004248d5b') == "on" %} {%- set doors = state_attr('binary_sensor.door_window_sensor_158d0004231f7b', 'friendly_name') %} {%- endif %} Attention! Your home Security system is set to {{ states('alarm_control_panel.home').split('_')[1] | upper }} mode. BUT the {{ doors }} {{ 'are' if doors.endswith('s') else 'is' }} open. ############################################################################### # Turn Home Security System ON at sunset time ############################################################################### # - alias: Turn On Home Security System At Sunset # initial_state: true # trigger: # platform: sun # event: sunset # offset: '+00:00:00' # condition: # - condition: state # entity_id: alarm_control_panel.home # state: 'disarmed' # action: # - service_template: >- # {% if states('binary_sensor.back_door_sensor_sensor') == "off" and # states('binary_sensor.aeotec_zw120_door_window_sensor_gen5_sensor') == "off" and # states('binary_sensor.door_window_sensor_158d0004231f7b') == "off" and # states('binary_sensor.door_window_sensor_158d0004248d5b') == "off" %} # alarm_control_panel.alarm_arm_home # {% else %} # alarm_control_panel.disarm # {% endif %} # data: # entity_id: alarm_control_panel.home # - service: script.voice_notify # data_template: # message: > # {% if states('binary_sensor.back_door_sensor_sensor') == "off" and # states('binary_sensor.aeotec_zw120_door_window_sensor_gen5_sensor') == "off" and # states('binary_sensor.door_window_sensor_158d0004231f7b') == "off" and # states('binary_sensor.door_window_sensor_158d0004248d5b') == "off" %} # It's getting dark outside, and your home security system is now set to HOME mode. # {% else %} # It is getting dark outside. # {%- if states('binary_sensor.back_door_sensor_sensor') == "on" -%} # {%- set doors = doors ~ " Back Door" -%} # {%- endif -%} # {%- if states('binary_sensor.aeotec_zw120_door_window_sensor_gen5_sensor') == "on" -%} # {% if doors | trim != "" %} # {%- set doors = doors ~ " and Front Door" -%} # {% else %} # {%- set doors = doors ~ " Front Door" -%} # {% endif %} # {%- endif -%} # {%- if states('binary_sensor.door_window_sensor_158d0004231f7b') == "on" -%} # {% if doors | trim != "" %} # {%- set doors = doors ~ " and Two Car Garage Door" -%} # {% else %} # {%- set doors = doors ~ " Two Car Garage Door" -%} # {% endif %} # {%- endif -%} # {%- if states('binary_sensor.door_window_sensor_158d0004248d5b') == "on" -%} # {% if doors | trim != "" %} # {%- set doors = doors ~ " and Single Car Garage Door" -%} # {% else %} # {%- set doors = doors ~ " Single Car Garage Door" -%} # {% endif %} # {%- endif -%} # Your{{ doors }} {%- if 'and' in doors -%}s are {%- else %} is {%- endif %} open. Home Security System could not be turned on. # {% endif %} # - service: script.notify_me # data_template: # message: > # {% if states('binary_sensor.back_door_sensor_sensor') == "off" and # states('binary_sensor.aeotec_zw120_door_window_sensor_gen5_sensor') == "off" and # states('binary_sensor.door_window_sensor_158d0004231f7b') == "off" and # states('binary_sensor.door_window_sensor_158d0004248d5b') == "off" %} # It's getting dark outside, and your home security system is now set to HOME mode. # {% else %} # It is getting dark outside. # {%- if states('binary_sensor.back_door_sensor_sensor') == "on" -%} # {%- set doors = doors ~ " Back Door" -%} # {%- endif -%} # {%- if states('binary_sensor.aeotec_zw120_door_window_sensor_gen5_sensor') == "on" -%} # {% if doors | trim != "" %} # {%- set doors = doors ~ " and Front Door" -%} # {% else %} # {%- set doors = doors ~ " Front Door" -%} # {% endif %} # {%- endif -%} # {%- if states('binary_sensor.door_window_sensor_158d0004231f7b') == "on" -%} # {% if doors | trim != "" %} # {%- set doors = doors ~ " and Two Car Garage Door" -%} # {% else %} # {%- set doors = doors ~ " Two Car Garage Door" -%} # {% endif %} # {%- endif -%} # {%- if states('binary_sensor.door_window_sensor_158d0004248d5b') == "on" -%} # {% if doors | trim != "" %} # {%- set doors = doors ~ " and Single Car Garage Door" -%} # {% else %} # {%- set doors = doors ~ " Single Car Garage Door" -%} # {% endif %} # {%- endif -%} # Your {{ doors}} {%- if 'and' in doors -%}s are {%- else %} is {%- endif %} open. Home Security System could not be turned on. # {% endif %}