- Описание функциональных характеристик системы
- Поддержание жизненного цикла
- Установка PromUC
- Настройка сервисов
- Обновление PromUC
- Резервное копирование и восстановление базы данных Promuc FrameWork
- Рекомендации по безопасности
- Руководство по эксплуатации и администрированию
- Module GIS
- Конфигурирование правил и сценариев
- Module Framework
- Module Interface
- Технологии проекта
- Эксплуатация КТС
- Единый сервис аутентификации
- Информация о релизах
RPC-запросы¶
Описание¶
RPC API позволяет выполнять команды Modbus Write, Bacnet Write
Для того чтобы выполнить команду, надо отправить POST на адрес https:://ruleengine:5554 (не всегда именно такой адрес)
curl -k -H "Content-Type: application/json" -X POST -d '
<body>
` http://ruleengine:5554/api/rpc
в Body отправляется JSON следующего формата:
Modbus¶
ModbusWrite.cpp
{
"jsonrpc": "2.0",
"protocol":"modbus",
"params":[
{
"device_ip": "192.168.1.129",
"device_port": 1502,
"object_type": "holding register",
"object_address": 0,
"data_type": "int16",
"order": "LE",
"scale": 1,
"value": [41, 22]
},
{
"device_ip": "192.168.1.129",
"device_port": 1502,
"object_type": "holding register",
"object_address": 2,
"data_type": "float32",
"order": "LE",
"scale": 1,
"value": 20.2
}
]
}
jsonrpc : 2.0 - обязательное поле
str
protocol : modbus или modbus-rtu для модбаса тср или рту соответственно
str
params[] - массив с регистрами которые надо записать
array
device_ip - указываем ип адрес в формате 192.168.1.129
str
object_type: holding register или coil, 06 и 05 команды модбаса соответственно, и если в поле value будет array, то пишем командами 16 и 15 соответственно
str
object_address: - адрес модбас регистра
number
data_type: - могут быть следующие форматы: (int16, uint16, bool [0,1] - занимают 1 регистр), (int32, uint32, float32 - занимают 1 регистр), (float64 - занимают 4 регистр)
number
order: - порядок байт в посылке LE - старший вперед, BE -младший вперед
str
scale: - множитель для запиcываемых данных
number
value: - данные для записи в регистры, тип поля
number
илиarray
, еслиarray
то пишем в регистры последовательно, начиная с адреса object_address
Пример RPC-запроса¶
{
"jsonrpc": "2.0",
"protocol":"modbus",
"params":[
{
"device_ip": "192.168.1.194",
"device_port": 21502,
"object_type": "coil",
"object_address": 1,
"order": "BE",
"scale": 1,
"value": 1
}
]
}' http://127.0.0.1:5554/api/rpc
BacNet write property¶
{
"jsonrpc": "2.0",
"protocol":"bacnet",
"params":[
{
"device_instance": 260001,
"object_type": 2,
"object_instance": 1,
"property": 85,
"priority": 16,
"tag": 4,
"value": 100
},
{
"device_instance": 260001,
"object_type": 2,
"object_instance": 2,
"property": 85,
"priority": 16,
"tag": 4,
"value": 99
}
]
}
BacNet write property multiple¶
{
"jsonrpc": "2.0",
"protocol": "bacnet_m",
"params": [
{
"device_instance": 260001,
"array": [
{
"object_type": 2,
"object_instance": 1,
"property": 85,
"priority": 16,
"index": -1,
"tag": 4,
"value": 100
},
{
"object_type": 2,
"object_instance": 2,
"property": 85,
"priority": 16,
"index": -1,
"tag": 4,
"value": 333
}
]
}
]
}
Ответы:
200 -Ok. Команда выполнена.
[“Error write bit ip:port addr:1 Illegal function”] - Отсутсвует регистр по указанному адресу
[“Connection refused ip:port addr:1”] - возможно, отсутсвует устройство по данному адресу