############################################################################### # @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 ############################################################################### # _ _ _ # /\ | | | | (_) # / \ _ _| |_ ___ _ __ ___ __ _| |_ _ ___ _ __ ___ # / /\ \| | | | __/ _ \| '_ ` _ \ / _` | __| |/ _ \| '_ \/ __| # / ____ \ |_| | || (_) | | | | | | (_| | |_| | (_) | | | \__ \ # /_/ \_\__,_|\__\___/|_| |_| |_|\__,_|\__|_|\___/|_| |_|___/ # ############################################################################### 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 Xiaomi 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 %} # # This automation will trigger when the Home Security System is "Triggered" # This will send all relevant information - Door Statuses and Camera snapshots around the home # Meanwhile Home Security Company will be calling and/or dispatching Police over to the house. # This should give you enough information to have a good conversation with the Home Security System company when not at home - alias: Home Security Triggered initial_state: true trigger: platform: state entity_id: alarm_control_panel.home to: "triggered" condition: - condition: template value_template: "{{ states('input_boolean.security_system_alerts') == 'on' }}" action: - service: script.notify_family data: message: > {% set ns = namespace(openDoorCount=0, doorNames="") %} {%- set sensors = [ 'binary_sensor.door_window_sensor_158d000424a6d6', 'binary_sensor.door_window_sensor_158d00040ad8fc', 'binary_sensor.door_window_sensor_158d0004880f30', 'binary_sensor.door_window_sensor_158d000424718f', 'binary_sensor.door_window_sensor_158d0004231f7b', 'binary_sensor.door_window_sensor_158d0004248d5b', 'binary_sensor.motion_sensor_158d00016c2d0e', 'binary_sensor.motion_sensor_158d00016db6d2', 'binary_sensor.motion_sensor_158d0001a25041', 'binary_sensor.motion_sensor_158d0001a662fe','binary_sensor.motion_sensor_158d00024e57d3','binary_sensor.motion_sensor_158d00024e57fb', 'binary_sensor.motion_sensor_158d00024e842c','binary_sensor.motion_sensor_158d00024ee084','binary_sensor.motion_sensor_158d000272bed1', 'binary_sensor.motion_sensor_158d000272bf48','binary_sensor.motion_sensor_158d000272bfd7','binary_sensor.motion_sensor_158d000464c25a', 'binary_sensor.motion_sensor_158d00047b6f69' ] -%} {%- for item in sensors if states(item) == "on" %} {% set ns.doorNames = ns.doorNames + state_attr(item, "friendly_name") + (", " if not loop.last else " ") %} {% set ns.openDoorCount = ns.openDoorCount + 1 %} {%- endfor %} Your Home Security System is triggered. {{ "But ALL Doors are CLOSED! Must be a spider on one of the sensor(s) triggered it!" if ns.openDoorCount == 0 else 'Following sensors are ON currently:' }} {{ ns.doorNames }} notify_options: - telegram - tv - led - voice - service: camera.snapshot data: entity_id: "camera.frontdoor_camera" filename: "{{ '/config/www/downloads/camera/frontdoor/frontdoor_' ~ (states.binary_sensor.motion_sensor_158d00024ee084.last_updated ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" - service: camera.snapshot data: entity_id: "camera.driveway_camera" filename: "{{ '/config/www/downloads/camera/driveway/driveway_' ~ (states.binary_sensor.motion_sensor_158d00024ee084.last_updated ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" - service: camera.snapshot data: entity_id: "camera.garage" filename: "{{ '/config/www/downloads/camera/garage/garage_' ~ (states.binary_sensor.motion_sensor_158d00024ee084.last_updated ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" - service: camera.snapshot data: entity_id: "camera.patio_camera" filename: "{{ '/config/www/downloads/camera/patio/patio_' ~ (states.binary_sensor.motion_sensor_158d00024e842c.last_updated ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" - service: camera.snapshot data: entity_id: "camera.playarea_camera" filename: "{{ '/config/www/downloads/camera/playarea/playarea_' ~ (states.binary_sensor.motion_sensor_158d00024e842c.last_updated ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" - service: notify.telegram data: title: "Camera Snapshots" message: "Please check the camera images just to be sure!" data: photo: - file: "{{ '/config/www/downloads/camera/frontdoor/frontdoor_' ~ (states.binary_sensor.motion_sensor_158d00024ee084.last_updated ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" caption: "Front Door" - file: "{{ '/config/www/downloads/camera/driveway/driveway_' ~ (states.binary_sensor.motion_sensor_158d00024ee084.last_updated ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" caption: "Driveway" - file: "{{ '/config/www/downloads/camera/garage/garage_' ~ (states.binary_sensor.motion_sensor_158d00024ee084.last_updated ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" caption: "Garage" - file: "{{ '/config/www/downloads/camera/patio/patio_' ~ (states.binary_sensor.motion_sensor_158d00024e842c.last_updated ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" caption: "Patio" - file: "{{ '/config/www/downloads/camera/playarea/playarea_' ~ (states.binary_sensor.motion_sensor_158d00024e842c.last_updated ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" caption: "Playarea" ############################################################################### # 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_family data: 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 %} notify_options: - telegram - tv - led - voice - condition: template value_template: "{{ states('alarm_control_panel.home') != 'disarmed' }}" - service: input_boolean.turn_on entity_id: input_boolean.camera_alerts ############################################################################### # A gentle 10 minute reminder that the Home Security system is OFF ############################################################################### - alias: Home Security System WatchDog 10 minutes trigger: - platform: state entity_id: - alarm_control_panel.home to: "disarmed" for: minutes: 10 condition: - condition: template value_template: "{{ states('input_boolean.security_system_alerts') == 'on' }}" action: - service: script.notify_family data: message: "Home Security System is OFF for more than 10 minutes!" notify_options: - tv - led ############################################################################### # A gentle reminder that the home security is OFF for more than 30 minutes ############################################################################### - alias: Home Security System WatchDog 30 minutes 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_family data: message: "Home Security System is OFF for more than 30 minutes!" notify_options: - tv - led ############################################################################### # 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_family data: message: "It's bedtime, you forgot to turn ON Home Security System. Turned it ON for you." notify_options: - telegram - tv - led ############################################################################### # 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('input_boolean.security_system_alerts') == 'on' }}" - 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: camera.snapshot data: entity_id: "camera.garage" filename: "{{ '/config/www/downloads/camera/garage/garage_' ~ (state_attr('automation.home_security_system_and_garage_door_check','last_updated') ~ '').replace('-','_').replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" - service: script.notify_family data: 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! url: "{{ '/config/www/downloads/camera/garage/garage_' ~ (states.binary_sensor.motion_sensor_158d00024ee084.last_updated ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" notify_options: - telegram - tv - led - voice