目錄
基礎(chǔ)資料
探討重點(diǎn)
實(shí)現(xiàn)功能
硬件準(zhǔn)備
軟件版本
保姆級(jí)步驟
新建項(xiàng)目
1. MQTT連接官方說(shuō)明:
2、配置文件基本模式
方式1:采用平臺(tái)給定的MQTT連接參數(shù)
方式2:采用平臺(tái)給定的MQTT連接工具計(jì)算相關(guān)參數(shù)
方式3:示例,采用Python實(shí)現(xiàn)連接參數(shù)生成
3、一型一密AT方式連接
4、接入云平臺(tái)及訂閱、發(fā)布主題示例
基礎(chǔ)資料
基于Air780E開發(fā)板:Air780E文檔中心
簡(jiǎn)介:AT開發(fā)
探討重點(diǎn)
本系列主要探討MQTT手動(dòng)接入騰訊云物理網(wǎng)平臺(tái)的基本操作及手動(dòng)鑒權(quán)步驟、信息訂閱及發(fā)布的基本原理。
參考閱讀:物聯(lián)網(wǎng)模組AT命令接入云平臺(tái)(1)-MQTT基本原理及步驟
實(shí)現(xiàn)功能
MQTT手動(dòng)接入騰訊云物理網(wǎng)平臺(tái)的基本操作及手動(dòng)鑒權(quán)。
硬件準(zhǔn)備
Air780E開發(fā)板1塊,SIM卡1張。
軟件版本
Revision: AirM2M_780E_V1108_LTE_AT
任意串口調(diào)試工具(本文使用llcom1.1.1.9,波特率9600)
保姆級(jí)步驟
新建項(xiàng)目
阿里云物聯(lián)網(wǎng)平臺(tái)入口
DeviceName可以自定義。
這里采用sim卡的IMEI(8615510564*****)作為DeviceName,便于后期維護(hù)。
設(shè)備的證書信息
1. MQTT連接官方說(shuō)明:
連接參數(shù)說(shuō)明如下,本文主要從一機(jī)一密注冊(cè)認(rèn)證的方式進(jìn)行介紹。
2、配置文件基本模式
根據(jù)物聯(lián)網(wǎng)模組AT命令接入云平臺(tái)(1)-MQTT基本原理及步驟,首先要確定MQTT連接的配置文件,根據(jù),官方文檔,可知,基本模式為:
AT+MCONFIG="clientId|securemode=2,signmethod=加密方式,timestamp=時(shí)間戳|","DeviceName&ProductKey","passwd"
而passwd是由形如:
'clientIdi0m26pL****.861551056*****deviceName8615510564*****productKeyi0m26p*****timestamp16706417*****'的字符串通過signmethod指定的加密方式計(jì)算而的,DeviceSecret作為計(jì)算的key。
方式1:采用平臺(tái)給定的MQTT連接參數(shù)
平臺(tái)給定的參數(shù)中的clientId采用'clientId'+'.'+'deviceName'組合的方式確定,hmac_sha256加密方式??梢灾苯邮褂?。需要注意的是,passwd大小寫系統(tǒng)都能夠認(rèn)可。
按基本模式,組合出的配置參數(shù),之后按步驟認(rèn)證后建立連接。
方式2:采用平臺(tái)給定的MQTT連接工具計(jì)算相關(guān)參數(shù)
平臺(tái)幫助文檔中給出了javascript編寫password工具(MQTT_Password)。
支持hmacsha1和hmacmd5方法。這里可以采用產(chǎn)品名稱作為clientId,該工具能夠簡(jiǎn)易的計(jì)算出主要的連接參數(shù),但該工具的時(shí)間戳字段不能夠自由修改。
方式3:示例,采用Python實(shí)現(xiàn)連接參數(shù)生成
參考博文:python3 HMAC/SHA256/BASE64/MD5
import time
import hmac
import hashlib
#1、時(shí)間戳生成及基本注冊(cè)數(shù)據(jù)
timestamp=int(time.time()*1000)+60*60 #60*60有效時(shí)間3600s,可按需延長(zhǎng)
pk = "i0m26pL****"
dn = "861551056*****"
ds = "25dacc9ca202cf11ecda2541d7*****"
ts = timestamp
ci = "air780e"
sm1 = "hmacsha1"? #加密方式選擇,不參與計(jì)算
sm5 = "hmacmd5"
sm6 = "hmacsha256"
#2、passwd計(jì)算字符串生成
contentStr='clientId'+ci+'deviceName'+dn+'productKey'+pk+'timestamp'+str(ts)
#print(contentStr)
def hmac_sha256(key, value):
??? """
??? hmacsha256加密
??? return:加密結(jié)果轉(zhuǎn)成16進(jìn)制字符串形式
??? """
??? message = value.encode('utf-8')
??? return hmac.new(key.encode('utf-8'), message, digestmod=hashlib.sha256).hexdigest()
def hmac_md5(key, value):
??? """
??? hmacmd5加密
??? return:加密結(jié)果轉(zhuǎn)成16進(jìn)制字符串形式
??? """
??? message = value.encode('utf-8')
??? return hmac.new(key.encode('utf-8'), message, digestmod=hashlib.md5).hexdigest()
def hamc_sha1(key,value):
??? message = value.encode('utf-8')? # 加密內(nèi)容
??? # key = key.encode('utf-8')????????? # 加密的key
??? return hmac.new(key.encode('utf-8'), message, digestmod=hashlib.sha1).hexdigest()
#3、不同加密方式下的passwd計(jì)算及AT+MCONFIG參數(shù)生成
#官方sign程序生成的passwd全部大寫,實(shí)測(cè)大小寫均可被系統(tǒng)識(shí)別,不影響鑒權(quán)。
#3.1 hmac_md5
print("hamc_md5:",hmac_md5(ds, contentStr).upper())
print("AT+MCONFIG=",'"'+ci + "|securemode=2,signmethod=" + sm5 + ",timestamp=" + str(ts) + "|\""+",\""+dn + "&" + pk+'","'+hmac_md5(ds, contentStr).upper()+'"')
#3.2 hamc_sha1
print("hamc_sha1",hamc_sha1(ds, contentStr).upper())
print("AT+MCONFIG=",'"'+ci + "|securemode=2,signmethod=" + sm1 + ",timestamp=" + str(ts) + "|\""+",\""+dn + "&" + pk+'","'+hamc_sha1(ds, contentStr).upper()+'"')
#3.2 云平臺(tái)MQTT參數(shù)的驗(yàn)證
ci= pk+"."+dn
ts=1670641794482
contentStr='clientId'+ci+'deviceName'+dn+'productKey'+pk+'timestamp'+str(ts)
print("hamc_sha256",hmac_sha256(ds, contentStr).upper())
print("AT+MCONFIG=",'"'+ci + "|securemode=2,signmethod=" + sm6 + ",timestamp=" + str(ts) + "|\""+",\""+dn + "&" + pk+'","'+hmac_sha256(ds, contentStr).upper()+'"')
3、一型一密AT方式連接
一型一密與一機(jī)一密的主要區(qū)別在于第一次連接的時(shí)候需要根據(jù)協(xié)議請(qǐng)求秘鑰,連接前在阿里云打開動(dòng)態(tài)注冊(cè)開關(guān)。具體連接方式請(qǐng)參考官方開發(fā)者文檔。
4、接入云平臺(tái)及訂閱、發(fā)布主題示例
←代表串口工具發(fā)送指令,→代表串口工具接收到的指令或信息。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-421774.html
基本連接情況確定程序見物聯(lián)網(wǎng)模組AT命令接入云平臺(tái)(1)-MQTT基本原理及步驟。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-421774.html
#接入云平臺(tái)參數(shù)指定
[2022/12/10 18:20:08.9715] ← AT+MCONFIG= "air780e|securemode=2,signmethod=hmacsha1,timestamp=16706450*****|","861551056420391&i0m26p*****","5B4117DE87575D98D9D12364235EB76C********"
[2022/12/10 18:20:09.0793] → AT+MCONFIG= "air780e|securemode=2,signmethod=hmacsha1,timestamp=16706450*****|","861551056420391&i0m26******","5B4117DE87575D98D9D12364235EB76C4*******F"
OK
[2022/12/10 18:20:10.2153] ← AT+MIPSTART="iot-06z00gm80emf6to.mqtt.iothub.aliyuncs.com",1883
[2022/12/10 18:20:10.3217] → AT+MIPSTART="iot-06z00gm80emf6to.mqtt.iothub.aliyuncs.com",1883
OK
[2022/12/10 18:20:10.6112] →
CONNECT OK
[2022/12/10 18:20:12.4242] ← AT+MCONNECT=1,120
[2022/12/10 18:20:12.5412] → AT+MCONNECT=1,120
OK
[2022/12/10 18:20:12.7432] →
CONNACK OK
[2022/12/10 18:20:15.4216] ← AT+MSUB="/ext/ntp/i0m26p*****/8615510564*****/response",0
[2022/12/10 18:20:15.5267] → AT+MSUB="/ext/ntp/i0m26****/861551056*****/response",0
OK
[2022/12/10 18:20:15.6557] →
SUBACK
#發(fā)布NTP時(shí)間訂閱
#開發(fā)板規(guī)則,AT命令中"(雙引號(hào))應(yīng)由\22替代。?????????????????????????????????????
#(由AT+MPUB="/ext/ntp/i0m26pLx83v/8615510564*****/request",0,0,{"deviceSendTime":"1670145990689"} 轉(zhuǎn)寫得到)
[2022/12/10 18:20:16.7899] ← AT+MPUB="/ext/ntp/i0m26p****/8615510564****1/request",0,0,{\22deviceSendTime\22:\221670145990689\22}
[2022/12/10 18:20:16.8949] → AT+MPUB="/ext/ntp/i0m26p*****/861551056*****1/request",0,0,{\22deviceSendTime\22:\221670145990689\22}
OK
[2022/12/10 18:20:17.0273] →
+MSUB: "/ext/ntp/i0m26p*****/861551056*****1/response",100 byte,{"deviceSendTime":"1670145990689","serverSendTime":"1670667616579","serverRecvTime":"1670667616579"}
到了這里,關(guān)于Air780E|阿里云|AT命令|物聯(lián)網(wǎng)|三元組|鑒權(quán)|算法|密鑰生成|(3)-阿里云物聯(lián)網(wǎng)手動(dòng)接入步驟的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!