Также специальная надстройка над ядром позволяет устройствам информировать Java контроллер о событиях(также используется механизм хранения истории событий непосредственно на устройстве).
Вот пример вывода отфильтрованного лога Java контроллера по некоторым событиям:
09:25:38:255[16][Device [294]0001:0004 Диммер] Got event:StartEvent, rec_id:1, timestamp:1649496340936
09:25:45:229[16][Device [294]0001:0004 Диммер] Got event:CommandEvent, rec_id:2, timestamp:1649496347860, src:DEVICE_BUS, type:SET_POWER, ch_num:1, param:0x35
09:25:49:102[16][Device [294]0001:0004 Диммер] Got event:CommandEvent, rec_id:3, timestamp:1649496351735, src:DEVICE_BUS, type:INC_POWER, ch_num:1
09:25:50:744[16][Device [294]0001:0004 Диммер] Got event:CommandEvent, rec_id:4, timestamp:1649496353378, src:DEVICE_BUS, type:DEC_POWER, ch_num:1
09:25:51:994[16][Device [294]0001:0004 Диммер] Got event:CommandEvent, rec_id:5, timestamp:1649496354626, src:DEVICE_BUS, type:TURN_OFF, ch_num:1
09:25:53:600[16][Device [294]0001:0004 Диммер] Got event:CommandEvent, rec_id:6, timestamp:1649496356231, src:DEVICE_BUS, type:TURN_ON, ch_num:1
09:25:54:676[16][Device [294]0001:0004 Диммер] Got event:CommandEvent, rec_id:7, timestamp:1649496357308, src:DEVICE_BUS, type:SWITCH, ch_num:1
09:25:57:557[16][Device [294]0001:0004 Диммер] Got event:CommandEvent, rec_id:8, timestamp:1649496360212, src:DEVICE_MANUAL, type:SWITCH, ch_num:1
09:25:59:256[16][Device [294]0001:0004 Диммер] Got event:ButtonEvent, rec_id:9, timestamp:1649496361911, bnum:0, code:0x20
09:26:47:256[16][Device [294]0001:0004 Диммер] Got event:ButtonEvent, rec_id:10, timestamp:1649496409961, bnum:0, code:0x11
09:26:53:456[16][Device [294]0001:0004 Диммер] Got event:ButtonEvent, rec_id:11, timestamp:1649496416155, bnum:0, code:0x31
*кроме этого есть еще события передающие архивные показания, и особое событие(которое может быть обработано сценарием для какого-либо действия).
Как видно из лога, события описывают практически каждое действие конечного устройства. Кроме бесполезных, которые не влияют на состояние устройства(например повторная команда включить реле).
Благодаря событиям можно проанализировать действия устройства.
И это важно, учитывая то, что например реле может поменять свое состояние по ряду причин:
- Триггер, при изменении какого-либо показания или при ошибке измерения
- Нажатие кнопки непосредственно на устройстве
- Отработка таймера
- Команда полученная по шине
Эту последовательность нажатий обработает Java контроллер и проверит сценарии.
Т.е. можно задать сценарии которые расширят функционал кнопки устройства.