说明

  • 平台访问地址:http://o.d.gdatacloud.com
  • 设备mqtt连接地址:d2.gdatacloud.com
  • 连接端口:7884
  • qos = 0
  • CleanSession = true
  • KeepAlive = 180
  • clientID = device-${DeviceSecret}
  • username = ${nodeId}
  • password= ${DeviceSecret}

创建产品

MQTT协议接入平台(推荐) - 图1

按照设备功能需求设计通道和数据项

MQTT协议接入平台(推荐) - 图2

添加设备

MQTT协议接入平台(推荐) - 图3

1. 直连设备上报(json)

  • 数据上行
  • 请求topic:event/{DeviceSecret}/{serveMark}
  • 响应topic:event/{DeviceSecret}/{serveMark}/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 请求格式
  1. {
  2. "id": "123",
  3. "data": {
  4. "Power": "on",
  5. "WF": 23.6
  6. },
  7. }
  • 响应数据格式
  1. {
  2. "id": "123",
  3. "code": 200,
  4. "data": {}
  5. }
  • 参数说明 | 参数 | 类型 | 说明 | | —- | —- | —- | | id | String | 消息ID号,由设备生成,设备维度唯一性。 | | data | Object | 请求参数。如以上示例中,设备上报了的两个属性Power和WF和上报的属性值(value)。 | | serveMark | String | 通道标识,由平台生成。 | | code | Integer | 结果信息。 |

2. 直连设备下发命令(json)

  • 数据下行
  • 请求topic:cmd/{DeviceSecret}/{serveMark}
  • 响应topic:cmd/{DeviceSecret}/{serveMark}/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 请求格式
  1. {
  2. "id": "123",
  3. "data": {
  4. "temperature": "30.5"
  5. }
  6. }
  • 响应数据格式
  1. {
  2. "id": "123",
  3. "code": 200,
  4. "data": {}
  5. }
  • 参数说明 | 参数 | 类型 | 说明 | | —- | —- | —- | | id | String | 消息ID号,由物联网平台生成。 | | data | Object | 属性设置参数。如以上示例中,设置属性:{ “temperature”: “30.5” }。 | | serveMark | String | 通道标识,设备和平台约定。 | | code | Integer | 结果信息。 |

3. 直连设备上报(byte)

  • 数据上行
  • 请求topic:event/{DeviceSecret}/{serveMark}
  • 响应topic:event/{DeviceSecret}/{serveMark}/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 请求格式
  1. 01 73 b4 9a ff
参数 说明 长度
01 73 b4 9a 消息id 长度为云平台配置长度,不配置,默认为0,不带消息id
ff 数据上报值 该通道下所有数据项字段的总长度,数据项字段长度不够的需要设备补零后再上报,消息体数量需要按照平台通道下配置长度和顺序依次追加
  • 响应数据格式
  1. 01 73 b4 9a 02
参数 说明 长度
01 73 b4 9a 消息id 长度为云平台配置长度,不配置,默认为0,不带消息id
02 收到标识 一个字节,02成功、30失败

4. 直连设备下发命令(byte)

  • 数据上行
  • 请求topic:cmd/{DeviceSecret}/{serveMark}
  • 响应topic:cmd/{DeviceSecret}/{serveMark}/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 请求格式
  1. 01 73 b4 9a 01
参数 说明 长度
01 73 b4 9a 命令id 长度默认为4
01 命令下发值 通道下该数据项字段所配置的长度,不够服务器自动前面补零
  • 响应数据格式
  1. 01 73 b4 9a 02
参数 说明 长度
01 73 b4 9a 命令id 长度默认为4
02 命令回复值 一个字节,02成功、30失败

5. 网关设备上报(json)

  • 数据上行
  • 请求topic:g_event/{DeviceSecret}/{serveMark}/{nodeId}
  • 响应topic:g_event/{DeviceSecret}/{serveMark}/{nodeId}/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 请求格式
  1. {
  2. "id": "123",
  3. "data": {
  4. "Power": "on",
  5. "WF": 23.6
  6. }
  7. }
  • 响应数据格式
  1. {
  2. "id": "123",
  3. "code": 200,
  4. "data": {}
  5. }
  • 参数说明 | 参数 | 类型 | 说明 | | —- | —- | —- | | id | String | 消息ID号,由设备生成,设备维度唯一性。 | | data | Object | 请求参数。如以上示例中,设备上报了的两个属性Power和WF和上报的属性值(value)。 | | serveMark | String | 通道标识,由平台生成。 | | nodeId | String | 网关子设备本身唯一标识,比如IMEI、MAC地址或Serial No。如果是直连设备没有此参数,或者此参数值为空 | | code | Integer | 结果信息。 |

