要创建多个物联网设备可以通过 MQTT 代理相互通信的通信网络,将物联网设备配置为 MQTT 客户端非常重要。MQTT 是在 TCP/IP 堆栈的顶部开发的,因此如果设备想要通过 MQTT 代理相互通信,则它们必须具有 TCP/IP 堆栈。
在本教程中,智能手机和 PC 将配置为 MQTT 客户端。要制作安卓智能手机 MQTT 客户端,可以使用安卓应用程序 MQTT 仪表板应用程序。这个 android 应用程序支持 MQTT 协议与其他 MQTT 客户端通信。要将 PC 设置为 MQTT 客户端,可以使用同样支持 MQTT 协议的 chrome 插件 MQTT lens。手机端和PC端设置好MQTT客户端后,就可以通过MQTT Broker进行通信了。
将手机设置为 MQTT 客户端 –
要将手机设置为 MQTT 客户端,可以下载任何支持 MQTT 的应用程序或创建支持 MQTT 协议的自定义应用程序。Google Play Store 上有许多 android 应用程序可用于制作 android 手机 MQTT 客户端。在本教程中,使用了 IOT MQTT Dashboard 应用程序。
下载并安装该应用程序。在安卓手机上安装后,打开应用程序。将打开一个仪表板窗口。在该窗口中,点击加号。
661c09c1869e44a3967b0dc1b076bf02~noop.image?_iz=58558&from=article.jpg

图 1:IOT MQTT 仪表板中主要活动的移动屏幕截图
将打开一个用于建立连接的新窗口。
50d929bb7fe24e1abe7f28d07f3fd482~noop.image?_iz=58558&from=article.jpg

图 2:IOT MQTT 仪表板中新连接活动的移动屏幕截图
在客户端 ID 字段中,设置一个唯一名称(字符串),以便当移动客户端连接到 MQTT 代理时,MQTT 代理可以轻松识别并仅向该特定客户端发送或接收数据包。这两个客户端不应具有相同的名称。因此,客户端名称应该是唯一的。客户端 ID 最大为 24 个字节。
在客户端 ID 字段之后,必须提及 MQTT 代理。在本教程中,HiveMQ 用作 MQTT 代理。也可以使用任何其他代理,如 Mosquitto、Eclipse Paho 或 CloudMQTT。服务器字段必须输入 MQTT 代理/服务器的域名或公共 IP 地址。HiveMQ 代理域是 broker.mqttdashboard.com。
接下来设置它可以通信的公共代理的端口号。端口 1883 用于无安全性,而端口 8883 用于启用传输 TLS/SSL 安全性。这里的数据在端口 1883 上发送,这是一个未加密的通道。
接下来设置用户名和密码以连接到 MQTT 代理。但是,不强制要求提及用户名和密码。由于使用的是1883端口,是未加密的端口,所以不需要将SSL设置为1,因为只有使用加密通道或端口才需要将SSL设置为1。
通过点击创建按钮保存设置。移动客户端将向公共代理发送请求,代理将侦听该请求并提供与 MQTT 客户端的连接。
这样,手机就可以设置为MQTT客户端。MQTT 客户端现在可以连接到 MQTT 代理,连接状态将在应用程序中可见。
将 PC 设置为 MQTT 客户端 –
要将 PC 配置为客户端,使用浏览器插件 - MQTTlens 。它具有与 MQTT 代理连接的能力,并且可以与其他 MQTT 客户端通信。此插件适用于Chrome 浏览器,可从 Chrome 网上应用店添加。MQTT lens 支持一些额外的功能来启动与代理的连接。通过这个附加的 PC 连接,可以轻松设置 MQTT 客户端。
5a3fad2e0f16447a8d02b42d49160f47~noop.image?_iz=58558&from=article.jpg

图 3:用于将 PC 设置为 MQTT 客户端的 MQTTLens Chrome 扩展的屏幕截图
添加扩展后,仪表板窗口将打开。点击加号以创建连接。
4f9a780542da4632ad9f0c397469143a~noop.image?_iz=58558&from=article.jpg

图 4:MQTTLens 主窗口截图
将打开一个弹出窗口以添加新连接。
2588c6d3b8b7488881c71d7835ddeae4~noop.image?_iz=58558&from=article.jpg

图 5:MQTTLens 新连接窗口的屏幕截图
在连接名称字段中,写入任何名称(不强制要求是唯一的)。像 PC_CLIENT 一样可以用作连接名称。接下来,设置MQTT代理的域名,以便PC客户端可以发起与代理的连接。应使用与其他客户端设备(在本例中为移动客户端)中使用的相同的代理 (HiveMQ),因为这两个客户端之间的通信将通过 MQTT 代理建立,这对于两个设备来说应该是相同的。接下来,定义连接公共代理的端口,即 1883。
为了将 PC 识别为唯一的客户端,MQTTlens 自己生成唯一的客户端 ID。每次客户端与代理建立连接时,客户端都会生成一个随机的客户端 ID。MQTTlens 具有清洁会话、自动连接、保持活动和最后连接的功能。
clean session 设置为 1,以便服务器可以丢弃任何以前连接的客户端信息和数据,从而将新连接视为干净的。每次 PC 客户端连接到服务器时,它都将连接视为新连接,并且不存储任何以前的订阅和消息。
接下来,自动连接为1,自动将PC连接到broker。Keep Alive 秒数设置为 120 秒,这是客户端和代理可以连接的最长时间,即使它们没有相互交换数据也是如此。
用户名和密码字段不是必填字段,但可以根据需要进行设置。他们没有在这里设置。如果需要,可以设置下一个最后遗嘱主题和最后遗嘱消息。当设置了 last-will 主题和 last-will 消息时,如果 MQTT 代理正在向订阅的客户端发送消息并且两者之间的连接突然关闭,则该消息将作为 last-will 消息发送到该主题。如果没有设置last-will,那么如果客户端和服务器之间的连接突然断开,消息包就会丢失,客户端什么也得不到。
93712747d27247d5b09459cd38cd9097~noop.image?_iz=58558&from=article.jpg

图 6:MQTTLens 新连接字段的屏幕截图
单击“创建连接”按钮保存设置。保存设置后,MQTT 客户端可以连接到 MQTT 代理,连接状态将在应用程序中可见。
这样 PC 将通过浏览器插件充当 MQTT 客户端。现在 PC 被设置为 MQTT 客户端,它可以通过 MQTT 代理连接到其他客户端。
在本教程中,Android 智能手机和 PC 已设置为带有 HiveMQ 代理的 MQTT 客户端,没有安全性。下一篇教程将讨论在发布者端和订阅者端设置主题和消息。之后,两个客户端可以通过(公共)MQTT 代理相互通信。