2019-03-11 13:18:15 +01:00
|
|
|
Template Cover with Endstops
|
|
|
|
============================
|
|
|
|
|
|
|
|
.. seo::
|
|
|
|
:description: An example of how to integrate covers with endstops in ESPHome.
|
|
|
|
:image: window-open.jpg
|
|
|
|
|
|
|
|
The following is an example configuration for controlling covers (like window blinds etc)
|
|
|
|
with ESPHome. This guide assumes that the cover is set up with two endstops at the top
|
|
|
|
and the bottom. When these endstops are reached, the cover will automatically stop.
|
|
|
|
|
|
|
|
To protect the motors from spinning indefinitely (in case an endstop fails) the motors
|
|
|
|
also have a maximum run time - after 3 minutes they will automatically turn off even if the
|
|
|
|
endstop is not reached.
|
|
|
|
|
|
|
|
ESPHome uses Home Assistant's cover architecture model which has two states: "OPEN" or
|
|
|
|
"CLOSED". We will map OPEN to "cover is at the top endstop" and CLOSE to "cover is at the bottom".
|
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
switch:
|
|
|
|
# The switch that turns the UP direction on
|
|
|
|
- platform: gpio
|
|
|
|
pin: D1
|
|
|
|
id: up_pin
|
|
|
|
# Use interlocking to keep at most one of the two directions on
|
|
|
|
interlock: &interlock_group [up_pin, down_pin]
|
|
|
|
# If ESP reboots, do not attempt to restore switch state
|
|
|
|
restore_mode: always off
|
|
|
|
|
|
|
|
# The switch that turns the DOWN direction on
|
|
|
|
- platform: gpio
|
|
|
|
pin: D2
|
|
|
|
id: down_pin
|
|
|
|
interlock: *interlock_group
|
|
|
|
restore_mode: always off
|
|
|
|
|
|
|
|
|
|
|
|
binary_sensor:
|
|
|
|
- platform: gpio
|
|
|
|
pin: D4
|
|
|
|
id: top_endstop
|
|
|
|
- platform: gpio
|
|
|
|
pin: D5
|
|
|
|
id: bottom_endstop
|
|
|
|
|
|
|
|
cover:
|
2019-05-15 11:49:05 +02:00
|
|
|
- platform: endstop
|
2019-03-11 13:18:15 +01:00
|
|
|
name: "My Endstop Cover"
|
|
|
|
id: my_cover
|
|
|
|
open_action:
|
|
|
|
- switch.turn_on: up_pin
|
2019-05-15 11:49:05 +02:00
|
|
|
open_duration: 2min
|
|
|
|
open_endstop: top_endstop
|
|
|
|
|
2019-03-11 13:18:15 +01:00
|
|
|
close_action:
|
|
|
|
- switch.turn_on: down_pin
|
2019-05-15 11:49:05 +02:00
|
|
|
close_duration: 2min
|
|
|
|
close_endstop: bottom_endstop
|
2019-03-11 13:18:15 +01:00
|
|
|
stop_action:
|
|
|
|
- switch.turn_off: up_pin
|
|
|
|
- switch.turn_off: down_pin
|
2019-05-15 11:49:05 +02:00
|
|
|
max_duration: 3min
|
2019-03-11 13:18:15 +01:00
|
|
|
|
|
|
|
You can then optionally also add manual controls to the cover with three buttons:
|
|
|
|
open, close, and stop.
|
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
binary_sensor:
|
|
|
|
# [...] - Previous binary sensors
|
|
|
|
- platform: gpio
|
|
|
|
id: open_button
|
|
|
|
pin: D3
|
|
|
|
on_press:
|
|
|
|
- cover.open: my_cover
|
|
|
|
- platform: gpio
|
|
|
|
id: close_button
|
|
|
|
pin: D6
|
|
|
|
on_press:
|
|
|
|
- cover.close: my_cover
|
|
|
|
- platform: gpio
|
|
|
|
id: stop_button
|
|
|
|
pin: D7
|
|
|
|
on_press:
|
|
|
|
- cover.stop: my_cover
|
|
|
|
|
|
|
|
See Also
|
|
|
|
--------
|
|
|
|
|
|
|
|
- :doc:`/guides/automations`
|
|
|
|
- :doc:`/components/cover/template`
|
|
|
|
- :doc:`dual-r2-cover`
|
|
|
|
- :ghedit:`Edit`
|