核心产品实现参考

核心产品实现参考

概述

本文主要描述了本平台所有自研硬件设备包含的服务,和云平台的接口以及具体的数据格式,供设备固件开发参考。

DT01 数据采集器

基于蓝牙 SoC 和 NB-IoT 通信的数据采集器

主要遥测服务

NAME FULL NAME NOTE
device Device 必须
connectivity Connectivity Monitoring 建议
firmware Firmware Update 必须
location Location -
statistics Connectivity Statistics 可选
config Parameter Configuration 必须

设备注册

请求消息

{
    "did": "001122334455",
    "type": "register",
    "sign": "471332d2e16f524d377224cda1573c86:md5",
    "data": {
        "version": {
            "firmware": "1.0",
        }
    }
}

应答消息

{
    "did": "001122334455",
    "type": "register",
    "result": {
        "id": "3434689jkjsdf34398095829",
        "expires": 3600,
        "token": "39409080928349028592"
    }
}

设备 - device

ID NAME TYPE VALUE NOTE
0 manufacturer string TDK -
1 modelNumber string DT01 -
2 serialNumber string 345000123 可选, 保留将来使用
3 firmwareVersion string 1.0 -
4 reboot action - -
5 reset action - 可选, 保留将来使用
6 powerSources integer 0 0 表示 DC 供电
7 powerVoltage integer 3800 3800 mV
10 memoryFree integer 15 15KB
11 errorCode integer 0 0 表示没有错误
13 currentTime integer 1367491215 用于时间同步
14 UTCOffset string +02:00 用于时间同步
15 timezone string - 可选, 用于时间同步
17 deviceType string dtu -
18 hardwareVersion string 1.0 -
20 batteryStatus integer 0~6 可选, 保留将来使用
21 memoryTotal integer 256 256KB

电源类型

错误码

read - 读取信息

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "data": {
        "device": {
            "read": {}
        }
    }
}

应答消息:

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "device": {
            "read": {
                "manufacturer": "TDK",
                "modelNumber": "DT01",
                "currentTime": 123403434353,
                "firmwareVersion": "1.0"
            }
        }
    }
}

write - 修改系统时间等

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "data": {
        "device": {
            "write": {
                "currentTime": 123403434353
            }
        }
    }
}

应答消息:

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "device": {
            "write": {
                "code": 0
            }
        }
    }
}

reboot - 设备重启

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "data": {
        "device": {
            "reboot": {
                "delay": 1
            }
        }
    }
}

应答消息:

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "token": "39409080928349028592",
    "result": {
        "device": {
            "reboot": {
                "code": 0
            }
        }
    }
}

固件 - firmware

ID NAME TYPE VALUE NOTE
1 uri string http://test.com/test.bin 固件文件下载地址
2 update action - -
3 state integer 0 0 表示空闲状态
5 result integer 0 0 表示初始状态
7 version string 1.0 版本 1.0
8 protocol integer 0 0 表示 CoAP 协议
9 delivery integer 0 0 表示只支持拉取模式

state 更新状态

result 更新结果

update - 升级操作

升级请求:

{
    "did": "001122334455",
    "mid": "123456789",
    "type": "action",
    "data": {
        "firmware": {
            "update": {
                "uri": "http://{domain-name}/v2/device/firmware/file?did=1123945343439",
                "md5sum": "11223344556677889900aabbccddeeff",
                "version": "3.0"
            }
        }
    }
}

请求应答:

{
    "did": "001122334455",
    "mid": "123456789",
    "type": "action",
    "result": {
        "firmware": {
            "update": {
                "code": 0
            }
        }
    }
}

read - 读取固件状态

读取请求:

{
    "did": "001122334455",
    "mid": "123456789",
    "type": "action",
    "data": {
        "firmware": {
            "read": {}
        }
    }
}

请求应答:

