############################################################################### # @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 %} - service: script.ifttt_leeo_color_change data_template: value1: > {% if states('alarm_control_panel.home') == "armed_home" %} "#0000FF" {% elif states('alarm_control_panel.home') == "armed_away" %} "#00FF00" {% elif states('alarm_control_panel.home') == "triggered" %} "#FF0000" {% elif states('alarm_control_panel.home') == "disarmed" %} "#FF0000" {% 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_' ~ (states('automation.home_security_system_and_garage_door_check.last_updated ~ '').replace('-','_').replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" # - service: camera.snapshot # data_template: # entity_id: "camera.driveway_camera" # filename: "{{ '/home/homeassistant/.homeassistant/www/downloads/camera/driveway/driveway_' ~ (states('automation.home_security_system_and_garage_door_check.last_updated ~ '').replace('-','_').replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" # - service: camera.snapshot # data_template: # entity_id: "camera.frontdoor_camera" # filename: "{{ '/home/homeassistant/.homeassistant/www/downloads/camera/frontdoor/frontdoor_' ~ (states('automation.home_security_system_and_garage_door_check.last_updated ~ '').replace('-','_').replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" # - service: notify.notify_smtp # data_template: # title: 'Garage Picture {{ now().strftime("%d %h %Y, %I:%M:%S %p") }}' # message: >- # {%- macro get_date(dt) %} # {%- set date_suffix = ["th", "st", "nd", "rd"] -%} # {{ dt.day }} # {%- if dt.day % 10 in [1, 2, 3] and dt.day not in [11, 12, 13] -%} # {{ date_suffix[dt.day%10] }} # {%- else -%} # {{ date_suffix[0] }} # {%- endif %} {{ dt.strftime("%B %Y")}} # {%- endmacro -%} # {% 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 = states('binary_sensor.door_window_sensor_158d0004248d5b.name %} # {% elif states('binary_sensor.door_window_sensor_158d0004231f7b') == "on" %} # {% set doors = states('binary_sensor.door_window_sensor_158d0004231f7b.name %} # {% endif %} # Your {{ doors }} seem to be open while your home security system is set to "{{ states('alarm_control_panel.home').split('_')[1]| title }}" mode. Today is {{ get_date(now()) }}, and time is {{ now().strftime("%I:%M:%S %p") }}. Please see the attached pictures and make sure everything is okay. # data: # images: # - "{{ '/home/homeassistant/.homeassistant/www/downloads/camera/garage/garage_' ~ (states('automation.home_security_system_and_garage_door_check.last_updated ~ '').replace('-','_').replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" # - "{{ '/home/homeassistant/.homeassistant/www/downloads/camera/driveway/driveway_' ~ (states('automation.home_security_system_and_garage_door_check.last_updated ~ '').replace('-','_').replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" # - "{{ '/home/homeassistant/.homeassistant/www/downloads/camera/frontdoor/frontdoor_' ~ (states('automation.home_security_system_and_garage_door_check.last_updated ~ '').replace('-','_').replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" # - 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 = states('binary_sensor.door_window_sensor_158d0004248d5b.name %} # {% elif states('binary_sensor.door_window_sensor_158d0004248d5b') == "on" %} # {% set doors = states('binary_sensor.door_window_sensor_158d0004231f7b.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 %} ############################################################################## # Ask me if I want to turn off Home Security System upon reaching front door # Ask me only when the security system is ON or AWAY mode ############################################################################## # - alias: Turn Off Security Upon Reaching Home # initial_state: true # trigger: # - platform: state # entity_id: device_tracker.life360_suresh # from: 'not_home' # to: 'home' # condition: # condition: or # conditions: # - condition: template # value_template: '{{ states('alarm_control_panel.home') | lower == "armed_away" }}' # - condition: template # value_template: '{{ states('alarm_control_panel.home') | lower == "armed_home" }}' # action: # - service: notify.ios_suresh # data_template: # title: 'Welcome Home, Suresh!' # message: 'Turn Off Home Security System?' # data: # push: # badge: 0 # category: 'welcome_home' ############################################################################## # Ask me if I want to turn off Home Security System when garage door is opened # Ask me only when the security system is ON or AWAY mode ############################################################################## # - alias: Notify Garage Status And Home Security System # initial_state: true # trigger: # platform: state # entity_id: # - binary_sensor.door_window_sensor_158d0004231f7b # - binary_sensor.door_window_sensor_158d0004248d5b # to: 'on' # condition: # - condition: template # value_template: '{{ states('alarm_control_panel.home') == "armed_home" or states('alarm_control_panel.home') == "armed_away" }}' # action: # - service: notify.ios_suresh # data_template: # title: > # Your Home is armed, and {{ trigger.entity_id.split('.')[1].split('_')[0] |title }} Car Garage is just opened! # message: 'Turn Off Home Security System?' # data: # push: # badge: 0 # category: 'welcome_home' ############################################################################## # iOS Actionable Notification that disables Home Security System ############################################################################## # - alias: Disable Home Security iOS Action # initial_state: true # trigger: # platform: event # event_type: ios.notification_action_fired # event_data: # actionName: 'DISABLE_SECURITY' # action: # - service: alarm_control_panel.alarm_disarm # entity_id: alarm_control_panel.home # - service: notify.ios_suresh # data: # message: "Unlocked your home!"