Работа системы на базе событий
Основные понятия
Событийная модель — это подход к построению системы, где она реагирует на различные события в реальном времени.
Компоненты событийной модели:
- События — сигнал изменения состояния системы, которые инициируют определенные действия
- Источники событий — компоненты, генерирующие события (датчики, пользовательский интерфейс, внешние системы)
- Обработчики событий — код на контроллере, управляющий обработкой и выполняющий действия в ответ на события
- Шина событий — механизм передачи событий между устройствами системы, как внутри контроллера, так и через MESH-сеть
Особенности обработки событий
Асинхронная обработка позволяет:
- Параллельное выполнение обработчиков
- Независимую работу компонентов
- Масштабирование системы
Структура событий
Каждое событие содержит:
- Источник - компонент системы вызывающий событие
- Свойство - тип свойства, с которым это событие действует
- Значение - числовое значение свойства
Принцип работы
Последовательность действий событий
Источники событий ➡ События ➡ Шина событий ➡ Обработчики событий
Обработчиками событий могут являться свойства
устройств, в таком случае они примут значение этого события напрямую или в соответствии с логическими условиями, записанными на этих устройствах.
Пример работы событий
- Событие от выключателя, которое по условиям инвертирует значение свойства
Питание
наЛампе
- Событие от управления, которое изменяет значение свойства
Питание
наЛампе
- Событие от управления, которое изменяет значение свойства
Яркость
наЛампе
- При изменении свойств устройства, появляются события, которые обрабатываются логикой
- События, которые действую на выходы контроллера
Еще Пример
К контроллеру подключен датчик 1wire, у датчика в конфигурации установлено свойство Температура
, теперь при каждом периоде опроса показаний датчика, будет формироваться событие:
- Источник - ИД датчика
- Свойство -
Температура
- Значение - 24.7
это событие будет приниматься всеми устройствами на контроллере (на всех контроллера объединенных в Mesh-сеть), где указан ИД этого датчика