大家好,我是程序员小哈。最近的网络文章都是和某网友的一个问答有关:STM32-->ESP8266->OneNET涉及到的知识点,小哈力求通俗易懂,欢迎关注文章。要连接OneNET服务器,首先要了解什么是MQTT。MQTT简介MQTT(MessageQueuingTelemetryTransport)是IBM开发的一种轻量级消息传输协议。与其他通信协议相比,MQTT更适合物联网场景。在MQTT中,主要有三个角色:角色描述发布者(Publish)发送消息的一方可以是应用程序或设备代理(Broker)(服务器)管理消息队列的一方位于消息发布者和订阅者之间(Subscribe)订阅主题的一方,主要用于接收消息。MQTT传输的消息分为两部分:主题(Topic--区分不同的消息)和负载(payload--消息内容)。MQTT协议采用发布/订阅(Publish/Subscribe)模式。MQTT是一个应用层协议,其底层是TCP协议。TCP是传输层协议。云端(服务器端)通过主题管理每个物联网设备。订阅以在设备之间转发消息。MQTT协议适用场景:客户端数量多,每条消息传输的数据量小,协议占用资源少,可以方便的移植到微控制器等硬件上,提供不同层次的“低带宽、高延迟、无可靠网络和资源有限的硬件环境,数据传输相对可靠支持一对多的消息分发一般物联网平台都支持MQTT协议,比如我们的OneNET今天要去访问-中国移动物联网开放平台,也支持MQTT协议。具体支持的协议有以下几种:今天我们就来看看如何基于MQTT协议访问OneNET服务器。MQTT.fx简介OneNET平台相当于MQTT中的Broker(服务器)。要实现与OneNET平台的连接,我们需要一个客户端,MQTT.fx是目前最常用的MQTT客户端。我们使用的MQTT.fx版本是1.7.1。MQTT.fx软件下载后,默认安装即可。安装后的软件界面如下:创建产品和设备,注册登录OneNET平台控制台。网址为:https://open.iot.10086.cn/console/后台文档中心-->MQTT物联网套件(新版)-->快速入门部分:我们发现了以下有用的信息:创建产品参考官网文档:https://open.iot.10086.cn/doc/mqtt/book/get-start/product&device/createProduct.html创建设备参考官方文档:https://open.iot。10086.cn/doc/mqtt/book/get-start/product&device/createDevice.html我们根据上面的网络教程创建一个产品和一个测试设备:服务器地址OneNET物联网平台的地址和端口从以下链接获取:https://open.iot.10086.cn/doc/iot_platform/book/device-connect&manager/MQTT/mqtt-device-development.htmlBroker地址:studio-mqtt.heclouds.comBroker端口:1883进入配置界面后为连接MQTT服务器,如下图填写地址和端口:其他配置信息说明:ProfileName:随便起,我命名为:OneNETProfileType:保持默认,MQTTBrokerBrokerAddress:MQTT服务器地址,studio-mqtt.heclouds.comBrokerPort:服务器端口,1883ClientID:客户端ID,这里填写设备名称:XiaoHaLEDGeneral标签下的内容,取消MQTTVersion后面的复选框,其他默认即可。在UserCredentials选项卡下填写用户凭证信息,我们需要填写UserName和Password。其中,UserName为产品管理页面的产品ID,对应我创建的测试设备:hg8zt6E3LP。认证信息要填写Password,这里是token。token生成的介绍,关于token算法的详细解释请参考以下链接:https://open.iot.10086.cn/doc/mqtt/book/manual/auth/token.htmltoken生成工具OneNET提供生成token的上位机软件,可通过以下链接下载使用:https://open.iot.10086.cn/doc/mqtt/book/manual/auth/tool.html其中:res:products/{pid}/devices/{device_name}上面是res的值,由产品ID和设备名称组成。由上可知,我们创建的测试设备的产品ID值为:hg8zt6E3LP,设备名称的值为:XiaoHaLED。所以res的最终值为:products/hg8zt6E3LP/devices/XiaoHaLEDet:expirationtime,表示过期时间。这个时间必须大于当前时间。为了避免过期过快,可以适当增加这个参数的值,这里是unix时间。简单来说,unix时间戳是自1970年1月1日(午夜UTC/GMT)以来的秒数。除了使用程序获取当前的Unix时间外,还可以使用现成的Unix时间戳<<>>北京时间转换在线工具,比如以下网址:https://tool.lu/timestamp/2021-12-2716:38:28<==>et:1640594308key:该参数为产品关键参数,位置如下图所示:其他参数可以默认。将上面得到的res、et、key代入到token计算工具软件中,点击Generate按钮:生成的字符串就是UserCredentials标签页下Password文本框需要填写的内容,即填写在如下内容中:version=2018-10-31&res=products%2Fhg8zt6E3LP%2Fdevices%2FXiaoHaLED&et=1640594308&method=md5&sign=yBG2008b6SMfxiW6q6KmnA%3D%3D其他参数可以默认,然后点击确定退出配置页面。在下图中的下拉列表中连接OneNET服务器,选择刚才创建的ProfileName:OneNET,点击“连接”按钮,成功连接到OneNET平台服务器。在管理-->设备管理页面,可以看到小哈LED设备已经在线。好了,我们已经成功连接到OneNET服务器了。今天的分享到此结束。这个MQTT.fx软件也可以用来连接其他物联网平台,比如阿里云物联网平台。有兴趣的可以自己尝试一下~本文转载自微信公众号《从0到1的嵌入》,可以通过以下二维码关注。转载本文请联系嵌入式从0到1公众号。
