版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第14課
智能物聯(lián)系統(tǒng)的軟件設(shè)計年級:八年級學(xué)科:初中信息科技(浙教版)采集數(shù)據(jù)發(fā)布數(shù)據(jù)訂閱/存儲數(shù)據(jù)智能校園數(shù)字氣象站問題思考:硬件搭建好后就能直接獲取氣象數(shù)據(jù)嗎?軟件編寫發(fā)布訂閱獲取呈現(xiàn)數(shù)據(jù)知識回顧中介Wifi無線路由器
任務(wù)要求:通過編程實現(xiàn)氣象數(shù)據(jù)的實時采集,每隔一段時間獲取新數(shù)據(jù),并在屏幕上顯示。日積月累Python:豐富的類庫編程的過程:
①導(dǎo)入相應(yīng)庫
②調(diào)用相應(yīng)的函數(shù)編程軟件:參考函數(shù):溫度:aht20.read_temp()氣壓:bme.pressure()/1000風(fēng)速:WindSpeed(pin16,factor=4.5)風(fēng)向:WindDirection(pin14)屏幕顯示:oled.print(x,y,data,num)發(fā)布數(shù)據(jù)到主題:mqtt.publish(topic,msg)訂閱主題:mqtt.subscribe(topic,event)任務(wù)一:采集數(shù)據(jù)任務(wù)一:采集數(shù)據(jù)①明確算法01Wifi連接MQTT連接采集數(shù)據(jù)OLED顯示數(shù)據(jù)每隔一段時間發(fā)布數(shù)據(jù)到對應(yīng)主題
任務(wù)要求:將采集到的氣象數(shù)據(jù)發(fā)布到物聯(lián)中臺。②創(chuàng)建項目主題1234主題名稱建議首字母大寫任務(wù)二:發(fā)布數(shù)據(jù)01Wifi連接MQTT連接采集數(shù)據(jù)OLED顯示數(shù)據(jù)每隔一段時間發(fā)布數(shù)據(jù)到不同主題
參考程序fromnpythonimport*whileTrue:
#采集氣象數(shù)據(jù),并賦值給相應(yīng)變量
wendu=aht20.read_temp()
qiya=bme.pressure()/1000
#oled屏幕顯示
oled.print(4,1,'校園數(shù)字氣象站',1)
oled.print(5,2,"溫度:"+str(wendu),1)
oled.print(5,3,"氣壓:"+str(qiya),1)time.sleep(5)
mqtt.publish(“WenDu”,str(wendu))ipserver="xxkj"#無線名稱ippass="123456789"#無線密碼ip=wifi.connect(ipserver,ippass)
#網(wǎng)絡(luò)連接server="57"
#MQTT服務(wù)器地址port=1883
#MQTT服務(wù)器端口號userId="4052"
#用戶IDprojectId="Du0oKLv6fUBRisOHxBWeAJkJ7GNZfvMf"#項目IDmqtt.config(server,port,projectId=projectId,userId=userId,keepalive=1000)
#配置MQTTmqtt.connect()
#連接MQTT服務(wù)器mqtt.publish(“QiYa”,str(qiya))③編寫程序任務(wù)二:發(fā)布數(shù)據(jù)01任務(wù)二:發(fā)布數(shù)據(jù)MQTT連接訂閱主題獲取該主題下的數(shù)據(jù)存儲在數(shù)據(jù)庫文件中importmqttc,time,sqlite3
#導(dǎo)入MQTT庫文件、time時間模塊、sqlite3數(shù)據(jù)庫模塊srv="57"
#MQTT服務(wù)器地址port=1883
#MQTT服務(wù)器端口號projectId='e0AUj5N84pCm9zI8ujiHrVWdNrGJfzm7'
#定義項目IDuserId='4089'
#用戶IDmqttc.config(srv,port,projectId=projectId,userId=userId)
#mqtt連接參數(shù)配置mqttc.connect()
#mqtt連接sub_topic='WenDu'
#訂閱的主題名稱#定義訂閱回調(diào)函數(shù)defsub_cb(topic,msg):data=msg.decode('utf-8')#將接收到的消息從字節(jié)類型轉(zhuǎn)換為字符串類型cmd=eval(data)#將字符串類型的數(shù)據(jù)轉(zhuǎn)換成字典類型print('訂閱結(jié)果返回:',topic,cmd['msg'])try:
#訂閱傳感器的數(shù)據(jù)保存到數(shù)據(jù)庫now=time.strftime('%Y-%m-%d%H:%M:%S')
#獲取當(dāng)前時間uid=cmd['userId']#提取消息中的用戶ID和數(shù)據(jù)值value=cmd['msg']
#準備插入數(shù)據(jù)庫的SQL語句sql=f"INSERTINTOweather(time,userid,topic,msg)VALUES('{now}','{uid}','{topic}','{value}')"conn=sqlite3.connect('database.db')#連接到SQLite數(shù)據(jù)庫conn.execute(sql)#執(zhí)行SQL語句mit()#提交事務(wù)#訂閱主題mqttc.subscribe(sub_topic,sub_cb)是否有新消息是只需訂閱一次,當(dāng)有新的消息時,訂閱者便會被通知。否任務(wù)三:訂閱主題存儲數(shù)據(jù)任務(wù)三:訂閱主題存儲數(shù)據(jù)折線圖更清晰呈現(xiàn)數(shù)據(jù)的變化趨勢,易于分析表格形式折線圖形式
任務(wù)要求:將獲取的某一天的溫度數(shù)據(jù),通過編程制作其折線圖,了解一天的趨勢走向。importsqlite3,datetime#導(dǎo)入sqlite數(shù)據(jù)庫模塊,datetime時間模塊importmatplotlib.pyplotasplt#導(dǎo)入matplotlib繪圖模塊#用matplotlib繪圖,配置相關(guān)參數(shù)plt.rcParams['font.sans-serif']=['SimHei']
#設(shè)置中文顯示plt.title('一天溫度趨勢圖')
#圖表標題plt.xlabel('時間',size=10)
#圖表x軸坐標標簽plt.ylabel('數(shù)值',size=10)
#圖表y軸坐標標簽conn=sqlite3.connect('database.db')
#連接數(shù)據(jù)庫#定義一個函數(shù),向圖表添加數(shù)據(jù)線defaddLine(plt,query):
dx=[]
#初始化兩個列表用于存儲時間和溫度值dy=[]forfieldsinquery:dx.append(str_to_time(fields[0]))
#將時間字符串轉(zhuǎn)換為datetime對象并添加到dx列表中dy.append(float(fields[1]))
#將溫度值轉(zhuǎn)換為浮點數(shù)并添加到dy列表中plt.plot(dx,dy,'o:b',label='溫度',markersize=3)
#在圖表上繪制一條線,并添加圖例標簽query.close()
#關(guān)閉數(shù)據(jù)表conn.close()
#關(guān)閉數(shù)據(jù)庫plt.legend()
#顯示圖例plt.show()
#顯示圖表窗口1matplotlib為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)大四(攝影專題)專題創(chuàng)作畢業(yè)測試試題及答案
- 2025年中職服裝設(shè)計與工藝(服裝縫制)試題及答案
- 2025年中職(汽車運用與維修)汽車轉(zhuǎn)向系統(tǒng)檢修階段測試題及答案
- 2025年高職移動機器人技術(shù)(多機器人協(xié)作)試題及答案
- 2025年中職幼兒教育學(xué)(教育理念)試題及答案
- 2025年中職(船舶機械裝置安裝與維修)機械維修階段測試題及答案
- 2025年高職眼視光技術(shù)(眼鏡加工)試題及答案
- 2025年中職人工智能技術(shù)應(yīng)用(AI技術(shù)文檔撰寫)試題及答案
- 2025年大學(xué)管理學(xué)(成本管理)試題及答案
- 道路危險貨物運輸安全標準化制度匯編
- 華泰財險人類輔助生殖醫(yī)療費用保險條款
- 醫(yī)療質(zhì)量安全核心制度要點釋義(第二版)
- 小學(xué)奧數(shù)幾何模型-之-蝴蝶模型-例題+作業(yè)-帶答案
- 福特銳際說明書
- 排水管網(wǎng)清淤疏通方案(技術(shù)方案)
- 慢性支氣管炎和COPD(內(nèi)科護理學(xué)第七版)
- 關(guān)于提高護士輸液時PDA的掃描率的品管圈PPT
- GB/T 30564-2023無損檢測無損檢測人員培訓(xùn)機構(gòu)
- 中華人民共和國汽車行業(yè)標準汽車油漆涂層QC-T484-1999
- GB/T 96.2-2002大墊圈C級
- 第九章-第一節(jié)-美洲概述
評論
0/150
提交評論