1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > MQTT.fx客户端MQTT接入阿里云物联网平台 登录 订阅 发布消息

MQTT.fx客户端MQTT接入阿里云物联网平台 登录 订阅 发布消息

时间:2020-11-24 10:18:52

相关推荐

MQTT.fx客户端MQTT接入阿里云物联网平台 登录 订阅 发布消息

目录

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接入阿里云物联网平台:网络调试助手接入阿里云

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。