MQTT 是首选的 IoT 发布-订阅轻量级消息传递协议。Python 绝对是最流行的编程语言之一。它是开源的、多平台的,您可以使用它开发任何类型的应用程序。如果您开发物联网、web 应用程序、移动应用程序或这些解决方案的组合,您必须了解 MQTT 及其轻量级消息传递系统的工作原理。Python 和 MQTT 的结合使开发与传感器、不同设备和其他应用程序通信的强大应用程序成为可能。当然,在使用该协议时考虑安全性是非常重要的。
大多数情况下,当您使用现代 Python 3.6 中编码的复杂物联网解决方案时,您将使用可能使用不同操作系统的不同物联网板。MQTT 有自己的特定词汇表和不同的工作模式。学习 MQTT 很有挑战性,因为它包含了太多抽象概念,需要现实生活中的示例才能轻松理解。
本书将让您深入了解 MQTT 协议的最新版本:3.1.1。您将学习使用最新的 MOSQUITO MQTT 服务器、命令行工具和 GUI 工具,以了解 MQTT 的一切工作方式以及该协议为您的项目提供的可能性。您将学习安全最佳实践,并将其用于 Mosquitto MQTT 服务器。 然后,您将使用 Python 3.6 中的许多实际示例。您将通过与 Eclipse Paho MQTT 客户端库交换 MQTT 消息来控制车辆、处理命令、与执行器交互以及监控 surf 竞争。您还将使用基于云的实时 MQTT 提供程序。
您将能够在各种现代物联网板上运行这些示例,例如 Raspberry Pi 3 Model B+、高通 DragonBoard 410c、BeagleBone Black、MinnowBoard Turbot 四核、LattePanda 2G 和 UP Core 4GB。但是,支持 Python 3.6 的任何其他板都可以运行这些示例。
本书的目标是 Python 开发人员,他们希望开发能够与其他应用程序和设备交互的应用程序,如物联网板、传感器和执行器。
第 1 章安装 MQTT 3.1.1 Mosquito 服务器开启了我们在各种物联网解决方案中使用首选物联网发布-订阅轻量级消息协议的旅程,结合移动应用程序和 web 应用程序。我们将了解 MQTT 及其轻量级消息传递系统是如何工作的。我们将理解 MQTT 难题:客户端、服务器(以前称为代理)和连接。我们将学习在 Linux、macOS 和 Windows 中安装 MQTT 3.1.1 MOSQUITO 服务器的过程。我们将学习在云(Azure、AWS 和其他云提供商)上运行 MOSQUITO 服务器的特殊注意事项。
第 2 章使用命令行和 GUI 工具了解 MQTT 的工作原理,教我们使用命令行和 GUI 工具详细了解 MQTT 的工作原理。我们将学习 MQTT 基础知识、MQTT 的特定词汇表及其工作模式。我们将使用不同的实用程序和图表来理解与 MQTT 相关的最重要的概念。在编写 Python 代码以使用 MQTT 协议之前,我们将了解所有需要了解的内容。我们将处理不同的服务质量级别,并分析和比较它们的开销。
第 3 章保护 MQTT 3.1.1 Mosquitto 服务器重点介绍如何保护 MQTT 3.1.1 Mosquitto 服务器。我们将进行所有必要的配置,以使用数字证书来加密 MQTT 客户机和服务器之间发送的所有数据。我们将使用 TLS,并将学习为每个 MQTT 客户机使用客户机证书。我们还将学习强制实现所需的 TLS 协议版本。
第 4 章编写使用 Python 和 MQTT 消息控制车辆的代码,重点是编写 Python 3.x 代码,使用通过加密连接(TLS 1.2)传递的 MQTT 消息控制车辆。我们将编写能够在不同流行物联网平台上运行的代码,例如 Raspberry Pi 3 板。我们将了解如何利用我们对 MQTT 协议的了解来构建基于需求的解决方案。我们将学习使用最新版本的 EclipsePAHOMQTT Python 客户端库。
第 5 章用 Python测试和改进我们的车辆控制解决方案,概述了如何使用我们的车辆控制解决方案,以及 MQTT 消息和 Python 代码。我们将学习如何使用 Python 代码处理 MQTT 消息中接收的命令。我们将编写 Python 代码,用命令编写和发送 MQTT 消息。我们将使用阻塞和线程网络循环,并理解它们之间的区别。最后,我们将利用最后遗嘱和遗嘱的特点。
第 6 章使用基于云的实时 MQTT 提供程序和 Python监控冲浪比赛,让您开始编写 Python 代码,使用基于 PubNub 云的实时 MQTT 提供程序结合 Mosquitto MQTT 服务器监控冲浪比赛。我们将通过分析需求从头开始构建一个解决方案,并编写 Python 代码,在连接到冲浪板中多个传感器的防水物联网板上运行。我们将定义主题和命令,并将使用基于云的 MQTT 服务器,以及前面章节中使用的 MOSQUITO MQTT 服务器。
附录、解决方案,附录中包含了各章测试您的知识部分的正确答案。
您需要了解 Python 3.6.x 和 IoT 板的基本知识。
您可以从您的账户www.packtpub.com下载本书的示例代码文件。如果您在其他地方购买了本书,您可以访问www.packtpub.com/support并注册,将文件通过电子邮件直接发送给您。
您可以通过以下步骤下载代码文件:
- 登录或注册www.packtpub.com。
- 选择“支持”选项卡。
- 点击代码下载和勘误表。
- 在搜索框中输入图书名称,然后按照屏幕上的说明进行操作。
下载文件后,请确保使用以下最新版本解压或解压缩文件夹:
- WinRAR/7-Zip for Windows
- 适用于 Mac 的 Zipeg/iZip/UnRarX
- 适用于 Linux 的 7-Zip/PeaZip
该书的代码包也托管在 GitHub 上的https://github.com/PacktPublishing/Hands-On-MQTT-Programming-with-Python 。如果代码有更新,它将在现有 GitHub 存储库中更新。
我们的丰富书籍和视频目录中还有其他代码包,请访问**https://github.com/PacktPublishing/** 。看看他们!
我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。您可以在这里下载:http://www.packtpub.com/sites/default/files/downloads/HandsOnMQTTProgrammingwithPython_ColorImages.pdf 。
本书中使用了许多文本约定。
CodeInText:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。下面是一个示例:“将下载的WebStorm-10*.dmg磁盘映像文件作为系统中的另一个磁盘装载。”
代码块设置如下:
@staticmethod
def on_subscribe(client, userdata, mid, granted_qos):
print("I've subscribed with QoS: {}".format(
granted_qos[0]))当我们希望提请您注意代码块的特定部分时,相关行或项目以粗体显示:
time.sleep(0.5)
client.disconnect()
client.loop_stop() 任何命令行输入或输出的编写方式如下:
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa粗体:表示一个新术语、一个重要单词或您在屏幕上看到的单词。例如,菜单或对话框中的单词出现在文本中,如下所示。下面是一个示例:“从管理面板中选择系统信息。”
Warnings or important notes appear like this. Tips and tricks appear like this.
我们欢迎读者的反馈。
一般反馈:发送电子邮件feedback@packtpub.com并在邮件主题中提及书名。如果您对本书的任何方面有疑问,请发送电子邮件至questions@packtpub.com。
勘误表:尽管我们已尽一切努力确保内容的准确性,但还是会出现错误。如果您在本书中发现错误,如果您能向我们报告,我们将不胜感激。请访问www.packtpub.com/submit-errata,选择您的书籍,点击 errata 提交表单链接,然后输入详细信息。
盗版:如果您在互联网上发现我们作品的任何形式的非法复制品,请您提供我们的位置地址或网站名称,我们将不胜感激。请通过copyright@packtpub.com与我们联系,并提供该材料的链接。
如果您有兴趣成为一名作家:如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请访问authors.packtpub.com。
请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在读者可以看到并使用您的无偏见意见做出购买决定,我们 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们书籍的反馈。非常感谢。
有关 Packt 的更多信息,请访问packtpub.com。