Toggle navigation
首页
(current)
问答
文章
话题
商城
登录
注册
教你用Air720 模块通过AT指令以MQTTS方式连接华为云(下篇)
mqtt
Air720
AT指令
CA
Air720 用AT命令 使用MQTTS协议,CA证书链接华为云下篇
[教你用Air720 模块通过AT指令以MQTTS方式连接华为云(上篇)](http://oldask.openluat.com/article/902) # 生成MQTTS连接参数 上篇创建了真实测试设备,需要记录下设备ID和密匙,用于生成连接参数。 ![![](/static/editormd/php/../uploads/5_49337.jpg)](/static/editormd/php/../uploads/5_34803.jpg) 1.设备ID `9e352064-f339-45e3-842d-ab7b27616414` 2.密匙 `4aa2c87b6696ee37ce83` 点击确定后进入在线调测页面 ![](/static/editormd/php/../uploads/5_50453.jpg) 点击左侧菜单设备管理,可以看到设备列表中,刚创建的设备状态是离线。一会儿使用Air720连接成功后,就变成在线状态了。 ![](/static/editormd/php/../uploads/5_40999.jpg) 点击左侧对接信息,可得到MQTT的连接ip和好、端口号 ![](/static/editormd/php/../uploads/5_78142.jpg) ## MQTT连接参数 根据文档[MQTT CONNECT连接鉴权](https://support.huaweicloud.com/api-IoT/iot_06_3009.html "MQTT CONNECT连接鉴权"),摘要如下: ![](/static/editormd/php/../uploads/5_39842.jpg) cliendID=9e352064-f339-45e3-842d-ab7b27616414_0_0_2019071713 Username=9e352064-f339-45e3-842d-ab7b27616414 Password=162298e5d1aee9a239ea5b5fd711c31393d1a4b05e7cea5eba912e6c26b3305e > 上面的Password的值为使用“HMACSHA256”算法以时间戳为秘钥,对secret进行加密后的值。secret为注册设备时平台返回的secret,也就是上面创建设备时生成密匙。 这里给出一段使用Python生成上述参数的代码 ```python import time import datetime import pytz import hashlib import hmac def HMACSHA256(message,key): return hmac.new(key.encode('utf-8'),message.encode('utf-8'),hashlib.sha256).hexdigest() # 本地时间转换为UTC def local_to_utc(local_ts, utc_format='%Y%m%d%H'): local_tz = pytz.timezone('Asia/Chongqing') local_dt = local_tz.localize(local_ts) utc_dt = local_dt.astimezone(pytz.utc) return utc_dt.strftime(utc_format) def get_utc_timstamp(): local_tz=pytz.timezone('Asia/Shanghai') local_dt=local_tz.localize(datetime.datetime.now()) utc_dt=local_dt.astimezone(pytz.utc) return utc_dt.strftime('%Y%m%dT%H%M%SZ') if __name__ == '__main__': deviceId='9e352064-f339-45e3-842d-ab7b27616414' secret = '4aa2c87b6696ee37ce83' utctimestamp = local_to_utc(datetime.datetime.now()) clientId = '_'.join([deviceId , '0' , '0' , utctimestamp]) print(clientId) password = HMACSHA256(secret , utctimestamp) print(password) ``` 使用上述参数和地址及端口号,已经CA证书就可以成功连接到华为云了。 这时回到设备管理页面,可以看到设备状态已经变为在线。 ![](/static/editormd/php/../uploads/5_59655.jpg) ## Topic订阅、发布 订阅和发布,参考文档说明 ![](/static/editormd/php/../uploads/5_39029.jpg) 根据上面描述, 设备如果要从平台获取消息和数据,需要在登录成功后发起mqtt消息订阅topic 设备订阅:订阅消息topic格式为:“/huawei/v1/devices/9e352064-f339-45e3-842d-ab7b27616414/command/json” 设备如果要通过MQTT通道上报数据,需要发给指定的topic 上报消息的topic格式为:“/huawei/v1/devices/9e352064-f339-45e3-842d-ab7b27616414/data/json” 订阅上述topic后,进入设备调试页面 ![](/static/editormd/php/../uploads/5_95641.jpg) 从应用模拟界面发toggle字段命令"ON",点击发送 ![](/static/editormd/php/../uploads/5_91475.jpg) 从sscom的Air720串口接收可以看到,模块收到华为云平台下发的JSON格式的命令。toggle的值是“ON” ![](/static/editormd/php/../uploads/5_75366.jpg) ## Air720数据上报 ![](/static/editormd/php/../uploads/5_80611.jpg) 根据这个说明,结合设备的Profile订阅,数据上报的格式为 MQTT Topic: /huawei/v1/devices/9e352064-f339-45e3-842d-ab7b27616414/data/json Air720发送的payload: { "msgType": "deviceReq", "data": [ { "serviceId": "ServiceWin", "serviceData": { "Status": 0 }, "eventTime": " 20170915T121603Z" } ] } 设备发送后,在应用模拟端收到status数据0 ![](/static/editormd/php/../uploads/5_33822.jpg) 通过上述内容,实现了一个MQTTS的连接,订阅,上报的过程,后续就可以根据业务需求具体实现一个物联网应用了。其他华为云的功能不再赘述,自己挖掘一下吧。 当然Air720模块还有其他很强大的功能,特别是支持Lua,强大的二次开发能力,实时技术支持,软件开源包括底层C代码,和Lua代码,值得我们去细细研究。 [教你用Air720 模块通过AT指令以MQTTS方式连接华为云(上篇)](http://oldask.openluat.com/article/902)
发表于 2019-07-17 22:45
阅读 ( 4411 )
0 推荐
收藏
你可能感兴趣的文章
11、RDA8910CSDK二次开发:新鲜出炉的MQTT库
7852 浏览
稀饭放姜 iRTU 学习日记 (1):认识iRTU开源电路
4370 浏览
Air系列4G模块AT版本MQTT应用说明
6303 浏览
Air系列AT控制命令,针对STM32F103C8T6的示例代码
4620 浏览
教你用Air720 模块通过AT指令以MQTTS方式连接华为云(上篇)
6115 浏览
相关问题
Air202模块连接阿里云MQTT,如何用Lua计算password?
0 回答
AIR720H RNDIS linux下虚拟串口一段时间后会无效?
0 回答
使用AT指令连接阿里云,上报数据是老回复ERROR58或765,这是什么问题
1 回答
怎么在MQTT SSL连接时的添加自己ca证书验证
1 回答
air202,用mqtt协议连接onenet平台(lua)。
1 回答
Air720H 怎样通过 MQTT服务发送图片?
1 回答
0 条评论
请先
登录
后评论
Jone
4 篇文章
作家榜
»
技术销售Delectate
43 文章
陈夏
26 文章
国梁
24 文章
miuser
21 文章
晨旭
20 文章
朱天华
19 文章
金艺
19 文章
杨奉武
18 文章
×
发送私信
发给:
内容:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!