目录
基础资料
基于Air780E开发板:
Air780E文档中心
简介:
AT开发
探讨重点
本系列主要探讨MQTT手动接入联通雁飞格物平台的基本操作及手动鉴权步骤、信息订阅及发布的基本原理。
参考阅读:
物联网模组AT命令接入云平台(1)-MQTT基本原理及步骤
实现功能
MQTT手动接入联通雁飞格物平台的基本操作及手动鉴权。
硬件准备
Air780E开发板1块,SIM卡1张。
软件版本
Revision: AirM2M_780E_V1108_LTE_AT
任意串口调试工具(本文使用
llcom1.1.1.9
,波特率9600)
在雁飞格物平台上创建产品
1、创建产品
雁飞格物平台
产品名称根据自己需求填写
设备类型:直连设备
设备接入协议:MQTT
联网方式:2G/3G/4G/5G
认证方式:设备密钥
物模型定义根据自己需求填写、演示选择温湿度监测单元。
标准功能定义
功能类型 |
功能名称 |
标识符 |
是否必选 |
数据类型 |
||
---|---|---|---|---|---|---|
属性 |
温度 |
temperature |
必选 |
float |
||
属性 |
经度 |
longitude |
必选 |
double |
||
属性 |
纬度 |
latitude |
必选 |
double |
||
属性 |
海拔 |
altitude |
必选 |
double |
||
属性 |
湿度 |
humidity |
必选 |
float |
||
属性 |
省电模式 |
powerSavingMode |
必选 |
enum |
||
服务 |
蜂鸣告警控制 |
buzzerControl |
必选 |
— |
点击提交即可
点到设备一栏,新建设备
产品一栏选择上一步创建的产品,设备名称、deviceKey、IMEI根据自身需要填写
注意:!!!如果deviceKey为空,则联通物联网平台会自动生成
基本信息
产品名称 |
AIR780E 查看产品 |
productKey |
cu10k330sbs***** |
设备状态 |
未激活 |
---|---|---|---|---|---|
设备名称 |
4600112503***** |
deviceKey |
medlar |
认证方式 |
设备密钥 |
设备类型 |
设备 |
接入协议 |
MQTT |
IP地址 |
— |
deviceId |
重置 |
IMEI |
4600112503***** |
iotId |
b2a955f59eaf4694bf1d8dbee9d***** |
点击提交后,设备即可创建成功
2、查看雁飞格物平台接入协议
MQTT协议规定连接参数须有ClientID,Username和Password三个字段,雁飞格物平台规定的三元组格式详细信息可在接入文档中查看
ClientId:{deviceId}|{productKey}|{signMethod}|{authType}|{operator}
Username:{deviceKey}|{productKey}
Password:将deviceId, deviceKey,productKey参数值依次进行拼接再进行hmac_sha256或sm3得到
组成ClientId
operator:由协议可见,当联网方式为蜂窝网时,operator字段表示运营商标识符,这里测试用的是移动卡,operator字段则为2
deviceId:deviceId需要和operator搭配使用,operator为1、2、3、4任意一个时,deviceId为流量卡的iccid 898601228012082*****
我们发AT+ICCID查一下当前设备流量卡的iccid,作为deviceId来使用
authType:一机一密填0即可
signMethod:此次示例使用hmac_sha256,写0即表示接入验证用的是hmac_sha256
productKey:在产品列表即可找到 cu10k330sbs*****
到此,clientId已经拼接好了,拼接后的clientId如下
898601228012082*****|cu10k330sbs*****|0|0|2
组成userName
在设备详细信息内找到deviceKey和productKey,拼接在一起即可
userName组成如下:
username:medlar|cu10k330sbs*****
组成password
如文档所说,将deviceId,deviceKey和productKey拼接再进行hmac_sha256加密即可得到password
加密密钥为设备的deviceSecre,在设备详情页中可以找到
3C09BC967DA7C2B53DE55B65*****F3B
3、设备鉴权信息
productKey |
cu10k330sbs***** |
deviceKey |
medlar |
---|---|---|---|
deviceSecret |
3C09BC967DA7C2B53DE55B65*****F3B |
加密之前deviceId,deviceKey、productKey拼接的字符串为:
898601228012082*****medlarcu10k330sbs*****
密钥为3C09BC967DA7C2B53DE55B65*****F3B
加密后得到的password为
021e76d54221851be1307492a5a1abc3f6ad2031c96ca71d07ca34d0262*****
鉴权参数计算(python版):
def hmac_sha256(key, value):
"""
hmacsha256加密
return:加密结果转成16进制字符串形式
"""
message = value.encode('utf-8')
return hmac.new(key.encode('utf-8'), message, digestmod=hashlib.sha256).hexdigest()
str="898601228012082*****medlarcu10k330sbs*****"
key="3C09BC967DA7C2B53DE55B65*****F3B"
print(hmac_sha256(key, str))
结果:021e76d54221851be1307492a5a1abc3f6ad2031c96ca71d07ca34d0262*****
4、MQTT直连雁飞格物平台
[2022/11/21 15:59:47.4123] ← AT+MCONFIG="898601228012082*****|cu10k330sbs*****|0|0|2","medlar|cu10k330sbs*****","021e76d54221851be1307492a5a1abc3f6ad2031c96ca71d07ca34d0262*****"
OK
[2022/11/21 16:00:48.7303] ← AT+MIPSTART="dmp-mqtt.cuiot.cn",1883
[2022/11/21 16:00:48.8542] → AT+MIPSTART="dmp-mqtt.cuiot.cn",1883
OK
[2022/11/21 16:00:49.1099] →
CONNECT OK
[2022/11/21 16:00:50.4232] ← AT+MCONNECT=1,60
[2022/11/21 16:00:50.5276] → AT+MCONNECT=1,60
OK
[2022/11/21 16:00:50.6951] →
CONNACK OK
5、发布与订阅消息
雁飞格物平台有固定的通信TOPIC,在设备详情页TOPIC列表内,这里演示设备上传物模型数据和订阅上传物模型响应功能
属性定义在产品详情页的功能定义一栏内获取
6、订阅
订阅云端响应属性上报主题
[2022/11/21 16:06:36.7815] ← AT+MSUB="$sys/cu10k330sbs*****/medlar/property/pub_reply",0
OK
[2022/11/21 16:06:37.0950] →
SUBACK
7、发布
向设备上报属性的主题发布消息,消息携带设备的属性,不同的产品具有不同的属性,可以在设备物模型处查看
具体payload上传协议需要查看雁飞格物平台物模型文档
文档展示 – 雁飞格物平台 (cuiot.cn)
此处上报一条温度属性
[2022/11/21 16:12:24.6508] ← AT+MPUB="$sys/cu10k330sbs*****/medlar/property/pub",0,0,"{\22messageId\22:\22123\22,\22params\22:{\22key\22:\22temperature\22,\22value\22:23.4,\22ts\22:\221528292272000\22}}"
OK
[2022/12/06 16:40:18.8405] → +MSUB: "$sys/cu10k330sbs*****/medlar/property/pub_reply",55 byte,{"code":"000000","message":"Success","messageId":"123"}
平台返回success,表示属性上报成功
在设备列表的设备详情页、设备数据一栏内查看上报的数