没想到学了 MQTT 后,竟然有那么多疑问观点

来源:未知 / 作者:zz / 2018-12-05 20:21
物联网曾被认为是继计算机、互联网之后,信息技术行业的第三次浪潮。随着基础通讯设施的不断完善,尤其是 5G 的出现,进一步降低了万物互联的门槛和成本。

物联网曾被认为是继计算机、互联网之后,信息技术行业的第三次浪潮。随着基础通讯设施的不断完善,尤其是 5G 的出现,进一步降低了万物互联的门槛和成本。

物联网本身也是 AI 和区块链应用很好的落地场景之一,各大云服务商也在纷纷上架物联网平台和服务。

在 AI 和区块链的热潮过去之后,物联网很有可能成为下一个风口,在风口到来之前,提前进行一些知识储备,是很有必要的。

纵观人工智能的发展路线我们可以看到,人工智能近年来之所以能够突飞猛进。

第一个原因是硬件的发展,使得深度学习神经网络的学习时间迅速缩短;

第二就是数据,在我们这个大数据的时代,获取大量数据的成本已经很低了。

再来说物联网,像传感器、智能家电、可穿戴设备等,每天也都在产生着巨量的数据,这也是反馈给深度学习良好的训练数据。

同时,学习的结果又可以再应用到物联网的终端,形成一个良性的循环。举个例子:

从交通探头我们可以采集到大量的交通实时图片,经过处理之后,喂给神经网络,比如 SSD。

SSD 学会在图片中标注出人和汽车的位置,然后再把模型部署到探头端,探头就可以利用深度学习的接口,来实时地分析人流和车流情况了。

所以我认为物联网是 AI 落地的一个非常好的应用场景,随着 AI 的迅速发展,物联网这个同样在很多年前就提出的理论和技术,也会迎来新的春天。

如果想入门物联网,学习和了解 MQTT 协议是非常必要的,它解决了物联网中的一个最基础的问题,设备和设备之间,设备和云端服务之间,是怎么通讯的。

MQTT 之于物联网,就好像 HTTP 之于 Web 那么重要。目前基本所有开放云平台比如阿里云、腾讯云、青云等都支持 MQTT 的接入。

 

MQTT 的优点

为了满足低电量消耗和低网络带宽的需求,MQTT 协议在设计之初就包含了以下一些特点:

1. 实现简单

2. 提供数据传输的 QoS

3. 轻量、占用带宽低

4. 可传输任意类型的数据

5. 可保持的会话(session)

MQTT 协议可以为大量的低功率、工作网络环境不可靠的物联网设备提供通讯保障。

而它的应用范围也不仅如此,在移动互联网领域也大有作为:很多 Android App 的推送功能,都是基于 MQTT 实现的,也有一些 IM 的实现,是基于 MQTT 的。

 

一个物联网老兵的经验之谈

我从 2015 年开始带领团队在物联网领域创业,从物联网软硬件平台的架构到实现,从上线运营到盈利,中间走过一些弯路,也踩过一些坑。

同时,我在社区、论坛、QQ 群里面也经常看见一些刚刚接触 MQTT 的同学在问各种问题。

我曾经在网络上面也搜索过 MQTT 相关的内容,发现系统介绍 MQTT 协议的内容很少,要么是翻译协议的 Specification,要么是单独实现某一个功能的教程。只教其然,未教其所以然。

所以我总结了自己的实践经验,以及我看到的大家常遇到的问题,写了这一门课程,系统地介绍 MQTT 协议,希望对学习 MQTT 的同学有所帮助。

为方便大家学习和交流,我们特地收集并整理了《MQTT 协议快速入门》读者交流群中大家经常提到的问题及作者的解答。

Q1. 目前 MQTT 5.0 会马上普及吗?

暂时不会,目前 Broker 以及 Client 实现的支持还都比较有限。

Q2. MQTT 模块如何实现持续的超低功耗连接?

MQTT 建立的是 TCP 长连接,所以功耗会高一些,如果满足不了低功耗的要求,还可以选择基于 UDP 的 CoAP 协议。

Q3. 如何正确地理解 Retained 消息?

Broker 收到 Retained 消息后,会单独保存一份,再向当前的订阅者发送一份普通的消息(Retained 标识为 0)。

当有新订阅者的时候, Broker 会把保存的这条消息发给新订阅者(Retained 标识为 1)。

Q4. 怎么能让发送数据的一方快速收到指定设备的回应数据?

只要发送的数据 Payload 里面包含发送方订阅的主题,接收方收到消息之后向这个主题发布一个消息,发送方就能收到了。

Q5. 请问我部署好 Broker 后,怎么实现 Broker 和 Client 的通讯?

根据你使用的语言选择一个 Client 的实现就可以了,在这里可以找到一些主流语言的 Client 库。

Q6. 我的设备已经按照 MQTT 的协议在发数据,我在服务器部署的是 Mosquitto 代理,我现在不知道怎么设置 Mosquitto 才能将我的设备数据打印出来?

在服务器端创建一个 Subscriber 订阅相应主题,然后打印收到的消息。

Q7. 如果订阅者重复订阅一个主题,也会被当作新的订阅者。那何时会被当作旧的订阅者?

在下一次主动订阅这个主题之前,都会被当做旧的订阅者。

Q8. 100 台以内少量设备使用 MQTT,是自己搭还是用各种云提供的物联网服务?

看价格,使用云服务器一般比自建要便宜。

Q9. 有哪些开源的比较好的 MQTT Broker?

我使用过的有 EMQTT 和 Mosquitto,我推荐 EMQTT。

Q10. 目前国内的智慧社区具体案例有哪些?

应该不少了, 推荐一个我公司的成都保障房智慧小区。

Q11. MQTT 必须在 Linux 系统上开发吗?

不用,各个 OS 都有现成的 Client 实现。

Q12. AI+IoT 具体有哪些应用场景?

有很多,除了我在课程里面提到的,拿我公司做个例子:通过摄像头和智能门禁作为前端的数据采集,在后端对采集到的数据进行学习,可以做出一些分析。比如,发现哪栋楼、哪个单元可能存在群租等。
 

阅读延展

1
3