使用MQTT连接华为云IOT平台



前言

上一篇说明了如何在华为云创建设备,并获取到它的DeviceID和密钥,通过这些操作,可以看出它与阿里云的不同,一下是我发觉的几个不同:

  1. 阿里云支持虚拟设备进行仿真,华为云不支持
  2. 华为云需要额外的自己创建服务ID,阿里云没有服务ID这一说法
  3. 华为云没有deviceName,它的devicename=deviceid
  4. 华为云的域名获取方式不同
  5. 华为云的日志叫做消息跟踪,需要自定义跟踪多久

接下来使用MQTT.fx连接华为云


一、MQTT.fx连接华为云需要什么

连接华为云使用的是密钥的方式,因此我们需要知道它的DeviceID,username,password,以及域名,当然还有发布的主题和订阅的主题。
DeviceID,username,password在上一篇已经讲解了如何获取,使用MQTT连接华为云(一);
那么它的域名怎么获取,与阿里云的不一样,阿里云是有一定的规律组成的字符串,而它是需要自己在 平台的 总览 上查看的
在这里插入图片描述
在这里插入图片描述
至于订阅主题和发布主题可以在官网的开发文档获取
subscribe Topic:

/huawei/v1/devices/{deviceId}/command/{codecMode}

publish Topic

/huawei/v1/devices/{deviceId}/data/{codecMode}

在这里插入图片描述

二、连接步骤

1.创建连接

打开MQTT.fx打开配置页面,将上述的内容放在对于的位置即可
在这里插入图片描述
然后保存连接
在这里插入图片描述
这样就连接成功了

2.订阅主题与发布主题

根据上述的主题格式进行订阅与发布即可

在这里插入图片描述

在这里插入图片描述
发布主题的格式如下
在这里插入图片描述

设备向Topic发送的payload: 
{ 
   "msgType":"deviceReq", 
   "data": [ 
   { 
      "serviceId":"******", 
      "serviceData":{ 
        "temp": "29.3", 
        "humi":"56.5", 
       },
      "eventTime":"20160503T121540Z" 
   }
   ] 
}

平台下发的格式如下
在这里插入图片描述

设备先订阅Topic后才能收到命令推送,设备接收到的payload: 
{ 
   "msgType": "cloudReq", 
   "serviceId": "******", 
   "mid": 1, 
   "cmd": "LEVEL", 
   "paras": { 
     "value": 4 
   } 
}

3.实践操作

我在产品中定义了两个属性,一个温度只读,一个继电器可读可写
在这里插入图片描述

根据上报的格式得以下内容

{ 
   "msgType":"deviceReq", 
   "data": [ 
   { 
      "serviceId":"qweq", 
      "serviceData":{ 
        "TEMP": 29.3, 
        "DO":1
       },
      "eventTime":"20210724T030340Z" 
   }
   ] 
}

在这里插入图片描述
设备属性上报成功!

平台下发的话需要借助平台的在线调试
在这里插入图片描述
根据mqtt.fx得到以下消息

{
"msgType":"cloudReq",
"serviceId":"qweq",
"paras":{"DO":1},
"cmd":"继电器控制",
"hasMore":0,
"mid":3
}

在这里呢还需要对下发命令做一个响应,当然也可以不在意,直接上报新数据即可,响应格式如下

设备向Topic发送的payload: 
{ 
   "msgType": "deviceRsp", 
   "mid": 1, //收到mid
   "errcode": 0, //0成功 1失败
   "body": { //可以省略
     "result": 0 
   } 
}

注意:响应的命令不会更新到设备影子,即消息响应后,哪怕响应了最新的数据,设备属性的内容也不会进行更新,在这我是发了两次,一次响应,一次属性上报。


总结

提示:这里对文章进行总结:
这篇讲的主要是对华为云设备的连接和命令的发送,可以看出虽然和阿里云操作不一样,但基本内容还是一样的,大家多练就熟悉了!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