Входные узлы

HTTP

HTTP Input
HTTP Method:

POST

Адрес для отправки:

http://URL/api/pushdata

Обязательное поле Headers:

«Content-Type: application/json»

Данные передаются в формате json:

{«temp»:23,»door»:»open»}

Обязательный параметр query string:

chain=chainName

Пример отправки данных:

curl -k -H "Content-Type: application/json" -X POST -d '{"temp":23,"door":"open"}' http://127.0.0.1:5555/api/pushdata?chain=chainName

Узел ModbusTCP

../_images/input-modbustcp.png

Узел опроса устройств по протоколу Modbus TCP.

pic1

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

  • Вкладка Ручные:

    в разработке

  • Вкладка Из файла:

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

Пример содержимое csv файла с настройками:

ip;port;device-name;period;order;scale;function;type;quantity;address;property-name;source;device-id
10.186.0.205;1502;umg;5000;big;1;FC03;int16;1;0;address0;ABC/adr0;1
10.186.0.205;1502;umg;5000;big;1;FC03;int16;1;1;address1;ABC/adr1;1
10.186.0.205;1502;umg;5000;big;1;FC03;int16;1;2;address2;ABC/adr2;1

Пример создания цепочки с загрузкой конфигурации Modbus устройства из файла:

  1. Добавьте узел ModbusTCP, выберите вкладку File, загрузите файл в виде, как указано выше, в формате CSV:

    ../_images/input-modbustcp-settings.png
  2. Добавьте узлы Debug и MQTT, соедините узлы:

    ../_images/modbus-inst7.png
  3. Настройте узел MQTT:

    ../_images/modbus-inst6.png
  4. Создайте цепочку:

../_images/example-re-chain-save.png
  1. Проверьте результат внутри узла Debug или на MQTT брокере в соответствующем топике:

    ../_images/modbus-inst4.png
  2. Для эмуляции данных используется ПО Modbus Slave:

    ../_images/modbus-inst5.png

Узел ModbusRTU

../_images/input-modbusrtu.png

Узел опроса устройств по протоколу Modbus TCP.

pic2

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

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

Пример файла с настройками:

port;boudrate;byte-size;flow;stop-bit;device-name;device-id;period;name;function;address;quantity;type;scale
/dev/pts/3;115200;8;N;1;pol-467;1;5000;di-1;FC03;0;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;di-2;FC03;1;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;di-3;FC03;2;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;di-4;FC03;3;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;di-5;FC03;4;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;do-1;FC03;5;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;do-2;FC03;6;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;on-do-2;FC03;7;1;bool;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;ai-2;FC03;0;2;float32;1
/dev/pts/3;115200;8;N;1;pol-467;1;5000;ai-3;FC03;1;2;float32;1

Узел опроса свойства BACnetRP

../_images/input-bacnet.png

Узел опроса отдельных свойств устройств в сети BACnet.

../_images/input-bacnet-settings-2.png

Формат csv-файла:

ip;port;cmd;period;block;device-instance;device-name;object-type;object-instance;property-name;property;description;source
10.186.0.205;47808;rp;5;50;0;bacserv_demo;2;4;area1;85;Активация ДУ-1;МФК/ARK-5/Активация ДУ-1
10.186.0.205;47808;rp;5;50;0;bacserv_demo;2;5;area2;85;Активация ДУ-2;МФК/ARK-5/Активация ДУ-2

Узел опроса свойств BACnet ReadMultiply

../_images/input-bacnet-rpm.png

Формат csv-файла:

ip;port;cmd;period;block;device-instance;device-name;object-type;object-instance;property-name;property;description;source
10.186.0.205;47808;rpm;5;50;0;bacserv_demo;2;4;area1;85;Активация ДУ-1;МФК/ARK-5/Активация ДУ-1
10.186.0.205;47808;rpm;5;50;0;bacserv_demo;2;5;area2;85;Активация ДУ-2;МФК/ARK-5/Активация ДУ-2

Узел подписки на изменение свойств BACnet COV

../_images/input-bacnet-cov.png

Формат csv-файла:

Для работы с COV подписками необходимо, начиная со второй строки csv-файла написать в столбец «cmd» команду rp и указать свойства «device-name», «ip», «port», «device-instance», «object-type», «object-instance»,»property»,»property-name». Количество «rp» команд должно быть равным количеству уникальных подписываемых устройств («device-instance»). Далее перечисляются подписки и их свойства.

