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

MQTT 的简介

MQTT (Message Queuing Telemetry Transport),它是为IBM和Eurotech共同制定出来的protocol,在MQTT的官网可以看到它对MQTT的介绍:所以它是为了IOT而设计的protocol,它是基于TCP/IP的协定,并且透过publish/subscribe的方式做资料传送与接收

1

其中它有几个元素

  • Publisher: 它通常是带有sensor的装置(Ex. Ameba),经由网路上传到MQTT-Broker,其中MATT-Broker是带有MQTT service的资料库

  • Subscriber: 它通常是可以观看讯息的装置,如笔电,手机等

  • Topic: 讯息的内容由Topic来分类,比如说Topic可以是PM2.5, 或是Temperature, 而手机可以选择想要接收的Topic

材料准备

  • AmebaD [AMB21 / AMB22 / AMB23 / BW16] x 1

范例说明

这个范例里,我们尝试连上MQTT-Broker,发送topic讯息,并接收来自MQTT-Broker的讯息。
Open the MQTT example “File” “Examples” “AmebaMQTTClient” “MQTT_Basic”

2

因为它需要用到WiFi, 所以要设定里面的ssid, pass, 以及连上AP的方式。
此外还有一些MQTT的设定可以修改:

3

其中mqttServer就是MQTT-broker的位置,这边使用“iot.eclipse.org” 是IBM 的eclipse 提供的MQTT sandbox,供开发者测试MQTT

  • clientId用来让MQTT-broker辨识连上线的装置

  • publishTopic是发布的主题,例子里是“outTopic”, 而其它有subscribe “outTopic” 的装置可以接收这份讯息。

  • publishPayload是发布的内容

  • subscribeTopic是对MQTT-broker注册要倾听的topic

我们将程式码编译并上传到Ameba之后,按下Reset按钮,然后打开Serial Monitor

4

程式里也有publish ”outTopic”,
所以我们需要另外一个MQTT client 来测试看看是否成功
这边我们使用chrome的外挂程式MQTTLens当作client,你可以在google的扩充程式里找到它

5

打开它之后,点选左边的Connection的“+”,并在填入这些栏位

  • Connection Name: 用来辨识这笔连线,可以任意填

  • Hostname: 这边填入MQTT-Broker的server位置, “iot.eclipse.org”

  • Client ID: 它预设会随机给你一个ID,我们可以使用预设的ID

填好之后,点选右下角的 “CREATE CONNECTION”

6

由于我们没有注册想要倾听的资讯,所以没有任何讯息进来。
我们在Subscribe那边的Topic填入“outTopic”, 并点选右边的“Subscribe”。
此时我们等一下Ameba下次传送资料的时间,或是将Ameba Reset并等它的第一次传送资料,等到之后就会看到新一笔的资料“hello world” 出现,这样代表整个机制运作正常。

7