{
    "did": "001122334455",
    "mid": "123456789",
    "type": "action",
    "result": {
        "firmware": {
            "read": {
                "state": 0,
                "result": 0,
                "protocol": 0,
                "delivery": 0,
                "uri": "http://{domain-name}/v2/device/firmware/file?did=1123945343439",
                "md5sum": "11223344556677889900aabbccddeeff",
                "version": "3.0"
            }
        }
    }
}

下载升级文件

CoAP 协议:

GET coap://{domain-name}:8952/firmware?did=1123945343439

以块传输方式下载固件文件

固件升级事件

升级状态事件

{
    "did": "001122334455",
    "type": "event",
    "token": "34242523454639",
    "data": {
        "firmware": {
            "state": 0,
            "result": 0
        }
    }
}

参数配置 - config

更多信息请参考 Modbus 设备

read - 修改参数

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "data": {
        "config": {
            "write": {
                "properties": {
                },
                "updated": 0
            }
        }
    }
}

应答消息

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "config": {
            "write": {
                "code": 0
            }
        }
    }
}

write - 读取参数

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "data": {
        "config": {
            "read": {}
        }
    }
}

应答消息:

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "result": {
        "config": {
            "read": {
                "updated": 0,
                "properties": {}
            }
        }
    }
}

注意:修改参数后需要重启设备才能生效

DT02 物联网关

基于 Linux 的物联网关

主要遥测服务

ID NAME FULL NAME NOTE
3 device Device 必须
4 connectivity Connectivity Monitoring 可选
5 firmware Firmware Update 必须
6 location Location 可选
7 statistics Connectivity Statistics 可选
8 config Parameter Configuration 必须
9 peripheral Peripheral 可选

错误码

CODE NAME NOTE
18001 串口打开失败 串口设置错误或发生异常
18002 连接超时 从机未连接,错误的地址,通信异常等
18003 不支持的操作码 使用了从机不支持的操作码
9 无效的配置参数 错误的配置参数

设备注册

{
    "did": "001122334455",
    "type": "register",
    "sign": "471332d2e16f524d377224cda1573c86:md5",
    "data": {
        "iccid": "898607b9123770729456",
        "imsi": "460041912306456",
        "nodes": ["aa1122334455"],
        "version": {
            "firmware": "1.0",
            "software": "1.0",
            "config": "1234567890"
        }
    }
}

应答消息

{
    "did": "001122334455",
    "type": "register",
    "result": {
        "id": "3434689jkjsdf34398095829",
        "expires": 3600,
        "token": "39409080928349028592"
    }
}

定位标签

{
    "did": "34dac140001d",
    "type": "stream",
    "stream": "tag",
    "data": [{
        "tid": "ff1122334455",
        "batteryLevel": 73,
        "firmwareVersion": "1.8",
        "rssi": -78,
        "at": 1574400909000
    }]
}

设备 - device

ID NAME TYPE VALUE NOTE
0 manufacturer string TDK -
1 modelNumber string DT01 -
2 serialNumber string 345000123 可选, 保留将来使用
3 firmwareVersion string 1.0 -
4 reboot action - -
5 reset action - 可选, 保留将来使用
6 powerSources integer 0 0 表示 DC 供电
7 powerVoltage integer 3800 3800 mV
10 memoryFree integer 15 15KB
11 errorCode integer 0 0 表示没有错误
13 currentTime integer 1367491215 用于时间同步
14 UTCOffset string +02:00 用于时间同步
15 timezone string - 可选, 用于时间同步
17 deviceType string gateway -
18 hardwareVersion string 1.0 -
20 batteryStatus integer 0~6 可选, 保留将来使用
21 memoryTotal integer 256 256KB

电源类型

错误码

read - 读取设备信息

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "data": {
        "device": {
            "read": {}
        }
    }
}

应答消息:

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "device": {
            "read": {
                "manufacturer": "TDK",
                "modelNumber": "DT01",
                "currentTime": 123403434353,
                "firmwareVersion": "1.0"
            }
        }
    }
}

