MQTTfx连接物联网云平台
陈拓 chentuo@ms.xab.ac.cn 2020/01/03-2020/01/05
1. 概述
MQTT.fx 是一个MQTT客户端工具,支持windows、Linux和Mac,可以对基于MQTT的云服务进行测试。
本文介绍MQTT.fx的基本用法,在《MQTT.fx脚本Scripts使用》
https://blog.csdn.net/chentuo2000/article/details/104252690
一文中介绍MQTT.fx的高级用法。
下面我们用阿里云物联网平台进行测试。
先设置阿里云物联网平台,看《阿里云物联网平台基本设置-物模型》
阿里云物联网平台基本设置-物模型_阿里云如何在物模型中设置触发条件?-CSDN博客
2. 下载安装MQTTfx
官方网址:http://mqttfx.jensd.de/index.php/download
下载最新版本:
我用的是32位版的win7,下载mqttfx-1.7.1-windows.exe。
双击mqttfx-1.7.1-windows.exe进行安装,默认安装就好。
3. 设置、连接
打开MQTT.fx。
3.1 设置
点击齿轮图标进行设置:
说明:
- Profile Name
为配置文件起个名字:mosquitto test
- Broker Address连接域名
格式:${YourProductKey}.iot-as-mqtt.${region}.aliyuncs.com
■ ProductKeyt
到阿里云物联网平台查看:
■ Region
物联网平台服务所在地域的代码。先去阿里云看看我的服务所在地域:
查代码:
https://help.aliyun.com/document_detail/40654.html?spm=a2c4g.11186623.2.19.3d1b5800mCdZd7#concept-h4v-j5k-xdb
华东 2 上海 cn-shanghai
所以我的Broker Address:
a14U7TTbz9q.iot-as-mqtt.cn-shanghai.aliyuncs.com
- Broker Port端口:1883
- Client ID
填写mqttClientId,用于MQTT的底层协议报文。
格式固定:${clientId}|securemode=3,signmethod=hmacsha1|。
其中,
■ ${clientId}为设备的ID信息。可取任意值,长度在64字符以内。建议使用设备的MAC地址或SN码。就取12345
■ securemode为安全模式,TCP直连模式设置为securemode=3,TLS直连为securemode=2。
■ signmethod为算法类型,支持hmacmd5和hmacsha1。
我的Client ID:12345|securemode=3,signmethod=hmacsha1|
注意:输入Client ID信息后,请勿单击后面的Generate。
- User Credentials
单击User Credentials,设置User Name和Password。
■ User Name
由设备名DeviceName、符号(&)和产品ProductKey组成。
去阿里云查看设备名DeviceName和产品ProductKey:
DeviceName:BedroomTemp
ProductKey:a14U7TTbz9q
固定格式:${YourDeviceName}&${YourPrductKey}。
所以,我的User Name:BedroomTemp&a14U7TTbz9q
■ Password
下载Password生成小工具: 88413c66e471bec826257781969d1bc7.zip
https://files.alicdn.com/tpsservice/88413c66e471bec826257781969d1bc7.zip?spm=a2c4g.11186623.2.21.3d1b5800mCdZd7&file=88413c66e471bec826257781969d1bc7.zip
解压缩下载包后,双击sign文件,即可使用。
使用Password生成小工具的输入参数:
■ productKey:设备所属产品Key。可在控制台设备详情页查看。
■ deviceName:设备名称。可在控制台设备详情页查看。
■ deviceSecret:设备密钥。可在控制台设备详情页查看。
■ timestamp:(可选)时间戳。
■ clientId:设备的ID信息,与Client ID中${clientId}一致。
■ method:选择签名算法类型,与Client ID中signmethod确定的加密方法一致。
其他设置都保持默认即可。
设置完成后,单击右下角的OK。
3.2 连接
单击Connect进行连接。
4. 通信测试
4.1 下行通信测试
从物联网平台发送消息,在MQTT.fx上接收消息,测试MQTT.fx与物联网平台连接是否成功 。
- 在MQTT.fx上,单击Subscribe选项卡
- 订阅一个Topic
输入一个设备具有订阅权限的Topic,例如阿里云物联网平台上的自定义Topic:/a14U7TTbz9q/BedroomTemp/user/get
在MQTT.fx上,输入/a14U7TTbz9q/BedroomTemp/user/get
单击Subscribe按钮,订阅这个Topic。
订阅成功后,该Topic将显示在列表中。
- 在物联网平台控制台中,点击/a14U7TTbz9q/BedroomTemp/user/get Topic后面的“发布消息”。
- 输入消息内容,单击确认
- 回到MQTT.fx上,查看接收到的消息
4.2 上行通信测试
在MQTT.fx上发送消息,通过查看设备日志,测试MQTT.fx与物联网平台连接是否成功 。
- 在MQTT.fx上,单击Publish选项卡
- 发布消息到Topic
输入一个设备具有发布权限的Topic,例如阿里云物联网平台上的物模型通信Topic:
/sys/a14U7TTbz9q/BedroomTemp/thing/event/property/post
在MQTT.fx上,输入/sys/a14U7TTbz9q/BedroomTemp/thing/event/property/post
和要发送的消息内容,这里是温度值 23.4。
单击Publish,向这个Topic推送一条消息。
在物联网平台控制台中,该设备的设备详情 > 日志服务 > 上行消息分析栏下,查看上下行消息。
- 云端上行消息
消息详情:
- 云端下行消息
消息详情:
数据格式有错误。
4.3 查看MQTT.fx日志
在MQTT.fx上,单击Log查看操作日志和错误提示日志。
推送成功。
4.4 阿里云属性上报格式
在《树莓派连接阿里云物联网平台-订阅(nodejs)》一文中有正确的格式可供参考:
- 将上报数据写成要求的JSON格式
{"id":"1","version":"1.0","params":{"RoomTemp":23.4},"method":"thing.event.property.post"}
- 单击Publish,推送消息
- 在云端查看上报数据
- 云端上行消息
- 云端下行消息
Success,成功!
参考文档:
- 使用MQTT.fx接入物联网平台
如何使用MQTT协议模拟设备快速接入物联网平台_物联网平台(IoT)-阿里云帮助中心 - 自己写微信小程序MQTT模拟器自己写微信小程序MQTT模拟器_小程序 多页面 mqtt-CSDN博客
- 阿里云物联网平台基本设置-物模型
阿里云物联网平台基本设置-物模型_阿里云如何在物模型中设置触发条件?-CSDN博客 - 微信小程序MQTT模拟器 阿里云物联网平台测试https://blog.csdn.net/chentuo2000/article/details/102216865
- 树莓派连接阿里云物联网平台-属性(nodejs)树莓派连接阿里云物联网平台-属性(nodejs)_树莓派与阿里云显示未激活-CSDN博客
- 树莓派连接阿里云物联网平台-服务(nodejs)树莓派连接阿里云物联网平台-服务(nodejs)_nodejs mqtt连接阿里云物联网平台-CSDN博客
- 树莓派连接阿里云物联网平台-订阅(nodejs)树莓派连接阿里云物联网平台-订阅(nodejs)_树莓派与阿里云显示未激活-CSDN博客
- 树莓派连接阿里云物联网平台-事件(nodejs)https://blog.csdn.net/chentuo2000/article/details/103805559