Комментарии 11
- просто использовать delay или его аналог, подходит к случаям когда заранее известно, что ничего другого в это время не произойдет.
- вспомогательные триггеры, тут несколько вариантов, наиболее простой в реализации это добавление счетчиков, значение которых обновляется в соответствии с прошедшим временем (по millis к примеру), в таком случае условием для триггера будет значение этого счетчика. Похожее у нас используется для событий по времени.
при срабатывании триггера должно произойти несколько действийНе совсем это имел ввиду: «триггер» A должен сработать, когда сначала был открыт кран, а затем включен насос, а не просто когда кран открыт и мотор включен. Причем, насос может включаться вручную. Т.е сам по себе триггер на открытие крана не нужен. А ведь может быть еще и другой «триггер» В(аварийный), который срабатывает когда, сначала включается мотор, а потом открывается кран.
Понятие «событийный адрес» не нужно.Мне кажется, случай с насосом как раз является таким примером. Хотя если и он не достаточно показателен(можно просто по событию включения проверять открытость крана), можно предствить цепочку из трех и более событий.
P.S. Чтобы лишний раз не путаться в терминах, можно назвать «триггеры» А и В, например, «метатриггеры».
Заполнять их значения по действию с соответствующих триггеров.Ничего сложного вроде как нет.
Другой вариант: для каждого событийного адреса на основании предыдущих состояний формировать ожидаемые(несколько, так как инициирующее(первое в цепочке) событие может произойти еще раз после начала отслеживания) состояния и сравнивать их с текущим. При совпадении по маске, продолжать отслеживать цепочку. При наступлении ключевого события сработает «метатриггер». Из плюсов этого варианта — большая скорость реагирования, поскольку не нужно смотреть историю — мы ожидали ключевое событие.
На самом деле, возможна произвольная комбиная отслеживания и проверки истории. Событие, при котором происходит и проверка истории и запуск отслеживания можно назвать базовым. Но можно пойти еще дальше и допустить несколько базовых событий(дерево точек отсчета как вперед так и назад во времени), сброс ожидания событий по таймеру…
Также нужно помнить, что каждый триггер, который должен срабатывать повторно, должен где-то сбрасываться.
Например, можно использовать вот это
За эти годы появилось много новых интересных решений для управления устройствами. Если вы хотите автоматизировать умный дом или создать систему управления для бизнеса, вот несколько вариантов, которые я могу порекомендовать:
Node-RED – это простая платформа с визуальным программированием. Она позволяет соединять различные устройства, датчики и сервисы в удобные потоки, что идеально подходит для быстрого прототипирования.
Home Assistant и openHAB – отличные решения для создания умного дома. Они используют события для управления устройствами, что позволяет легко настроить даже сложные сценарии взаимодействия.
Eclipse 4diac – если вам нужна система для промышленной автоматизации, эта платформа поможет объединить несколько устройств в одну сеть и обеспечить надежную работу.
ThingsBoard – универсальная платформа для IoT, которая помогает собирать данные с датчиков, управлять устройствами и быстро реагировать на события в реальном времени.
Кроме того, если вам нужно масштабное решение, можно обратить внимание на облачные сервисы, такие как AWS IoT и Azure IoT. Они отлично подходят для работы с большим количеством данных и устройств.
Надеюсь, что эти советы помогут вам выбрать подходящее решение для ваших проектов. Удачи и успехов!
Автоматическая генерация программного кода микроконтроллера на основе событийно-ориентированной модели