homeassistant: customize: package.door_sensors: door_notification_script: &door_notification_script message: > {% set doors = "" %} {% if states('binary_sensor.two_car_garage_door_tilt_sensor_sensor') == "on" and states('binary_sensor.single_car_garage_door_tilt_sensor_sensor') == "on" %} {% set doors = "Attention! Both Garage Doors are OPEN" %} {% elif states('binary_sensor.two_car_garage_door_tilt_sensor_sensor') == "off" and states('binary_sensor.single_car_garage_door_tilt_sensor_sensor') == "off" %} {% set doors = "Both Garage Doors are now CLOSED" %} {% else %} {% if trigger.to_state.state | lower == "on" %} Attention! Your {{ trigger.to_state.attributes.friendly_name }} is now OPENED! {% elif trigger.to_state.state | lower == "off" %} Your {{ trigger.to_state.attributes.friendly_name }} is now CLOSED! {% endif %} {% endif %} {{ doors }} sensor: - platform: template sensors: single_car_garage_door_sensor_status: friendly_name: Single Car Garage Door Sensor Status value_template: >- {% if states('binary_sensor.single_car_garage_door_tilt_sensor_sensor') == 'on' %} Open {% elif states('binary_sensor.single_car_garage_door_tilt_sensor_sensor') == 'off' %} Closed {% else %} Unknown {% endif %} icon_template: >- {% set door_status = states('binary_sensor.single_car_garage_door_tilt_sensor_sensor') %} {% if door_status == 'unknown' %} mdi:alert-circle {% else %} {% if door_status == 'on' %} mdi:garage-open {% else %} mdi:garage {% endif %} {% endif %} - platform: template sensors: two_car_garage_door_sensor_status: value_template: >- {% if states('binary_sensor.two_car_garage_door_tilt_sensor_sensor') == 'on' %} Open {% elif states('binary_sensor.two_car_garage_door_tilt_sensor_sensor') == 'off' %} Closed {% else %} Unknown {% endif %} friendly_name: Double Car Garage Door Sensor Status icon_template: >- {% set door_status = states('binary_sensor.two_car_garage_door_tilt_sensor_sensor') %} {% if door_status == 'unknown' %} mdi:alert-circle {% else %} {% if door_status == 'on' %} mdi:garage-open {% else %} mdi:garage {% endif %} {% endif %} binary_sensor: - platform: mqtt state_topic: "/garage/motion" name: "Garage Motion" device_class: motion payload_on: "on" payload_off: "off" value_template: "{{ value }}" - platform: mqtt state_topic: "/kitchen/motion" name: "Kitchen Camera Motion" device_class: motion payload_on: "on" payload_off: "off" value_template: "{{ value }}" - platform: mqtt state_topic: "/frontroom/motion" name: "Frontroom Camera Motion" device_class: motion payload_on: "on" payload_off: "off" value_template: "{{ value }}" ############################################################################### # _ _ _ # /\ | | | | (_) # / \ _ _| |_ ___ _ __ ___ __ _| |_ _ ___ _ __ ___ # / /\ \| | | | __/ _ \| '_ ` _ \ / _` | __| |/ _ \| '_ \/ __| # / ____ \ |_| | || (_) | | | | | | (_| | |_| | (_) | | | \__ \ # /_/ \_\__,_|\__\___/|_| |_| |_|\__,_|\__|_|\___/|_| |_|___/ # ############################################################################### automation: - alias: Garage Motion Reset initial_state: true trigger: - platform: state entity_id: binary_sensor.garage_motion to: "on" from: "off" action: - delay: "00:00:30" - service: mqtt.publish data: topic: "/garage/motion" payload: "off" retain: false - alias: Kitchen Camera Motion Reset initial_state: true trigger: - platform: state entity_id: binary_sensor.kitchen_camera_motion to: "on" from: "off" action: - delay: "00:00:30" - service: mqtt.publish data: topic: "/kitchen/motion" payload: "off" retain: false - alias: Frontroom Camera Motion Reset initial_state: true trigger: - platform: state entity_id: binary_sensor.frontroom_camera_motion to: "on" from: "off" action: - delay: "00:00:30" - service: mqtt.publish data: topic: "/frontroom/motion" payload: "off" retain: false ################################################################################ # Notifies when either of the garage door is opened or closed ############################################################################### - alias: Notify Garage Door Status initial_state: true trigger: platform: state entity_id: - binary_sensor.two_car_garage_door_tilt_sensor_sensor - binary_sensor.single_car_garage_door_tilt_sensor_sensor condition: - condition: template value_template: "{{ trigger.from_state.state not in ['unavailable', 'unknown'] }}" - condition: template value_template: "{{ trigger.to_state.state not in ['unavailable', 'unknown'] }}" - condition: template value_template: "{{ states('input_boolean.garage_door_notifications') == 'on' }}" action: - service: switch.turn_on entity_id: switch.garage - service: script.notify_me data_template: message: > {% if trigger.to_state.state | lower == "on" %} {{ trigger.to_state.attributes.friendly_name }} is now OPENED! {% elif trigger.to_state.state | lower == "off" %} {{ trigger.to_state.attributes.friendly_name }} is now CLOSED! {% endif %} - service: script.led_message data_template: <<: *door_notification_script - service: script.voice_notify data_template: <<: *door_notification_script - delay: "00:00:05" - service: camera.snapshot data_template: entity_id: "camera.garage_camera" filename: "{{ '/home/homeassistant/.homeassistant/www/downloads/camera/garage/garage_' ~ (states.automation.notify_garage_door_status.last_triggered ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" - service: notify.notify_smtp data_template: title: 'Garage Door Status {{ now().strftime("%d %h %Y, %I:%M:%S %p") }}' message: >- {% set doors = "" %} {% if states('binary_sensor.two_car_garage_door_tilt_sensor_sensor') == "on" and states('binary_sensor.single_car_garage_door_tilt_sensor_sensor') == "on" %} {% set doors = "Both Garage Doors are OPEN" %} {% elif states('binary_sensor.two_car_garage_door_tilt_sensor_sensor') == "off" and states('binary_sensor.single_car_garage_door_tilt_sensor_sensor') == "off" %} {% set doors = "Both Garage Doors are CLOSED" %} {% else %} {% set doors = states.binary_sensor.single_car_garage_door_tilt_sensor_sensor.name ~ " is " ~ ('Closed' if states('binary_sensor.single_car_garage_door_tilt_sensor_sensor') == 'off' else 'OPEN') ~ " and " ~ state_attr('binary_sensor.two_car_garage_door_tilt_sensor_sensor', 'friendly_name') ~ " is " ~ ('Closed' if states('binary_sensor.two_car_garage_door_tilt_sensor_sensor') == 'off' else 'OPEN') %} {% endif %} Your {{doors}} on {{ now().strftime("%d %h %Y, at %I:%M:%S %p") }}. Please check the garage snapshot below. data: images: - "{{ '/home/homeassistant/.homeassistant/www/downloads/camera/garage/garage_' ~ (states.automation.notify_garage_door_status.last_triggered ~ '').replace('-','_') .replace(' ', '_').replace(':','_').replace('.','_').replace('+','_') ~ '.jpg' }}" - service_template: > {% if trigger.to_state.state | lower == "on" %} switch.turn_on {% else %} switch.turn_off {% endif%} data: entity_id: switch.garage # Notify Entry Door Status ############################################################################### - alias: Voice Notify Entry Door Status initial_state: true trigger: platform: state entity_id: - binary_sensor.aeotec_zw120_door_window_sensor_gen5_sensor - binary_sensor.back_door_sensor_sensor condition: - condition: template value_template: "{{ trigger.from_state.state not in ['unavailable', 'unknown'] }}" action: - service: script.voice_notify data_template: message: > {% if trigger.to_state.state | lower == "on" %} Your {{ trigger.to_state.attributes.friendly_name.replace('Sensor', '') }} is OPEN, {% if states('alarm_control_panel.home') == 'armed_home' or states('alarm_control_panel.home') == 'armed_away' %} But your home security system is ON. {% endif %} {% elif trigger.to_state.state | lower == "off" %} Your {{ trigger.to_state.attributes.friendly_name.replace('Sensor', '') }} is CLOSED! {% endif %} greeting: "no" only_at_night: > {% if states('alarm_control_panel.home') == 'armed_home' %} no {% else %} yes {% endif %} - service: script.led_message data_template: message: > {% if trigger.to_state.state | lower == "on" %} Your {{ trigger.to_state.attributes.friendly_name.replace('Sensor', '') |lower -}} is open. {% else %} Your {{ trigger.to_state.attributes.friendly_name.replace('Sensor', '') |lower -}} is closed. {% endif %} - alias: When Front Door Opens Turn Front Room Lights ON initial_state: true trigger: platform: state entity_id: binary_sensor.aeotec_zw120_door_window_sensor_gen5_sensor to: "on" condition: - condition: template value_template: "{{ states('sun.sun') == 'below_horizon' }}" action: - service: switch.turn_on entity_id: switch.front_room - alias: When Back Door Opens Turn Kitchen Lights ON initial_state: true trigger: platform: state entity_id: binary_sensor.back_door_sensor_sensor to: "on" condition: - condition: template value_template: "{{ states('sun.sun') == 'below_horizon' }}" action: - service: switch.turn_on entity_id: switch.kitchen ################################################################################ # When I open the garage door # if it is dark outside, OR # both the garage doors are closed # ==> turn the Garage lights ON, and start timer! ################################################################################ - alias: Garage Lights On When Door is Opened initial_state: true trigger: platform: state entity_id: binary_sensor.garage_door_sensor_sensor to: "on" condition: condition: or conditions: - condition: template value_template: '{{states.sun.sun.state == "below_horizon"}}' - condition: and conditions: - condition: template value_template: "{{ states('binary_sensor.single_car_garage_door_tilt_sensor_sensor') == 'off' }}" - condition: template value_template: "{{ states('binary_sensor.two_car_garage_door_tilt_sensor_sensor') == 'off' }}" action: - service: switch.turn_on entity_id: switch.garage - service: timer.start entity_id: timer.timer_garage