多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
* 导师视频讲解:[去听课](https://www.bilibili.com/video/BV1Cb4y1171H?p=10) >[success] **技术支持说明** > 1.**客服**提供简单的技术支持,一般自主学习为主 > 2.可到官方问答社区中提问:[**去提问**](https://bbs.csdn.net/forums/nb-iot) > 3.工程师**会尽快**解答社区问题,但他们是一线开发,【**难以保证**】解答时效,解答辛苦,感谢理解! <br/> # **开发环境准备** <br/> ## **登录远程服务器** 依照前述方法通过PuTTY登录到远程服务器,并且其次输入如下命令运行 mosquitto服务,此服务将用作MQTT协议的服务端。 ``` ./killall ./mosquitto -v ``` 命令执行结果如图所示。 ![](https://img.kancloud.cn/fa/98/fa98a7d4a08d42ddfed796b2229f3183_856x472.png =400x) <br/> ## **硬件准备** 本课程配套的开发将用户MQTT协议的其中一个客户端,按如下所示做好准备。 * 把拨码开关的第3和4位分别打到UTX和URX端,然后插入配套的NB-IoT卡,如图所示。 ![](https://img.kancloud.cn/f2/93/f29311a2564ef5352f62c2a570508295_1671x1884.png =250x) 注意,NB-IoT卡的缺口要朝外,如图所示。 ![](https://img.kancloud.cn/e2/d9/e2d9c3f34a6a15055f81fb75741a6849_990x982.png =150x) ### * 用配套的Micro USB线把开发板与电脑连接。 <br/> ## **安装MQTT测试工具MQTT.fx** 上述的开发板可以作为MQTT的一个客户端,还需要另外安装一个Windows PC端的客户端,即共两个MQTT客户端。 * MQTT.fx下载地址:[https://mqttfx.jensd.de/index.php/download](https://mqttfx.jensd.de/index.php/download) ### * 找到下载地址,如图所示。 ![](https://img.kancloud.cn/01/3f/013f344d1ac5011228eabb8d518e6cdf_1872x1256.png =300x) ![](https://img.kancloud.cn/d1/2c/d12c3b0b16e8e3bb37fa98703e38f911_1660x1178.png =300x) 下载所需要的版本软件 ![](https://img.kancloud.cn/6b/4c/6b4c2aab99b83121958610957585a939_1028x684.png =200x) ### * 下载后直接安装即可 <br/> # **MQTT 协议** <br/> ## **MQTT的QoS** &emsp;&emsp;MQTT包含了一套保证消息稳定传输的机制,包括消息应答、存储和重传。在这套机制下,有三种不同层次QoS(Quality of Service): * QoS0,At most once,至多一次; * QoS1,At least once,至少一次; * QoS2,Exactly once,确保只有一次。 &emsp;&emsp;QoS 是消息的发送方(Sender)和接受方(Receiver)之间达成的一个协议: &emsp;&emsp;QoS0 代表,Sender 发送的一条消息,Receiver 最多能收到一次,也就是说 Sender 尽力向 Receiver 发送消息,单如果发送失败,也就算了; &emsp;&emsp;QoS1 代表,Sender 发送的一条消息,Receiver 至少能收到一次,也就是说 Sender 向 Receiver 发送消息时,如果发送失败,会继续重新发送,直到 Receiver 收到这个消息为止,但是因为重传的原因,Receiver 有可能会收到多条重复的消息; &emsp;&emsp;QoS2 代表,Sender 发送的一条消息,Receiver 确保能收到而且只会收到一次,也就是说 Sender 尽力向 Receiver 发送消息,如果发送失败,会继续重新发送,直到 Receiver 收到这个消息为止,同时保证 Receiver 不会因为消息重传而收到重复的消息。 <br/> ## **MQTT.fx连接MQTT服务器** 本部分详细内容请观看导师视频讲解:[去听课](https://www.bilibili.com/video/BV1Cb4y1171H?p=10) <br/> ## **开发板连接MQTT服务器** **AT 指令说明** | AT 指令 | 描述 | 数据格式 | 参数说明 | | --- | --- | --- | --- | | AT | 测试模块是否正常 | AT | 无 | | AT+QSCLK| 配置模块休眠模式 | AT+QSCLK=n |0: 禁用休眠 <br/> 1: 使能休眠,并通过PSM\_EINT下降沿唤醒深度休眠 <br/> 2: 仅使能轻休眠 | | AT+QMTOPEN| 创建MQTT连接 | AT+QMTOPEN=0,"host",port |服务器地址及端口 | | AT+QMTCONN| 发起连接 | AT+QMTCONN=0,"clientid" |客户端ID | | AT+QMTSUB| 订阅主题 | AT+QMTSUB=0,id,"topic",qos | id: 消息ID <br/>topic: 主题 <br/>qos: 服务质量 | | AT+QMTUNS| 退订主题 | AT+QMTUNS=0,id,"topic" | id: 消息ID <br/>topic: 主题 | | AT+QMTPUB| 发布消息 | AT+QMTPUB=0,0,0,0,topic,len | topic: 主题 <br/> len: 数据长度 | | AT+QMTDISC| 断开连接 | AT+QMTDISC=0 | 无 | <br/> **AT 指令测试** * 模块测试:AT ![](https://img.kancloud.cn/d1/8f/d18f2d122a290b35f41a0decd9af854b_1281x953.png =500x) ### * 禁用休眠:AT+QSCLK=0 ![](https://img.kancloud.cn/f8/04/f8042517d9dc241c566b3e5614bd3c29_1278x951.png =500x) ### * 打开MQTT连接:AT+QMTOPEN=0,"**1.15.27.206**",1883 ![](https://img.kancloud.cn/79/69/79693c6ddd2b84f64c057225f78a5ab9_1272x966.png =500x) ### * 连接服务器:AT+QMTCONN=0,"iotdevice" ![](https://img.kancloud.cn/5a/48/5a48a8da8f5f525405339c57f40283e3_1271x965.png =500x) ### * 订阅:AT+QMTSUB=0,1,"topic/report",2 ![](https://img.kancloud.cn/59/6b/596b1c113aa4095391de48cce4254976_1271x968.png =500x) ### * 订阅:AT+QMTSUB=0,1,"topic/write",2 ![](https://img.kancloud.cn/41/9d/419dbcaee5dd5e87aeced1d63cf9c4e1_1269x968.png) ### * 取消订阅(退订):AT+QMTUNS=0,2,"topic/write" ![](https://img.kancloud.cn/73/0a/730aadf24f004c3a64c8ed0c61f8695e_1271x965.png =500x) ### * 发布消息:AT+QMTPUB=0,0,0,0,"topic/pub",13 内容(注意不能带回车换行符):{"value":123} ![](https://img.kancloud.cn/38/24/3824effe05ca402b789f21b36362e337_1269x963.png =500x) ### * 远程服务器显示完整的连接、订阅、退订和发布流程 ![](https://img.kancloud.cn/59/d2/59d23a014f40eb29b52641736ec9138a_915x1027.png =500x) <br/> # **使用手机 App** 可以在手机App应用商店中下载一个 MQTT 测试工具。这里我们以苹果手机为例,到应用商店中下载并安装MQTTool App。**此工具也可用作MQTT客户端**。 >[info] 使用Android手机的读者在App应用商店搜索MQTT即可 * 输入Host地址、Client Id,然后点击 "Connect" ![](https://img.kancloud.cn/f2/8a/f28a91faf92e67b862f8be672369402c_828x1792.png =230x) ### * 连接远程服务器成功 ![](https://img.kancloud.cn/9b/73/9b732515c2d0d22b613916ee1945b4ee_828x1792.png =230x) ### * APP上订阅主题:topic/pub ![](https://img.kancloud.cn/fb/9e/fb9e7c2f528d62e302cc9126fe2fc0bb_828x1792.png =230x) ### * APP上订阅主题成功 ![](https://img.kancloud.cn/84/17/8417c2fe3e7e841167b0d968595fed63_828x1792.png =230x) ### * 可以看到远程服务器 mosquitto 的提示消息 ![](https://img.kancloud.cn/39/6c/396c3b16c6939bbbbdab65fc481da533_955x521.png =500x) ### * NB-IoT开发板重新发送数据:AT+QMTPUB=0,0,0,0,"topic/pub",13 ![](https://img.kancloud.cn/e6/76/e676e552418159cdb68a8fd3f6ab6ca1_1269x965.png =500x) ### * 发送内容 ![](https://img.kancloud.cn/60/6e/606e5af58dff3a3e0faada98e40f6d06_1268x964.png =500x) ### * 手机APP上接收到消息 ![](https://img.kancloud.cn/54/27/542745e7fc9d2f023466e0d0b843c7c2_828x1792.png =230x) ### * 通过手机APP上发布消息,主题:topic/report ![](https://img.kancloud.cn/f2/73/f27338a48a08b3c45dd6ac067078503d_828x1792.png =230x) ### * 开发板收到消息 ![](https://img.kancloud.cn/57/b3/57b37d92f6e8347b431c393396e1cef1_1270x965.png =500x) ### * 关闭MQTT连接:AT+MQTDISC=0 ![](https://img.kancloud.cn/d2/40/d24020a73932371a131224af0717fbba_1270x964.png =500x) ### * 最后,必须关闭远程服务器的服务程序:组合键 ctrl+c ![](https://img.kancloud.cn/e2/a1/e2a1a5f8d3c61efe2df9d5336a703472_960x524.png =500x) <br/> <br/> ## **商务合作** 如有以下需求,可扫码添加管理员好友,注明“**商务合作**” * 项目定制开发,技术范围:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等; * 入驻平台,成为讲师; * 接项目赚外快; * 善学坊官网:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =150x) (非商务合作**勿扰**,此处**非**技术支持)