mysmarthome/packages/door_sensors.yaml

334 lines
12 KiB
YAML
Raw Normal View History

2019-04-17 22:46:06 +00:00
homeassistant:
customize:
################################################
## Node Anchors
################################################
package.node_anchors:
customize: &customize
package: 'door_sensors'
hidden: &hidden
<<: *customize
hidden: true
zwave.two_car_garage_door_tilt_sensor:
friendly_name: 2-Car Garage Door Sensor
<<: *hidden
zwave.single_car_garage_door_tilt_sensor:
friendly_name: 1-Car Garage Door Sensor
<<: *hidden
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.state == 'on' %}
Open
{% elif states.binary_sensor.single_car_garage_door_tilt_sensor_sensor.state == 'off' %}
Closed
{% else %}
Unknown
{% endif %}
icon_template: >-
{% set door_status = states.binary_sensor.single_car_garage_door_tilt_sensor_sensor.state |d('unknown') %}
{% 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.state == 'on' %}
Open
{% elif states.binary_sensor.two_car_garage_door_tilt_sensor_sensor.state == '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.state |d('unknown') %}
{% 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
# When the garage is opened, it sends an actionable ios notification with an
# option to close the garage door. This iso actionable notification only occurs
# when garage door is open and not when it is 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: "{% if trigger.from_state %} True {% else %} False {% endif %}"
- condition: template
value_template: "{{ trigger.to_state.state != 'unknown' }}"
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.voice_notify
data_template:
message: >
{% set doors = "" %}
{% if states.binary_sensor.two_car_garage_door_tilt_sensor_sensor.state == "on" and
states.binary_sensor.single_car_garage_door_tilt_sensor_sensor.state == "on" %}
{% set doors = "Atention! Both Garage Doors are OPEN" %}
{% elif states.binary_sensor.two_car_garage_door_tilt_sensor_sensor.state == "off" and
states.binary_sensor.single_car_garage_door_tilt_sensor_sensor.state == "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 }}
- 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.state == "on" and
states.binary_sensor.single_car_garage_door_tilt_sensor_sensor.state == "on" %}
{% set doors = "Both Garage Doors are OPEN" %}
{% elif states.binary_sensor.two_car_garage_door_tilt_sensor_sensor.state == "off" and
states.binary_sensor.single_car_garage_door_tilt_sensor_sensor.state == "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.state == 'off' else 'OPEN')
~ " and " ~ states.binary_sensor.two_car_garage_door_tilt_sensor_sensor.name ~ " is " ~
('Closed' if states.binary_sensor.two_car_garage_door_tilt_sensor_sensor.state == '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
################################################################################
# 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.state == 'off' }}"
- condition: template
value_template: "{{ states.binary_sensor.two_car_garage_door_tilt_sensor_sensor.state == 'off' }}"
action:
- service: switch.turn_on
entity_id: switch.garage
- service: timer.start
entity_id: timer.timer_garage
# Notify Entry Door Status
###############################################################################
- alias: 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: "{% if trigger.from_state %} True {% else %} False {% endif %}"
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.simplisafe.state == 'armed_home' or
states.alarm_control_panel.simplisafe.state == '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.simplisafe.state == 'armed_home' %}
no
{% else %}
yes
{% endif %}
# Turn ON and OFF basement ambient lights
###############################################################################
- alias: Basement Accent Lights ON When Basement Door Opened
initial_state: true
trigger:
platform: state
entity_id: binary_sensor.basement_door_sensor_sensor
to: 'on'
condition:
- condition: state
entity_id: input_boolean.light_automations
state: 'on'
action:
- service: homeassistant.turn_on
entity_id: switch.rf_switch_one
- alias: Basement Accent Lights OFF After 5 minutes
initial_state: true
trigger:
platform: state
entity_id:
- switch.rf_switch_one
to: 'on'
for:
minutes: 5
condition:
- condition: state
entity_id: input_boolean.light_automations
state: 'on'
action:
- service: homeassistant.turn_off
entity_id: switch.rf_switch_one