../_images/input-bacnet-csv-format-cov.png

Команда «rp» (ReadProperty) выполняет опрос каждые 10 секунд, для обнаружения устройств в сети.

Особенности работы COV подписок:

Подписки можно создавать на большое количество времени, их срабатывание происходит когда данные у подписываемого объекта меняются.Возникает вопрос «как отследить работает ли подписка?», вдруг устройство больше не обнаруживается в сети. Для этого случая у каждого устройства опрашивается свойсво «systemStatus».

Ответ каждого устройства записывается в булевый вектор «flag_errors».

../_images/input-bacnet-code-cov.png

Далее к вектору применяется операция логическое «И» (Конъюнкия), результатом которой будет булевая переменная. Она отвечает за перезапуск COV подписки.

../_images/input-bacnet-code-cov2.png

Обновлять или создавать цепочку не требуется, все данные о подписке хранятся в json-файле в директории …/chains

Пример получаемых данных:

../_images/input-bacnet-csv-example.png

Узел Меркурий

Узел снятия тревоги

Узел опроса счетчиков электрической энергии Меркурий - 234.

Узел снятия тревоги

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

  • Addresses - Адрес счетчика (можно указать несколько адресов через запятую «11,45,44»)

  • Delay, ms - Задержка между опросами счетчиков, мсек

  • Serialport - Порт подключения

  • Boudrate - Скорость линии RS-485

  • Bytesize - Количество бит данных

  • Timeout, ms - Время ожидания ответа от счетчика, мсек

Узел опрашивает следующие значения:

  • ток

  • напряжение

  • cos(f) по всем фазам

  • углы между фазными напряжениями

  • активную и реактивную энергию по всем фазам

  • накопленную энергию за текущий день, за предыдущий день и нарастающим итогом

Пример вывода блока:

{
    "U": {
        "p1": 0.35,
        "p2": 0.35,
        "p3": 226.86
    },
    "I": {
        "p1": 0.00,
        "p2": 0.00,
        "p3": 0.39
    },
    "CosF": {
         "p1": 0.00,
         "p2": 0.00,
         "p3": 0.60,
         "sum": 0.60
    },
    "F": 50.00,
    "A": {
        "p1": 41943.03,
        "p2": 41943.03,
        "p3": 41943.03
    },
    "P": {
        "p1": 0.00,
        "p2": 0.00,
        "p3": 53.45,
        "sum": 53.45
    },
    "S": {
        "p1": 0.00,
        "p2": 0.00,
        "p3": 89.83,
        "sum": 89.83
    },
    "PR": {
        "ap": 120.51
    },
    "PR-day": {
        "ap": 86.00
    },
    "PR-night": {
        "ap": 34.51
    },
    "PY": {
        "ap": 0.00
    },
    "PT": {
        "ap": 0.04
    }
}

Узел SNMP

../_images/input-snmp.png

Узел опроса устройств SNMP.

../_images/input-snmp-settings.png

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

  • Settings file (json): файл конфигурации опрашиваемых устройств

Узел Рубикон

../_images/input-rubicon.png

Узел поиска устройств в сети BACnet. Возвращает список найденных устройств.

../_images/input-rubicon-settings.png

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

  • Address: адрес устройства

  • Port: порт

Пример получаемых данных на выходе узла:

{"t":642084500,"n":43989340843264,"e":0,"i":423232,"s":8196,"d":"тревога"}
{"t":642084500,"n":70373609601792,"e":0,"i":423296,"s":8196,"d":"проникновение, на охране"}
{"t":642084500,"n":70373609601792,"s":8196,"d":"проникновение, на охране"}
{"t":642084500,"n":43989340843264,"s":8196,"d":"тревога"}
{"t":642084513,"n":70373609601792,"e":1,"i":423360,"u":0,"d":"06 мая 2020г.;12:48:33;1.помещение;Консоль/ППК;сбросадминистратор"}

Интерпретация:

  • t - time (секунды)

  • i - уникальный индекс события

  • d - текстовое описание

  • n - уникальный идентификатор объекта SNID (serial + id, 48 бит)

  • e - событие

  • s - статус (если событие = 0)

  • u - идентификатор пользователя (0 - администратор)

Если в данных только время, то это тестовый пакет проверки наличия связи.

Узел MQTT

../_images/input-mqtt.png
../_images/input-mqtt-settings.png
Принимает на вход JSON, и пытается распарсить все его key:value в следующую структуру:

