物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開(kāi)發(fā) 課件 項(xiàng)目4-3、通過(guò)Python實(shí)現(xiàn)HTTP協(xié)議_第1頁(yè)
物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開(kāi)發(fā) 課件 項(xiàng)目4-3、通過(guò)Python實(shí)現(xiàn)HTTP協(xié)議_第2頁(yè)
物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開(kāi)發(fā) 課件 項(xiàng)目4-3、通過(guò)Python實(shí)現(xiàn)HTTP協(xié)議_第3頁(yè)
物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開(kāi)發(fā) 課件 項(xiàng)目4-3、通過(guò)Python實(shí)現(xiàn)HTTP協(xié)議_第4頁(yè)
物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開(kāi)發(fā) 課件 項(xiàng)目4-3、通過(guò)Python實(shí)現(xiàn)HTTP協(xié)議_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

通過(guò)Python實(shí)現(xiàn)HTTP協(xié)議物聯(lián)網(wǎng)云平臺(tái)開(kāi)發(fā)實(shí)踐(第2版)目錄CONTENTS01安裝庫(kù)文件02屬性上報(bào)03事件上報(bào)

第一部分

安裝庫(kù)文件PART0101庫(kù)函數(shù)安裝pycharm運(yùn)行http代碼,提示缺少requests庫(kù)。1、開(kāi)始菜單輸入cmd,回車(chē)3、打開(kāi)cmd,進(jìn)入Scripts文件夾。2、文件夾地址看python安裝路徑填入:cd+空格+安裝路徑C:\Users\admin\AppData\Local\Programs\Python\Python310\Scripts庫(kù)函數(shù)安裝—方法1使用Python語(yǔ)言快速實(shí)現(xiàn)HTTP協(xié)議相關(guān)功能,需要安裝HTTP協(xié)議必需的requests庫(kù)文件4、輸入pipinstallrequests使用cmd命令提示符安裝requests庫(kù)函數(shù)PART0202

第二部分

屬性上報(bào)實(shí)驗(yàn)一屬性上報(bào)【實(shí)驗(yàn)?zāi)康摹?/p>

(1)掌握requests庫(kù)、JSON庫(kù)的使用方法。(2)掌握基于Python的屬性上報(bào)方法?!緦?shí)驗(yàn)設(shè)備】

(1)一臺(tái)PC,可連接Internet。(2)Python軟件、PyCharm編程環(huán)境?!緦?shí)驗(yàn)要求】

在項(xiàng)目二實(shí)驗(yàn)一創(chuàng)建的數(shù)據(jù)格式為OneJson的設(shè)備下,基于物模型中溫度屬性功能點(diǎn),采用Python編程實(shí)現(xiàn)設(shè)備屬性上報(bào)。importtime

importbase64

importhmac

fromurllib.parseimportquote

importjson

importrequests

#定義token計(jì)算函數(shù)

deftoken(product_id,access_key,auth_info=None):

version='2018-10-31'

ifauth_info:

res='products/%s/devices/%s'%(product_id,auth_info)

else:

res='products/%s'%(product_id)

et=str(int(time.time())+3600)

method='sha1'

key=base64.b64decode(access_key)

org=et+'\n'+method+'\n'+res+'\n'+version

b=hmac.new(key=key,msg=org.encode(),digestmod=method)

sign=base64.b64encode(b.digest()).decode()

sign=quote(sign,safe='')

res='res=%s'%res

sign='sign=%s'%sign

et='et=%s'%et

method='method=%s'%method

version='version=%s'%version

list_token=[res,sign,et,method,version]

token='&'.join(list_token)

returntoken程序代碼-1程序代碼-2if__name__=='__main__':

access_key=‘xxxxxxxxxx'#設(shè)備key

auth_info=‘xxxxxxx'#設(shè)備名稱

product_id=‘xxxxxx'#產(chǎn)品ID

api_token=token(product_id,access_key,auth_info)

print(api_token)

url='/fuse/http/device/thing/property/post?topic=$sys/%s/%s/thing/property/post&protocol=http'%(product_id,auth_info)

