Событие
Событие – это информация о выполнении какого-то условия, связанного с контролируемым параметром (например, превышение напряжением заданного порогового значения, срабатывание датчика и т.п.).
События платформы – это сущности, порождаемые работой контрольных процедур и правил.
События различают на системные и пользовательские:
- Системные события, это внутренние события платформы.
- События платформы - это события, которые создает пользователь.
Платформа позволяет Администратору самостоятельно определять совокупность событий, представляющих интерес для пользователей, составляя эти события из значений и свойств других сущностей (теги подстановки).
Событиям платформы присваивается 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 |
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-клиенте платформы.
Уведомления формируются, рассылаются и администрируются по следующим правилам:
- Уведомления по событиям формируются по результатам работы контрольных процедур и правил;
- Уведомление о событии, на которое подписался пользователь, отправляется по всем каналам, которые настроил этот пользователь;
- Недоставленное уведомление по какому-либо каналу платформа периодически отправляет до тех пор, пока не истечет время жизни события;
- Уведомления о событиях рассылаются по всем объектам, которые доступны пользователю;
- Администратор может запретить отправку уведомлений события по конкретному каналу;
- Системный администратор может запретить отправку уведомлений для всех событий по конкретному каналу.
Администратор не может настроить каналы уведомления за пользователя. Все каналы уведомлений пользователь должен добавить и активировать самостоятельно в разделе «НАСТРОЙКИ» / «Подписка на события».