使用MQTT.fx对接华为物联网平台——实践操作过程

举报
ttking 发表于 2020/09/30 23:10:41 2020/09/30
【摘要】 使用MQTT.fx工具,模拟物联网设备,从零开始,以MQTT协议一步步接入华为物联网平台,同时对消息的类型进行分析,掌握MQTT协议接入平台流程

根据参考文档实现,个人能力有限,如有不足或者错误之处,请批评指正。

参考文档:开发文档 。

实践简述:通过MQTT.fx工具,以MQTT协议接入华为物联网平台。给大家分享一下过程总结。

目录

  • 一、平台创建设备

  1. 获取ip地址

  2. 创建MQTT产品

  3. 注册设备

  • 二、安装MQTT.fx、生成连接信息

  1. 安装MQTT.fx工具

  2. 获取鉴权信息

  • 三、与平台连接

  • 一、平台创建设备

  1. 进入iot物联网->设备管理->立即使用,即可进入物联网平台控制台

    首先查看自己的应用和设备接入地址。保存自己的MQTT的协议地址以及端口号即可。(用于建立TCP连接)

    1.JPG

    </br></hr>

  2. 创建MQTT产品

    a.在快捷操作中,点击“创建产品”进入"IoT Platform"界面

    b.点击“新增产品模型”进行MQTT模型添加(即创建产品)

    2.JPG

    </br>

    点击手动创建,填入自己相应的信息即可(用于测试,可以随意填入)

    3.JPG

    </br>

  3. 注册设备

在左侧导航栏中,选择设备->设备注册,在设备注册页面点击“+创建”,进行设备添加。

5.JPG

注意:设备识别码可以随意填入,但是要求唯一。    

          完成后,记得保存自己的设备ID以及密码哦。 


至此,平台端设备创建完成。可在IoT Platform页面查看设备相关信息。

</br>


  • 二、安装MQTT.fx、生成连接信息

参考:鉴权信息

  1. 安装MQTT.fx

    访问 MQTT.fx下载网页下载并安装MQTT.fx(最新版本即可)

    6.JPG

    运行mqttfx.exe即可。

    </br>

  2. 获取鉴权信息

    a.通过jar工具生成

    下载 工具jar包,然后在相应目录的cmd运行jar包 (java -jar 包名.jar)

    7.JPG

    填入刚刚保存的设备ID以及密码,即可生成

    注意:cmd一定要是对应的jar包目录;需要java环境。

    b.自己手动生成

    当自己没有java环境时,可以手动生成。一定要参考官方文档。

    clientId : 设备ID_0_0_当前时间戳(如:2020040821);

    username :设备ID

    password采用的是“HMACSHA256”加密,密钥为时间戳(如:2020040821),当然,我们设置的是不检验时间戳的正确性,但时间戳不能少。

  • 三、与平台连接

当以及获取鉴权信息后,即可通过MQTT协议接入华为物联网平台。

打开MQTT.fx,填入相关信息。

8.JPG

完成后,点击Connect,即可连接。


查看平台设备信息,显示在线,成功接入。

9.JPG

注意:本次没有进行时间戳校验,因此接入相对简单容易。

四.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时会出错。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。