write - 修改系统时间

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "data": {
        "device": {
            "write": {
                "currentTime": 123403434353
            }
        }
    }
}

应答消息:

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "device": {
            "write": {
                "code": 0
            }
        }
    }
}

reboot - 设备重启

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "data": {
        "device": {
            "reboot": {
                "delay": 1
            }
        }
    }
}

应答消息:

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "token": "39409080928349028592",
    "result": {
        "device": {
            "reboot": {
                "code": 0
            }
        }
    }
}

固件 - firmware

ID NAME TYPE VALUE NOTE
1 uri string http://test.com/test.bin 可写, 固件文件下载地址
2 update action - -
3 state integer 0 0 表示空闲状态
5 result integer 0 0 表示初始状态
7 version string 1.0 可写, 版本 1.0
8 protocol integer 2 2 表示 HTTP 协议
9 delivery integer 0 0 表示只支持拉取模式
11 md5sum string - 可写, md5 摘要

update - 升级操作

升级请求:

{
    "did": "001122334455",
    "mid": "123456789",
    "type": "action",
    "data": {
        "firmware": {
            "update": {
                "uri": "http://{domain-name}/v2/device/firmware/file?did=1123945343439",
                "md5sum": "11223344556677889900aabbccddeeff",
                "version": "3.0"
            }
        }
    }
}

请求应答:

{
    "did": "001122334455",
    "mid": "123456789",
    "type": "action",
    "result": {
        "firmware": {
            "update": {
                "code": 0
            }
        }
    }
}

read - 读取固件状态

读取请求:

{
    "did": "001122334455",
    "mid": "123456789",
    "type": "action",
    "data": {
        "firmware": {
            "read": {}
        }
    }
}

请求应答:

{
    "did": "001122334455",
    "mid": "123456789",
    "type": "action",
    "result": {
        "firmware": {
            "read": {
                "state": 0,
                "result": 0,
                "protocol": 0,
                "delivery": 0,
                "uri": "http://{domain-name}/v2/device/firmware/file?did=1123945343439",
                "md5sum": "11223344556677889900aabbccddeeff",
                "version": "3.0"
            }
        }
    }
}

下载升级文件

HTTP 协议:

GET http://{domain-name}/v2/device/firmware/file?did=1123945343439

CoAP 协议:

GET coap://{domain-name}:8952/firmware?did=1123945343439

以块传输方式下载固件文件

固件升级事件

升级状态事件

{
    "did": "001122334455",
    "type": "event",
    "token": "34242523454639",
    "data": {
        "firmware": {
            "state": 0,
            "result": 0
        }
    }
}

配置 - config

串口配置

NAME CODE TYPE DEFAULT NOTE
device n integer 1 串口设备地址, 0 ~ 2
baudrate b integer 9600 串口波特率
databits d integer 8 串口数据位
parity p integer 0 串口校验方式
stopbits s integer 1 串口停止位

例如:

{
    uarts: {
        1: {
            baudrate: 9600,
            parity: 0,
            databits: 8,
            stopbits: 1
        }
    }
}

子设备绑定

网络摄像机
蓝牙设备
Modbus 设备
串口设备
RS485 设备
开关量设备
Webhook 设备
LoRA 设备

read - 读取参数

请求消息:

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "data": {
        "config": {
            "read": {}
        }
    }
}

应答消息:

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "result": {
        "config": {
            "read": {
                "camera": [
                    {
                        "did": "aa1234567890",
                        "host": "192.168.1.64",
                        "username": "admin",
                        "password": "admin"
                    }
                ],
                "bluetooth": [
                    {
                        "did": "aa1234567890"
                    }
                ],
                "modbus": [
                    {
                        "did": "aa1234567890"
                    }
                ],
                "updated": 0
            }
        }
    }
}

write - 修改参数

