Main Content

本页采用了机器翻译。点击此处可查看英文原文。

MQTT 基础知识

MQTT 是一种发布/订阅架构,主要用于通过无线网络连接带宽和功率受限的设备。它是一个简单且轻量级的协议,在 TCP/IP 套接字或 WebSocket 上运行。可以使用 SSL 保护基于 WebSocket 的 MQTT。发布/订阅架构使消息能够被推送到客户端设备,而设备不需要连续轮询服务器。

MQTT 代理是通信的中心点,它负责在发送者和合法接收者之间分发所有消息。客户端是连接到代理并可以发布或订阅主题以访问信息的任何设备。主题包含代理的路由信息​​。每个想要发送消息的客户端将消息发布到某个主题,每个想要接收消息的客户端订阅某个主题。代理将具有匹配主题的所有消息传递给适当的客户端。

ThingSpeak™ 在 URL mqtt3.thingspeak.com 和端口 1883 上有一个 MQTT 代理。ThingSpeak 代理支持 MQTT 发布和 MQTT 订阅,如下图所示。

MQTT 发布

该图描述了主题结构。经纪商通过 CONNACK 确认正确的 CONNECT请求。

MQTT 订阅

该图描述了主题结构。经纪商通过 SUBACK 确认正确的 SUBSCRIBE请求。

创建 ThingSpeak MQTT 设备

对通道的 MQTT 访问(包括凭据)由 ThingSpeak MQTT 设备处理。您的设备配置有 MQTT 客户端与 ThingSpeak 通信以及授权特定通道所需的凭据。使用以下步骤创建 MQTT 设备。

  1. 在 ThingSpeak 菜单中点击Devices > MQTT

    Device menu

  2. 在 MQTT 设备页面上,点击 Add a new device

    Add device option

  3. 填写添加新设备对话框:

    New device dialog

    1. 提供设备名称。

    2. 提供可选的描述。

    3. 在授权通道部分中,从列表菜单中选择一个通道,然后点击 Add Channel。重复此操作,直到授权通道列表中包含您想要连接到设备的所有通道。将每个设置为允许发布并允许根据需要订阅。

    4. 点击 Add Device

    5. 此时,ThingSpeak 会生成您设备的凭据列表,其中包括客户端 ID、用户名和密码。您可以从此页面查看和复制这些项目,或点击 Download Credentials 将凭据保存在本地文件中。 “ 重要的 ” :立即记录或保存您的凭据,因为您将没有其他机会查看或保存密码。

    6. 点击Done完成设备创建。

您的新设备现在显示在 MQTT 设备页面上。您可以通过点击 Edit 更改设备设置并向其添加通道。您可以使用 MQTT 客户端中的客户端 ID、用户名和密码来访问 ThingSpeak MQTT 设备以发布和订阅其通道。

注意

每个用户最多可以拥有 100 个 MQTT 设备,每个设备最多有 10 个授权通道。如果您需要更多设备或通道,Contact Support

有关使用桌面 MQTT 客户端的信息,请参阅 使用桌面 MQTT 客户端发布和订阅通道

设备密码重置。 如果您随时需要重置设备密码,可以从设备编辑页面重置:

  1. 选择Devices > MQTT

  2. 在显示的 MQTT 设备列表中,对于要重置的设备,点击 Edit 查看其配置详细信息。

  3. MQTT Credentials 部分中,点击重新生成图标以重置密码。使用旧密码的连接将被禁用。

    MQTT device password reset icon

连接的服务器响应

如果连接成功,ThingSpeak MQTT 代理会通过连接确认 CONNACK 进行响应。MQTT 代理使用 SUBACK 消息响应成功的订阅请求,并将发布到订阅通道或字段的任何新数据转发给客户端。要了解有关这些消息的更多信息,请参阅 MQTT v3.1.1 规范。然后,您可以使用 Publish to a Channel FeedPublish to a Channel Field Feed 形式将消息发布到主题。

MQTT 客户端配置

ThingSpeak 在 URL mqtt3.thingspeak.com 上有一个 MQTT 代理。根据以下选项之一配置您的 MQTT 客户端以与 ThingSpeak MQTT 代理进行通信:

端口

连接类型

加密

1883

TCP

8883

TCP

传输层安全/SSL

80

WebSocket

443

WebSocket

传输层安全/SSL

配置客户端连接时,请考虑以下事项:

  • 如果您的硬件支持安全 SSL 套接字连接模式,请尽可能使用该模式与 ThingSpeak MQTT 代理进行通信。

  • ThingSpeak 实现 MQTT 发布和订阅功能,QoS = 0。这种“即发即弃”协议意味着当您发布到 ThingSpeak通道时,您的客户端不会收到确认。

  • MQTT 连接闲置一小时后超时。

  • 使用 WebSocket 连接时,所需路径为 /mqtt

    • 在 Raspberry Pi® 上使用带有 Python® 的 Paho 库,默认 MQTT 路径为 "/mqtt",但您也可以使用代码行进行设置:

      client.ws_set_options("/mqtt")
    • 使用 HiveMQ MQTT CLI,您可以使用命令选项设置路径:

      mqtt pub … -ws -ws:path /mqtt … 

另请参阅

| | |

相关主题

外部网站