RPC-запросы =========== Описание -------- RPC API позволяет выполнять команды Modbus Write, Bacnet Write Для того чтобы выполнить команду, надо отправить POST на адрес https:://ruleengine:5554 (не всегда именно такой адрес) .. code:: bash curl -k -H "Content-Type: application/json" -X POST -d ' ` http://ruleengine:5554/api/rpc в **Body** отправляется JSON следующего формата: Modbus ~~~~~~ ``ModbusWrite.cpp`` .. code:: json { "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-запроса ^^^^^^^^^^^^^^^^^^ .. code:: bash { "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 .. raw:: html
BacNet write property ~~~~~~~~~~~~~~~~~~~~~ .. code:: json { "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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: json { "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”] - возможно, отсутсвует устройство по данному адресу