使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(五) |
您所在的位置:网站首页 › 物联网开发app › 使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(五) |
前文提到,物联网设备在阿里云物联网平台登记了“身份证”之后,阿里云物联网平台上的设备就处于“未激活”“离线”或者“在线”状态。 怎么样让设备在线呢? 需要在设备内写入物联网“身份证”,然后通过MQTT协议连接阿里云物联网平台,当然,还有最重要的事情,就是数据要加密传输。本实验设备的”身份证“信息如下图所示: 所以在D1模块编程写入“身份证”信息真正连接阿里云物联网平台之前,需要先了解一下通信是怎么实现的,此时用一个模拟软件来模拟调试是最好的,因为这样可以让我们集中精力于通信协议的分析。假如上来就编程,万一程序有瑕疵,到时候通信不成功就不能确定是硬件问题,还是程序问题,还是MQTT通信问题了。 如果用MQTT客户端,那么就可以专注于MQTT通信了。下面逐步分析。 目录 一、MQTT简介 二、MQTT.fx简介 三、使用MQTT.fx模拟设备连接阿里云物联网平台 四、用户密码怎么获得? 五、MQTT.fx连接阿里云物联网平台 一、MQTT简介MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。 要详细了解MQTT的使用,可以在CSDN搜索“MQTT”,有讲的深入的,有讲的简单的。大家根据自己是基础自行选择。我在这里谈一些我自己的理解。 我的一些理解: 1.MQTT=Message Queuing Telemetry Transport; 2.MQTT的消息都很短,所以数据量很小,也可以工作在低带宽、不可靠的网络环境下,开销很小,节省网络流量; 3.工作方式是订阅/发布方式,也就是说,多个设备订阅一个主题,当主题变动时,每个设备都能收到。 关于订阅/发布的理解,可以参考文章 https://blog.csdn.net/youxiazzz12/article/details/82760538 二、MQTT.fx简介MQTT.fx是一个非常流行的MQTT通信客户端。关于它的介绍是下图所示,它是一个MQTT客户端,用java语言写的,基于Eclipse Paho.这个软件在MQTT通信开发中应用非常广,有很多文章将其作为当前最流行的客户端来描述。
它的下载连接是: http://mqttfx.jensd.de/index.php/download 作者已经将资源放在CSDN了,也可以从这里下载。提供的版本是1.7.1. https://download.csdn.net/download/youngwah292/12127278
阿里云 https://www.alibabacloud.com/help/zh/doc-detail/86706.htm 三、使用MQTT.fx模拟设备连接阿里云物联网平台下图是软件打开的界面。“aliyun”是作者自定义的一个设置,这个设置可以保存若干个参数,软件可以有若干个不同的设置。方便调试不同的设备。齿轮形状的图标是设置快捷按钮,connect按钮是蓝色的,Disconnect按钮是灰色的,蓝色表示可用,灰色表示不可用。下面几个选项卡中,最重要的是Publish(发布)和Subscribe(订阅)。 下面演示如何设置。 首先Profile Name设置为aliyun,其实可以是任意字符串,这里只是为了好记。 其次Profile Type下拉设置为MQTT Broker,broker的意思是经纪人;掮客,英文意思是a businessman who buys or sells for another in exchange for a commission. broker的主要职责是接受发布者发布的所有消息,并将其过滤后分发给不同的消息订阅者。 broker address需要手工填写:XXXXXX.iot-as-mqtt.cn-shanghai.aliyuncs.com,其中XXXXX为前文在阿里云物联网平台上定义的设备ProductKey(产品标识码).后面的不展开说了,我用的上海的服务,所以填写的cn-shanghai ,这都是有固定格式的,可以查看阿里云帮助文档做详细了解。https://www.alibabacloud.com/help/zh/doc-detail/89298.html?spm=a2c5t.11065259.1996646101.searchclickresult.7d263e6fEiDqRd broker port填写1883,这个端口号就填写这个,不用修改。 Client ID,我这里填写的是12345|securemode=3,signmethod=hmacsha1| 注意,这里填写Client ID时,字符串最后的竖线一定要保留,否则会提示连接不上。感谢网友“AURVIS”的细心提醒,特此标注。写这个文章的目的,就是做成一篇实验报告,让新手模仿一遍也能做到,少走弯路。 数字“12345"其实就是Client ID,也就是客户端编号。这个可以随便写,但是正规厂商会用网卡的物理地址来代替,因为网卡物理地址具有唯一性,这么做更加正规,也具有可追溯性。 数字12345后面的字符串是什么意思呢? securemode:表示目前安全模式,可选值有2(wss协议)和3(ws协议),不展开讲。 signmethod:表示签名算法类型。(阿里云平台的类型是hmacsha1),也不展开讲。暂时知道它是这种加密方式就行了。 Client ID填写完成后,不用点击后面的generate按钮,网络文章说的,不知道原因。 下一步,选择User Credentials选项卡,这里有两个参数需要填写,分别是User Name和Password。 这两个参数不能随便填写,有它的填写规则。 首先User Name,我这里填写的是light1&a1RXXXXX7YK,看过前面文章的读者应该知道,a1RXXXXX7YK是设备的Product Key,light1是Device Name。中间的字母”&“不能少。 四、用户密码怎么获得? 最关键的是Password(密码),这个怎么获得? 网络上有很多文章,有自己算的,有专门的软件,还有在线计算的。 经过测试,这里建议使用在线计算,网址和界面如下: https://www.nnhpiot.com/Onlinetools/ 由于我们做的是一个单独设备的实验,所以使用第一种方式。 点击 工具详细---阿里云物联平台MQTT密码计算。 打开新的网页,填写设备的“身份证”信息。这里面有一个时间戳timestamp,我们不知道,所以暂时不填写。 点击Generate,计算结果如下:域名就是在MQTT.fx填写的broker address,如果不愿意手工填写,可以从此处复制。 客户端编号是12345|securemode=3,signmethod=hmacsha1,timestamp=| 注意,这里多了时间戳timestamp,在MQTT.fx填写Client ID时,需要将这个删除,经过实验,带这个时间戳时连接不上。 用户名不用再多说,前文已经讲过。 用户密码就是根据上面多个参数用hmacsha1算法计算出来的密码。复制粘贴到MQTT.fx软件即可。 五、MQTT.fx连接阿里云物联网平台 MQTT.fx有关参数填写好之后,最后设置一项SSL/TLS,勾选Enable SSL/TLS。所有设置就完成了。 确认这些设置之后,回到主界面,点击connect,发现界面右侧的状态灯由灰色变为绿色,connect按钮也变灰色了。 这就证明已经连接好了阿里云物联网平台。 再看阿里云的控制台。light1确实在线了。 接下来需要做的是订阅一下我们所需要的主题了。我们回到阿里云控制台,看一下topic列表中的主题,最关键的是一个get主题。我们将这个“/a1RFyDPN7YK/light1/user/get”复制下来。 粘贴到MQTT.fx下面的订阅选项卡Subscribe下,然后点击订阅Subscribe按钮。发现这个主题已经被订阅了。 现在我们测试一下阿里云物联网平台和模拟设备的通信如何。 回到控制台,点击发布消息,在弹出的对话框中填写要发送的消息。 可以看到,消息通信成功。
小结: 本文简介了MQTT的基本原理和MQTT最流行的客户端--MQTT.fx,并给出了下载连接。详细介绍了使用该软件使用步骤,讲解步骤的同时,还用最简洁的语言对一些基本知识进行了普及,最后重点对用户密码的计算方法和在线计算过程进行了讲解。通过介绍,可以顺利模拟设备连接阿里云物联网平台,使设备在线,并且与阿里云通信成功。
讨论交流 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |