新建设备后,打开详情,里边有很多重要信息,一会我们编程都需要的
//鉴权信息
#define mqtt_password "version=2018-10-31&res=products%2F452870%2Fdevices%2Fesp_device001&et=4092512761&method=md5&sign=Nye5FFd39CihiVu7ZZCYsw%3D%3D" //鉴权信息
我们程序里连接onenet平台需要一个token,就是一个密码,这个密码是由我们之前的各种ID参数决定的,现在来说说:
token生成工具: https://open.iot.10086.cn/doc/mqtt/book/manual/auth/tool.html
(1). res
格式为: products/产品ID/devices/设备名
以我们刚刚创建的产品和设备为例:
products/452870/devices/esp_device001
(2). et
时间戳 (也叫:格林威治时间戳,或者UNIX时间戳)
计算地址:
https://tool.lu/timestamp/
随便写个日子很远的就行
(3). key
设备的key
topic 簇
MQTTS物联网套件中设备相关服务(存储、命令等)的面向设备的接口,均以 topic 的形式提供,设备可以通过 publish 消息到系统 topic 调用服务接口,也可以订阅系统 topic 用于接收服务消息通知,服务提供的系统 topic 的集合形成了 topic 簇
MQTTS物联网套件目前包含:数据点topic簇、命令topic簇、子设备topic簇、设备影子topic簇,如下图所示:
设备数据点上传
设备可以通过向系统固定 topic:$sys/{pid}/{device-name}/dp/post/json 发送数据点存储消息,消息中payload字段数据内容仅支持json格式,示例如下:
{
"id": 123,
"dp": {
"temperatrue": [{
"v": 30,
"t": 1552289676
}],
"power": [{
"v": 4.5,
"t": 1552289676
}],
"status": [{
"v": {
"color": "blue"
},
"t": 1552289677
},
{
"v": {
"color": "red"
},
"t": 1552289678
}
]
}
}
对于本例子, 应如下订阅:
$sys/452870/esp_device001/dp/post/json //上传数据应订阅此主题 (发布消息)
$sys/452870/esp_device001/dp/post/json/accepted //系统通知订阅该主题者,数据上传成功(订阅消息)
$sys/452870/esp_device001/dp/post/json/rejected //系统通知订阅该主题者, 数据上传失败(订阅消息)