请求消息:

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "data": {
        "config": {
            "write": {
                "camera": [
                    {
                        "did": "aa1234567890",
                        "host": "192.168.1.64",
                        "username": "admin",
                        "password": "admin"
                    }
                ],
                "bluetooth": [
                    {
                        "did": "aa1234567890"
                    }
                ],
                "modbus": [
                    {
                        "did": "aa1234567890"
                    }
                ],
                "updated": 0
            }
        }
    }
}

应答消息

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "config": {
            "write": {
                "code": 0
            }
        }
    }
}

从机 - peripheral

配置

read - 读取参数

请求消息:

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "data": {
        "peripheral": {
            "read": {
                "did": "bb1234567891",
                "config": {}
            }
        }
    }
}

应答消息:

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "result": {
        "peripheral": {
            "read": {
                "did": "bb1234567891",
                "config": {
                    ...
                }
            }
        }
    }
}
write - 修改参数

请求消息:

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "data": {
        "peripheral": {
            "write": {
                "did": "bb1234567891",
                "config": {
                    ...
                }
            }
        }
    }
}

应答消息:

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "result": {
        "peripheral": {
            "write": {
                "did": "bb1234567891",
                "code": 0
            }
        }
    }
}

标准 Modbus 设备

支持 Modbus/485 协议的外围设备

主要遥测服务

ID NAME FULL NAME NOTE
3 device Device 可选
8 config Parameter Configuration 必须

错误码

CODE NAME NOTE
18001 串口打开失败 串口设置错误或发生异常
18002 连接超时 从机未连接,错误的地址,通信异常等
18003 不支持的操作码 使用了从机不支持的操作码
9 无效的配置参数 错误的配置参数

设备注册

{
    "did": "001122334455",
    "type": "register",
    "sign": "471332d2e16f524d377224cda1573c86:md5",
    "data": {
        "gateway": "aa1122334455",
        "version": {
            "firmware": "1.0",
        }
    }
}

配置 - config

Modbus 配置参数

NAME CODE TYPE NOTE
actions a object 绑定的操作列表
events e object 绑定的事件列表
forms f object 串口配置
properties p object 绑定的属性列表
updated u integer 配置参数最后更新时间
串口配置
NAME CODE TYPE DEFAULT NOTE
address a integer 0 Modbus 从机地址, 1 ~ 247
device n string - 串口设备地址, 0 ~ 2
interval i integer 60 采集间隔,单位为秒
mode m integer 0 Modbus 传输模式
timeout t integer 500 读写超时时间,单位为毫秒
属性配置

事物属性 Modbus 协议配置参数

NAME CODE TYPE DEFAULT NOTE
address a integer 0 从机地址, 1 ~ 247
code c integer 0x03 Modbus 操作码, 0x00~0xFF
decimals x integer 0 要保留的小数位, 默认保留所有小数位
flags f integer 0 字节顺序标志位
interval i integer 60 采集间隔,单位为秒
offset o number 0 偏移值
quantity q integer 1 寄存器个数, 1 ~ 125 (0x7D)
register r integer 0 寄存器地址, 0x0000~0xFFFF
scale s number 1 缩放因子
timeout t integer 500 读写超时时间,单位为毫秒
type y integer 0 原始数据类型
操作配置

事物操作 Modbus 协议配置参数

NAME CODE TYPE DEFAULT NOTE
address a integer 0 从机地址, 1 ~ 247
code c integer 0x06 Modbus 操作码, 0x00~0xFF
flags f integer 0 字节顺序标志位
offset o number 0 偏移值
quantity q integer 1 寄存器个数, 1 ~ 125 (0x7D)
register r integer 0 寄存器地址, 0x0000~0xFFFF
scale s number 1 缩放因子
timeout t integer 500 读写超时时间,单位为毫秒
type y integer 0 原始数据类型

操作参数基本同属性参数

code (c) Modbus 的功能码, 默认为 0x06, 具体如下:

数值转换
字节序标志位

Modbus 的寄存器地址和数值都长为 2 个字节, 默认字节顺序为大端模式 Big-Endian, 即高字节在前.

当由多个寄存器表示一个数值时,默认寄存器顺序为大端模式 Big-Endian, 即高字节寄存器在前.

