本文将介绍如何通过Mqtt.fx(1.7.1)连接到AWS的IoT设备中心。
首先来看AWS相应的配置。
*需要注意的时,为了支持Mqtt.fx连接,AWS IoT设备的访问"Policy",必须做如下设置,以允许外部设备(非AWS设备)访问。
在“General”页面,需要配置"Broker Address"和"Broker Port"。至于"Client ID",自己定义一个即可。其他的设置,采用默认值即可。
上图中的"Broker Address",对应的就是IoT设备中心注册的设备地址。
举例来说,我在AWS IOT中心中注册了一个设备"MyGreenHouse"。
对应的RESP接口URL为"a1t3lraoip1d6s-ats.iot.ap-southeast-2.amazonaws.com",也就是这里填写的"Broker Address".
现在进入第二个配置页面"User Credentials"。由于AWS IOT不支持用户名/密码登录方式,因此留空。
接下来是第三个配置页面"SSL/TLS",请按照下图配置即可。
因为我在IoT中心中创建的设备,使用AWS颁发的证书,因此只需要从AWS云端下载"CA File","Client Certificate File"和“Client Key File",并上传到相应的文件选择框即可。
其中,"CA File“指的是AWS IOT中心的根证书,可以从网上直接下载,也可以使用我已经下载好的文件。
另外两个文件包括一个证书文件(可以随时下载)和一个私钥文件(只能创建IOT设备时下载)。
建议在创建设备时全部下载备用。
这样基本上就完成了所有配置-后面两个页面"Proxy"和"LWT"留空即可。当然如果你是用了http代理,也需要配置相应的"Proxy"选项。
完成所有配置项之后,我们来试验一下MQTT消息的发送和接收。
1)在主界面,选中AWS IoT连接,点击“Connect”按钮连接对应的AWS IOT设备。具体的连接过程,可以进入"Log"页面查看。下图表示已经连接成功的情况。
再次切换到"Publish"页面,尝试消息发送。当然,除了发送方,还需要设定接收方。为了方便起见,我们直接使用AWS IoT中心提供的测试页面进行接收。这里双方使用"my/greenhouse"这个topic进行通讯。
点击"订阅主题“,进入侦听模式。
另一方面,从”mqtt.fx"中发布消息到同一topic(可以分别尝试Qos0/1/2)。
点击“Publish"按钮,就可以在AWS IoT中心对的测试页面,看到该消息。
笔者尝试在"Qos2"选项激活的情况下,发送消息失败。这说明,AWS IoT中心,并不支持Qos2。
与上面的实验类似,在"mqtt.fx"中订阅该主题的消息,然后从AWS云端发送消息(默认为Qos1等级),也是可行的。
点击“发布到主题”,就能够在"mqtt.fx"中看到该消息。实际测试中,发送三条消息,只收到了两条,有一条丢掉了。