前文提到,物联网设备在阿里云物联网平台登记了“身份证”之后,阿里云物联网平台上的设备就处于“未激活”“离线”或者“在线”状态。

怎么样让设备在线呢?

需要在设备内写入物联网“身份证”,然后通过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,并给出了下载连接。详细介绍了使用该软件使用步骤,讲解步骤的同时,还用最简洁的语言对一些基本知识进行了普及,最后重点对用户密码的计算方法和在线计算过程进行了讲解。通过介绍,可以顺利模拟设备连接阿里云物联网平台,使设备在线,并且与阿里云通信成功。

讨论交流

使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(五)---MQTT.fx模拟设备连接阿里云相关推荐

  1. 使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(九)---制作APP

    前几篇文章讲解了如何在阿里云控制台上给设备登记"身份证",如何用MQTT.fx客户端模拟一个设备连接阿里云物联网平台,分析了arduino编程环境如何配置依赖库,在arduino ...

  2. 使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(四)---阿里云物联网平台使用基础

    前面几个文章一直在分析arduino d1 wifi模块如何安装开发板库,如何编程,如何调用wifi操作库,如何运行第一个网络扫描程序. 现在突然跳转到介绍阿里云,为什么呢? 原因很简单,就是物联网设 ...

  3. 使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(三)---D1 wifi模块连接网络

    做硬件实验,切记不要奢望一蹴而就.哪怕是对照网络上的文章一步步操作,也不会一次成功.因为总有一些细节是自己容易忽略的,你要具备一定的基础知识才能将遇到的小问题排除,才能保证操作成功.甚至有的人操作系统 ...

  4. NBIOT专栏之BC28串口连接阿里云物联网平台接发数据

    NBIOT专栏系列目录 创思通信BC28核心板+STM32F系列单片机开发记录博客 BC28核心板资料包下载: https://pan.baidu.com/s/1Du7EXgMRAmbFupT_VUY ...

  5. 手把手教你用Arduino接入阿里云物联网平台,ESP8266连接阿里云物联网平台必看教程...

    使用Ardui no 的方式快速连接阿里云物联网平台. 文中提到的 AliyunIoTSDK 这个 Arduino 库,可以在 Arduino 库商店里搜索到(搜索 AliyunIoTSDK) Ali ...

  6. STM32+4G模块实战项目(连接阿里云物联网平台+OTA升级):(一)初识硬件

    STM32+4G模块实战项目(OTA升级) 构思占坑中ing.....,3天一章,请耐心等待 STM32+4G模块实战项目(连接阿里云物联网平台+OTA升级):(一)初识硬件 STM32+4G模块实战 ...

  7. NBIOT模块bc20与GPS模块AT1218数据上阿里云物联网平台

    本文章主要实现将GPS模块收集到的经纬度信息上传到阿里云物联网云平台上中,使用NBIOT技术,其通讯模块是移远公司推出的BC20模块,GPS模块是正点原子推出的1218系列模块.         (N ...

  8. ESP-MQTT-AT指令连接阿里云物联网平台

    文章目录 文章背景 关键的关键词 本章使用 本章约定 所需资源 技术正文 一:连接方式 二:步骤(简介 3.ESP模块+stm32单片机) 1.创建设备复制三元素组 2.信息生成 3.使用串口工具和云 ...

  9. 阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台

    摘要:本篇文章讲解如何使用JavaScript"轻应用"连接阿里云物联网平台并上报一个数据.仍然延续前几篇文章的结构,从安装软件环境开始讲,以使零基础的同学看了本篇文章之后,也能够 ...

最新文章

  1. 使用ArcGIS API for Silverlight实现地形坡度在线分析
  2. 面向对象的设计模式及魔术函数
  3. 2_指令集、体系架构、微架构
  4. [云炬创业基础笔记]第五章创业机会评估测试7
  5. php不判断比较大小,php怎么不分大小比较字符串
  6. Sql语句之select 5种查询
  7. python 蓝牙模块pybluz安装
  8. java函数只有参数类不一样_java的函数参数传递
  9. 57 MM配置-评估和科目设置-物料类型与账户分类参考对应关系
  10. spss主成分综合得分_使用SPSS对美国50个州情况分析
  11. django 1.8 官方文档翻译: 2-5-4 聚合 (初稿)
  12. 给 console 添加颜色
  13. 【毕设狗】【单片机毕业设计】基于单片机的交通红绿灯控制系统的设计
  14. Harbor 核心服务不可用---故障排除
  15. JVM 年轻代和年老代 大小设置
  16. SpringSecurity全局方法安全性:预授权和后授权
  17. 用wxpython编写登录界面_用wxPython打造Python图形界面(上)
  18. 多文件断点续传,上传视频自动转MP4和截图,图片格式转换
  19. docker启动失败问题之/var/lib/docker/overlay
  20. 金算盘导出oracle,金算盘导出excle_金蝶财务软件的报表如何导出excle文件?

热门文章

  1. ScyllaDB 1.2 国内安装更新源发布
  2. Android双卡设备 如何正确获取上网卡运营商类型
  3. 不等式视角下的策略梯度算法
  4. 一感冒就得红眼病,而且很严重怎么办
  5. 基于单片机仓库智能巡检车的设计
  6. 为什么我推荐你一定要学Python?
  7. 看我如何破解隔壁家小姐姐的wifi
  8. 请输入公众号相关链接,并以http://或https://开头
  9. 阿里云服务器安装Clamav免费杀毒工具
  10. CLIP 改进工作串讲(下)