6. 网关设备下发命令(json)

  • 数据下行
  • 请求topic:g_cmd/{DeviceSecret}/{serveMark}/{nodeId}
  • 响应topic:g_cmd/{DeviceSecret}/{serveMark}{nodeId}/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 请求格式
  1. {
  2. "id": "123",
  3. "data": {
  4. "temperature": "30.5"
  5. }
  6. }
  • 响应数据格式
  1. {
  2. "id": "123",
  3. "code": 200,
  4. "data": {}
  5. }
  • 参数说明 | 参数 | 类型 | 说明 | | —- | —- | —- | | id | String | 消息ID号,由物联网平台生成。 | | data | Object | 属性设置参数。如以上示例中,设置属性:{ “temperature”: “30.5” }。 | | serveMark | String | 通道标识,设备和平台约定。 | | nodeId | String | 网关子设备本身唯一标识,比如IMEI、MAC地址或Serial No。如果是直连设备没有此参数,或者此参数值为空 | | code | Integer | 结果信息。 |

7. 网关设备上报(byte)

  • 数据上行
  • 请求topic:g_event/{DeviceSecret}/{serveMark}/{nodeId}
  • 响应topic:g_event/{DeviceSecret}/{serveMark}/{nodeId}/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 请求格式
  1. 01 73 b4 9a 00 00 00 25
参数 说明 长度
01 73 b4 9a 消息id 长度为云平台配置长度,不配置,默认为0,不带消息id
00 00 00 25 消息体 该通道下所有数据项字段的总长度,数据项字段长度不够的需要设备补零后再上报,消息体数量需要按照平台通道下配置长度和顺序依次追加
  • 响应数据格式
  1. 01 73 b4 9a 02
参数 说明 长度
01 73 b4 9a 消息id 长度为云平台配置长度,不配置,默认为0,不带消息id
02 消息回复值 一个字节,02成功、30失败

8. 网关设备下发命令(byte)

  • 数据上行
  • 请求topic:g_cmd/{DeviceSecret}/{serveMark}{nodeId}
  • 响应topic:g_cmd/{DeviceSecret}/{serveMark}/{nodeId}/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 请求格式
  1. 01 73 b4 9a 01
参数 说明 长度
01 73 b4 9a 命令id 长度默认为4
01 命令下发值 通道下该数据项字段所配置的长度,不够服务器自动前面补零
  • 响应数据格式
  1. 01 73 b4 9a 02
参数 说明 长度
01 73 b4 9a 命令id 长度默认为4
02 命令回复值 一个字节,02成功、30失败

9. 直连设备批量上报(json)

  • 数据上行
  • 请求topic:events/{DeviceSecret}/{serveMark}
  • 响应topic:events/{DeviceSecret}/{serveMark}/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 请求格式
  1. {
  2. "id":"123",
  3. "data":[
  4. {
  5. "Power":"on",
  6. "WF":23.6
  7. },
  8. {
  9. "Power":"on",
  10. "WF":23.6
  11. }
  12. ]
  13. }
  • 响应数据格式
  1. {
  2. "id": "123",
  3. "code": 200,
  4. "data": {}
  5. }
  • 参数说明 | 参数 | 类型 | 说明 | | —- | —- | —- | | id | String | 消息ID号,由设备生成,设备维度唯一性。 | | data | Object | 请求参数。如以上示例中,设备上报了的两个属性Power和WF和上报的属性值(value)。 | | serveMark | String | 通道标识,由平台生成。 | | eventTime | Long | 属性上报时间。该参数为可选字段。根据您的业务场景决定消息中是否带时间戳。如果消息频繁,需根据时间戳判断消息顺序。 | | code | Integer | 结果信息。 |

10. 直连设备批量上报(byte)

  • 数据上行
  • 请求topic:events/{DeviceSecret}/{serveMark}
  • 响应topic:events/{DeviceSecret}/{serveMark}/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 请求格式
  1. 01 73 b4 9a //消息id
  2. 02 01 73 b4 9a //第一组完整数据
  3. 02 01 73 b4 9a //第二组完整数据
  4. 02 01 73 b4 9a //第三组完整数据
  5. 02 01 73 b4 9a //第四组完整数据
参数 说明 长度
01 73 b4 9a 消息id 长度为云平台配置长度,不配置,默认为0,不带消息id
02 01 73 b4 9a 数据上报值 每组完整数据为通道下所有数据项字段所配置的长度和,上报顺序需要和通道配置的一样
  • 响应数据格式
  1. 01 73 b4 9a 02
参数 说明 长度
01 73 b4 9a 消息id 长度为云平台配置长度,不配置,默认为0,不带消息id
02 收到消息标识 一个字节,02成功、30失败

