Загрузка данных


- 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"