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
        }
    ]
}
  1. «jsonrpc»: «2.0» - обязательное поле, тип поля string

  2. «protocol»:»modbus» или «protocol»:»modbus-rtu» для модбаса тср или рту соответственно, тип поля string

  3. «params» - массив с регистрами которые надо записать, тип поля array

  4. «device_ip» - указываем ип адрес в формате «192.168.1.129», тип поля string

  5. «object_type»: «holding register» или «coil», 06 и 05 команды модбаса соответственно, и если в поле value будет array, то пишем командами 16 и 15 соответственно, тип поля string

  6. «object_address»: - адрес модбас регистра, тип поля number

  7. «data_type»: - могут быть следующие форматы: (int16, uint16, bool [0,1] - занимают 1 регистр), (int32, uint32, float32 - занимают 1 регистр), (float64 - занимают 4 регистр), тип поля number

  8. «order»: - порядок байт в посылке «LE» - старший вперед, «BE» -младший вперед, тип поля string

  9. «scale»: - множитель для запиcываемых данных, тип поля number

  10. «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
        }
    ]
}
  1. «jsonrpc»: «2.0» - обязательное поле, тип поля string

  2. «protocol»:»modbus» или «protocol»:»modbus-rtu» для модбаса тср или рту соответственно, тип поля string

  3. «params» - массив с регистрами которые надо записать, тип поля array

  4. «device_port» - адрес интерфейса устройства в linux (например /det/ttyUSB0), тип поля string

  5. «device_boudrate»: -скорость порта, тип поля number

  6. «byte_size»: - количество байт в одной посылке, тип поля number

  7. «flow»: - Бит четности, «N» - not, «O» - odd, «E» - Even, тип поля string

  8. «stop_bit»: - стоповый бит, возможно использование 1, 1.5, 2 стоповых битов, тип поля number

  9. «device_id»: - адрес устройства

  10. «object_type»: «holding register» или «coil», 06 и 05 команды модбаса соответственно, и если в поле value будет array, то пишем командами 16 и 15 соответственно, тип поля string

  11. «object_address»: - адрес модбас регистра, тип поля number

  12. «data_type»: - могут быть следующие форматы: (int16, uint16, bool [0,1] - занимают 1 регистр), (int32, uint32, float32 - занимают 1 регистр), (float64 - занимают 4 регистр), тип поля number

  13. «order»: - порядок байт в посылке «LE» - старший вперед, «BE» -младший вперед, тип поля string

  14. «scale»: - множитель для запиcываемых данных, тип поля number

  15. «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. Команда выполнена.