标志位:

示例, 假如有一个数的值为 AB (2字节), ABCD (4字节), ABCDEFGH (8字节), 在不同字节序下排列方式如下:

FLAGS BYTE ORDER REGISGER ORDER int16 int32 int64 float double
0x00 0 高字节在前 0 高字节在前 AB AB CD AB CD EF GH AB CD AB CD EF GH
0x01 1 0 高字节在前 BA BA DC BA DC FE HG BA DC BA DC FE HG
0x02 0 高字节在前 1 AB CD AB GH EF CD AB CD AB GH EF CD AB
0x03 1 1 BA DC BA HG FE DC BA DC BA HG FE DC BA
数据类型
TYPE RAW TYPE VALUE QUANTITY MIN MAX NOTE
integer int16 0 1 -32768 32767 有符号整数
integer int32 0 2 -2147483648 2147483647 有符号整数
integer int64 0 4 - - 有符号整数
integer uint16 1 1 0 65535 无符号整数
integer uint32 1 2 0 4294967295 无符号整数
integer uint64 1 4 0 - 无符号整数
number float 2 2 - - 浮点数
number double 2 4 - - 浮点数
string string 3 N - - 字符串
boolean bool 4 1 - - 布尔型
base64 string byte[] 5 N - - 原始数据类型

数据类型:

数值换算

在寄存器中,数值可能不是以真实值保存,需要通过以下方式计算

数值型数据真实值计算方式:

real_value = (raw_value * scale) + offset

数值型数据原始值计算方式:

raw_value = (real_value - offset) / scale

示例
{
    "updated": 0,
    "forms": {
        "address": 10,
        "mode": 0,
        "interval": 60,
        "timeout": 500
    },
    "properties": {
        "activePower": {
            "s": 0.001,
            "f": 1,
            "r": 30
        },
        "reactivePower": {
            "s": 0.001,
            "r": 38
        },
        "phaseCurrentA": {
            "r": 16
        },
        "phaseVoltageA": {
            "r": 0
        },
        "phaseCurrentB": {
            "r": 18
        },
        "phaseVoltageB": {
            "r": 2
        },
        "phaseCurrentC": {
            "r": 20
        },
        "phaseVoltageC": {
            "r": 4
        },
        "powerFactor": {
            "r": 54
        }
    },
    "actions": {
        "run": {
            "r": 99
        }
    },
    "events": {

    }
}

write - 修改参数

请求消息

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "data": {
        "config": {
            "write": {
                "updated": 0,
                "properties": {
                    "activePower": {
                        "s": 0.001,
                        "f": 1,
                        "r": 30
                    },
                    ...
                },
                "forms": {
                    "address": 10,
                    "mode": 0,
                    "interval": 60,
                    "timeout": 500
                }
            }
        }
    }
}

应答消息

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "result": {
        "config": {
            "write": {
                "code": 0
            }
        }
    }
}

read - 读取参数

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "data": {
        "config": {
            "read": []
        }
    }
}

应答消息:

{
    "did": "aa1234567891",
    "mid": "1234",
    "type": "action",
    "result": {
        "config": {
            "read": {
                "updated": 0,
                "properties": {
                    "activePower": {
                        "s": 0.001,
                        "f": 1,
                        "r": 30
                    },
                    ...
                },
                "forms": {
                    "address": 10,
                    "mode": 0,
                    "interval": 60,
                    "timeout": 500
                }
            }
        }
    }
}

蓝牙传感器

通过蓝牙通信的外围设备

主要遥测服务

ID NAME FULL NAME NOTE
3 device Device 必须
4 connectivity Connectivity Monitoring -
5 firmware Firmware Update -
6 location Location -
7 statistics Connectivity Statistics -
8 config Parameter Configuration 必须

错误码

CODE NAME NOTE
18001 串口打开失败 串口设置错误或发生异常
18002 连接超时 从机未连接,错误的地址,通信异常等
18003 不支持的操作码 使用了从机不支持的操作码
9 无效的配置参数 错误的配置参数

