-
Notifications
You must be signed in to change notification settings - Fork 1
/
garage_door.yaml
214 lines (195 loc) · 6.92 KB
/
garage_door.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
################################################################
## Packages / Garage Door
################################################################
homeassistant:
customize:
package.node_anchors:
customize: &customize
package: 'garage_door'
expose: &expose
<<: *customize
haaska_hidden: false
homebridge_hidden: false
switch.garage_door_relay:
<<: *expose
friendly_name: "Garage Door"
icon: mdi:light-switch
binary_sensor.garage_door:
<<: *customize
friendly_name: "Garage Door Open?"
cover.garage_door:
<<: *customize
friendly_name: "Garage Door"
device_class: garage
cover.garage_door_homekit:
<<: *customize
friendly_name: "Garage Door (for Homekit)"
hidden: true
device_class: garage
automation.garage_door_still_open:
<<: *customize
friendly_name: "Garage Door Open Alert"
automation.garage_door_open_when_interior_door_open:
<<: *customize
friendly_name: "Open Garage Door on Interior Door Opened"
automation.garage_door_open_when_interior_door_open_disabler:
<<: *customize
friendly_name: "Disable 'Open Garage Door on Interior Door Opened' after 10m"
group:
garage_door:
name: Garage Door
entities:
- cover.garage_door
- sensor.garage_door_status
- sensor.garage_door_position
script:
garage_door_open_cover:
sequence:
- condition: template
value_template: "{{ states('sensor.garage_door_status') in ('closed','closing','stopped') }}"
- service: switch.turn_on
data:
entity_id: switch.garage_door_relay
garage_door_stop_cover:
sequence:
- condition: template
value_template: "{{ states('sensor.garage_door_position') not in ('0','100') }}"
- service: switch.turn_on
data:
entity_id: switch.garage_door_relay
garage_door_close_cover:
sequence:
- condition: template
value_template: "{{ states('sensor.garage_door_status') in ('open','opening','stopped') }}"
- service: switch.turn_on
data:
entity_id: switch.garage_door_relay
garage_door_close_ios_response_yes:
sequence:
- service: cover.close_cover
entity_id: cover.garage_door
binary_sensor:
- platform: template
sensors:
garage_door:
friendly_name: "Garage Door"
device_class: garage_door
value_template: "{{ states('sensor.vision_zg8101_garage_door_detector_alarm_level')|int == 255 }}"
sensor:
- platform: template
sensors:
garage_door_status:
friendly_name: "Garage Door Status"
value_template: >-
{% if states('sensor.vision_zg8101_garage_door_detector_alarm_level')|int == 255 and states('sensor.vision_zg8101_garage_door_detector_burglar')|int == 2 %}
opening
{% elif states('sensor.vision_zg8101_garage_door_detector_alarm_level')|int == 0 and states('sensor.vision_zg8101_garage_door_detector_burglar')|int == 254 %}
closing
{% elif is_state('binary_sensor.vision_zg8101_garage_door_detector_sensor','off') or (states('sensor.vision_zg8101_garage_door_detector_alarm_level')|int == 0 and states('sensor.vision_zg8101_garage_door_detector_burglar')|int == 2) %}
closed
{% elif is_state('binary_sensor.vision_zg8101_garage_door_detector_sensor','on') or (states('sensor.vision_zg8101_garage_door_detector_alarm_level')|int == 255 and states('sensor.vision_zg8101_garage_door_detector_burglar')|int == 254) %}
open
{% endif %}
garage_door_position:
friendly_name: "Garage Door Position"
value_template: >-
{% if states('sensor.garage_door_status') == 'open' %}
100
{% elif states('sensor.garage_door_status') == 'closed' %}
0
{% elif states('sensor.garage_door_status') in ('opening','closing') %}
50
{% endif %}
cover:
- platform: template
covers:
garage_door:
friendly_name: "Garage Door"
position_template: "{{ states('sensor.garage_door_position')|float }}"
open_cover:
service: script.garage_door_open_cover
close_cover:
service: script.garage_door_close_cover
stop_cover:
service: script.garage_door_stop_cover
icon_template: >-
{% if states('sensor.garage_door_position')|float > 0 %}
mdi:garage-open
{% else %}
mdi:garage
{% endif %}
garage_door_homekit:
friendly_name: "Garage Door (for Homekit)"
position_template: "{{ state_attr('cover.garage_door','current_position') }}"
open_cover:
- service: script.alarm_disarm
- service: cover.open_cover
entity_id: cover.garage_door
close_cover:
- service: cover.close_cover
entity_id: cover.garage_door
stop_cover:
- service: cover.stop_cover
entity_id: cover.garage_door
automation:
- alias: "Garage Door Still Open"
trigger:
- platform: state
entity_id:
- cover.garage_door
to: 'open'
for: '00:00:10'
- platform: state
entity_id:
- cover.garage_door
to: 'open'
for: '00:05:00'
- platform: state
entity_id:
- cover.garage_door
to: 'open'
for: '00:15:00'
- platform: state
entity_id:
- cover.garage_door
to: 'open'
for: '00:30:00'
action:
- service: notify.mobile_app_spacecell
data_template:
message: "Garage door's been open for {{ relative_time(states.cover.garage_door.last_changed) }}. Close it?"
data:
attachment:
content-type: "jpeg"
push:
category: camera
entity_id: camera.yi_home_camera_garage
action_data:
entity_id: camera.yi_home_camera_garage
yes_script: "script.garage_door_close_ios_response_yes"
- alias: garage_door_open_when_interior_door_open
trigger:
- platform: state
entity_id: binary_sensor.garage_interior_door
from: 'off'
to: 'on'
condition:
- condition: state
entity_id: cover.garage_door
state: 'closed'
action:
- service: cover.open_cover
entity_id: cover.garage_door
- service: homeassistant.turn_off
data:
entity_id: automation.garage_door_open_when_interior_door_open
- alias: garage_door_open_when_interior_door_open_disabler
trigger:
- platform: state
entity_id: automation.garage_door_open_when_interior_door_open
to: 'on'
for: 00:10:00
action:
- service: homeassistant.turn_off
data:
entity_id: automation.garage_door_open_when_interior_door_open