Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Для повышения информативности уведомлений, в их тексте используются макросы. В момент отправки сообщения, макросы заменяются на соответствующую им информацию: время, имя датчика, его значение и прочее.

Макрос обозначается знаком процента и цифрой, соответствующей содержащейся информации.

Доступны следующие макросы:

Макрос

Описание

Пример
%1Словесное описание сработавшей логической схемы.

if

    'Onboard Temperature' (id=201001) in state 'high alarm';

and    'Onboard Voltage DC' (id=203001) in state 'high alarm';

then

    'Power-1' (id=304001) changes to state 'on' immediately, once;

    'Simple_Mail' (id=601001) changes to state 'on' immediately, once;

%2Состояние элементов логической схемы, на момент срабатывания схемы, включенных в условия IF.

'Onboard Temperature' (id=201001) in state 'high alarm';

'Onboard Voltage DC' (id=203001) in state 'high alarm';

%3Время срабатывания логической схемы.11:32:28 2017/06/13
%4Название логической схемы.'Logic_Temp_01'
%5Имя датчика, изменение состояния которого привело к срабатыванию логической схемы. Здесь выводится имя последнего сработавшего датчика, после которого сработала логическая схема.'Onboard Temperature'
%6Состояние датчика, инициировавшего срабатывание логической схемы.'high alarm'
%7Значение величины, измеряемой датчиком или его логический уровень на момент срабатывания логической схемы.'27.60'
%8Идентификатор датчика, инициировавшего срабатывание логической схемы.'201001'

Параметризация макросов

Макросы %5, %6, %7 имеют возможность параметризации по идентификатору элемента {id}. Т.е. для этих макросов возможно указать конкретный элемент, для которого будет вычислен макрос.

В качестве параметра, определяющего элемент, передается ID элемента. ID помещается в фигурных скобках {id} непосредственно после имени макроса.

Пример вычисления макросов:

МакросОписаниеПример
%5{id}Имя датчика с заданным идентификатором.%5{201001} выдаст имя датчика: 'Onboard Temperature'
%6{id}Состояние датчика с заданным идентификатором.%6{201001} выдаст состояние датчика: 'normal'
%7{id}Значение измеренной величины датчика с заданным идентификатором.%7{201001} выдаст значение датчика: '26.50'

В случае если элемент с указанным идентификатором не найден, в текст сообщения вставляется строка — 'id=xxxx not found'.

В случае, если параметр {id} не задан, в текст сообщения вставляется значение, вычисленное для элемента, инициировавшего срабатывание логической схемы.

Макрос детализации модуля, группы и системы

Макрос %8 может использоваться для определения идентификатора датчика при срабатывании логической схемы по изменению состояния группы, модуля или системы. Этот макрос можно использовать в качестве параметра идентификатора в макросах %5, %6 и %7.

Пример использования макроса для обработки модуля.

Создадим такую логическую схему:

При срабатывании в состояние 'Alarm' модуля 'Autodetect', будет осуществлено управление реле и отправлено сообщение на электронную почту.

Состояние модуля, группы и системы

Модуль (группа, система) переходит в состояние 'Alarm', если хотябы один из его подключенных датчиков (аналоговых или дискретных) находится в состоянии 'Alarm', 'High alarm' или 'Low alarm'.

Модуль (группа, система) переходит в состояние 'Warning', если хотябы один из его подключенных датчиков (аналоговых или дискретных) находится в состоянии 'Warning', 'High warning' или 'Low warning' и при этом модуль не находится в состоянии 'Alarm'.

Модуль (группа, система) переходт в состояние 'Normal', если все его подключенные датчики находятся в состоянии 'Normal'.

Рассмотрим какую информацию можно получить с помощью макросов.

Макрос

Результат работы макросаПояснение
%1

if

    module 'Autodetect' (id=2021) in state 'alarm';

then

    'Power-1' (id=304001) changes to state 'on' immediately, once;

    'Power-2' (id=304002) changes to state 'off' immediately, once;

    'Simple_Mail' (id=601001) changes to state 'on' immediately, once;

