使用MQTT连接华为云的物联网平台
Posted 骄傲的大树
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用MQTT连接华为云的物联网平台相关的知识,希望对你有一定的参考价值。
使用MQT为云的物联网平台
前言
上一篇说明了如何在华为云创建设备,并获取到它的DeviceID和密钥,通过这些操作,可以看出它与阿里云的不同,一下是我发觉的几个不同:
- 阿里云支持虚拟设备进行仿真,华为云不支持
- 华为云需要额外的自己创建服务ID,阿里云没有服务ID这一说法
- 华为云没有deviceName,它的devicename=deviceid
- 华为云的域名获取方式不同
- 华为云的日志叫做消息跟踪,需要自定义跟踪多久
接下来使用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
}
}
注意:响应的命令不会更新到设备影子,即消息响应后,哪怕响应了最新的数据,设备属性的内容也不会进行更新,在这我是发了两次,一次响应,一次属性上报。
总结
提示:这里对文章进行总结:
这篇讲的主要是对华为云设备的连接和命令的发送,可以看出虽然和阿里云操作不一样,但基本内容还是一样的,大家多练就熟悉了!
以上是关于使用MQTT连接华为云的物联网平台的主要内容,如果未能解决你的问题,请参考以下文章
STM32+ESP8266+MQTT协议连接腾讯物联网开发平台
STM32+ESP8266+MQTT协议连接腾讯物联网开发平台