В первой части моей статьи мы проговорили о "железках", о том как их подключить и настроить. Несмотря на то, что мой пример построен на блоке WirenBoard WB-MR6C v.2, текущая статья будет интересна всем, кто ищет решение по управлению гаражными воротами и в частности тем, кто использует в качестве основного интерфейса управления воротами экосистему Apple с протоколом HomeKit и приложением Дом.
В данном приложении имеется отдельный сервис - Гаражные ворота, у которого есть три основные характеристики Текущий режим, Целевой режим и Обнаружение препятствия.
Текущий режим - это непосредственный статус ворот, который может иметь 5 значений:
- Открыты
- Закрыты
- Открываются
- Закрываются
- Остановлены
Целевой режим - это то, что мы хотим получить от ворот, нажимая иконку в приложении. Имеет только два значения:
- Открыты
- Закрыты
Обнаружение препятствий - название режима говорит само за себя. Я не рассматриваю использование данного режима в своем кейсе.
В зависимости от комбинации значений Текущего и Целевого режима формируется статус ворот в приложении Дом и изменяется пиктограмма. Ниже я привожу примеры формирования статусов в зависимости от разных комбинаций, но основными из них являются только 4, которые я залил зеленым маркером.
Если бы мы управляли воротами только из интерфейса приложение, то Целевой режим задавался бы как раз нажатием на иконку, но, как мне кажется, у владельцев данной автоматики как минимум имеется физическая кнопка, которая управляет приводом ворот, поэтому надо скриптами задавать значение как текущему, так и целевому режиму.
В первой части статьи я говорил о том, что привод управляется замыканием сухих контактов, а это действие и является процессом формирования Целевого режима.
И так, для начала создаем виртуальный аксессуар Гаражные ворота и пишем первый блочный сценарий.
Изменение целевого режима приводит к замыканию сухого реле. Здесь будьте внимательны! В первой части я рассказывал о том, что мое реле само отключится примерно через 1 секунду. Если будете делать на основе других компонентов, то надо предусмотреть отключение реле или через задержку в сценарии или настройках самого реле.
Далее уже сценарий поинтереснее, которым мы будем формировать статус ворот.
Глобально в сценарии 4 независимых блока Если, в которых исходя из статуса датчиков касания, можно сформировать наши 4 основные статуса.
И вот здесь обязательно надо проговорить о следующем. В каждом блоке Тогда вы можете видеть, как я деактивирую сначала наш первый сценарий замыкания сухих контактов, потом формирую статус ворот и опять активирую сценарий. Сделано это для того, чтоб при задании Целевого статуса ворот у нас не произошла реакция на запуск первого сценария, который приводится в действие как раз изменением Целевого режима. А чтобы соблюсти последовательность в выполнении блоков внутри блока Тогда, нам ОБЯЗАТЕЛЬНО надо в настройках сценария активировать режим "Последовательное выполнение".
Что в итоге?
- Мы сделали два сценария, один замыкает сухое реле, второй формирует статусы ворот.
- Реализовать можно на различных компонентах (даже упростить, убрав один датчик касания)
- Также можно еще глубже погрузиться и прикрутить еще статусы обнаружения препятствия.
- Без проблем прокидывается в Яндекс
И все это благодаря проекту Sprut.hub ))
З.Ы. Хочется доработать эти сценарий до уровня плагина, когда ты просто указываешь два свои датчика касания, какой из них верхний, какой нижний и всё.
Можно сценарий для спрута?
На фото не всё читаемо.
Спасибо автору.