目录
1. 准备
2. MQTT.fx 设置登录名、密码
3.MQTT.fx 接入阿里云,订阅Topic
4. 阿里云下发数据给 MQTT.fx
5. MQTT.fx 发布消息给服务器
相关链接:MQTT协议
1. 准备
阿里云物联网,创建产品、设备、三元组证书获取:阿里云物联网创建产品、设备、三元组证书
MQTT.fx 下载地址:MQTT.fx下载
阅读本篇文章,不需要了解 MQTT协议和通信帧的格式,只要创建好阿里云的产品和设备,即可使用 MQTT.fx 接入调试。关于 MQTT协议部分的详解见本篇末尾的链接。
提前 注册并登陆阿里云物联网平台,参考上面链接,创建产品、设备,获取到设备三元组证书。
下载并安装 MQTT.fx。
2. MQTT.fx 设置登录名、密码
打开 MQTT.fx,点击 小齿轮图标。
配置四项信息:设备服务器地址、客户端ID、用户名、密码。
设备服务器地址、客户端ID、用户名、密码 的合成方法:
在线 HmacSHA1 加密算法计算器:HmacSHA1在线加密计算
我博客中,使用的设备证书三元组为:(此设备不会更改和注销,以便各位测试使用)
{
"ProductKey": "a1wFylTxYeD",
"DeviceName": "co_0001",
"DeviceSecret": "7ab0c4b3532b5783df5fdc58a2895d7a"
}
最终根据我设备的三元组证书,合成出设备服务器地址、客户端ID、用户名、密码 为:
依次填入后,点击右下方 OK。
3.MQTT.fx 接入阿里云,订阅Topic
点击 Connect,连接服务器。右上角的指示灯会变为 绿色,表示连接成功。
点击上方的 Subscribe ,进入订阅界面。
填入/sys/a1wFylTxYeD/co_0001/thing/service/property/set,点击右侧Subscribe。使用QoS0 订阅这个主题。
阿里云物联网控制界面,刷新。
显示设备在线。已订阅 Topic 列表中,存在刚才订阅的主题。
阿里云物联网平台中,会使用到的 Topic,为这两项:(每个人的都不一样,不同产品、设备都会不一样)
/sys/a1wFylTxYeD/co_0001/thing/service/property/set(用于服务器下发消息给设备)
/sys/a1wFylTxYeD/co_0001/thing/event/property/post(用于设备上报消息给服务器)
设备只需订阅 set那一条Topic,不用订阅 post也可以进行发布上报。
4. 阿里云下发数据给 MQTT.fx
阿里云物联网平台,进入设备-在线调试,选择产品、设备,设置调试功能、方法。
点击下方 发送指令。
MQTT.fx 会收到服务器发布的消息。消息有效内容一致。
消息信息也可以在 Log日志中查看。
5. MQTT.fx 发布消息给服务器
点击 MQTT.fx 上方的 Publish ,进入发布消息界面。
发布消息,需要用到主题/sys/a1wFylTxYeD/co_0001/thing/event/property/post
将上一条服务器发来的消息复制过来,进行一下改动:
{"method":"thing.service.property.set","id":"1100426949","params":{"PowerSwitch_1":0},"version":"1.0.0"}
修改后为:
{"method":"thing.event.property.post","id":"31114643","params":{"PowerSwitch_1":1},"version":"1.0.0"}
其中,改动了方法、消息ID、开关值。
消息ID,可自行用户定义,不会对属性的值造成影响,只用来标识传输的消息帧。我用的时间戳。
阿里云物联网 - 设备 - 物模型数据,打开实时刷新。
点击Publish,可观察到开关值的变化。上发消息到服务器成功。
!!!阿里云服务器仅支持Qos=0的post。Qos=1/2 不支持,发送Qos=1会有错误。
MQTT协议规定,PUBACK 是对 Qos=1时的 PUBLISH的发布消息确认。也就是说Qos=1才有 PUBACK,但阿里云服务器仅支持 Qos=0的POST,所以压根就不会有PUBACK。而用户强行发送Qos=1的PUBLISH,会返回错误:40 02 7B 22 ,并且不会对本帧的内容进行处理,开关状态也不会得到更新。
相关链接:MQTT协议
MQTT 协议详解:MQTT 协议详解
MQTT 报文帧格式详解:MQTT 报文帧格式详解
使用电脑网络调试助手,MQTT接入阿里云物联网平台:网络调试助手接入阿里云
如果觉得《MQTT.fx客户端MQTT接入阿里云物联网平台 登录 订阅 发布消息》对你有帮助,请点赞、收藏,并留下你的观点哦!