Событие
Событие – это информация о выполнении какого-то условия, связанного с контролируемым параметром (например, превышение напряжением заданного порогового значения, срабатывание датчика и т.п.).
События платформы – это сущности, порождаемые работой контрольных процедур и правил.
События различают на системные и пользовательские:
- Системные события, это внутренние события платформы.
- События платформы - это события, которые создает пользователь.
Платформа позволяет Администратору самостоятельно определять совокупность событий, представляющих интерес для пользователей, составляя эти события из значений и свойств других сущностей (теги подстановки).
Событиям платформы присваивается 4-значный цифровой код в формате:
TNNN, где:
- T – код типа события;
- NNN – код события.
Типы событий
| Код типа | Описание типа события | Инициатор |
|---|---|---|
| 1 | Системные события, инициируемые контроллером | Контроллеры |
| 2 | Системные события, инициируемые сервером | Серверы |
| 3 | Результаты выполнения команд, выданных контроллеру | Контроллеры |
| 4 | События, связанные с изменением значений некоторых параметров | Контроллеры |
| 5 | События, связанные с изменением состояния контролируемого объекта. Эти события пользователи могут формировать самостоятельно. | Контроллеры, cерверы |
События с кодами типов от 1 до 4 (1XХX – 4XXX) записываются в административные журналы. События с кодом типа "5" (5XXX) записываются«в "Журнал собы»ий"; код типа "5" используется для обозначения следующих событий:
- События, которые должны сформироваться как результат работы контрольной процедуры, инициируются серверными компонентами платформы;
- События, которые должны сформироваться в результате отработки правила, формируются контроллером.
Атрибуты формы создания/редактирования события:
- Имя – название события (произвольный текст);
- Текст уведомления – текст, используемый при формировании уведомления (таблица ниже);
- ID системного события - номер системного события, которое связано с этим пользовательским событием. При возникновении систмного события, оно будет выдано в Журнал событий, согласно заданному шаблону.
- Статус параметра – success, warning, error, critical (Норма, Предупреждение, Ошибка, Критическое);
- Тип события – тип дополнительной информации о событиях; принимает значение от 0 до 3 (таблица ниже);
- Вкл. уведомление – значение "Да" указывает на то, что рассылка уведомлений по событиям включен, "Нет" – уведомления не создаются;
- Экспорт - задает признак того, что событие должно передаваться в одну из заданных внешних систем. Если внешние системы не заданы, то событие никуда не экспортируется.
- *ВКЛ/ВЫКЛ Каналы - задает возможность отсылки уведомления по событию по доступным каналам.
- Текст уведомления - задает шаблоны уведомлений для различных способов отправки события по каналам
Форматы событий
Обычно при описании событий с кодами 5XXX используется значение формата 3. Возможные форматы дополнительной информации приведены в следующей таблице.
Описание форматов дополнительной информации по событиям
| Формат | Описание | Формат сообщения |
|---|---|---|
| 0 | Нет дополнительной информации или она игнорируется. В теле события будет пусто | |
| 1 | Произвольное значение или текст | Текстовая строка события, без изменений |
| 2 | Формат идентификатора параметра | В сообщении используется формат <IdParameter>, <TypeParameter>, либо <IdParameter> |
| 3 | Формат идентификатора и значения параметра | В сообщении используется формат <IdParameter>=<ValueParameter>, <TypeParameter>, либо <IdParameter>=<ValueParameter> |
Шаблон сообщения о событии может содержать теги подстановок, которые при обработке автоматически заменяются на реальные значения. Каждый тег в шаблоне записывается в виде %<имя тега>%. Перечень разрешенных тегов и порядок их обработки приведены ниже.
Таблица тегов подстановки
Описание тегов и типов дополнительной информации
| Параметр | Описание | Способ получения значения |
|---|---|---|
| EVENT_ID | ID события | eventlog.eventid |
| EVENT_TIME | Время наступления события | eventlog.timestmp |
| EVENT_NAME | Наименование события | eventlog.eventid -> event.name |
| OBJECT_NAME | Краткое наименование объекта | eventlog.controllerid -> controller.objectid -> object.shortname |
| OBJECT_FULL_NAME | Полное наименование объекта | eventlog.controllerid -> controller.objectid -> object.fullname |
| OBJECT_ADDRESS | Адрес объекта | eventlog.controllerid -> controller.objectid -> object.Address |
| OBJECT_STATE | Состояние объекта | eventlog.controllerid -> controller.objectid -> object.stateid -> sdir_objectstate.objstatename |
| CONTR_SERIALNUM | Серийный номер контроллера | eventlog.controllerid -> controller.serialnumber |
| CONTR_STATE | Состояние контроллера | eventlog.controllerid -> controller. state |
| CONTR_HEALTH_TIME | Время последнего подтверждения работоспособности контроллера | eventlog.controllerid -> controller.healthdate |
| SCHED_LOCK | Признак блокировки выполнения расписания на контроллере | eventlog.controllerid -> controller.schlocked |
| SCHED_STATE | Статус файла расписания | eventlog.controllerid -> controller.schedulestate |
| SCHED_NAME | Наименование расписания, установленного на контроллере | eventlog.controllerid -> controller.scheduleid -> schedule.schname |
| CONFIG_STATE | Статус файла конфигурации контроллера | eventlog.controllerid -> controller.configstate |
| EXT_INFO | Дополнительная информация (отформатированное сообщение) | Если только event.addinfotype = 1:eventlog.msg |
| EXT_SYSTEM | Использовать подстановку для системных событий 2033, 2034 Доступность/Недоступность внешней системы. | Тип события 1. |
| PARAM_NAME | Наименование измеряемого параметра | Если только event.addinfotype IN {2,3}:ExtInfo -> deviceparam.paramname, если <тип параметра> = «DP»;ExtInfo -> calcparam.paramname, если <тип параметра> = «CP» Если только event.addinfotype = 5:ExtInfo -> setvaluelog.deviceparamid ->deviceparam.paramname |
| ZONE | Зона параметра | Если только event.addinfotype IN {2,3}:ExtInfo -> deviceparam.zoneid -> zone.zonename, если <тип параметра> = «DP»ExtInfo -> calcparam.zoneid -> zone.zonename, если <тип параметра> = «CP» Если только event.addinfotype = 5:ExtInfo -> setvaluelog.deviceparamid ->deviceparam.zoneid -> zone.zonename |
| PARAM_TYPE | Тип значения параметра | Если только event.addinfotype IN {2,3}:ExtInfo -> deviceparam.channelid -> channel.valtype, если <тип параметра> = «DP»;ExtInfo -> calcparam.calctype, если <тип параметра> = «CP» Если только event.addinfotype = 5:ExtInfo -> setvaluelog.deviceparamid ->deviceparam.channelid -> channel.valtype |
| CAT_NAME | Категория параметра | Если только event.addinfotype IN {2,3}:ExtInfo -> deviceparam.channelid -> channel.categoryid -> paramcategory.categoryname, если <тип параметра> = «DP»;ExtInfo -> calcparam.categoryid -> paramcategory.categoryname если <тип параметра> = «CP» Если только event.addinfotype = 5:ExtInfo -> setvaluelog.deviceparamid ->deviceparam.channelid -> channel.categoryid -> paramcategory.categpryname |
| DEVICE_NAME | Наименование датчика для измерения параметра | Если только event.addinfotype IN {2,3}:ExtInfo -> deviceparam.channelid -> channel.deviceid -> device.devicenameЕсли <тип параметра> = «CP», то подстановка не выполняется Если только event.addinfotype = 5:ExtInfo -> setvaluelog.deviceparamid ->deviceparam.channelid -> channel.deviceid -> device.devicename |
| CHANNEL_NAME | Наименование канала датчика для измерения параметра | Если только event.addinfotype IN {2,3}:ExtInfo -> deviceparam.channelid -> channel.channelnameЕсли <тип параметра> = «CP», то подстановка не выполняется Если только event.addinfotype = 5:ExtInfo -> setvaluelog.deviceparamid ->deviceparam.channelid -> channel.channelname |
| DEVICE_PORT | Порт подключения датчика для измерения параметра | Если только event.addinfotype IN {2,3}:ExtInfo -> deviceparam.connectid -> deviceconnect.portaddressЕсли <тип параметра> = «CP», то подстановка не выполняется Если только event.addinfotype = 5:ExtInfo -> setvaluelog.deviceparamid ->deviceparam.connectid -> deviceconnect.portaddress |
| PARAM_STATE | Состояние параметра | Если только event.addinfotype IN {2,3}:(eventlog.controllerid, ExtInfo) ->contrdeviceparam.statelid -> sdir_paramstate.statename, если <тип параметра> = «DP»;(eventlog.controllerid, ExtInfo) ->contrcalcparam.statelid -> sdir_paramstate.statename, если <тип параметра> = «CP» Если только event.addinfotype = 5:ExtInfo -> (setvaluelog.controllerid, setvaluelog.deviceparamid) ->contrdeviceparam.statelid -> sdir_paramstate.statename |
| PARAM_VALUE | Текущее значение параметра | Если только event.addinfotype IN {2,3}:(eventlog.controllerid, ExtInfo) ->contrdeviceparam.curvalue, если <тип параметра> = «DP»;(eventlog.controllerid, ExtInfo) ->contrcalcparam.curvalue , если <тип параметра> = «CP» Если только event.addinfotype = 5:ExtInfo -> (setvaluelog.controllerid, setvaluelog.deviceparamid) ->contrdeviceparam.curvalue |
| PARAM_HUMAN_VALUE | Отображаемое значение параметра | 1. Определить значение V параметра как для тега PARAM_VALUE.2. Определить тип значения параметра:Если <тип параметра> = «DP», то<идентификатор параметра>) ->DeviceParam.ChannelId -> Channel.ValueType Если <тип параметра> = «CP», то <идентификатор параметра> -> CalvParam.CalcType 3. Если тип значения параметра равен 1, то заменить полученное значение V на: - если V = 0, то «выключено»; - если V = 1, то «включено». |
| PARAM_TIME | Время последнего изменения параметра | Если только event.addinfotype IN {2,3}:(eventlog.controllerid, ExtInfo) ->contrdeviceparam.valuedate, если <тип параметра> = «DP»;(eventlog.controllerid, ExtInfo) ->contrcalcparam.valuedate, если <тип параметра> = «CP» Если только event.addinfotype = 5:ExtInfo -> (setvaluelog.controllerid, setvaluelog.deviceparamid) ->contrdeviceparam.valuedate |
| CHANNEL_STATE | Состояние канала устройства, связанного с параметром | Если только event.addinfotype IN {2,3}:(eventlog.controllerid, ExtInfo) ->contrdeviceparam.devicestate Если <тип параметра> = «CP», то подстановка не выполняется Если только event.addinfotype = 5: ExtInfo -> (setvaluelog.controllerid, setvaluelog.deviceparamid) ->contrdeviceparam.devicestate |
| COMMAND_CODE | Код команды контроллеру | Если только event.addinfotype = 4: ExtInfo-> commandlog.commandcode |
| COMMAND_STATE | Состояние выполнения команды | Если только event.addinfotype = 4: ExtInfo -> commandlog.state |
| COMMAND_SENT_TIME | Время отправки команды контроллеру | Если только event.addinfotype = 4:ExtInfo -> commandlog.senttime |
| COMMAND_EXEC_TIME | Время выполнения команды на контроллере | Если только event.addinfotype = 4:ExtInfo -> commandlog.resulttime |
| COMMAND_RESULT | Результат выполнения команды (или описание ошибки) | Если только event.addinfotype = 4:ExtInfo -> commandlog.result |
| COMMAND_CALLER | Пользователь, выполнивший команду | Если только event.addinfotype = 4:ExtInfo -> commandlog.userid -> sysuser.(firstname + middlename + lastname) |
| SV_VALUE | Устанавливаемое значение параметра | Если только event.addinfotype = 5:ExtInfo -> setvaluelog.paramvalue |
| SV_STATE | Состояние выполнения команды на изменение значения | Если только event.addinfotype = 5:ExtInfo -> setvaluelog.state |
| SV_SENT_TIME | Время отправки команды на изменение значения контроллеру | Если только event.addinfotype = 5:ExtInfo -> setvaluelog.senttime |
| SV_EXEC_TIME | Время выполнения команды изменения значения на контроллере | Если только event.addinfotype = 5:ExtInfo -> setvaluelog.resulttime |
| SV_RESULT | Результат выполнения команды на изменение значения (или описание ошибки) | Если только event.addinfotype = 5:ExtInfo -> setvaluelog.result |
| SV_CALLER | Пользователь, выполнивший команду на изменение значения | Если только event.addinfotype = 4:ExtInfo -> setvaluelog.userid -> sysuser.(firstname + middlename + lastname) |
| PASS_RECOVERY_ VERIFICATION_CODE | Проверочный код для восстановления пароля | Если только UserId != null:UserId -> sysuser.verificationcode |
| CONNECT_NAME | Имя схемы подключения устройств (DeviceConnect.connectname) | |
| CONNECT_ADDRESS | Адрес подключение (DeviceConnect.portaddress) | |
| SENSOR_LOCATION | Размещение датчика | если для записи журнала события определен измеряемый или вычисляемый параметр на контроллере, тогда у него room.sensor_location_id -> sensor_location.name |
| CONTR_COMMENT | Комментарий контроллера | eventlog.controllerid -> controller.comment |
Уведомления
В текущей версии платформа предоставляет возможность пользователям подписаться на получение событий по электронной почте, месенджеру Telegram, push-уведомления для мобильных приложений и звуковое оповещение в web-клиенте платформы.
Уведомления формируются, рассылаются и администрируются по следующим правилам:
- Уведомления по событиям формируются по результатам работы контрольных процедур и правил;
- Уведомление о событии, на которое подписался пользователь, отправляется по всем каналам, которые настроил этот пользователь;
- Недоставленное уведомление по какому-либо каналу платформа периодически отправляет до тех пор, пока не истечет время жизни события;
- Уведомления о событиях рассылаются по всем объектам, которые доступны пользователю;
- Администратор может запретить отправку уведомлений события по конкретному каналу;
- Системный администратор может запретить отправку уведомлений для всех событий по конкретному каналу.
Администратор не может настроить каналы уведомления за пользователя. Все каналы уведомлений пользователь должен добавить и активировать самостоятельно в разделе «НАСТРОЙКИ» / «Подписка на события».