«property-name»: key, «source»: topic, «value»: value

Пример вывода блока:

{
"connection_status": "Ok",
"time": 1697718856699,
"values": [
    {
        "property-name": "connection_status",
        "source": "re_test/dev/modbus",
        "value": "Ok"
    },
    {
        "property-name": "device",
        "source": "re_test/dev/modbus",
        "value": "umg"
    },
    {
        "property-name": "time",
        "source": "re_test/dev/modbus",
        "value": 1697718856687
    },
    {
        "property-name": "timer",
        "source": "re_test/dev/modbus",
        "value": 0
    },
    {
        "property-name": "values/0/address",
        "source": "re_test/dev/modbus",
        "value": 0
    },
    {
        "property-name": "values/0/property-name",
        "source": "re_test/dev/modbus",
        "value": "address0"
    },
    {
        "property-name": "values/0/source",
        "source": "re_test/dev/modbus",
        "value": "ABC/adr0"
    },
    {
        "property-name": "values/0/type",
        "source": "re_test/dev/modbus",
        "value": "int16"
    },
    {
        "property-name": "values/0/value",
        "source": "re_test/dev/modbus",
        "value": 0
    }
    ]
}

Узел Расписание (Генератор)

../_images/input-generator.png

Узел запускает JSON по цепочке с заданным интервалом

../_images/input-generator-settings.png

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

  1. Режим «Миллисекунды» Загружаем любой JSON из файла и устанавливаем задержку в мс. Блок будет в бесконечном цикле отправлять этот JSON.

  2. Режим «Продвинутые настройки» (Запуск по расписанию)

[
    {
        "Name": "TestDaily",
        "Repeats": true,
        "Json":{
            "msg": "Test dayli"
        },
        "RepeatsEvery": "Daily",
        "DailyTime": "15:15:00"
    },
    {
        "Name": "TestWeekly",
        "When": "06.09.2023 16:00:00",
        "Repeats": true,
        "Json":{
            "msg": "Test weekly"
        },
        "RepeatsEvery": "Weekly",
        "RepeatON": [true, true, true, false, false, true, true]
    },
    {
        "Name": "TestMonthly",
        "Repeats": true,
        "EndDate": "06.09.2023 16:08:00",
        "Json":{
            "msg": "Test monthly"
        },
        "RepeatsEvery": "Monthly",
        "MonthlyDate":  [1,5,6,7]
    },
    {
        "Name": "TestYearly",
        "Repeats": true,
        "Json":{
            "msg": "Test yearly"
        },
        "RepeatsEvery": "Yearly",
        "YearlyDate": ["05/09", "06/09"]
    }
]

Узел Memcached

../_images/input-memcached.png

Узел получения данных по ключам из хранилища Memcached.

../_images/input-memcached-settings.png

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

  • Адрес - адрес сервера с развёрнутым Memcached.

  • Порт - порт сервера по которому доступен Memcached. По умолчанию 11211.

  • Период - период проверки изменений ключей.

  • Ключи - значения в Memcached, которые будут проверяться. Для добавления ключа необходимо ввести его имя, после чего нажать кнопку „Добавить“. После добавления внизу появится красная кнопка с именем ключа, нажав на котороу, можно удалить ключ.

Узел Из цепочки

../_images/input-chain.png

Узел поиска получения данных из других цепочек.

Узел Kafka

../_images/input-kafka.png

Узел для получения данных из Apach Kafka в форматах Json или Avro.

../_images/input-kafka-settings-1.png
  • Адрес - адрес сервера с Apach Kafka.

  • Порт - порт сервера по которому доступен Apach Kafka. По умолчанию 9092.

  • Топик - топик из которого будут приниматься сообщения.

  • Id группы - идентефикатор необходимый для Apach Kafka для разделения слушателей.

  • Кодек сжатия - deprecated

  • Формат аериализации - формат сообщения, которое приходит в топик.

Если выбран формат сообщения «Avro», то станут доступны дополнительные настройки:

../_images/input-kafka-settings-2.png
  • Адрес хранилища схем - адрес сервера, где хранятся Avro схемы. Формат адреса указан в плейсхолдере.

  • Имя схемы - имя, с которым схема будет зарегистрирована.

  • Id схемы - числовой идентефикатор схемы. (Можно создать разные схмы с одинаковыми именами, но их id должны быть разными)

  • Схема - файл формата avsc с описанием Avro схемы. (Кодировка UTF-8. Избегайте использования Кириллицы)