Словесное описание сработавшей логической схемы. При переходе модуля 'Autodetect' в состояние 'alarm' немедленно (и однократно, без повторов) включается реле 'Power-1', отключается реле 'Power-2' и отправляется почтовое уведомление 'Simple_Mail'. Модуль переходит в состояние 'alarm', если хотябы один из его элементов находится в состоянии 'alarm'.
%2module 'Autodetect' (id=2021) in state 'alarm';Состояние элементов логической схемы, на момент срабатывания схемы, включенных в условия IF. Описан модуль вызвавший срабатывание схемы и его состояние.
%316:14:41 2017/06/13Время срабатывания логической схемы.
%4'Logic_Analog_Sensors'Название логической схемы.
%5'Autodetect'Имя датчика (модуля), изменение состояния которого привело к срабатыванию логической схемы.
%6'alarm'Состояние датчика (модуля), инициировавшего срабатывание логической схемы.
%7'not supported'Значение величины, измеряемой датчиком или его логический уровень на момент срабатывания логической схемы. Модуль не имеет такого поля, поэтому здесь выводится 'not supported'.
%8'107002'Идентификатор датчика, инициировавшего срабатывание логической схемы. Здесь указывается именно идентификатор датчика, который содержится в модуле и который вызвал срабатывание модуля. В данном случае это датчик протечки воды. Использование этого макроса в качестве параметра позволяет определить сработавший внутри модуля датчик.
%5{%8}'Analog-2-WATER'Имя датчика по идентификатору. Запрашиваем по идентификатору датчика от которого сработал модуль.
%6{%8}'alarm'Состояние датчика по идентификатору. Запрашиваем по идентификатору датчика от которого сработал модуль.
%7{%8}'1'Значение величины датчика по идентификатору. Запрашиваем по идентификатору датчика от которого сработал модуль.
%5{201002}'Analog-1-TEMPERATURE'Имя датчика по идентификатору. Запрашиваем один из произвольных датчиков, в данном случае это датчик температуры.
%6{201002}'high warning'Состояние датчика по идентификатору. Запрашиваем один из произвольных датчиков, в данном случае это датчик температуры.
%7{201002}'28.50'Значение величины датчика по идентификатору. Запрашиваем один из произвольных датчиков, в данном случае это датчик температуры.


Из этой информации видно, что сработал в состояние 'alarm' датчик протечки воды 'Analog-2-WATER', при этом он перевел модуль 'Autodetect' также в состояние 'alarm', что и вызвало срабатывание логической схемы и отправку уведомления.

Макросы в групповых уведомлениях

При необходимости в наблюдении за состоянием элементов, предпочтительнее использовать не механизм логических схем, а групповые уведомления. Т.к. при большом числе наблюдаемых элементов групповые уведомления позволяют значительно сократить число логических схем (т.к. не используют их) и упростить настройку устройства. Логические схемы обосновано использовать при сложных реакциях на события, например при управлении внешней нагрузкой, реле.

Рассмотрим использование макросов в групповых уведомлениях. О создании групп и групповых уведомлений подробнее можно прочитать тут: /wiki/spaces/DocRU/pages/44204034.

Для примера, создадим группу элементов включающую в себя все датчики температуры в системе.


Зададим уведомление которое будет отправляться при переходе группы в состояния 'Normal' и 'High alarm'.


Рассмотрим информацию которую можно получить используя макросы в тексте уведомления.

Макрос

Результат работы макросаПояснение
%1не используйте этот макрос при групповых уведомленияхТ.к. логическая схема здесь не используется, то этот макрос не имеет смысла.
%2не используйте этот макрос при групповых уведомленияхТ.к. логическая схема здесь не используется, то этот макрос не имеет смысла.
%316:14:41 2017/06/13Время срабатывания, соответствует моменту перехода группы в наблюдаемое состояние.
%4'Group_Temperature_Only'Название группы.
%5'vt470-0192-temperature'Имя датчика (модуля), инициировавшего срабатывание. Изменение состояния этого датчика привело к изменению состояния группы и отправке уведомления.
%6'high alarm'Состояние датчика (модуля), инициировавшего срабатывание.
%7'27.30'Значение величины, измеряемой датчиком или его логический уровень на момент срабатывания.
%8'201003'Идентификатор датчика, инициировавшего срабатывание. Здесь указывается именно идентификатор датчика, изменение состояния которого привело к изменению состояния группы и отправке уведомления.
%5{%8}'vt470-0192-temperature'Имя датчика по идентификатору. Запрашиваем по идентификатору датчика от которого сработало групповое уведомление. В данном случае работа макроса аналогична %5.
%6{%8}'high alarm'Состояние датчика по идентификатору. Запрашиваем по идентификатору датчика от которого сработало групповое уведомление. В данном случае работа макроса аналогична %6.
%7{%8}'27.30'Значение величины датчика по идентификатору. Запрашиваем по идентификатору датчика от которого сработало групповое уведомление. В данном случае работа макроса аналогична %7.
%5{201002}'Analog-1-TEMPERATURE'Имя датчика по идентификатору. Запрашиваем один из произвольных датчиков, в данном случае это датчик температуры. Макрос позволяет например вывести данные других датчиков группы.
%6{201002}'high warning'Состояние датчика по идентификатору. Запрашиваем один из произвольных датчиков, в данном случае это датчик температуры. Макрос позволяет например вывести данные других датчиков группы.
%7{201002}'28.50'Значение величины датчика по идентификатору. Запрашиваем один из произвольных датчиков, в данном случае это датчик температуры. Макрос позволяет например вывести данные других датчиков группы.
  • No labels