Для повышения информативности уведомлений, в их тексте используются макросы. В момент отправки сообщения, макросы заменяются на соответствующую им информацию: время, имя датчика, его значение и прочее.
Макрос обозначается знаком процента и цифрой, соответствующей содержащейся информации.
Доступны следующие макросы:
Макрос | Описание | Пример |
---|---|---|
%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'. |
%2 | module 'Autodetect' (id=2021) in state 'alarm'; | Состояние элементов логической схемы, на момент срабатывания схемы, включенных в условия IF. Описан модуль вызвавший срабатывание схемы и его состояние. |
%3 | 16: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 | не используйте этот макрос при групповых уведомлениях | Т.к. логическая схема здесь не используется, то этот макрос не имеет смысла. |
%3 | 16: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' | Значение величины датчика по идентификатору. Запрашиваем один из произвольных датчиков, в данном случае это датчик температуры. Макрос позволяет например вывести данные других датчиков группы. |