Загрузка данных
- alias: "Ворота: Отслеживание конечного автомата"
id: garage_door_state_tracker
mode: restart
trigger:
- platform: state
entity_id: switch.maingaragedoor_state
to: "on" # ТРИГГЕР 1: Реагируем ТОЛЬКО на само нажатие (включение), игнорируя автовыключение реле
id: relay_changed
- platform: state
entity_id: binary_sensor.maingaragedoor_garage_door_contact
to: "off" # ТРИГГЕР 2: Магнит сомкнулся — ворота физически ЗАКРЫЛИСЬ
id: reed_closed
- platform: state
entity_id: binary_sensor.maingaragedoor_garage_door_contact
to: "on" # ТРИГГЕР 3: Магнит разомкнулся — ворота НАЧАЛИ ОТКРЫВАТЬСЯ
id: reed_opened
action:
- choose:
# 1. Геркон замкнулся (физическое закрытие)
- conditions:
- condition: trigger
id: reed_closed
sequence:
- service: input_select.select_option
target:
entity_id: input_select.garage_door_state
data:
option: "closed"
# 2. Геркон разомкнулся (ворота поехали вверх от физического пульта)
- conditions:
- condition: trigger
id: reed_opened
- condition: state
entity_id: input_select.garage_door_state
state: "closed"
sequence:
- service: input_select.select_option
target:
entity_id: input_select.garage_door_state
data:
option: "opening"
- delay: "00:00:15" # Время полного открытия
- condition: state
entity_id: input_select.garage_door_state
state: "opening"
- service: input_select.select_option
target:
entity_id: input_select.garage_door_state
data:
option: "open"
# 3. Нажали кнопку управления в интерфейсе Home Assistant
- conditions:
- condition: trigger
id: relay_changed
sequence:
- choose:
# Если были закрыты -> открываем
- conditions:
- condition: state
entity_id: input_select.garage_door_state
state: "closed"
sequence:
- service: input_select.select_option
target:
entity_id: input_select.garage_door_state
data:
option: "opening"
- delay: "00:00:15"
- condition: state
entity_id: input_select.garage_door_state
state: "opening"
- service: input_select.select_option
target:
entity_id: input_select.garage_door_state
data:
option: "open"
# Если открывались -> мы их остановили
- conditions:
- condition: state
entity_id: input_select.garage_door_state
state: "opening"
sequence:
- service: input_select.select_option
target:
entity_id: input_select.garage_door_state
data:
option: "stopped_opening"
# Если были открыты -> закрываем
- conditions:
- condition: state
entity_id: input_select.garage_door_state
state: "open"
sequence:
- service: input_select.select_option
target:
entity_id: input_select.garage_door_state
data:
option: "closing"
# Если закрывались -> мы их остановили
- conditions:
- condition: state
entity_id: input_select.garage_door_state
state: "closing"
sequence:
- service: input_select.select_option
target:
entity_id: input_select.garage_door_state
data:
option: "stopped_closing"
# Если были остановлены при открытии -> едут закрываться
- conditions:
- condition: state
entity_id: input_select.garage_door_state
state: "stopped_opening"
sequence:
- service: input_select.select_option
target:
entity_id: input_select.garage_door_state
data:
option: "closing"
# Если были остановлены при закрытии -> едут открываться
- conditions:
- condition: state
entity_id: input_select.garage_door_state
state: "stopped_closing"
sequence:
- service: input_select.select_option
target:
entity_id: input_select.garage_door_state
data:
option: "opening"
- delay: "00:00:15"
- condition: state
entity_id: input_select.garage_door_state
state: "opening"
- service: input_select.select_option
target:
entity_id: input_select.garage_door_state
data:
option: "open"