玩转 ESP32 + Arduino (十二) 通过MQTT协议上传数据至OneNet云平台

玩转 ESP32 + Arduino (十二) 通过MQTT协议上传数据至OneNet云平台,第1张

这里我们使用了一个库: PubSubClient

找到多协议接入入口

添加旧版MQTT产品

添加产品

添加产品成功

然后添加设备

接下来我们来找到旧版MQTT关键的信息:

2.设备ID(在设备界面)

3.设备鉴权信息

思路: 1.连接网络 2.登录ONENET 3.发布主题信息

可以上传数据,也能接收到OneNet下发的命令

后来又在接收命令的callback里写了一个点灯, 下发命令1就开灯, 0就关灯

这里我们使用了一个库: PubSubClient

创建产品

创建新设备

(1). 产品ID, 用户ID,和登录key

(2). 设备名称, ID和 设备key

OneNet MQTTS用携带token的方式进行鉴权

访问者(可以为应用或者设备)固化访问密钥于软件中,在需要进行服务访问时,通过密钥计算临时token,通过临时token进行服务访问认证

访问者首先通过访问管理者获取临时访问token,访问管理者可根据需要自定义该token的访问有效期(即过期时间),访问者获取该token后方才能访问OneNET

访问管理者直接将密钥授权给访问者(例如,直接为设备烧写key),访问者通过密钥生成token进行访问

计算方法: https://open.iot.10086.cn/doc/mqtt/book/manual/auth/token.html

token生成工具: https://open.iot.10086.cn/doc/mqtt/book/manual/auth/tool.html

根据软件界面, 我们应提供 res et key method

格式为: products/产品ID/devices/设备名

以我们刚刚创建的产品和设备为例:

时间戳 (也叫:格林威治时间戳,或者UNIX时间戳)

计算地址:

https://tool.lu/timestamp/

我直接计算到了 2099年

设备的key (不是产品的access key)

相关文档: https://open.iot.10086.cn/doc/mqtt/book/device-develop/topics/introduce.html

MQTTS物联网套件中设备相关服务(存储、命令等)的面向设备的接口,均以 topic 的形式提供,设备可以通过 publish 消息到系统 topic 调用服务接口,也可以订阅系统 topic 用于接收服务消息通知,服务提供的系统 topic 的集合形成了 topic 簇

MQTTS物联网套件目前包含:数据点topic簇、命令topic簇、子设备topic簇、设备影子topic簇,如下图所示:

数据点topic簇

设备可以通过数据点 topic 簇上传数据存储并即时获取数据存储结果

簇中topic 以 $sys/{pid}/{device-name}/dp 开头

通过publish上传数据时,payload需要满足平台约定数据格式

支持一次上报多条数据,支持设备自带时间戳上报

即时通知数据处理结果(需订阅)

MQTT物联网套件支持用户以 数据流-数据点 模型( 模型详情 )将数据上传至平台并进行存储,设备可以通过数据点 topic 簇调用数据点存储服务存储数据,可以通过订阅系统 topic 获取数据处理结果通知,如下图所示:

对于本文中的例子, 应如下订阅:

上传的JSON数据必须采用以下规则

MQTT物联网套件支持应用通过API直接向设备发送单播命令,设备可以通过设备命令 topic 簇获取消息并进行消息应答

设备命令交互流程见下图:

topic中{cmdid}为变量,为每条命令的唯一id,可通过通配符的方式进行订阅,比如: $sys/{pid}/{device-name}/cmd/request/+ ,或者 $sys/{pid}/{device-name}/cmd/#

对于本位中 的例子,应如下订阅:

本连接实现了设备模拟上传温湿度数据, 设备接收平台下发的命令

(但没有给平台回复收到命令的消息)

老样子,写个小点灯.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9601137.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存