




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 用python寫一個(gè)基于web的物聯(lián)網(wǎng)應(yīng)用程序 謝作如寒假期間,忙里偷閑設(shè)計(jì)了一個(gè)名叫“sfarm”的開源智慧農(nóng)場方案。sfarm采用了應(yīng)用最廣泛的mqtt協(xié)議,多節(jié)點(diǎn)設(shè)備匯集到一個(gè)服務(wù)器上,不僅能自動灌溉,還實(shí)現(xiàn)了遠(yuǎn)程控制,定時(shí)采集各種數(shù)據(jù)。方案中涉及的開源硬件、傳感器、電磁閥和其他灌溉設(shè)備,在淘寶上都能買到,因而得到了很多朋友的關(guān)注。其中福州連江五中的盧老師就在學(xué)校的大花壇上部署了一套,運(yùn)行效果很好。雖然系統(tǒng)運(yùn)行正常,但很快就產(chǎn)生了新的需求:當(dāng)有嘉賓或者學(xué)生來參觀智慧農(nóng)場系統(tǒng)的時(shí)候,如何快速展示這一系統(tǒng)的“物聯(lián)”功能?畢竟打開siot(
2、mqtt服務(wù)器)的web管理頁面,再進(jìn)行演示總不夠便捷,也難以體現(xiàn)個(gè)性化。這就需要寫一個(gè)物聯(lián)網(wǎng)應(yīng)用程序,對接入的各個(gè)節(jié)點(diǎn)設(shè)備進(jìn)行直觀的管理。當(dāng)然,我們期望這個(gè)物聯(lián)網(wǎng)應(yīng)用程序的開發(fā)難度不能太高,最好學(xué)生也能夠開發(fā)。這樣,智慧農(nóng)場就和學(xué)生的物聯(lián)網(wǎng)學(xué)習(xí)、編程學(xué)習(xí)密切結(jié)合起來了。 用web方式開發(fā)物聯(lián)網(wǎng)應(yīng)用程序的優(yōu)勢分析物聯(lián)網(wǎng)應(yīng)用程序的開發(fā)有很多種方式可以選擇,比較常見的是用vb、c#之類的語言來編寫,但是開發(fā)的應(yīng)用程序要運(yùn)行在電腦上,無論是演示還是平時(shí)管理都不夠靈活。用app inventor編寫一個(gè)手機(jī)app也是不錯(cuò)的選擇,技術(shù)門檻也低,中學(xué)生大都能參與編寫。但美中不足的是,這個(gè)app要事先安裝,
3、而且只能運(yùn)行在安卓手機(jī)上,不夠靈活且不具備普適性。用類scratch的軟件來編寫應(yīng)用程序,也是可行的一種選擇,如mind+(一款圖形化編程軟件)內(nèi)置了mqtt模塊,可以編寫物聯(lián)網(wǎng)應(yīng)用程序。mind+的門檻很低,小學(xué)生也能夠編寫出一個(gè)非常個(gè)性化的物聯(lián)網(wǎng)應(yīng)用。但遺憾的是,mind+的代碼不能脫離mind+環(huán)境運(yùn)行,也不能編譯為一款獨(dú)立的軟件。毫無疑問,最靈活的方式肯定是采用b/s架構(gòu),編寫一個(gè)單獨(dú)的管理網(wǎng)頁,即webapp。在服務(wù)器上運(yùn)行該程序,任何手機(jī)的瀏覽器都能打開這個(gè)特定的網(wǎng)頁,看到各種采集的數(shù)據(jù),還可以通過網(wǎng)頁按鈕來控制“澆水”。這樣的應(yīng)用場景顯然很“智能”很“貼心”,但遺憾的是,編寫we
4、bapp一般需要掌握一定的網(wǎng)頁前端開發(fā)技術(shù),而目前學(xué)生普遍缺少這方面的編程基礎(chǔ)。 用python開發(fā)webapp能不能用python來編寫webapp?現(xiàn)在的中學(xué)信息技術(shù)教材幾乎都采用python語言了,如果能夠用python來編寫網(wǎng)頁,學(xué)生就不需要學(xué)習(xí)html、js和css等網(wǎng)頁開發(fā)技術(shù)。當(dāng)然,答案是肯定的,一個(gè)名叫“remi”的python庫,就是用來開發(fā)webapp的。1.remi庫簡介remi是一個(gè)用于python應(yīng)用程序的gui庫,它將應(yīng)用程序的界面轉(zhuǎn)換為html,以便在web瀏覽器中呈現(xiàn)。嚴(yán)格地說,我們不能用remi庫來編寫傳統(tǒng)的網(wǎng)站,而只將他當(dāng)成web形式的tkinter庫(py
5、thon最經(jīng)典的圖形界面庫)來使用。如果要做網(wǎng)站,還是要老老實(shí)實(shí)學(xué)點(diǎn)前端知識,然后結(jié)合python的flask框架來開發(fā)。2.remi庫的安裝remi可以采用pip命令安裝,具體如下:pip install remi3.remi庫的代碼示例(如圖1)運(yùn)行這段代碼后,瀏覽器會自動打開一個(gè)本地的網(wǎng)址,出現(xiàn)如圖2所示的界面。將“”換成ip地址,就能通過其他電腦、手機(jī)的瀏覽器來訪問了。點(diǎn)擊“請點(diǎn)擊這里”按鈕,界面會發(fā)生變化,如圖3所示。不用寫復(fù)雜的js代碼,在remi的支持下,網(wǎng)頁交互就變得這么簡單。如果需要了解更多關(guān)于remi庫的資源,可以訪問github或者官方文檔。github
6、地址:https:/文檔地址:https:/remi.readthedocs.io/en/latest/ 基于remi編寫基于web的物聯(lián)網(wǎng)應(yīng)用程序既然是編寫物聯(lián)網(wǎng)應(yīng)用程序,那么肯定還需要安裝siot庫。這也是“虛谷物聯(lián)”團(tuán)隊(duì)開發(fā)的python庫,因?yàn)閙qtt的官方python庫(paho-mqtt)編寫出來的代碼冗長,不好理解,于是委托上海蘑菇云團(tuán)隊(duì)在paho-mqtt的基礎(chǔ)上進(jìn)行了新的封裝。siot庫可以通過pip命令來安裝,命令如下:pip install siot1.物聯(lián)網(wǎng)應(yīng)用的工作流程因?yàn)椤皊farm”每一個(gè)節(jié)點(diǎn)都有采集土壤、光線信息的功能,都具備單獨(dú)的電磁閥,用物聯(lián)網(wǎng)消息來控制。那
7、么,這個(gè)應(yīng)用程序既需要顯示消息,又要能夠發(fā)送消息(控制指令),工作流程如圖4所示。其實(shí),絕大多數(shù)的物聯(lián)網(wǎng)應(yīng)用程序,都需要同時(shí)具備訂閱和發(fā)送消息功能。2.核心代碼1:物聯(lián)網(wǎng)消息的訂閱因?yàn)橐瑫r(shí)訂閱多個(gè)主題的消息,代碼中采用了“定點(diǎn)存放定時(shí)處理”的方式,即先將接收到的消息放在一個(gè)字典(topic_msg_map)中,然后定時(shí)在字典中查找是否有新消息,讀取新消息后就刪除這一消息,避免重復(fù)讀取。參考代碼如下頁圖5所示。3.核心代碼2:物聯(lián)網(wǎng)消息的顯示顯示消息需要不斷刷新網(wǎng)頁組件中的文字,這需要啟動一個(gè)新的進(jìn)程來處理,然后在這個(gè)進(jìn)程中不斷循環(huán)讀取字典(topic_msg_map)中的消息。參考代碼如圖6
8、所示。4.核心代碼3:物聯(lián)網(wǎng)消息的發(fā)送消息發(fā)送通過“澆水”按鈕來實(shí)現(xiàn)。參考代碼如圖7所示。5.核心代碼4:物聯(lián)網(wǎng)設(shè)備的切換sfarm是一個(gè)多節(jié)點(diǎn)工作的物聯(lián)網(wǎng)系統(tǒng),因而需要加上設(shè)備切換功能,比較簡單的做法是用一個(gè)列表(project_list)記錄需要呈現(xiàn)的設(shè)備名稱,然后在切換時(shí)修改全局變量(id)。參考代碼如下頁圖8所示。 運(yùn)行效果和反饋python的神奇,就在于其擁有無窮無盡的“庫”,能夠用來快速解決問題。從找到remi庫到寫出代碼,我僅僅花了一個(gè)晚上的時(shí)間,這種編程的感覺特別好。最終的代碼運(yùn)行效果如下頁圖9所示。福州連江五中的盧老師將代碼運(yùn)行在sfarm系統(tǒng)的物聯(lián)網(wǎng)服務(wù)器上,然后將訪問地址做成二維碼,用手機(jī)掃碼(手機(jī)要能夠訪問服務(wù)器)的方式來打開這個(gè)網(wǎng)頁,效果很不錯(cuò),如下頁圖10所示。從難度上看,只要有python編程基礎(chǔ),就能編出類似的程序。他正在將這方面的內(nèi)容開發(fā)成一個(gè)物聯(lián)網(wǎng)課程,讓學(xué)生真正參與到sfarm的開發(fā)和維護(hù)中。完成了這個(gè)物聯(lián)網(wǎng)應(yīng)用后,最大的收獲并不是解決了sfarm系統(tǒng)的演示問題,而在于找到了一種設(shè)計(jì)python程序界面的新方法。例如,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國烏雞酒市場運(yùn)營態(tài)勢及發(fā)展前景預(yù)測報(bào)告
- 2025-2030年中國回收含銅酸金屬項(xiàng)目投資可行性研究分析報(bào)告
- 智慧課堂的游戲化設(shè)計(jì)與實(shí)踐研究
- 分布式風(fēng)電項(xiàng)目可行性研究報(bào)告
- 中國高端物業(yè)管理行業(yè)投資分析及發(fā)展戰(zhàn)略咨詢報(bào)告
- 教育游戲化挑戰(zhàn)學(xué)生樂在其中的學(xué)習(xí)平臺設(shè)計(jì)
- 2025年中國五金拉手行業(yè)市場競爭格局及投資前景展望報(bào)告
- 2024-2030年中國人造肉行業(yè)市場深度分析及發(fā)展趨勢預(yù)測報(bào)告
- 中國存儲芯片市場競爭策略及行業(yè)投資潛力預(yù)測報(bào)告
- xx市興xx小區(qū)節(jié)能評估報(bào)告表-圖文
- 吸入劑的正確使用
- 疝氣護(hù)理課件
- 《造林綠化落地上圖操作技術(shù)規(guī)范》
- 國企基金公司招聘考試題
- 燒傷科普講座課件
- 小學(xué)語文課前預(yù)習(xí)有效指導(dǎo)的研究結(jié)題報(bào)告
- 《狼性企業(yè)文化》課件
- 智慧能源管理平臺建設(shè)方案書
- 地類及變化原因劃分、數(shù)據(jù)庫結(jié)構(gòu)、森林資源變化圖斑現(xiàn)地核實(shí)表、年度更新統(tǒng)計(jì)報(bào)表
- 安全標(biāo)準(zhǔn)化示范班組建設(shè)匯報(bào)
- GB/T 4437.1-2023鋁及鋁合金熱擠壓管第1部分:無縫圓管
評論
0/150
提交評論