dict={

"id":"124",

"version":"1.0",

"params":{

"Temp":{

"value":25

}

}

}

s=json.dumps(dict)

headers={

"Token":api_token

}

r=requests.request("POST",url,headers=headers,data=s)

print(r.headers)

print('1',20*'*')

print(r.text)

print('2',20*'*')dict={

"id":"124",

"version":"1.0",

"params":{

“temperature":{

"value":25

}

}

}url='/fuse/http/device/thing/property/post?topic=$sys/%s/%s/thing/property/post&protocol=http'%(product_id,auth_info)headers={

"Token":api_token,

}r=requests.request("POST",url,headers=headers,data=s)運(yùn)行結(jié)果具體內(nèi)容如下所述。第一部分:計(jì)算得到的Token。

第二部分:響應(yīng)報(bào)文頭部,具體包含服務(wù)器、日期、報(bào)文主體的數(shù)據(jù)類型和長(zhǎng)度、傳輸編碼、過(guò)期時(shí)間等。

第四部分:響應(yīng)報(bào)文主體,這部分內(nèi)容的含義可以查閱開(kāi)發(fā)者文檔。此處表示屬性上報(bào)成功。

第三、五部分:程序打印信息,用于分隔,并非響應(yīng)報(bào)文的內(nèi)容。PART0303

第三部分

設(shè)備模擬器實(shí)驗(yàn)二事件上報(bào)【實(shí)驗(yàn)?zāi)康摹?/p>

(1)掌握基于Python的事件上報(bào)方法?!緦?shí)驗(yàn)設(shè)備】

(1)一臺(tái)PC,可連接Internet。(2)Python軟件、PyCharm編程環(huán)境?!緦?shí)驗(yàn)要求】

在項(xiàng)目二實(shí)驗(yàn)一創(chuàng)建的數(shù)據(jù)格式為OneJson的設(shè)備下,基于物模型中高溫預(yù)警事件功能點(diǎn),采用Python編程實(shí)現(xiàn)設(shè)備事件上報(bào)。importtime

importbase64

importhmac

fromurllib.parseimportquote

importjson

importrequests

#定義token計(jì)算函數(shù)

deftoken(product_id,access_key,auth_info=None):

version='2018-10-31'

ifauth_info:

res='products/%s/devices/%s'%(product_id,auth_info)

else:

res='products/%s'%(product_id)

et=str(int(time.time())+3600)

method='sha1'

key=base64.b64decode(access_key)

org=et+'\n'+method+'\n'+res+'\n'+version

b=hmac.new(key=key,msg=org.encode(),digestmod=method)

sign=base64.b64encode(b.digest()).decode()

sign=quote(sign,safe='')

res='res=%s'%res

sign='sign=%s'%sign

et='et=%s'%et

method='method=%s'%method

version='version=%s'%version

list_token=[res,sign,et,method,version]

token='&'.join(list_token)

returntoken程序代碼-1程序代碼-2if__name__=='__main__':

access_key=‘xxxxxxxxxxxxx'#設(shè)備key

auth_info=‘xxxxxxr'#設(shè)備名稱

product_id=‘xxxxxxx'#產(chǎn)品ID

api_token=token(product_id,access_key,auth_info)

print(api_token)

url='/fuse/http/device/thing/event/post?topic=$sys/%s/%s/thing/event/post&protocol=http'%(product_id,auth_info)

dict={

"id":"123",

"params":{

“heat":{

"value":{

“temperature":73

}

}

}

}

s=json.dumps(dict)

headers={

"Token":api_token,

}

r=requests.request("POST",url,headers=headers,data=s)

print(r.headers)

print('1',20*'*')

print(r.text)

print('2',20*'*')dict={

"id":"123",

"params":{

“heat":{

"value":{

“temperature":73

}

}

}

}

url='/fuse/http/device/thing/event/post?topic=$sys/%s/%s/thing/event/post&protocol=http'%(product_id,auth_info)headers={

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論