Тревога по условию

image0

Узел анализирует входные данные, если условие, указанное пользователем, соблюдается, то отправляет сообщение о нормальной величине входного значения. Если полученное значение не соотвествует ожидаемому, то отправляет сообщение указанное в настройках.

Сообщение, поступающее на вход данного узла должно быть в формате: * values[] * property-name - имя входной переменной str * value - значение на проверку bool|number * source - по желанию, str

Если новое поступившее value будет идентично старому, то тревога не сработает.

Конфигурация узла:

image1

Входные данные

Структура csv файла: - property_name - имя входящей переменной, указать требуется значение входящего property-name; str - alarm_text - сообщение, которое будет отправлено с тревогой str - description - доп. сообщение, которое будет отправлено с тревогой str - type - способ анализа значения свойства для отправки следующему узлу. Далее нужные значения для каждого типа: - bool - преобразует в binary оператор - true - на вход можно подать в любом регистре, всё переводится в нижний. - false - threshold - min_value - условие тревоги double - max_value - условие тревоги double - threshold - входное значение равно этому значению double - cov - Если изменение в пределах шума, проверяем была ли ранее тревога. Если уже была, то скипаем double - interval - min_value - условие тревоги double - max_value - условие тревоги double - min_resolution - Проверяем на пересечение пределов измерения double - max_resolution - Проверяем на пересечение пределов измерения double - cov - Если изменение в пределах шума, проверяем была ли ранее тревога. Если уже была, то скипаем double - status_flag - пользовательский флаг unsigned int

Загрузка настроек из файла csv, пример

Table

prop_y_name

alarm_parm_text

description

type

min_val

max_val

thresh

bin

min_resolution

max_resolution

cov

status_flag

adress0

alarm

Тревога!

int

1

2

-100

100

0.5

10

adress1

alarm

Тревога!

thresh

40

-100

100

0.5

0

adress2

alarm

Тревога!

bool

false

0

Csv

property_name;alarm_text;description;type;min_value;max_value;threshold;binary;min_resolution;max_resolution;cov;status_flag
address0;alarm;Тревога! Выход за интервал;interval;10;20;;;-100;100;0.5;10
address1;alarm;Тревога! Критический уровень;threshold;;;40;;-100;100;0.5;0
address2;alarm;Тревога! Условие истинно;bool;;;;false;;;;0

Пример сообщения на вход

Json

{
"values":[
    {
        "property-name": "address0",
        "value": 22.000000,
        "source": "temperature-checker"
    },
    {
        "property-name": "address1",
        "value": 16.43,
        "source": "Jason"
    }
]
}

Данные на выходе из узла

Json

{
  "alarms": [
    {
      "alarm_text": "alarm",
      "description": "Тревогa! Казахстан угрожает нам бомбардировкой!",
      "property-name": "address0",
      "source": "temperature-checker",
      "status_flag":1,
      "value": 22.000000
    },
    {
      "alarm_text": "normal"
      "property-name": "address1",
      "description": "Норма",
      "source": "Jason",
      "status_flag":0,
      "value": 16.43
    }
  ]
}

Пример использования:

Построим схему: (или возьмём готовую test_alert.yaml)

image2

Настройте схему по следующим параметрам:

{
"values":[
    {
        "property-name": "address0",
        "value": 16.43
    }
]
}

Python

import random
obj['DATA']['values'][0]['value']=random.randint(0,30)
return obj

alarm(202).csv

property_name;alarm_text;description;type;min_value;max_value;threshold;binary;min_resolution;max_resolution;cov;status_flag
address0;alarm;Тревога! Выход за интервал;interval;10;20;;;-100;100;0.5;10

Сохраняем цепочку и смотрим вывод в сокет

image3