RPC¶
Описание¶
RPC API позволяет выполнять команды Modbus Write, Bacnet Write
Для того чтобы выполнить команду, надо отправить POST на адрес https:://ruleengine:5554
в Body отправляется JSON следующего формата:
ModbusTCP¶
{
"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» - обязательное поле, тип поля string
«protocol»:»modbus» или «protocol»:»modbus-rtu» для модбаса тср или рту соответственно, тип поля string
«params» - массив с регистрами которые надо записать, тип поля array
«device_ip» - указываем ип адрес в формате «192.168.1.129», тип поля string
«object_type»: «holding register» или «coil», 06 и 05 команды модбаса соответственно, и если в поле value будет array, то пишем командами 16 и 15 соответственно, тип поля string
«object_address»: - адрес модбас регистра, тип поля number
«data_type»: - могут быть следующие форматы: (int16, uint16, bool [0,1] - занимают 1 регистр), (int32, uint32, float32 - занимают 1 регистр), (float64 - занимают 4 регистр), тип поля number
«order»: - порядок байт в посылке «LE» - старший вперед, «BE» -младший вперед, тип поля string
«scale»: - множитель для запиcываемых данных, тип поля number
«value»: - данные для записи в регистры, тип поля number или array, если array то пишем в регистры последовательно, начиная с адреса object_address
ModbusRTU¶
{
"jsonrpc": "2.0",
"protocol":"modbus-rtu",
"params":[
{
"device_port": "/dev/pts/2",
"device_boudrate": 115200,
"byte_size": 8,
"flow": "N",
"stop_bit": 1,
"device_id": 1,
"object_type": "holding register",
"object_address": 0,
"data_type": "int16",
"order": "LE",
"scale": 1,
"value": 100
}
]
}
«jsonrpc»: «2.0» - обязательное поле, тип поля string
«protocol»:»modbus» или «protocol»:»modbus-rtu» для модбаса тср или рту соответственно, тип поля string
«params» - массив с регистрами которые надо записать, тип поля array
«device_port» - адрес интерфейса устройства в linux (например /det/ttyUSB0), тип поля string
«device_boudrate»: -скорость порта, тип поля number
«byte_size»: - количество байт в одной посылке, тип поля number
«flow»: - Бит четности, «N» - not, «O» - odd, «E» - Even, тип поля string
«stop_bit»: - стоповый бит, возможно использование 1, 1.5, 2 стоповых битов, тип поля number
«device_id»: - адрес устройства
«object_type»: «holding register» или «coil», 06 и 05 команды модбаса соответственно, и если в поле value будет array, то пишем командами 16 и 15 соответственно, тип поля string
«object_address»: - адрес модбас регистра, тип поля number
«data_type»: - могут быть следующие форматы: (int16, uint16, bool [0,1] - занимают 1 регистр), (int32, uint32, float32 - занимают 1 регистр), (float64 - занимают 4 регистр), тип поля number
«order»: - порядок байт в посылке «LE» - старший вперед, «BE» -младший вперед, тип поля string
«scale»: - множитель для запиcываемых данных, тип поля number
«value»: - данные для записи в регистры, тип поля number или array, если array то пишем в регистры последовательно, начиная с адреса object_address
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. Команда выполнена.