使用MQTT.fx对接华为物联网平台——实践操作过程
根据参考文档实现,个人能力有限,如有不足或者错误之处,请批评指正。
参考文档:开发文档 。
实践简述:通过MQTT.fx工具,以MQTT协议接入华为物联网平台。给大家分享一下过程总结。
目录
一、平台创建设备
获取ip地址
创建MQTT产品
注册设备
二、安装MQTT.fx、生成连接信息
安装MQTT.fx工具
获取鉴权信息
三、与平台连接
一、平台创建设备
进入iot物联网->设备管理->立即使用,即可进入物联网平台控制台
首先查看自己的应用和设备接入地址。保存自己的MQTT的协议地址以及端口号即可。(用于建立TCP连接)
</br></hr>
创建MQTT产品
a.在快捷操作中,点击“创建产品”进入"IoT Platform"界面
b.点击“新增产品模型”进行MQTT模型添加(即创建产品)
</br>
点击手动创建,填入自己相应的信息即可(用于测试,可以随意填入)
</br>
注册设备
在左侧导航栏中,选择设备->设备注册,在设备注册页面点击“+创建”,进行设备添加。
注意:设备识别码可以随意填入,但是要求唯一。
完成后,记得保存自己的设备ID以及密码哦。
至此,平台端设备创建完成。可在IoT Platform页面查看设备相关信息。
</br>
二、安装MQTT.fx、生成连接信息
参考:鉴权信息
安装MQTT.fx
访问 MQTT.fx下载网页,下载并安装MQTT.fx(最新版本即可)。
运行mqttfx.exe即可。
</br>
获取鉴权信息
a.通过jar工具生成
下载 工具jar包,然后在相应目录的cmd运行jar包 (java -jar 包名.jar)
填入刚刚保存的设备ID以及密码,即可生成
注意:cmd一定要是对应的jar包目录;需要java环境。
b.自己手动生成
当自己没有java环境时,可以手动生成。一定要参考官方文档。
clientId : 设备ID_0_0_当前时间戳(如:2020040821);
username :设备ID
password采用的是“HMACSHA256”加密,密钥为时间戳(如:2020040821),当然,我们设置的是不检验时间戳的正确性,但时间戳不能少。
三、与平台连接
当以及获取鉴权信息后,即可通过MQTT协议接入华为物联网平台。
打开MQTT.fx,填入相关信息。
完成后,点击Connect,即可连接。
查看平台设备信息,显示在线,成功接入。
注意:本次没有进行时间戳校验,因此接入相对简单容易。
四.Pulish
(1)Pulish,顾名思义就是发布主题。连接MQTT服务器后,发布自己的消息主题,可推送给订阅者。
(2)三种服务质量等级
等级 | 特点 | 报文示例 |
---|---|---|
Qos0 | 发送者只发送一次消息,不进行重发,Broker不会返回确认消息 | 30 0E 00 09 61 70 70 5F 74 6F 70 69 63 ?? |
Qos1 | 发送者最少发送一次消息,确保消息到达Broker,Broker需要返回确认消息 | 32 10 00 09 61 70 70 5F 74 6F 70 69 63 00 01 ?? |
Qos2 | Qos2使用两阶段确认来保证消息的不丢失和不重复,Broker仅受到一次消息 | 34 10 00 09 61 70 70 5F 74 6F 70 69 63 00 01 ?? |
注:??为16进制消息体
华为云物联网平台不支持QoS2。个人认为,应该是Qos2没有必要,占用资源多,且数据可以通过软件判断是否到达。
上报数据示例:
{ "services": [{ "service_id": "Temperature", "properties": { "value": 23 }, "event_time": "20151212T121212Z" }, { "service_id": "Battery", "properties": { "level": 80 }, "event_time": "20151212T121212Z" } ] }
(3)在华为云物联网平台操作注意事项
发布的topic需要有固定的开头,形式为$oc/devices/{device_id}/sys/properties/report。
device_id:设备ID
分隔符用"/"
五.Subcribe
Subcribe的操作和Pulish差不多。只不过是订阅别人的主题。当订阅的topic有消息发布时,服务器会推送给订阅者。
同理,也和publish一样有Qos0,Qos1,Qos2。
使用华为云物联网平台,订阅topic时,topic名称是$oc/devices/{device_id}/sys/command/#。
六.retain
注:华为物联网平台不支持retian msg
retain,即持久消息,消息一直保留在服务器上,不仅推送给当前订阅者,且当此后有新的订阅者订阅时,也是推送此消息。
也就是可以让新的订阅者获取上一次的topic信息。
七.will
注:华为物联网平台不支持will
will,遗嘱。
当设备与服务器建立连接时约定好了遗嘱消息,服务器会存储此消息。当客户端异常断开(非自动断开)时,会向服务端发送约定好的遗嘱消息。
最后,再说一遍(踩坑经验),设备通过MQTT协议接入华为IoTDA后,topic格式需要是固定的,用户不能自定义,不然设备订阅/发布topic时会出错。
- 点赞
- 收藏
- 关注作者
评论(0)