设备注册

{
    "did": "001122334455",
    "type": "register",
    "sign": "471332d2e16f524d377224cda1573c86:md5",
    "data": {
        "gateway": "aa1122334455",
        "version": {
            "firmware": "1.0",
        }
    }
}

公共服务

设备 - device

ID NAME TYPE VALUE NOTE
0 manufacturer string SAE 从从机读取
1 modelNumber string BN5001 从从机读取
2 serialNumber string 345000123 从从机读取
3 firmwareVersion string 1.0 从从机读取
4 reboot action - -
5 reset action - 可选, 保留将来使用
6 powerSources integer 0 1 表示内置电池
7 powerVoltage integer 3800 从从机读取, 3800 mV
11 errorCode integer 0 0 表示没有错误
17 deviceType string sensor 从从机读取, 设备名称
18 hardwareVersion string 1.0 从从机读取
20 batteryStatus integer 0~6 可选, 保留将来使用
read 读取信息
{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "data": {
        "device": {
            "read": {}
        }
    }
}

应答消息:

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "device": {
            "read": {
                "manufacturer": "TDK",
                "modelNumber": "BN5001",
                "currentTime": 123403434353,
                "firmwareVersion": "1.0"
            }
        }
    }
}

固件 - firmware

ID NAME TYPE VALUE NOTE
1 uri string http://test.com/test.bin 固件文件下载地址
2 update action - -
3 state integer 0 0 表示空闲状态
5 result integer 0 0 表示初始状态
7 version string 1.0 版本 1.0
8 protocol integer 0 0 表示 CoAP 协议
9 delivery integer 0 0 表示只支持拉取模式

state 更新状态

result 更新结果

update - 升级操作

升级请求:

{
    "did": "001122334455",
    "mid": "123456789",
    "type": "action",
    "data": {
        "firmware": {
            "update": {
                "uri": "http://{domain-name}/v2/device/firmware/file?did=1123945343439",
                "md5sum": "11223344556677889900aabbccddeeff",
                "version": "3.0"
            }
        }
    }
}

请求应答:

{
    "did": "001122334455",
    "mid": "123456789",
    "type": "action",
    "result": {
        "firmware": {
            "update": {
                "code": 0
            }
        }
    }
}

配置 - config

配置参数为二进制数据格式

read - 读取参数
{
    "did": "aa1234567890",
    "mid": "1234",
    "type": "action",
    "data": {
        "config": {
            "read": {}
        }
    }
}

应答消息

{
    "did": "aa1234567890",
    "mid": "1234",
    "type": "action",
    "result": {
        "config": {
            "read": {
                "version": 0,
                "raw": "<base64 string>"
            }
        }
    }
}
write - 修改参数
{
    "did": "aa1234567890",
    "mid": "1234",
    "type": "action",
    "data": {
        "config": {
            "write": {
                "version": 0,
                "raw": "<base64 string>"
            }
        }
    }
}

应答消息

{
    "did": "aa1234567890",
    "mid": "1234",
    "type": "action",
    "result": {
        "config": {
            "write": {
                "code": 0
            }
        }
    }
}

BN5001 振动传感器

BN5001A 振动传感器

数据上报

{
    "did": "aa0001000402",
    "type": "stream",
    "data": {
        "rssi": -80,
        "powerVoltage": 1800,
        "sampleRate": 2000,
        "sampleMode": 512,
        "axis": 1,
        "spectral": "<base64 string>"
    }
}

BN5001B 振动传感器

数据上报

{
    "did": "aa0001000402",
    "type": "stream",
    "data": {        
        "rssi": -80,
        "powerVoltage": 1800,
        "sampleRate": 2000,
        "sampleMode": 512,
        "axis": 1,
        "spectral": "<base64 string>"
    }
}

BN5001C 振动传感器

数据上报

