MQTT - 设置 MQTT 客户端与 Broker 通信

材料准备

范例说明

介绍

MQTT (Message Queuing Telemetry Transport),它是为IBM和Eurotech共同制定出来的protocol,在MQTT的官网可以看到它对MQTT的介绍:
MQTT is a machine-to-machine (M2M)/”Internet of Things” connectivity protocol. It was designed as an extremely lightweight publish/subscribe messaging transport.
所以它是为了IOT而设计的protocol,它是基于TCP/IP的协定,并且透过publish/subscribe的方式做资料传送与接收。
它的架构如下图:

9-1
在MQTT的运行中,有以下几个角色:

  • Publisher: 通常Publisher是配有感测器的设备(例如 Ameba)。 Publisher将感测器的数据上传到MQTT-Broker,MQTT-Broker作为MQTT服务的资料库。
  • Subscriber: Subscriber是指接收和分析消息的设备,例如笔电或手机。
  • Topic: 使用Topic来对消息进行分类,例如消息的Topic可以是“PM2.5”或“温度”。 Subscriber可以选择他们想要接收主题的消息。

在此有 3 个将 Ameba 连接到 MQTT-Broker 的范例。然后作为Publisher发送消息并作为Subscriber接收来自 MQTT-Broker 的消息。

  • 1.MQTT_Basic
  • 2.MQTT_Auth
  • 3.MQTT_Publish_In_Callback

流程

MQTT_Basic 范例

打开 MQTT 范例 “File”->“Examples”->“AmebaMQTTClient”->“MQTT_Basic”
请修改一些WiFi相关的参数以及MQTT相关的一些资讯:

9-2

  • “ssid”是用于连接网路的SSID。
  • “pass”是用于连接网路的密码。
  • “mqttServer”是指MQTT-Broker,有免费的MQTT “test.mosquitto.org”可用于测试。
  • “clientId”是 MQTT-Broker 识别连接设备的id。
  • “publishTopic”是已发布消息的主题,在范例中为“outTopic”。订阅“outTopic”的设备将会收到该消息。
  • “publishPayload”是要发布的内容。
  • “subscribeTopic”是告诉MQTT-broker要订阅哪个主题。

接下来,编译代码并将其上传到Ameba。按重置按钮,然后打开serial monitor。

9-3

Ameba 连接到 MQTT 服务器后,向“outTopic”发送消息“hello world”。要查看消息,需要设置另一个 MQTT 客户端。

“MQTT Explore”是一款适用于全部平台的应用程序,可设置为MQTT客户端。请参阅网站 http://mqtt-explorer.com/

单击左上角的“Connections”开始新的设置连接。 “Name”可以自定义。将“Host”设置为“test.mosquitto.org”。

9-5

单击底部的“ADVANCED”进行主题设置。使用与开发板上“publishTopic”相同的“outTopic”。单击“ADD”,然后单击“BACK”。

9-6

单击“CONNECT”。 “hello world”消息则显示在左侧。在右侧的“Publish”下,使用与开发板上“sucribeTopic”相同的“inTopic”。选择“raw”并输入“Text hello Ameba”,然后单击“PUBLISH”。开发板将收到 MQTT Explorer 发布的原始消息。请注意,由于该主机是免费的公用服务器,因此开发板可能会收到预期外的消息。

9-7

9-7

MQTT_Auth 范例

打开 MQTT 范例 “File”->“Examples”->“AmebaMQTTClient”->“MQTT_Auth”
请修改一些WiFi相关的参数以及MQTT相关的一些资讯:

9-7

  • “mqttServer”指MQTT-Broker,amebaiot主页“cloud.amebaiot.com”提供免费的MQTT认证主机。请参阅 https://www.amebaiot.com/en/cloud-getting-started/ 用于帐户设置。
  • “clientId”是 MQTT-Broker 识别连接设备的标识符。在本例中,它是注册的设备名称。请参阅https://www.amebaiot.com/en/cloud-service/ .
  • “clientUser”是身份验证用户名。在本范例中,它是 Realtek IoT/Wi-Fi MCU Solutions 网站的登录用户名。注意,如果使用“clientUser”邮箱,将无法接收消息。
  • “clientPass”是认证密码。在本范例中,它是 Realtek IoT/Wi-Fi MCU Solutions 网站的登录密码。
  • 其他参数与之前相同。

接下来,编译代码并将其上传到Ameba。按重置按钮,然后打开serial monitor。 Ameba 连接到 MQTT 服务器后,向“outTopic”发送消息“hello world”。要查看消息,需要设置另一个 MQTT 客户端。

启动 MQTT Explore,并设置身份验证连接。

单击左上角的“Connections”开始新的连接。 “Name”可以自定义。将“Host”设置为“cloud.amebaiot.com”。 “Username”和“Password”与“clientUser”和“clientPass”相同。

9-7

单击底部的“ADVANCED”进行主题设置。使用与开发板上“publishTopic”相同的“outTopic”。单击“ADD”,然后单击“BACK”。

单击“CONNECT”。 “hello world”消息则显示在左侧。在右侧的“Publish”下,使用与开发板上“sucribeTopic”相同的“inTopic”。选择“raw”并输入“Text hello Ameba”,然后单击“PUBLISH”。开发板将收到 MQTT Explorer 发布的原始消息。请注意,“hello world”有时不会显示,因为开发板在 MQTT Explorer 之前连接到 MQTT Broker。

9-7

9-7

MQTT_Publish_In_Callback 范例

打开 MQTT 范例 “File”->“Examples”->“AmebaMQTTClient”->“MQTT_Publish_In_Callback”

请修改一些WiFi相关的参数以及MQTT相关的一些资讯:

• 所有参数与 MQTT_Auth 范例相同。

接下来,编译代码并将其上传到Ameba。按重置按钮,然后打开serial monitor。 Ameba 连接到 MQTT 服务器后,向“outTopic”发送消息“hello world”。要查看消息,需要设置另一个 MQTT 客户端。

启动 MQTT Explore,并设置身份验证连接。所有设置与 MQTT_Auth 范例相同。

单击底部的“ADVANCED”进行主题设置。使用与开发板上“publishTopic”相同的“outTopic”。单击“ADD”,然后单击“BACK”。

单击“CONNECT”。 “hello world”消息则显示在左侧。在右侧的“Publish”下,使用与开发板上“sucribeTopic”相同的“inTopic”。选择“raw”并输入“Text hello Ameba”,然后单击“PUBLISH”。开发板将收到 MQTT Explorer 发布的原始消息。请注意,“hello world”有时不会显示,因为开发板在 MQTT Explorer 之前连接到 MQTT Broker。

9-7

9-7

请先确认已安装QQ通讯软体