Решил поделится своим флоу для тестирования датчика присутствия в туалете или ванной комнате. Почему именно там, ответ прост. Обычно данные заведения посещает один человек, а не группа и соответственно флоу не рассчитано на посещение данного заведения в режиме: один зашел, потом второй... Все просто, если один зашел - то он и должен выйти. Часть флоу выглядит как на картинке снизу.
Во флоу используется плагин node-red-contrib-spruthub от автора нашего Спрут сообщества. В данном флоу почти все данные записываются в Global переменные, они потом будут необходимы для работы логики или использоваться в других местах. Для примера, global переменная "Вутри", у меня используется для блокировки управления света по датчику движения.
Краткое описание работы флоу. Открывается дверь и сразу включается свет. В течении 10 секунд (это время задано в параметрах устройства датчика движения в Спрутхабе) надо зайти и закрыть дверь и тогда ваше присутствие будет обнаружено. Если не входить, то свет выключится с задержкой в 1 минуту по таймеру, а если закрыть дверь не заходя - то сразу. После обнаружения присутствия, при выходе из помещения и закрытии двери - свет отключится сразу. Если при этом не закрыли дверь, то с задержкой в одну минуту и при этом статус присутствия тоже сбросится. Многие функции написаны для отображения статуса при отладке алгоритма. Я специально сделал датчик присутствия в HomeKit для контроля работы алгоритма.
Вроде все, для блога достаточно. У кого нет Спрутхаба, вы легкоможете переделать все на Conbee или z2m. Удачного тестирования. Флоу найдете по ссылке.
Вместо акцента на конкретных действиях общие технические ноды, в которых может скрываться любая логика. Подпись актуального действия не форсируется. Разных действий в одной ноде может быть много. Например Ванная Свет как включает, так и выключает его, что лучше было бы представлять отдельными нодами.
Управление часто скрыто в сообщения (msg.payload, это как redux action.type) из-за чего наглядность страдает.
True и False выходы не подписаны по умолчанию. Выходов мб и больше. Если единственный выход это False, то это не очевидно.
И т.д.
Спасибо за отзыв, но на самом деле все еще гораздо хуже. Флоу уже немного другое, но все равно находятся действия, которые делают его не стабильным на 100%. Предела совершенства - нет, поэтому - это в блог, кто-то может улучшит😀