-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
centurion-d5-evo.yaml
269 lines (242 loc) · 6.47 KB
/
centurion-d5-evo.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
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
substitutions:
name: "centurion-d5-evo"
friendly_name: "Centurion D5 Evo"
comment: "Control your Centurion D5 Evo gate motor remotely."
project_name: "wernerhp.esphome_centurion_d5_evo"
project_version: "1.0.0"
relay_1_pin: GPIO32
relay_2_pin: GPIO33
relay_3_pin: GPIO25
relay_4_pin: GPIO26
led_pin: GPIO23
esphome:
name: ${name}
friendly_name: ${friendly_name}
comment: ${comment}
name_add_mac_suffix: true
project:
name: ${project_name}
version: ${project_version}
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
level: INFO
# Enable Home Assistant API
api:
ota:
dashboard_import:
package_import_url: github://wernerhp/esphome.centurion_d5_evo/centurion-d5-evo.yaml@main
import_full_config: false
wifi:
power_save_mode: NONE
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
improv_serial:
captive_portal:
binary_sensor:
- platform: gpio
pin: ${led_pin}
id: status_led
name: "Status LED"
entity_category: diagnostic
icon: mdi:led-outline
disabled_by_default: true
publish_initial_state: true
filters:
delayed_on_off: 100ms
on_multi_click:
- timing: # Closed
- OFF for at least 2000ms
then:
- logger.log: "Closed"
- text_sensor.template.publish:
id: status
state: "Closed"
- lambda: |-
id(gate).current_operation = CoverOperation::COVER_OPERATION_IDLE;
id(gate).publish_state();
invalid_cooldown: 100ms
- timing: # Open
- ON for at least 2000ms
then:
- logger.log: "Open"
- text_sensor.template.publish:
id: status
state: "Open"
- lambda: |-
id(gate).current_operation = CoverOperation::COVER_OPERATION_IDLE;
id(gate).publish_state();
invalid_cooldown: 100ms
- timing: # Closing
- ON for 100ms to 200ms
- OFF for 100ms to 200ms
- ON for 100ms to 200ms
- OFF for 100ms to 200ms
- ON for 100ms to 200ms
- OFF for 100ms to 200ms
- ON for 100ms to 200ms
- OFF for 100ms to 200ms
- ON for 100ms to 200ms
- OFF for 100ms to 200ms
- ON for 100ms to 200ms
- OFF for 100ms to 200ms
- ON for 100ms to 200ms
- OFF for 100ms to 200ms
- ON for 100ms to 200ms
- OFF for 100ms to 200ms
then:
- logger.log: "Closing"
- text_sensor.template.publish:
id: status
state: "Closing"
- lambda: |-
id(gate).current_operation = CoverOperation::COVER_OPERATION_CLOSING;
id(gate).publish_state();
invalid_cooldown: 100ms
- timing: # Opening
- ON for 200ms to 400ms
- OFF for 200ms to 400ms
- ON for 200ms to 400ms
- OFF for 200ms to 400ms
- ON for 200ms to 400ms
- OFF for 200ms to 400ms
- ON for 200ms to 400ms
- OFF for 200ms to 400ms
then:
- logger.log: "Opening"
- text_sensor.template.publish:
id: status
state: "Opening"
- lambda: |-
id(gate).current_operation = CoverOperation::COVER_OPERATION_OPENING;
id(gate).publish_state();
invalid_cooldown: 100ms
- timing: # Pillar light override
- ON for 200ms to 300ms
- OFF for 1700ms to 1800ms
then:
- logger.log: "Pillar light override"
- text_sensor.template.publish:
id: status
state: "Pillar light override"
invalid_cooldown: 100ms
- timing: # No Mains
- ON for 200ms to 300ms
- OFF for 200ms to 300ms
- ON for 200ms to 300ms
- OFF for 1200ms to 1400ms
then:
- logger.log: "No Mains"
- text_sensor.template.publish:
id: status
state: "No Mains"
invalid_cooldown: 100ms
- timing: # Battery Low
- ON for 200ms to 300ms
- OFF for 200ms to 300ms
- ON for 200ms to 300ms
- OFF for 200ms to 300ms
- ON for 200ms to 300ms
- OFF for 500ms to 1000ms
then:
- logger.log: "Low Battery"
- text_sensor.template.publish:
id: status
state: "Low Battery"
invalid_cooldown: 100ms
output:
- platform: gpio
pin: ${relay_1_pin}
id: relay_1
- platform: gpio
pin: ${relay_2_pin}
id: relay_2
- platform: gpio
pin: ${relay_3_pin}
id: relay_3
button:
- platform: output
output: relay_1
id: button_1
disabled_by_default: true
duration: 1000ms
name: "Open / Auto Close"
icon: "mdi:gate"
- platform: output
output: relay_2
id: button_2
disabled_by_default: true
duration: 3000ms # Autoclose override time
name: "Open / Manual Close"
icon: "mdi:gate"
- platform: output
output: relay_3
id: button_3
duration: 1000ms
name: "Pedestrian"
icon: "mdi:walk"
switch:
- platform: gpio
pin:
number: ${relay_4_pin}
id: relay_4
icon: "mdi:lock"
name: "Lock"
cover:
- platform: template
name: "Gate"
device_class: gate
id: gate
lambda: |-
if (id(status).state == "Open") {
return COVER_OPEN;
} else if (id(status).state == "Closed") {
return COVER_CLOSED;
} else {
return {};
}
open_action:
- button.press: button_1
close_action:
- button.press: button_1
stop_action:
- button.press: button_1
optimistic: false
# # Sensors for ESP version and WIFI information
text_sensor:
- platform: template
icon: mdi:information-outline
id: status
name: "Status"
# Installed version
- platform: template
name: "Device Version"
id: device_version
icon: "mdi:label-outline"
entity_category: diagnostic
lambda: |-
return {"${project_version}"};
update_interval: 6h
# ESPHome version
- platform: version
hide_timestamp: true
name: 'ESPHome Version'
# IP address and connected SSID
- platform: wifi_info
ip_address:
name: 'IP Address'
icon: mdi:wifi
ssid:
name: 'SSID'
icon: mdi:wifi-strength-2
sensor:
# Uptime
- platform: uptime
name: Uptime Sensor
# WiFi signal
- platform: wifi_signal
name: "WiFi Signal"
update_interval: 120s