主要内容

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

MQTT 基础知识

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

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

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

MQTT 发布

该图描述了主题结构。代理使用 CONNECT 确认了正确的 CONNACK 请求。

MQTT 订阅

该图描述了主题结构。代理使用 SUBSCRIBE 确认了正确的 SUBACK 请求。

创建 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 个授权通道。如果您需要更多设备或通道,请联系支持人员

有关使用桌面 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

TLS/SSL

80

WebSocket

443

WebSocket

TLS/SSL

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

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

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

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

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

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

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

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

另请参阅

| | |

主题

外部网站