11. 网关子设备批量上报(json)

  • 数据上行
  • 请求topic:g_events/{DeviceSecret}/{serveMark}/{nodeId}
  • 响应topic:g_events/{DeviceSecret}/{serveMark}/{nodeId}/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 请求格式
  1. {
  2. "id":"123",
  3. "data":[
  4. {
  5. "Power":"on",
  6. "WF":23.6
  7. },
  8. {
  9. "Power":"on",
  10. "WF":23.6
  11. }
  12. ]
  13. }
  • 响应数据格式
  1. {
  2. "id": "123",
  3. "code": 200,
  4. "data": {}
  5. }
  • 参数说明 | 参数 | 类型 | 说明 | | —- | —- | —- | | id | String | 消息ID号,由设备生成,设备维度唯一性。 | | data | Object | 请求参数。如以上示例中,设备上报了的两个属性Power和WF和上报的属性值(value)。 | | serveMark | String | 通道标识,由平台生成。 | | eventTime | Long | 属性上报时间。该参数为可选字段。根据您的业务场景决定消息中是否带时间戳。如果消息频繁,需根据时间戳判断消息顺序。 | | code | Integer | 结果信息。 |

12. 网关子设备批量上报(byte)

  • 数据上行
  • 请求topic:g_events/{DeviceSecret}/{serveMark}/{nodeId}
  • 响应topic:g_events/{DeviceSecret}/{serveMark}/{nodeId}/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 请求格式
  1. 02 01 73 b4 9a //第一组完整数据
  2. 02 01 73 b4 9a //第二组完整数据
  3. 02 01 73 b4 9a //第三组完整数据
  4. 02 01 73 b4 9a //第四组完整数据
参数 说明 长度
02 01 73 b4 9a 数据上报值 每组完整数据为通道下所有数据项字段所配置的长度和,上报顺序需要和通道配置的一样,批量上报不上报消息id
  • 响应数据格式
  1. 01 73 b4 9a 02
参数 说明 长度
01 73 b4 9a 消息id 长度为云平台配置长度,不配置,默认为0,不带消息id
02 收到消息标识 一个字节,02成功、30失败

13. 设备固件升级(json)

  • 数据下行
  • 请求topic:ota/{DeviceSecret}/upgrade
  • 响应topic:ota/{DeviceSecret}/upgrade/feedback
  • 不处理或不需要回复可以不订阅响应topic
  • 参考资料:https://www.jianshu.com/p/acca9656e250
  • 请求格式
  1. {
  2. "id": "123",
  3. "nodeId":35,
  4. "data": {
  5. "size": 93796291,
  6. "sign": "f8d85b250d4d787a9f483d89a974****",
  7. "version": "1.0.1",
  8. "url": "https://the_firmware_url",
  9. "signMethod": "Md5",
  10. "module": "MCU"
  11. }
  12. }
  • 响应数据格式
  1. {
  2. "id": "123",
  3. "data": {
  4. "step": "-1",
  5. }
  6. }
  • 参数说明 | 参数 | 类型 | 说明 | | —- | —- | —- | | id | String | 消息ID号。需定义为String类型的数字,且每个消息ID在当前设备中具有唯一性。 | | version | String | 设备固件的版本信息。 | | size | Long | 固件大小,单位:字节。 | | url | String | 固件下载地址 | | sign | String | 固件签名,验证下载固件是否完整。 | | signMethod | String | 签名方法。 取值:SHA256和MD5 | | step | String | 固件升级进度信息。取值范围:[1,100] 之间的数字:表示升级进度百分比。-1 :表示升级失败。-2: 表示下载失败。-3: 表示校验失败。-4 :表示烧写失败。 | | nodeId | String | 网关子设备本身唯一标识,比如IMEI、MAC地址或Serial No。如果nodeId的值为空,则代表网关和直连设备升级,如果nodeId有值,则表示网关子设备升级。 |

14. 设备上报固件版本

  • 数据上行
  • 请求topic:ota/{DeviceSecret}/version
  • 响应topic:ota/{DeviceSecret}/version/feedback
  • 只需要每次在 开机/重启/上线 的时候上报固件版本即可
  • 请求格式
  1. {
  2. "id":"123",
  3. "nodeId":35,
  4. "data":{
  5. "version": "1.0.1",
  6. }
  7. ]
  8. }
  • 响应数据格式
  1. {
  2. "id": "123",
  3. "code": 200,
  4. "data": {}
  5. }
  • 参数说明 | 参数 | 类型 | 说明 | | —- | —- | —- | | id | String | 消息ID号,由设备生成,设备维度唯一性。 | | version | String | 设备中的固件版本。 | | code | Integer | 结果信息。 | | nodeId | String | 网关子设备本身唯一标识,比如IMEI、MAC地址或Serial No。如果nodeId的值为空,则代表网关和直连设备上报版本,如果nodeId有值,则表示网关子设备上报固件版本。 |

15. QQ问题交流群

  • 反馈问题
  • 查看日志
  • 思路分析

MQTT协议接入平台(推荐) - 图4