教你用Air720 模块通过AT指令以MQTTS方式连接华为云(上篇)
生成MQTTS连接参数
上篇创建了真实测试设备,需要记录下设备ID和密匙,用于生成连接参数。
1.设备ID9e352064-f339-45e3-842d-ab7b27616414
2.密匙4aa2c87b6696ee37ce83
点击确定后进入在线调测页面
点击左侧菜单设备管理,可以看到设备列表中,刚创建的设备状态是离线。一会儿使用Air720连接成功后,就变成在线状态了。
点击左侧对接信息,可得到MQTT的连接ip和好、端口号
MQTT连接参数
根据文档MQTT CONNECT连接鉴权,摘要如下:
cliendID=9e352064-f339-45e3-842d-ab7b27616414_0_0_2019071713
Username=9e352064-f339-45e3-842d-ab7b27616414
Password=162298e5d1aee9a239ea5b5fd711c31393d1a4b05e7cea5eba912e6c26b3305e
上面的Password的值为使用“HMACSHA256”算法以时间戳为秘钥,对secret进行加密后的值。secret为注册设备时平台返回的secret,也就是上面创建设备时生成密匙。
这里给出一段使用Python生成上述参数的代码
1 | import time |
使用上述参数和地址及端口号,已经CA证书就可以成功连接到华为云了。
这时回到设备管理页面,可以看到设备状态已经变为在线。
Topic订阅、发布
订阅和发布,参考文档说明
根据上面描述,
设备如果要从平台获取消息和数据,需要在登录成功后发起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后,进入设备调试页面
从应用模拟界面发toggle字段命令”ON”,点击发送
从sscom的Air720串口接收可以看到,模块收到华为云平台下发的JSON格式的命令。toggle的值是“ON”
Air720数据上报
根据这个说明,结合设备的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
通过上述内容,实现了一个MQTTS的连接,订阅,上报的过程,后续就可以根据业务需求具体实现一个物联网应用了。其他华为云的功能不再赘述,自己挖掘一下吧。
当然Air720模块还有其他很强大的功能,特别是支持Lua,强大的二次开发能力,实时技术支持,软件开源包括底层C代码,和Lua代码,值得我们去细细研究。