介绍
设备上行表示设备的数据上送。
# 云平台接收设备消息格式
主题:
iot/rx/${AppKey}/${ID}/resultYx
rx 表示接收设备数据
${AppKey}表示推送的单位的唯一标识码,为字符串,如: Feisjy20190507
以下的${ID}为云平台设备通讯地址,设备唯一标识码,为字符串,如:T0001
最后的resultYx表示不同数据类别;完整示例主题:iot/rx/LiuGang20190507/T0001/resultYx
内容:以json为解析格式。设备上送数据每条报文大小大于1M可能会导致数据解析有误,建议分包处理
# 设备登录认证
# 设备登录流程

# 登录请求报文
topic
iot/rx/${AppKey}/${ID}/login{ "productKey":"test", "deviceSecret":"123456", "status":"ask", "id":1 } `
1
2
3
4
5
6
7
参数介绍
productKey表示产品KEY,可在iot平台产品详情中查看,deviceSecret表示设备密钥,设备上电后第一次连接,需要发登录认证,status表示当前的阶段,ask表示发起,req表示平台回复,fin表示设备确认完成登录操作;id表示一个随机整数,每次登录时,随机创建。
# 平台回复登录请求
topic
iot/tx/${AppKey}/${ID}/login{ "status":"req", "id":2 } `
1
2
3
4
5
参数介绍
status表示当前的阶段,req表示平台回复设备收到登录消息,id表示一个随机整数,每次登录时,随机创建。
# 完成登录确认报文
topic
iot/rx/${AppKey}/${ID}/login{ "status":"fin", "id":3 } `
1
2
3
4
5
参数介绍
status表示当前的阶段,fin表示平台回复设备收到登录消息,id表示一个随机整数,每次登录时,随机创建。
# 设备登出报文
topic
iot/rx/${AppKey}/${ID}/login{ "status":"out", "id":3 } `
1
2
3
4
5
参数介绍
status表示当前的阶段,out表示登出;id表示一个随机整数,随机创建。设备端可在连接mqtt时添加遗嘱消息(Will Message)配置,主题和内容如上,当客户端连接中断后mqtt服务端会自动发送登出消息。平台收到该消息后会将设备置为离线状态。
# 设备心跳
topic
iot/rx/${AppKey}/${ID}/heartbeat{ "id":1 }
1
2
3
参数介绍
id 为一个累加值,从在线开始从0累计,每次心跳加一,整数越限后从0开始,心跳发送周期可依据平台设定的心跳检测周期设定。推荐1分钟一次。
# 设备遥信实时数据推送
topic
iot/rx/${AppKey}/${ID}/resultYx{ "id": "xxxxxxxxxxxx", "time":1656126642405, "slaveDevAddr":"xxxx", "yxList":[ { "id":1, "name":"电磁阀", "value":1, "time":1656126642406 }, { "id":2, "name":"气泵", "value":0 } ] }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
参数介绍
设备可主动上送或等待总招命令再上送
id:非必传,设备如果需要确认平台是否接收数据时可生成一个唯一id上报,平台会通过回复信息主题返回确认接收数据
time:13位时间戳,格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数
value:0-关 1-开,所有只有0和1两个状态的数据可通过遥信上送
slaveDevAddr:子设备通讯地址,网关设备上送数据时选传,为空或没有该字段则解析数据到当前设备(${ID}),否则解析为子设备的数据
time: 优先使用yxList的time,yxList的time为空则使用外层的time,两个 time都为空则使用平台收到数据的时间
name:遥信名称,选传,可不上传该字段
# 设备遥测历史数据推送
topic
iot/rx/${AppKey}/${ID}/resultYc{ "id": "xxxxxxxxxxxx", "time":1656126642405, "slaveDevAddr":"xxxx", "ycList":[ { "id":1, "name":"温度", "value":25.15, "time":1656126642406 }, { "id":2, "name":"湿度", "value":23.15 } ] }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
参数介绍
设备可主动上送或收到总招命令再上送
id:非必传,设备如果需要确认平台是否接收数据时可生成一个唯一id上报,平台会通过回复信息主题返回确认接收数据
time:13位时间戳,格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数
value:浮点数,所有数值型的通过遥测上送,(GPS坐标除外)
slaveDevAddr:子设备通讯地址,网关设备上送数据时选传,为空或没有该字段则解析数据到当前设备(${ID}),否则解析为子设备的数据
time: 优先使用ycList的time,ycList的time为空则使用外层的time,两个 time都为空则使用平台收到数据的时间
name:遥测名称,选传,可不上传该字段
# 设备参数实时数据推送
topic
iot/rx/${AppKey}/${ID}/setting{ "id": "xxxxxxxxxxxx", "time":1656126642405, "slaveDevAddr":"xxxx", "settingList":[ { "id":1, "name":"GPS", "value":{ "lat":23.123456, "lon":113.123456 }, "name":"定时上送周期", "value":5, "time":1656126642406}, { "id":2, "name":"服务器IP", "value":"192.168.0.1" } ] }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
参数介绍
设备可主动上送或收到总招命令再上送
设备本身的参数,远程配置项,可通过设备参数上发
id:非必传,设备如果需要确认平台是否接收数据时可生成一个唯一id上报,平台会通过回复信息主题返回确认接收数据
time:13位时间戳,格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数
slaveDevAddr:子设备通讯地址,网关设备上送数据时选传,为空或没有该字段则解析数据到当前设备(${ID}),否则解析为子设备的数据
time: 优先使用settingList的time,settingList的time为空则使用外层的time,两个 time都为空则使用平台收到数据的时间
name:参数名称,选传,可不上传该字段
# 设备GPS定位实时数据推送
topic
iot/rx/${AppKey}/${ID}/location{ "time":1656126642405, "longitude":"114.0540924072", "latitude":"22.6601314545" }
1
2
3
4
5
参数介绍
设备定位坐标上送,因为gps坐标小数点精度高,通过此主题单独上送。
# 设备历史数据推送
topic
iot/rx/${AppKey}/${ID}/historyData{ "historyList":[ { "addr":"xx", "yxList":[{"code":1,"value":1,"time":1656126642405}...], "ycList":[{"code":1,"value":1.2,"time":1656126642405}...] }, ... ] }
1
2
3
4
5
6
7
8
9
10
参数介绍
addr:当前设备或子设备通讯地址
code:遥信或遥测编码
value:遥信或遥测值
time:历史数据采样时间,13位时间戳,格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数
当前平台设置每包数据大小最多为1M,若设备数据量过多建议分包上送
# 设备上送全部实时数据
topic
iot/rx/${AppKey}/${ID}/allRealtimeData{ "id": "xxxxxxxxxxxx", "time":1656126642405, "slaveDevAddr":"xxxx", "yxList":[ {"id":1,"name":"电磁阀","value":1,"time":1656126642406}, {"id":2,"name":"气泵","value":0} ], "ycList":[ {"id":1,"name":"温度","value":25.15,"time":1656126642406}, {"id":2,"name":"湿度","value":23.15} ], "settingList":[ {"id":1,"name":"定时上送周期","value":5,"time":1656126642406}, {"id":2,"name":"服务器IP","value":"192.168.0.1"} ], "locationInfo":{ "longitude":"114.0540924072", "latitude":"22.6601314545" } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
参数介绍
设备可主动上送或等待总招命令再上送
id:非必传,设备如果需要确认平台是否接收数据时可生成一个唯一id上报,平台会通过回复信息主题返回确认接收数据
time:13位时间戳,格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数
yxList:遥信数据,内容以及定义和单独上送遥信数据一致
ycList:遥测数据,内容以及定义和单独上送遥测数据一致
setting:参数数据,内容以及定义和单独上送参数数据一致
locationInfo:定位信息,内容以及定义和单独上送定位数据一致
若某项数据为空可不传该字段数据
# 子设备在线状态推送
topic
iot/rx/${AppKey}/${ID}/slaveDevStatus{ "devList":[ {"addr":"xxx","sta":0,"msg":"设备无响应"}, {"addr":"xxxx","sta":1} ] }
1
2
3
4
5
6
参数介绍
当某个设备连接多个子设备并想单独维护子设备状态时,可将该设备作为网关设备,网关设备登录认证完毕后可通过该命令上传子设备在线状态
devList:子设备集合
addr:子设备通讯地址
sta:子设备状态,0-离线,1-在线,为0时可在msg字段上传离线原因
msg:子设备离线原因,选传,可不上传该字段
# 设备批量上送实时数据
topic
iot/rx/${AppKey}/${ID}/batchAllRealtimeData{ "id": "xxxxxxxxxxxx", "time":1656126642405, "dataList": [ { "addr":"xxxx", "yxList":[ {"id":1,"name":"电磁阀","value":1,"time":1656126642406}, {"id":2,"value":0} ], "ycList":[ {"id":1,"name":"温度","value":25.15,"time":1656126642406}, {"id":2,"value":23.15} ], "settingList":[ {"id":1,"name":"定时上送周期","value":5,"time":1656126642406}, {"id":2,"value":"192.168.0.1"} ], "locationInfo":{ "longitude":"114.0540924072", "latitude":"22.6601314545" } } ... ] }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
参数介绍
设备可主动上送或等待总招命令再上送
id:非必传,设备如果需要确认平台是否接收数据时可生成一个唯一id上报,平台会通过回复信息主题返回确认接收数据
dataList:数据集合,实时数据定义和设备上送全部实时数据一致
addr:当前设备或子设备通讯地址,网关设备上送数据时选传,为空或没有该字段则解析数据到当前设备(${ID}),否则解析为子设备的数据
当前平台设置每包数据大小最多为1M,若设备数据量过多建议分包上送