Узлы преобразования информации

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

Шаблон

../_images/transformation-template.png

Узел подставляет значения из поля DATA входящего json-а в шаблон и заменяет поле DATA входящего json-а на значение из шаблона. Наличие поля DATA во входящем json-е обязательно. Шаблон должен описывать кооректный json, иначе будет выдана ошибка.

../_images/transformation-template-config.png

Вкачестве настройки блок принимает в себя текстовый файл с описанием шаблона. На пример: {«string»: «{{ tag1 }}»,»integer»: {{ tag2 }}} Название поля, значение которого должно быть вставленно, пишется внутри {{}}. Имена полей также поддерживают вложенность (tag1.anather_tag) и индексное обращение к элементам массива (some_array.0). Подробнее здесь: https://github.com/pantor/inja/blob/main/README.md

Подготовить сообщение для SCADA

Узел изменение отправителя

Этот узел форматирует входящее собщение от узлов Modbus или Bacnet в формат key:value;

Было:


{
«DATA»: {
«values»: [
{

«address»: 0, «property-name»: «address0», «source»: «», «type»: «int16», «value»: -20238

}, {

«address»: 1, «property-name»: «address1», «source»: «», «type»: «int16», «value»: 40

}, {

«address»: 2, «property-name»: «address2», «source»: «», «type»: «bool», «value»: false

}

]

}

}

Стало:


{

«address0»: -20238, «address1»: 40, «address2»: false

}

VISIOBAS

RuleEngine/_img/transformation-script.png:align:center:alt:VISIOBAS:width:250

Вот такой json должен приходить с ioot контроллера на вход узла:

{
"mods": [
      {
            "name": "DI 24V X1",
            "enable": 1,
            "val": [
            {
                  "name": "11",
                  "type": 0,
                  "val": 1
            },
            {
                  "name": "12",
                  "type": 0,
                  "val": 1
            },
            {
                  "name": "13",
                  "type": 0,
                  "val": 0
            },
            {
                  "name": "14",
                  "type": 0,
                  "val": 1
            }
            ]
      },
]
}

И далее узел превращает этот джейсон вот в такую строку:

11 3 1 0 0; 12 3 1 0 0; 13 3 0 0 0; 14 3 1 0 0;

XML в JSON

XML в JSON

Узел ожидает на входе XML документ в виде строки в поле DATA или DATA.body и преобразовывает этот xml в json.

Запустить скрипт

Запустить скрипт

Узел выполняет LUA скрипт

ARGUS

Запустить скрипт

на входе ожидем джейсон вида: {

«DATA»: {

«name»: «sign_person», «type»: [ «string», «null» ], «doc»: «4.6.53.41 Утверждающее лицо» }

}

а на выходе делаем вот так: {

«DATA»: {

«sign_person» : «4.6.53.41 Утверждающее лицо», «sign_person_type» : «string» }

}