{
    "did": "aa0001000402",
    "type": "stream",
    "data": {         
        "rssi": -80,
        "powerVoltage": 1800,
        "sampleRate": 1600,
        "frequency": 408,
        "acceleration": 1.89,
        "vibration": "<base64 string>"
    }
}

振动频谱

数据表示如下,每项都为 16 位无符号整数,采用小端模式(低字节在前)

Index Note
1 频谱类型,总是为 'V'
2 采样率, 单位为 Hz
3 分辨率,如 512
4 表示轴的 ID, 1 表示 x 轴, 2 表示 y 轴, 4 表示 z 轴, 8 表示所有轴
5 振动频率, 单位为 Hz
6 振动加速度, 单位为 1/1000 G (mG)。
7 振动频率, 单位为 Hz
8 振动加速度, 单位为 1/1000 G (mG)。
9 ...

BN5002 振动传感器

数据上报格式

BN5003 温湿度传感器

数据上报格式

{
    "did": "aabbcc112233",
    "type": "stream",
    "data": {
        "temperature": 25,
        "humidity": 60,
        "pressure": 1006.3
    }
}

以上表示温度为 25 摄氏度,相对湿度 60%, 大气压 1006.3 hPa

BN1005 光能温湿度传感器

同 BN5003

BN5005A 门磁传感器

数据上报格式

{
    "did": "001122334455",
    "type": "stream",
    "data": {
        "open": true
    }
}

BN5005B 水浸传感器

数据上报格式

{
    "did": "001122334455",
    "type": "stream",
    "data": {
        "alarm": true,
    }
}

BN5005C Modbus 蓝牙采集器

请参考 Modbus 设备一节

BN5006 气体传感器

数据上报格式

{
    "did": "aabbcc112233",
    "type": "stream",
    "data": {
        "ch2o": 100,
        "co2": 100,
        "nh3": 100,
        "h2s": 100,
        "co": 100,
        "o3": 100,
        "no2": 100,
        "so2": 100,
        "pm25": 100,
        "pm10": 100
    }
}

LoRA 传感器

基于 LoRA 通信的传感器节点

主要遥测服务

请参考 Modbus 设备

错误码

CODE NAME NOTE
18001 串口打开失败 串口设置错误或发生异常
18002 连接超时 从机未连接,错误的地址,通信异常等
18003 不支持的操作码 使用了从机不支持的操作码
9 无效的配置参数 错误的配置参数

ONVIF 摄像机

通用监控摄像机

主要遥测服务

ID NAME FULL NAME NOTE
3 device Device 必须
4 connectivity Connectivity Monitoring -
5 firmware Firmware Update 必须
6 location Location -
7 statistics Connectivity Statistics -
8 config Parameter Configuration 必须
10 ptz PTZ -
11 preset Preset 可选

错误码

CODE NAME NOTE
18001 串口打开失败 串口设置错误或发生异常
18002 连接超时 从机未连接,错误的地址,通信异常等
18003 不支持的操作码 使用了从机不支持的操作码
9 无效的配置参数 错误的配置参数

设备注册

{
    "did": "001122334455",
    "type": "register",
    "sign": "471332d2e16f524d377224cda1573c86:md5",
    "data": {
        "gateway": "aa1122334455",
        "version": {
            "firmware": "1.0",
        }
    }
}

设备 - device

ID NAME TYPE VALUE NOTE
0 manufacturer string HIKVISION -
1 modelNumber string XXXX -
2 serialNumber string 345000123 可选, 保留将来使用
3 firmwareVersion string 1.0 -
4 reboot action - -
6 powerSources integer 0 0 表示 DC 供电
7 powerVoltage integer 3800 3800 mV
10 memoryFree integer 15 15KB
11 errorCode integer 0 0 表示没有错误
17 deviceType string camera -
18 hardwareVersion string 1.0 -
21 memoryTotal integer 256 256KB

配置 - config

播放 - play

开始播放

