介绍

设备上行表示设备的数据上送。

# 云平台接收设备消息格式

主题: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,若设备数据量过多建议分包上送

最后更新: 4/28/2024, 4:22:54 PM