{
    "did": "001122334455",
    "mid": "1234",
    "token": "play-token",
    "type": "action",
    "data": {
        "play": {
            "url": String,
            "players": Number
        }
    }
}

停止播放

{
    "did": "001122334455",
    "mid": "1234",
    "token": "play-token",
    "type": "action",
    "data": {
        "stop": {
            "reason": "It's all play done"
        }
    }
}

云台 - ptz

开始转动

通过这个命令可以控制摄像机镜头上下左右摆动,或者放大缩小

{
    "did": "001122334455",
    "mid": "1234",
    "token": "ptz-token",
    "type": "action",
    "data": {
        "ptz": {
            "start": {
                "direction": Number,
                "speed": Number
            }
        }
    }
}

应答消息:

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "ptz": {
            "code": 0
        }
    }
}

停止转动

通过这个命令可以控制摄像机镜头停止摆动或缩放,就算摄像机没有成功收到这个命令,也需要在超过一定时间后自动停止摆动或缩放 (巡航等模式除外)

由流媒体服务器发送给设备:

{
    "did": "001122334455",
    "mid": "1234",
    "token": "ptz-token",
    "type": "action",
    "data": {
        "ptz": {
            "stop": {}
        }
    }
}

应答消息:

{
    "did": "001122334455",
    "mid": "1234",
    "token": "ptz-token",
    "type": "action",
    "result": {
        "ptz": {
            "code": 0
        }
    }
}

错误应答消息

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "ptz": {
            "code": Number,
            "error": String
        }
    }
}

错误码:

CODE ERROR
60000 该设备不支持云台控制
60001 没有云台控制权限
60002 设备云台旋转达到上限位
60003 设备云台旋转达到下限位
60004 设备云台旋转达到左限位
60005 设备云台旋转达到右限位
60006 云台当前操作失败,请稍后再试
60009 正在调用预置点
60020 不支持该命令

预置位 - preset

设置预置位

将当前云台位置设置为指定的预置位

由流媒体服务器发送给设备:

{
    "did": "001122334455",
    "mid": "1234",
    "token": "preset-token",
    "type": "action",
    "data": {
        "preset": {
            "set": {
                "index": 1,
                "name": "[name]"
            }
        }
    }
}

返回结果:

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "preset": {
            "code": 0
        }
    }
}

查询预置位列表

查询摄像机已设置的预置位列表

由流媒体服务器发送给设备:

{
    "did": "001122334455",
    "mid": "1234",
    "token": "preset-token",
    "type": "action",
    "data": {
        "preset": {
            "list": {}
        }
    }
}

返回结果:

{
    "did": "001122334455",
    "mid": "1234",
    "token": "preset-token",
    "type": "action",
    "result": {
        "preset": {
            "presets": [{
                "index": 1,
                "name": "[name]"
            }]
        }
    }
}

调用预置位

转到指定的预置位

由流媒体服务器发送给设备:

{
    "did": "001122334455",
    "mid": "1234",
    "token": "preset-token",
    "type": "action",
    "data": {
        "preset": {
            "goto": {
                "index": Number
            }
        }
    }
}

应答消息:

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "preset": {
            "code": 0
        }
    }
}

删除预置位

删除指定的预置位

由流媒体服务器发送给设备:

{
    "did": "001122334455",
    "mid": "1234",
    "token": "preset-token",
    "type": "action",
    "data": {
        "preset": {
            "remove": {
                "index": Number
            }
        }
    }
}

应答消息:

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "preset": {
            "code": 0
        }
    }
}

错误应答消息

{
    "did": "001122334455",
    "mid": "1234",
    "type": "action",
    "result": {
        "{action}": {
            "code": Number,
            "error": String
        }
    }
}

错误码:

CODE ERROR
60000 该设备不支持云台控制
60001 没有云台控制权限
60006 云台当前操作失败,请稍后再试
60009 正在调用预置点
60020 不支持该命令
60007 预置点个数超过最大值
60010 该预置点已经是当前位置
60011 预置点不存在