版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
目錄PAGEIII設(shè)施園藝生產(chǎn)環(huán)境測控物聯(lián)網(wǎng)管理系統(tǒng)目錄摘要 IIIAbstract IV1緒論 61.1課題背景及研究意義 61.2國內(nèi)外研究現(xiàn)狀及研究意義 61.2.1研究現(xiàn)狀 61.2.2研究內(nèi)容 71.2.3研究意義 71.3論文章節(jié)安排 72相關(guān)技術(shù)綜述 92.1AntDesignPro前端開發(fā)框架 92.1.1NodeJS 92.1.2AntDesignReact 112.1.3Umi 122.2Express后端開發(fā)框架 132.3傳感器 142.3.1溫濕度 142.3.2二氧化碳 152.3.3PH 152.3.4電導(dǎo)率 162.3.5溶解氧 172.3.6濁度 182.4網(wǎng)絡(luò)協(xié)議 182.4.1Lora 192.4.2MQTT 203系統(tǒng)需求分析 213.1業(yè)務(wù)分析 223.1.1管理員用例圖 223.1.2普通用戶用例圖 233.1系統(tǒng)功能性需求 243.2系統(tǒng)非功能性需求 243.3可行性分析 254系統(tǒng)總體設(shè)計(jì) 264.1技術(shù)選型和框架設(shè)計(jì) 264.1.1開發(fā)環(huán)境搭建 264.1.2技術(shù)選型 274.1.3系統(tǒng)框架設(shè)計(jì) 284.2數(shù)據(jù)庫設(shè)計(jì) 294.3接口設(shè)計(jì) 335系統(tǒng)功能模塊詳細(xì)設(shè)計(jì) 345.1登錄模塊 345.2系統(tǒng)管理模塊 345.3數(shù)據(jù)展示模塊 355.3控制決策模塊 356系統(tǒng)實(shí)現(xiàn) 376.1登錄模塊 376.2系統(tǒng)管理模塊 376.2.1系統(tǒng)用戶管理 376.2.2生產(chǎn)單元管理 386.2.3終端管理 396.2.4傳感器管理 396.2.5數(shù)據(jù)類型管理 406.3數(shù)據(jù)展示模塊 416.3.1溶解氧 416.3.2酸堿值 426.3.3濁度 426.3.4電導(dǎo)率 436.3.6數(shù)據(jù)解析存儲(chǔ) 446.4控制決策模塊 527系統(tǒng)測試與分析 527.1功能測試 527.1.1登錄模塊測試 527.1.2系統(tǒng)管理模塊測試 537.1.3數(shù)據(jù)展示模塊測試 537.1.4決策控制模塊測試 547.2非功能測試 547.2.1安全測試 548系統(tǒng)使用與維護(hù)說明書 558.1系統(tǒng)安裝與配置說明 558.2系統(tǒng)使用說明書 578.2.1登錄和角色權(quán)限分配 578.2.2數(shù)據(jù)展示頁面設(shè)計(jì) 588.2.3管理員頁面設(shè)計(jì) 608.3系統(tǒng)維護(hù)說明書 629設(shè)計(jì)開發(fā)總結(jié) 639.1關(guān)鍵技術(shù) 639.2畢業(yè)設(shè)計(jì)體會(huì) 64參考文獻(xiàn) 65致謝 67摘要設(shè)施園藝生產(chǎn)環(huán)境物聯(lián)網(wǎng)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)摘要作為設(shè)施農(nóng)業(yè)的重要組成部分,近年來,我國設(shè)施園藝發(fā)展迅猛:我國的設(shè)施園藝的面積與人均設(shè)施蔬菜供應(yīng)量均居世界前列,屬設(shè)施園藝大國。但是,我國設(shè)施園藝開始較慢,在運(yùn)行管理,環(huán)境調(diào)控,自動(dòng)化等方面依舊存在不足。目前,我國傳統(tǒng)溫室大棚生產(chǎn)仍是依靠經(jīng)驗(yàn)管理,人工調(diào)控等傳統(tǒng)做法,顯然這無法達(dá)到我們?cè)O(shè)施園藝自動(dòng)化,信息化的要求。為此,本選題旨在對(duì)設(shè)施園藝生產(chǎn)環(huán)境數(shù)據(jù)進(jìn)行整合分析,供農(nóng)戶決策,完成基于LoRa無線通信的、B/S架構(gòu)、reactantdesignpro框架的設(shè)施園藝生產(chǎn)環(huán)境測控物聯(lián)網(wǎng)管理系統(tǒng),完成溫室內(nèi)濕簾、風(fēng)機(jī)和遮陽系統(tǒng)操控。對(duì)被控實(shí)施調(diào)用相關(guān)接口完成設(shè)備控制,并展示設(shè)備運(yùn)轉(zhuǎn)狀態(tài),實(shí)現(xiàn)能耗統(tǒng)計(jì)分析。系統(tǒng)主要分為三個(gè)模塊:數(shù)據(jù)中心,決策中心,用戶中心。對(duì)應(yīng)模塊又下設(shè)多個(gè)模塊:生產(chǎn)單元模塊,終端模塊,傳感器模塊,數(shù)據(jù)模塊;控制模塊;用戶數(shù)據(jù)管理模塊等關(guān)鍵字:NodeJs;TypeScript;Express;MySql;React;前后端分離技術(shù)AbstractDesignandimplementationofiotmanagementsystemforfacilityhorticulturalproductionenvironmentAbstractAsanimportantpartoffacilityagriculture,facilitieshorticulturehasdevelopedrapidlyinrecentyears.Theareaoffacilitieshorticultureandthepercapitasupplyoffacilitiesvegetablesinourcountryareinthefrontranksintheworld,whichisacountryoffacilitieshorticulture.But,facilitiesgardeningbeganslowlyinourcountry,inoperationmanagement,environmentalregulation,automationandsoontherearestillshortcomings.Atpresent,ourtraditionalgreenhouseproductionstillreliesonexperiencemanagement,artificialcontrolandothertraditionalpractices,obviouslythiscannotmeetourfacilitieshorticulturalautomation,informationrequirements.Therefore,thepurposeofthistopicistointegrateandanalyzethedataoffacilityhorticulturalproductionenvironmentforfarmerstomakedecisions,completetheInternetofThingsmanagementsystemformeasurementandcontroloffacilityhorticulturalproductionenvironmentbasedonLoRawirelesscommunication,B/Sarchitectureandreactantdesignproframework,andcompletethecontrolofwetcurtain,fanandsunshadesysteminthegreenhouse.Thecontrolledimplementationoftherelevantinterfacetocompletethedevicecontrol,anddisplaytheequipmentrunningstate,toachievestatisticalanalysisofenergyconsumption.Thesystemismainlydividedintothreemodules:datacenter,decisioncenterandusercenter.Thecorrespondingmoduleiscomposedofseveralmodules:productionunitmodule,terminalmodule,sensormodule,datamodule;Controlmodule;UserdatamanagementmoduleandsoonKeywords:NodeJs;TypeScript;Express;MySql;React;Front-endandback-endseparation第1章緒論P(yáng)AGEIII1緒論1.1課題背景及研究意義目前,我國是世界人口數(shù)量第一的國家,雖然占據(jù)960萬平方千米的土地面積,但可耕種面積較少,并且隨著城市化進(jìn)程的不斷推進(jìn),城市建設(shè)占用了大量的耕地,農(nóng)村人口大量涌入城市,這就導(dǎo)致可耕種面積逐年減少,從事農(nóng)業(yè)生產(chǎn)的勞動(dòng)力不足等諸多問題。因此,我國農(nóng)業(yè)急需改變傳統(tǒng)農(nóng)業(yè)模式,向現(xiàn)代農(nóng)業(yè)轉(zhuǎn)變發(fā)展,實(shí)現(xiàn)農(nóng)業(yè)生產(chǎn)效率提高。近幾年我國農(nóng)業(yè)向現(xiàn)代農(nóng)業(yè)快速發(fā)展,生活質(zhì)量的不斷提高,人們對(duì)農(nóng)產(chǎn)品品質(zhì)與生活環(huán)境的要求越來越高,這就需要有適于農(nóng)業(yè)與生物系統(tǒng)領(lǐng)域應(yīng)用的先進(jìn)信息感知與精密儀器產(chǎn)品提供檢測與過程監(jiān)控服務(wù)。物聯(lián)網(wǎng)在農(nóng)業(yè)領(lǐng)域的應(yīng)用發(fā)展,大力推進(jìn)信息化與農(nóng)業(yè)現(xiàn)代化的融合,是農(nóng)業(yè)發(fā)展的必然趨勢。隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,物聯(lián)網(wǎng)技術(shù)已經(jīng)被廣泛應(yīng)用于各個(gè)領(lǐng)域。在園藝生產(chǎn)環(huán)境中,物聯(lián)網(wǎng)技術(shù)可以提供實(shí)時(shí)監(jiān)測、數(shù)據(jù)分析、自動(dòng)化控制等功能,從而提高園藝生產(chǎn)的效率和質(zhì)量。本文將介紹一種基于物聯(lián)網(wǎng)技術(shù)的設(shè)施園藝生產(chǎn)環(huán)境管理系統(tǒng),該系統(tǒng)主要包括傳感器節(jié)點(diǎn)、數(shù)據(jù)采集和傳輸、數(shù)據(jù)處理和分析、控制終端等模塊。傳感器節(jié)點(diǎn)可以實(shí)時(shí)監(jiān)測溫度、濕度、光照等環(huán)境參數(shù),并將數(shù)據(jù)采集并傳輸?shù)綌?shù)據(jù)處理和分析模塊。數(shù)據(jù)處理和分析模塊可以對(duì)采集到的數(shù)據(jù)進(jìn)行分析和處理,提供實(shí)時(shí)的數(shù)據(jù)監(jiān)測和預(yù)警功能。控制終端可以根據(jù)數(shù)據(jù)分析結(jié)果進(jìn)行自動(dòng)化控制,實(shí)現(xiàn)智能化的園藝生產(chǎn)管理。本文將詳細(xì)介紹設(shè)施園藝生產(chǎn)環(huán)境物聯(lián)網(wǎng)管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)過程,包括系統(tǒng)架構(gòu)設(shè)計(jì)、傳感器節(jié)點(diǎn)設(shè)計(jì)、數(shù)據(jù)采集和傳輸設(shè)計(jì)、數(shù)據(jù)處理和分析設(shè)計(jì)、控制終端設(shè)計(jì)等。通過實(shí)驗(yàn)驗(yàn)證,本系統(tǒng)可以有效地提高設(shè)施園藝生產(chǎn)的效率和質(zhì)量,實(shí)現(xiàn)智能化的園藝生產(chǎn)管理。本文的主要貢獻(xiàn)在于提出了一種基于物聯(lián)網(wǎng)技術(shù)的設(shè)施園藝生產(chǎn)環(huán)境管理系統(tǒng),并對(duì)該系統(tǒng)進(jìn)行了詳細(xì)的設(shè)計(jì)和實(shí)現(xiàn)。該系統(tǒng)可以有效地提高園藝生產(chǎn)的效率和質(zhì)量,為現(xiàn)代化園藝生產(chǎn)提供了一種新的思路和方法。1.2國內(nèi)外研究現(xiàn)狀及研究意義1.2.1研究現(xiàn)狀設(shè)施園藝是一種通過使用特殊設(shè)備(如溫室、水肥一體化控制系統(tǒng)等)來控制植物生長環(huán)境的園藝技術(shù)。鑒于其本身具有技術(shù)和資本集約的特點(diǎn),可以提高農(nóng)業(yè)資源利用率和農(nóng)產(chǎn)品數(shù)量和質(zhì)量,這使其成為解決現(xiàn)代農(nóng)業(yè)發(fā)展,資源及環(huán)境三大基本問題的重要途徑。國外發(fā)達(dá)國家設(shè)施園藝發(fā)展呈現(xiàn)出以下特征:發(fā)達(dá)國家依靠完善的設(shè)備,科學(xué)的生產(chǎn)技術(shù)已經(jīng)形成了溫室制造、生產(chǎn)資料配套,產(chǎn)品生產(chǎn),物流等為一體的設(shè)施園藝體系,從而保障了園藝作物產(chǎn)量穩(wěn)定和質(zhì)量安全。設(shè)施園藝生產(chǎn)自動(dòng)化、規(guī)?;⑿畔⒒?,生產(chǎn)過程節(jié)能環(huán)保。在國內(nèi),自改革開放以來,我國設(shè)施園藝發(fā)展迅猛,逐步形成規(guī)模大,領(lǐng)域廣,生產(chǎn)效益明顯的特征。對(duì)比之下,我國設(shè)施園藝發(fā)展仍有巨大進(jìn)步空間:因地制宜的應(yīng)用相關(guān)技術(shù),逐步走向自動(dòng)化,節(jié)省人力物力等問題。1.2.2研究內(nèi)容本系統(tǒng)基于LoRaWAN網(wǎng)絡(luò)體系結(jié)構(gòu),在感知層,利用現(xiàn)有的數(shù)據(jù)采集傳感器,對(duì)溫室環(huán)境影響農(nóng)作物生長相關(guān)參數(shù)進(jìn)行采集并上傳,交由傳輸層處理;在傳輸層配置LoraWAN開源網(wǎng)絡(luò)服務(wù)器,主要用于接收傳感器終端上傳的數(shù)據(jù),并進(jìn)行一定的存儲(chǔ);在應(yīng)用層,后端先要使用MQTT協(xié)議,訂閱網(wǎng)絡(luò)服務(wù)器,并且對(duì)數(shù)據(jù)進(jìn)行解析,然后采用NodeJS和Express框架快速搭建后端開發(fā)環(huán)境,將解析完成的數(shù)據(jù)存儲(chǔ)到本地?cái)?shù)據(jù)庫里,在web前端,使用React和AntDesignPro框架快速編寫頁面,在web界面展示數(shù)據(jù)且進(jìn)行分析供用戶決策。1.2.3研究意義設(shè)施園藝技術(shù)的廣泛推廣,不僅可以提高農(nóng)作物的產(chǎn)量和品質(zhì),增加農(nóng)戶收入,除此之外,在農(nóng)作物生產(chǎn)過程中,設(shè)施園藝采用先進(jìn)的技術(shù)和管理方法,可以節(jié)約用水、用肥、用藥等資源,減少對(duì)環(huán)境的污染。另外,設(shè)施園藝因其高效的產(chǎn)量,在一定程度上可以緩解城市用地緊張問題。最后,設(shè)施園藝也適用于大規(guī)模生產(chǎn),可以促進(jìn)農(nóng)業(yè)產(chǎn)業(yè)化,提高農(nóng)業(yè)效益和競爭力。通過本次課題設(shè)計(jì),能夠幫助學(xué)生能夠充分了解該課題的研究現(xiàn)狀和發(fā)展前景,把所學(xué)的理論知識(shí)運(yùn)用到前端和后端開發(fā)中,并提出自己的觀點(diǎn)及解決方案,并且有助于能夠結(jié)合實(shí)際獨(dú)立完成課題,針對(duì)課題提出合理的解決方案,學(xué)會(huì)檢索和閱讀國內(nèi)外文獻(xiàn),文檔及說明書撰寫能力。1.3論文章節(jié)安排本小節(jié)主要介紹本文內(nèi)容組織結(jié)構(gòu):第一章緒論。介紹當(dāng)前課題背景,研究現(xiàn)狀,以及本課題的研究內(nèi)容和研究意義。第二章相關(guān)技術(shù)綜述。對(duì)可以用來開發(fā)本次系統(tǒng)的技術(shù)作簡要解釋,供系統(tǒng)實(shí)現(xiàn)的技術(shù)選型作基礎(chǔ)。第三章系統(tǒng)需求分析。本章主要確定系統(tǒng)需求,包括功能需求和非功能需求。第四章系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)。本章詳細(xì)介紹系統(tǒng),實(shí)現(xiàn)技術(shù),實(shí)現(xiàn)的功能,功能實(shí)現(xiàn)的核心代碼等第五章系統(tǒng)測試與分析。本章主要是對(duì)第四章功能進(jìn)行測試,觀察功能運(yùn)行是否符合預(yù)期,對(duì)不符合的功能進(jìn)行分析。第六章系統(tǒng)使用與維護(hù)說明書。本章主要講解系統(tǒng)安裝與維護(hù)方法。第七章設(shè)計(jì)開發(fā)總結(jié)。本章主要是對(duì)本次系統(tǒng)開發(fā)作總結(jié)。第2章相關(guān)技術(shù)綜述 2相關(guān)技術(shù)綜述本章將對(duì)系統(tǒng)開發(fā)過程中使用的開發(fā)技術(shù),開發(fā)框架,開發(fā)語言作簡單介紹。2.1AntDesignPro前端開發(fā)框架圖2.1AntDesignPro架構(gòu)系統(tǒng)前端頁面展示采用AntDesignPro框架,AntDesignPro是基于AntDesign和umi的封裝的一整套企業(yè)級(jí)中后臺(tái)前端開發(fā)框架,其致力于在設(shè)計(jì)規(guī)范和基礎(chǔ)組件的基礎(chǔ)上,繼續(xù)向上構(gòu)建,提煉出典型模板/業(yè)務(wù)組件/配套設(shè)計(jì)資源。圖2.1AntDesignPro架構(gòu)展示了框架的組成。2.1.1NodeJS圖2.2Node.jsArchitectureNode.js是基于ChromeV8引擎的JavaScript運(yùn)行環(huán)境,可以使JavaScript代碼在服務(wù)端運(yùn)行。它采用事件驅(qū)動(dòng)、異步編程方式來提高I/O操作的效率和處理并發(fā)請(qǐng)求的能力,并且可以使用npm進(jìn)行依賴管理,方便了模塊的安裝使用。1)作用1.構(gòu)建服務(wù)器程序:Node.js可以輕松構(gòu)建服務(wù)器程序,通過HTTP模塊提供了很多操作HTTP協(xié)議的方法,可以輕松實(shí)現(xiàn)后端接口的開發(fā),提供數(shù)據(jù)支持。2.構(gòu)建命令行工具:通過Node.js命令行工具項(xiàng)目(如Commander.js)可以輕松構(gòu)建CLI工具,方便實(shí)現(xiàn)各種命令行操作。3.構(gòu)建Web應(yīng)用程序:Node.js可以通過Express、Koa等框架輕松地構(gòu)建Web應(yīng)用程序,提供基礎(chǔ)設(shè)施的能力,方便前端開發(fā)工作。特性單線程:Node運(yùn)行時(shí)只有一個(gè)主線程,這個(gè)線程用于執(zhí)行JavaScript代碼。這個(gè)單線程模型可以大幅降低多線程并發(fā)帶來的復(fù)雜性,使得Node能夠輕松支持高并發(fā)與高負(fù)載應(yīng)用。異步I/O:Node通過異步I/O來處理I/O事件。也就是說,當(dāng)Node遇到I/O操作時(shí),主線程會(huì)掛起等待I/O操作的完成,在等待的過程中可以處理其他的任務(wù),異步I/O可以提高應(yīng)用程序的吞吐量并降低服務(wù)端響應(yīng)時(shí)間。事件循環(huán):Node通過事件循環(huán)來管理異步I/O。事件循環(huán)會(huì)不斷地從事件隊(duì)列中取出事件,并將它們逐個(gè)處理。使用事件循環(huán)的好處是避免了線程等待,提高了CPU的利用率。事件機(jī)制:Node的事件機(jī)制使得應(yīng)用可以非常輕松地實(shí)現(xiàn)自定義事件,以及處理各種事件。Node中有一個(gè)事件觸發(fā)器,當(dāng)事件發(fā)生時(shí),觸發(fā)器會(huì)向事件隊(duì)列中添加該事件并立即返回,這樣可以提高并發(fā)性和響應(yīng)時(shí)間。模塊系統(tǒng):Node的模塊系統(tǒng)很靈活,可以方便地?cái)U(kuò)展應(yīng)用程序。Node模塊采用CommonJS規(guī)范,通過require()函數(shù)導(dǎo)入其他模塊。導(dǎo)入的模塊可以以對(duì)象的形式直接使用。3)執(zhí)行流程:初始化:Node.js創(chuàng)建一個(gè)V8引擎實(shí)例,并執(zhí)行全局作用域中的所有代碼。同時(shí),Node.js會(huì)加載指定的模塊,并初始化Node.js自身的模塊管理器Module。編譯:V8引擎將JavaScript代碼編譯成本地機(jī)器代碼,以提高執(zhí)行效率。執(zhí)行:Node.js執(zhí)行編譯后的代碼,并將結(jié)果返回給V8引擎。事件循環(huán):Node.js啟動(dòng)事件循環(huán),在事件隊(duì)列中輪詢事件,并交由回調(diào)函數(shù)處理各種事件。I/O處理:當(dāng)有I/O操作需要執(zhí)行時(shí),使用Libuv庫發(fā)起異步I/O操作,并注冊(cè)回調(diào)函數(shù)?;卣{(diào)函數(shù):當(dāng)異步I/O操作完成時(shí),執(zhí)行回調(diào)函數(shù),并將結(jié)果返回給事件循環(huán)。定時(shí)器:Node.js支持setTimeout和setInterval等定時(shí)器函數(shù),可以在指定時(shí)間后觸發(fā)回調(diào)函數(shù)。2.1.2AntDesignReact圖2.3AntDesignReacticonAntDesignReact是React框架下的UI組件庫,具有豐富的高質(zhì)量組件和設(shè)計(jì)資源,可用于構(gòu)建應(yīng)用程序的UI界面。它的組件以及設(shè)計(jì)風(fēng)格十分美觀,同時(shí)兼容多種瀏覽器和不同設(shè)備,非常適合用于企業(yè)級(jí)應(yīng)用程序的開發(fā)。特點(diǎn)完整的組件庫AntDesignReact提供了包括按鈕、表單、導(dǎo)航、布局等各種類型的UI組件,可以幫助開發(fā)人員快速構(gòu)建界面。豐富的文檔AntDesignReact提供了詳細(xì)的文檔和API說明,包括組件使用、開發(fā)指南、設(shè)計(jì)模式等方面的介紹。高度的定制性AntDesignReact支持自定義主題和樣式,可以根據(jù)項(xiàng)目需要進(jìn)行個(gè)性化定制,滿足不同項(xiàng)目的需求。企業(yè)級(jí)支持AntDesignReact由阿里巴巴前端團(tuán)隊(duì)開發(fā),提供了一整套UI組件解決方案,具有良好的穩(wěn)定性和可靠性,適合用于大型、復(fù)雜的企業(yè)級(jí)應(yīng)用程序。作用AntDesignReact適合用于企業(yè)級(jí)應(yīng)用程序開發(fā),在UI界面的構(gòu)建和設(shè)計(jì)方面提供了快速、可靠的解決方案。用AntDesignReact構(gòu)建應(yīng)用程序可以大大減少UI設(shè)計(jì)和開發(fā)的時(shí)間和成本,同時(shí)提高應(yīng)用程序的質(zhì)量和用戶體驗(yàn)的,目前已經(jīng)被很多企業(yè)采用,并廣泛應(yīng)用于各類應(yīng)用程序的開發(fā)。2.1.3Umi圖2.4UmiiconUmi是一個(gè)企業(yè)級(jí)React應(yīng)用框架,它由阿里巴巴前端團(tuán)隊(duì)開發(fā),提供了一整套開發(fā)規(guī)范和最佳實(shí)踐,包括路由、插件、主題、打包和部署等方面的解決方案。Umi可以快速搭建React應(yīng)用程序,并且支持插件機(jī)制,可以根據(jù)項(xiàng)目需求自由擴(kuò)展和定制功能。特點(diǎn)可擴(kuò)展:Umi實(shí)現(xiàn)了完整的生命周期,并使其插件化,Umi內(nèi)部功能也全由插件完成。此外還支持插件和插件集,以滿足功能和垂直域的分層需求。開箱即用:Umi內(nèi)置了路由、構(gòu)建、部署、測試等,僅需一個(gè)依賴即可上手開發(fā)。并且還提供針對(duì)React的集成插件集,內(nèi)涵豐富的功能,可滿足日常80%的開發(fā)需求。企業(yè)級(jí):經(jīng)螞蟻內(nèi)部3000+項(xiàng)目以及阿里、優(yōu)酷、網(wǎng)易、飛豬、口碑等公司項(xiàng)目的驗(yàn)證,值得信賴。大量自研:包含微前端、組件打包、文檔工具、請(qǐng)求庫、hooks庫、數(shù)據(jù)流等,滿足日常項(xiàng)目的周邊需求。完備路由:同時(shí)支持配置式路由和約定式路由,同時(shí)保持功能的完備性,比如動(dòng)態(tài)路由、嵌套路由、權(quán)限路由等等。面向未來:在滿足需求的同時(shí),我們也不會(huì)停止對(duì)新技術(shù)的探索。比如dll提速、modernmode、webpack@5、自動(dòng)化external、bundlerless等等作用Umi在企業(yè)級(jí)React應(yīng)用程序的開發(fā)中具有不可替代的作用。它以規(guī)范化和標(biāo)準(zhǔn)化為開發(fā)者提供了更好的開發(fā)體驗(yàn)和更快的構(gòu)建方式,使開發(fā)者能夠更專注于業(yè)務(wù)邏輯開發(fā)。此外,Umi還可以滿足應(yīng)用程序的多種需求,例如:多頁應(yīng)用、單頁應(yīng)用、SSR等,使得開發(fā)者可以根據(jù)業(yè)務(wù)需求選擇最佳的方案??偟膩碚f,Umi在提高開發(fā)效率、質(zhì)量和可維護(hù)性的同時(shí),也為企業(yè)級(jí)應(yīng)用程序的開發(fā)提供了更好的解決方案。2.2Express后端開發(fā)框架圖2.5Express一次請(qǐng)求執(zhí)行過程Express是一個(gè)免費(fèi)且開源的node.jsWeb框架,易于創(chuàng)建基于Web的應(yīng)用程序和API。它的核心是提供一組API,用于構(gòu)建用于Web和移動(dòng)應(yīng)用程序的服務(wù)器端應(yīng)用程序。Express.js使用基于中間件的方法來使開發(fā)更加簡單。執(zhí)行流程定義路由:通過使用Express提供的路由方法定義各個(gè)路由的URL和HTTP動(dòng)作。請(qǐng)求:當(dāng)客戶端請(qǐng)求到達(dá)Express應(yīng)用程序時(shí),它首先將在中間件堆棧中執(zhí)行。中間件:中間件是執(zhí)行代碼邏輯的函數(shù),可以在請(qǐng)求和響應(yīng)之間執(zhí)行任何事情。中間件可以對(duì)請(qǐng)求進(jìn)行預(yù)處理,過濾、記錄或重定向它。路由匹配:請(qǐng)求將通過路由匹配器,與定義的路由進(jìn)行匹配。首先,應(yīng)用程序確定請(qǐng)求匹配哪個(gè)路由,然后通過路由對(duì)象獲取所需的控制器(如函數(shù)或?qū)ο螅┻M(jìn)行響應(yīng)處理??刂破鳎涸谄ヅ渎酚珊螅?qǐng)求將轉(zhuǎn)到相應(yīng)的控制器(函數(shù)或?qū)ο螅?,?zhí)行響應(yīng)的邏輯。響應(yīng):當(dāng)應(yīng)用程序處理完請(qǐng)求后,將向客戶端發(fā)送響應(yīng)。并且,如果需要,可以在中間件或路由中將響應(yīng)傳遞給下一個(gè)中間件或路由,直到響應(yīng)被完全發(fā)送。作用Express最常用于構(gòu)建Web應(yīng)用程序和RESTfulAPI。由于其簡單且可擴(kuò)展的特性,可以用于構(gòu)建各種類型的Web應(yīng)用程序,包括電子商務(wù)、社交網(wǎng)絡(luò)、新聞和媒體網(wǎng)站以及移動(dòng)應(yīng)用API等。Express也經(jīng)常與各種數(shù)據(jù)庫和其他node.js包和框架一起使用,以實(shí)現(xiàn)應(yīng)用程序的各種需求。2.3傳感器設(shè)施園藝生產(chǎn)環(huán)境數(shù)據(jù)對(duì)于農(nóng)戶來說非常重要,因?yàn)樗鼈兲峁┝擞嘘P(guān)農(nóng)作物生長和健康狀況的實(shí)時(shí)信息。這些數(shù)據(jù)可以幫助農(nóng)戶了解農(nóng)作物生長環(huán)境中水分、溫度、光照、CO2濃度等環(huán)境參數(shù),從而優(yōu)化農(nóng)作物生長條件,提高產(chǎn)量和品質(zhì),減少浪費(fèi)和損失。此外,設(shè)施園藝生產(chǎn)環(huán)境數(shù)據(jù)還可以幫助農(nóng)戶預(yù)測和診斷農(nóng)作物的疾病和蟲害,及時(shí)采取措施進(jìn)行防治。它們還可以幫助農(nóng)戶制定更有效的施肥計(jì)劃,以最大限度地提高植物的生長效率和營養(yǎng)價(jià)值。物聯(lián)網(wǎng)感知層主要由感知終端組成,其主要負(fù)責(zé)園藝生產(chǎn)環(huán)境的數(shù)據(jù)采集,上傳。2.3.1溫濕度對(duì)于生產(chǎn)環(huán)境終端溫度,濕度兩項(xiàng)數(shù)據(jù)的采集,本系統(tǒng)采用的是485型溫濕度變送器圖2.6溫濕度傳感器選擇該款產(chǎn)品,是因?yàn)槠洳捎酶哽`敏度數(shù)字探頭,信號(hào)穩(wěn)定,精度高,具有測量范圍寬、線形度好、防水性能好、使用方便、便于安裝、傳輸距離遠(yuǎn)等特點(diǎn)。所以,這款傳感器廣泛適用于農(nóng)業(yè)大棚/花卉培養(yǎng)等需要溫濕度監(jiān)測的場合。傳感器內(nèi)輸入電源,感應(yīng)探頭,信號(hào)輸出三部分完全隔離。安全可靠,外觀美觀,安裝方便。圖2.7溫濕度傳感器系統(tǒng)結(jié)構(gòu)圖首先使用12V直流電源供電,設(shè)備可以直接連接帶有485接口的PLC,可以通過485接口芯片連接單片機(jī)。通過后文指定的modbus協(xié)議對(duì)單片機(jī)和PLC進(jìn)行編程即可配合傳感器使用。同時(shí)使用USB轉(zhuǎn)485即可與電腦連接,使用我公司提供的傳感器配置工具進(jìn)行配置和測試。2.3.2二氧化碳對(duì)于生產(chǎn)環(huán)境終端二氧化碳數(shù)據(jù)的采集,本系統(tǒng)采用的是485型二氧化碳變送器圖2.8二氧化碳傳感器選擇該款產(chǎn)品,是因?yàn)槠洳捎酶哽`敏度的氣體檢測探頭,信號(hào)穩(wěn)定,精度高,具有測量范圍寬、線形度好、防水性能好、使用方便、便于安裝、傳輸距離遠(yuǎn)等特點(diǎn)。所以,這款傳感器廣泛適用于農(nóng)業(yè)大棚/花卉培養(yǎng)等需要二氧化碳監(jiān)測的場合。傳感器內(nèi)輸入電源,感應(yīng)探頭,信號(hào)輸出三部分完全隔離。安全可靠,外觀美觀,安裝方便。圖2.9二氧化碳傳感器系統(tǒng)框架圖首先使用12V直流電源供電,設(shè)備可以直接連接帶有485接口的PLC,可以通過485接口芯片連接單片機(jī)。通過后文指定的modbus協(xié)議對(duì)單片機(jī)和PLC進(jìn)行編程即可配合傳感器使用。2.3.3PH對(duì)于生產(chǎn)環(huán)境終端水質(zhì)PH數(shù)據(jù)的采集,本系統(tǒng)采用的是485型水質(zhì)PH傳感器:圖2.10水質(zhì)PH傳感器選擇該款產(chǎn)品,是因?yàn)槠浔旧砼浜戏浪鈿?,將水溶液的信?hào)經(jīng)過數(shù)字化整定分析,轉(zhuǎn)換為標(biāo)準(zhǔn)的485/4-20mA/0-10V的信號(hào)。產(chǎn)品一次成型無需標(biāo)定,上手即可使用。圖2.11PH傳感器系統(tǒng)框架圖首先使用12V直流電源供電,設(shè)備可以直接連接帶有485接口的PLC,可以通過485接口芯片連接單片機(jī)。通過后文指定的modbus協(xié)議對(duì)單片機(jī)和PLC進(jìn)行編程即可配合傳感器使用。2.3.4電導(dǎo)率對(duì)于生產(chǎn)環(huán)境終端電導(dǎo)率數(shù)據(jù)的采集,本系統(tǒng)采用的是485型水質(zhì)電導(dǎo)率傳感器:圖2.12水質(zhì)電導(dǎo)率傳感器選擇該款產(chǎn)品,是因?yàn)槠浔旧砼浜戏浪鈿ぃ瑢⑺芤旱男盘?hào)經(jīng)過數(shù)字化整定分析,轉(zhuǎn)換為標(biāo)準(zhǔn)的485/4-20mA/0-10V的信號(hào)。產(chǎn)品一次成型無需標(biāo)定,上手即可使用。圖2.13電導(dǎo)率傳感器系統(tǒng)框架圖首先使用12V直流電源供電,設(shè)備可以直接連接帶有485接口的PLC,可以通過485接口芯片連接單片機(jī)。通過后文指定的modbus協(xié)議對(duì)單片機(jī)和PLC進(jìn)行編程即可配合傳感器使用。2.3.5溶解氧對(duì)于生產(chǎn)環(huán)境終端溶解氧數(shù)據(jù)的采集,本系統(tǒng)采用的是溶解氧傳感器:圖2.14溶解氧傳感器選擇該款產(chǎn)品,是因?yàn)槠洳捎脽晒夥?,傳感器產(chǎn)品壽命長,不用維護(hù),性能優(yōu)良,連續(xù)監(jiān)測數(shù)據(jù)通過變送輸出連接記錄儀實(shí)現(xiàn)遠(yuǎn)傳監(jiān)控與記錄,也可以連接RS485接口通過MODBUS-RTU協(xié)議可方便聯(lián)入計(jì)算機(jī)實(shí)現(xiàn)監(jiān)控與記錄。本產(chǎn)品配合防水外殼,將水溶液的信號(hào)經(jīng)過數(shù)字化整定分析,轉(zhuǎn)換為標(biāo)準(zhǔn)的485信號(hào)。產(chǎn)品一次成型無需標(biāo)定,上手即可使用。圖2.15溶解氧傳感器系統(tǒng)框架圖首先使用12V直流電源供電,設(shè)備可以直接連接帶有485接口的PLC,可以通過485接口芯片連接單片機(jī)。通過后文指定的modbus協(xié)議對(duì)單片機(jī)和PLC進(jìn)行編程即可配合傳感器使用2.3.6濁度對(duì)于生產(chǎn)環(huán)境終端濁度數(shù)據(jù)的采集,本系統(tǒng)采用的是濁度傳感器:圖2.16濁度傳感器選擇該款產(chǎn)品,是因?yàn)槠洳捎眉す馍⑸浞?,傳感器產(chǎn)品壽命長,不用維護(hù),性能優(yōu)良,連續(xù)監(jiān)測數(shù)據(jù)通過變送輸出連接記錄儀實(shí)現(xiàn)遠(yuǎn)傳監(jiān)控與記錄,也可以連接RS485接口通過MODBUS-RTU協(xié)議可方便聯(lián)入計(jì)算機(jī)實(shí)現(xiàn)監(jiān)控與記錄。本產(chǎn)品配合防水外殼,將水溶液的信號(hào)經(jīng)過數(shù)字化整定分析,轉(zhuǎn)換為標(biāo)準(zhǔn)的485信號(hào)。產(chǎn)品一次成型無需標(biāo)定,上手即可使用。圖2.17濁度傳感器系統(tǒng)框架圖首先使用12V直流電源供電,設(shè)備可以直接連接帶有485接口的PLC,可以通過485接口芯片連接單片機(jī)。通過后文指定的modbus協(xié)議對(duì)單片機(jī)和PLC進(jìn)行編程即可配合傳感器使用。2.4網(wǎng)絡(luò)協(xié)議2.4.1LoraLoRa是一種低功耗、長距離的無線通信技術(shù),專門為物聯(lián)網(wǎng)場景設(shè)計(jì)。其全稱為LongRange,是指其能夠在距離較遠(yuǎn)的區(qū)域內(nèi)進(jìn)行低功耗的無線通信,通常被用于傳輸小型數(shù)據(jù)。特點(diǎn)長距離通信:LoRa技術(shù)采用了廣域網(wǎng)的物理層技術(shù),使得其能夠在長距離范圍內(nèi)進(jìn)行通信,最長可達(dá)數(shù)十公里。低功耗:LoRa技術(shù)采用的是窄帶傳輸方式,使得其需要的能量更少,因此功耗低,便于使用電池作為能量來源。大容量:LoRa技術(shù)的帶寬較寬,可以支持大容量的數(shù)據(jù)傳輸。阻礙能力強(qiáng):LoRa技術(shù)采用的是長時(shí)隙和頻率擴(kuò)展技術(shù),在遇到障礙物時(shí)能夠較好地穿過障礙物。協(xié)議開放:LoRa技術(shù)采用的是開放協(xié)議,可以在其上開發(fā)不同的應(yīng)用,提高了其可擴(kuò)展性和適用性。應(yīng)用LoRa組網(wǎng)LoRaWAN采用星型無線拓?fù)洌篍ndNodes(節(jié)點(diǎn))、Gateway(網(wǎng)關(guān))、NetworkServer(網(wǎng)絡(luò)服務(wù)器)、ApplicationServer(應(yīng)用服務(wù)器)圖2.18LoRaWAN網(wǎng)絡(luò)架構(gòu)LoRaWAN網(wǎng)絡(luò)架構(gòu)是一個(gè)典型的星形拓?fù)浣Y(jié)構(gòu),在這個(gè)網(wǎng)絡(luò)架構(gòu)中,LoRa網(wǎng)關(guān)是一個(gè)透明傳輸?shù)闹欣^,連接終端設(shè)備和后端中央服務(wù)器。終端設(shè)備采用單跳與一個(gè)或多個(gè)網(wǎng)關(guān)通信。所有的節(jié)點(diǎn)與網(wǎng)關(guān)間均是雙向通信。LoRa一般為星型網(wǎng)絡(luò)連接,為了增加網(wǎng)絡(luò)容量和改善通信質(zhì)量,一般會(huì)把一個(gè)網(wǎng)關(guān)下屬的節(jié)點(diǎn)分配為多個(gè)頻率或多個(gè)擴(kuò)頻因子,sx126x和sx127x同一時(shí)間只能監(jiān)測一個(gè)信道,有網(wǎng)關(guān)專用芯片sx1301,可以同時(shí)監(jiān)控8個(gè)頻率下的6個(gè)擴(kuò)頻因子,相當(dāng)于同時(shí)監(jiān)控48個(gè)信道,但是價(jià)格昂貴。圖2.19LoRaWAN應(yīng)用場景LoRa終端設(shè)備LoRa的終端節(jié)點(diǎn)可能是各種設(shè)備,比如水表氣表、煙霧報(bào)警器、寵物跟蹤器等。這些節(jié)點(diǎn)通過LoRa無線通信首先與LoRa網(wǎng)關(guān)連接,再通過3G網(wǎng)絡(luò)或者以太網(wǎng)絡(luò),連接到網(wǎng)絡(luò)服務(wù)器中。網(wǎng)關(guān)與網(wǎng)絡(luò)服務(wù)器之間通過TCP/IP協(xié)議通信。LoRa網(wǎng)絡(luò)將終端設(shè)備劃分成A/B/C三類ClassA:雙向通信終端設(shè)備。這一類的終端設(shè)備允許雙向通信,每一個(gè)終端設(shè)備上行傳輸會(huì)伴隨著兩個(gè)下行接收窗口。終端設(shè)備的傳輸時(shí)隙是基于其自身通信需求,其微調(diào)基于ALOHA協(xié)議。ClassA設(shè)備的功耗最低,基站下行通信只能在終端上行通信之后。ClassB:具有預(yù)設(shè)接收時(shí)隙的雙向通信終端設(shè)備。這一類的終端設(shè)備會(huì)在預(yù)設(shè)時(shí)間中開放多余的接收窗口,為了達(dá)到這一目的,終端設(shè)備會(huì)同步從網(wǎng)關(guān)接收一個(gè)Beacon,通過Beacon將基站與模塊的時(shí)間進(jìn)行同步。ClassB終端可以使基站知道終端正在接收數(shù)據(jù)。ClassC:具有最大接收窗口的雙向通信終端設(shè)備。這一類的終端設(shè)備持續(xù)開放接收窗口,只在傳輸時(shí)關(guān)閉。ClassC設(shè)備擁有最長的接收窗口,也最耗電2.4.2MQTT第3章系統(tǒng)需求分析圖2.20MQTTpub/sub架構(gòu)MQTT是一種輕量級(jí)的消息協(xié)議,是為高效傳輸小數(shù)據(jù)而設(shè)計(jì)的,適用于各種不同類型的設(shè)備和應(yīng)用程序,尤其適用于物聯(lián)網(wǎng)設(shè)備與服務(wù)器之間的數(shù)據(jù)通信。特點(diǎn)低帶寬和低能耗:MQTT協(xié)議使用輕量級(jí)的消息格式以及較小的包頭,可以在低帶寬和低能耗的條件下傳輸數(shù)據(jù)??煽啃裕篗QTT協(xié)議采用消息隊(duì)列機(jī)制,保證消息傳輸?shù)目煽啃院头€(wěn)定性。靈活性:MQTT協(xié)議支持許多不同的消息格式,并提供豐富的QoS(服務(wù)質(zhì)量)等級(jí),以滿足不同應(yīng)用的需要。處理大量客戶端:MQTT協(xié)議能夠同時(shí)處理大量客戶端,并支持多個(gè)連接通道。開放標(biāo)準(zhǔn):MQTT協(xié)議是一種開放標(biāo)準(zhǔn),使得它易于和其他技術(shù)進(jìn)行整合。應(yīng)用傳輸傳感器數(shù)據(jù):傳感器將采集到的數(shù)據(jù)通過MQTT協(xié)議發(fā)送到云服務(wù)器,實(shí)現(xiàn)實(shí)時(shí)監(jiān)測和數(shù)據(jù)分析。遠(yuǎn)程控制設(shè)備:可以通過MQTT協(xié)議發(fā)送控制指令到設(shè)備,實(shí)現(xiàn)遠(yuǎn)程控制。實(shí)時(shí)數(shù)據(jù)流傳輸:MQTT協(xié)議可實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的傳輸與通信,可以提高應(yīng)用程序的實(shí)時(shí)響應(yīng)能力。3系統(tǒng)需求分析系統(tǒng)需求分析是指通過對(duì)業(yè)務(wù)流程、用戶需求和技術(shù)要求的分析,確定系統(tǒng)開發(fā)過程中所需要的各種功能和性能要求,明確系統(tǒng)實(shí)現(xiàn)的目標(biāo)和可行性,為系統(tǒng)設(shè)計(jì)和開發(fā)提供基礎(chǔ)。系統(tǒng)需求分析的目的是讓開發(fā)團(tuán)隊(duì)充分理解用戶需求,了解系統(tǒng)所要實(shí)現(xiàn)的功能,并將這種需求轉(zhuǎn)化為可行的、清晰的和具體的系統(tǒng)需求,以確保所開發(fā)的系統(tǒng)能夠解決現(xiàn)實(shí)問題,并滿足用戶的需求。在系統(tǒng)需求分析過程中,需要進(jìn)行詳細(xì)的調(diào)研和分析,并與相關(guān)人員進(jìn)行溝通和交流,以實(shí)現(xiàn)系統(tǒng)需求的準(zhǔn)確、全面和合理的識(shí)別。系統(tǒng)需求分析也是整個(gè)系統(tǒng)開發(fā)過程中不可缺少的關(guān)鍵環(huán)節(jié)之一,它為后續(xù)的設(shè)計(jì)、實(shí)現(xiàn)、測試和維護(hù)提供了可靠的基礎(chǔ),有助于降低項(xiàng)目風(fēng)險(xiǎn)和提高系統(tǒng)開發(fā)的成功率。3.1業(yè)務(wù)分析本系統(tǒng)用戶角色主要分為兩類:管理員和普通用戶。管理員可以新建,刪除,檢索,更新,系統(tǒng)用戶信息、生產(chǎn)單元信息、終端信息、傳感器信息、數(shù)據(jù)類型信息。而普通用戶可以對(duì)溫度,溶解氧,酸堿值,濁度,電導(dǎo)率等數(shù)據(jù)進(jìn)行檢索,查看。同時(shí),普通用戶可以查看控制設(shè)備相關(guān)信息。3.1.1管理員用例圖系統(tǒng)管理員需要對(duì)系統(tǒng)用戶信息,生產(chǎn)單元,終端,傳感器,數(shù)據(jù)類型等信息進(jìn)行管理,另外也會(huì)有有普通用戶的權(quán)限。用例圖見圖3.1.圖3.1管理員用例圖3.1.2普通用戶用例圖如圖3.2,普通用戶能夠登錄注冊(cè),查看溫度,溶解氧,酸堿值,濁度,電導(dǎo)率數(shù)據(jù),并且可以檢索數(shù)據(jù);另外,需要對(duì)設(shè)備進(jìn)行控制。圖3.2普通用戶用例圖3.1系統(tǒng)功能性需求圖3.3系統(tǒng)功能圖由圖3.1系統(tǒng)功能圖可知,本系統(tǒng)主要分為三個(gè)模塊:系統(tǒng)管理模塊主要包括系統(tǒng)用戶管理,生產(chǎn)單元管理,終端管理,傳感器管理,數(shù)據(jù)類型管理五個(gè)模塊,本模塊只有管理員才有權(quán)限。本模塊可分為兩部分內(nèi)容,一是對(duì)系統(tǒng)用戶信息的管理,包括:用戶賬號(hào)名,密碼,手機(jī)號(hào),當(dāng)前權(quán)限進(jìn)行更新,刪除,添加;二是對(duì)系統(tǒng)配置,包括對(duì)生產(chǎn)單元,終端,傳感器,數(shù)據(jù)類型的新建,更新,刪除。數(shù)據(jù)展示模塊主要展示溫度,溶解氧,酸堿值,濁度,電導(dǎo)率等數(shù)據(jù)。本模塊主要負(fù)責(zé)對(duì)傳感器采集的數(shù)據(jù)進(jìn)行展示,提供多種數(shù)據(jù)檢索條件,包括:日期檢索,特定傳感器檢索,幫助用戶提高檢索效率。控制決策模塊主要是用戶根據(jù)數(shù)據(jù)展示模塊的數(shù)據(jù)來決定對(duì)農(nóng)作物生長環(huán)境中的農(nóng)機(jī)設(shè)備的開關(guān)。3.2系統(tǒng)非功能性需求系統(tǒng)的非功能性需求是指在系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)過程中,除了實(shí)現(xiàn)功能之外,還需要滿足一些其他方面的要求,這些要求不涉及系統(tǒng)的具體功能,而是涉及系統(tǒng)的性能、可靠性、安全性、可用性、可維護(hù)性等方面的要求。非功能性需求對(duì)于系統(tǒng)的整體質(zhì)量和用戶體驗(yàn)至關(guān)重要,因?yàn)樗鼈冎苯佑绊懴到y(tǒng)的性能和可靠性,甚至影響系統(tǒng)的可用性和用戶滿意度。本系統(tǒng)非功能性需求如下:1)性能需求一般時(shí)段響應(yīng)時(shí)間不超過1.5秒,高峰時(shí)段不超過4秒從點(diǎn)擊到第一個(gè)界面顯示出來所需要的時(shí)間不得超過300毫秒2)安全需求用戶在經(jīng)過身份認(rèn)證后,只能訪問其權(quán)限范圍內(nèi)的數(shù)據(jù),只能進(jìn)行其權(quán)限范圍內(nèi)的操作。不同的用戶具有不同的身份和權(quán)限,需要在用戶身份真實(shí)可信的前提下,提供可信的授權(quán)管理服務(wù),保護(hù)數(shù)據(jù)不被非法/越權(quán)訪問和篡改,要確保數(shù)據(jù)的機(jī)密性和完整性??煽啃孕枨髮?duì)輸入有提示,數(shù)據(jù)有檢查,防止數(shù)據(jù)異常。系統(tǒng)健壯性強(qiáng),應(yīng)該能處理系統(tǒng)運(yùn)行過程中出現(xiàn)的各種異常情況,如:人為操作錯(cuò)誤、輸入非法數(shù)據(jù)、硬件設(shè)備失敗等,系統(tǒng)應(yīng)該能正確的處理,恰當(dāng)?shù)幕乇堋?.3可行性分析軟件開發(fā)可行性分析是指在軟件開發(fā)的初期階段,通過對(duì)項(xiàng)目的技術(shù)、經(jīng)濟(jì)、市場等多方面因素進(jìn)行評(píng)估和分析,確定項(xiàng)目的可行性和可行性方案,為后續(xù)軟件開發(fā)工作提供可靠的基礎(chǔ)和保障。本系統(tǒng)對(duì)下面兩個(gè)方面進(jìn)行可行性分析:1)經(jīng)濟(jì)可行性本次開發(fā)的系統(tǒng)為B/S架構(gòu),僅需要安裝node開發(fā)環(huán)境的筆記本電腦,且開發(fā)軟件是開源的vscode,開發(fā)過程僅需電費(fèi)和網(wǎng)費(fèi),成本幾乎可以忽略不記。開發(fā)完成后,系統(tǒng)可以部署到學(xué)院的服務(wù)器上,不需要另外租用服務(wù)器,因此,此次開發(fā)的成本是低廉的。由此來看,在經(jīng)濟(jì)上,本次開發(fā)完全可行2)技術(shù)可行性本次系統(tǒng),開發(fā)工具使用的是8.0.29MySQL社區(qū)免費(fèi)版,開發(fā)工具使用眾所周知開源的vscode最新版,所以開發(fā)工具不用過多擔(dān)心;其次,系統(tǒng)前端使用的技術(shù)是AntDesignPro。AntDesignPro是基于AntDesign和umi的封裝的一整套企業(yè)級(jí)中后臺(tái)前端/設(shè)計(jì)解決方案,致力于在設(shè)計(jì)規(guī)范和基礎(chǔ)組件的基礎(chǔ)上,繼續(xù)向上構(gòu)建,提煉出典型模板/業(yè)務(wù)組件/配套設(shè)計(jì)資源,進(jìn)一步提升企業(yè)級(jí)中后臺(tái)產(chǎn)品設(shè)計(jì)研發(fā)過程中的用戶和設(shè)計(jì)者的體驗(yàn);最后,系統(tǒng)后端用的是基于NodeJS平臺(tái),快速開發(fā),極簡的Web開發(fā)框架——Express。無論是AntDesignPro還是Express,都是一套成熟的技術(shù),有大量博客,教程,社區(qū)可供技術(shù)解決方法。第4章設(shè)施園藝管理系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 4系統(tǒng)總體設(shè)計(jì)物聯(lián)網(wǎng)技術(shù)在設(shè)施園藝上的應(yīng)用大概可以分為下面三層:圖4.1物聯(lián)網(wǎng)體系結(jié)構(gòu)物聯(lián)網(wǎng)感知層由多種類型的傳感器組成,如溫度傳感器、濕度傳感器等,用于感知物理環(huán)境中的各種數(shù)據(jù)和信號(hào)。這些傳感器是整個(gè)系統(tǒng)的數(shù)據(jù)來源,能夠?qū)崟r(shí)采集、傳輸和處理各種數(shù)據(jù),為智能化決策和物聯(lián)網(wǎng)應(yīng)用提供基礎(chǔ)數(shù)據(jù)支持。本系統(tǒng)采用第2.3章節(jié)的傳感器作為系統(tǒng)數(shù)據(jù)來源。物聯(lián)網(wǎng)傳輸層主要由網(wǎng)絡(luò)通信協(xié)議、數(shù)據(jù)傳輸方式和增強(qiáng)安全機(jī)制等組成。其作用是將感知層采集到的數(shù)據(jù)進(jìn)行處理和傳輸,在網(wǎng)絡(luò)中流通傳遞,為應(yīng)用層提供基礎(chǔ)服務(wù)和支持。本系統(tǒng)所使用的網(wǎng)絡(luò)協(xié)議在章節(jié)2.4有具體介紹。物聯(lián)網(wǎng)應(yīng)用層的作用主要是提供豐富多彩的物聯(lián)網(wǎng)應(yīng)用和服務(wù),實(shí)現(xiàn)對(duì)設(shè)施園藝設(shè)備的智能化、自動(dòng)化、智能監(jiān)控和管理,改善農(nóng)戶的生產(chǎn)、生活和環(huán)境質(zhì)量。本章節(jié)主要是對(duì)在物聯(lián)網(wǎng)應(yīng)用層的設(shè)施園藝管理系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)。4.1技術(shù)選型和框架設(shè)計(jì)4.1.1開發(fā)環(huán)境搭建1)硬件環(huán)境系統(tǒng)開發(fā)使用的是Window10系統(tǒng)的,cpu為Intel(R)Core(TM)i7-9750HCPU,搭載16GB的內(nèi)存的筆記本開發(fā),開發(fā)過程比較流暢。2)軟件環(huán)境由于系統(tǒng)技術(shù)選擇問題,系統(tǒng)需要搭建NodeV16.19.0環(huán)境,選擇npm作為本項(xiàng)目的包管理器,本次開發(fā)使用的npm版本為8.19.3,借助npm下載諸多開發(fā)框架。4.1.2技術(shù)選型同一領(lǐng)域的,技術(shù)是多種多樣的,唯有選擇適合自己的才是最重要的。1)系統(tǒng)前端Vue、React和Angular是當(dāng)今前端開發(fā)中最受歡迎的三大框架,它們都有各自的特點(diǎn)和優(yōu)劣勢:①Vue容易上手,學(xué)習(xí)曲線較為平滑,適合中小型項(xiàng)目;模板語法清晰易懂,易于編寫和維護(hù);具有更好的性能表現(xiàn),運(yùn)行速度快;可以逐漸引入到已有項(xiàng)目中,也可用于構(gòu)建單頁應(yīng)用(SPA)。②React擁有豐富的生態(tài)系統(tǒng),社區(qū)活躍;能夠快速開發(fā)大型應(yīng)用程序,適合于復(fù)雜的UI和交互;可以將組件邏輯與渲染分離,提高代碼復(fù)用和可維護(hù)性;是一個(gè)JavaScript庫,可以與各種開發(fā)工具和技術(shù)棧兼容。③Angular提供了完整的開發(fā)框架和組件集合,在開發(fā)大型應(yīng)用時(shí)非常有用;采用了TypeScript,可以在編譯時(shí)檢測類型錯(cuò)誤,減少運(yùn)行時(shí)錯(cuò)誤;提供了依賴注入和模塊化等特性,使代碼更加模塊化和可擴(kuò)展;有自己的命令行工具(AngularCLI),提供了一系列生成器和工具,增加了開發(fā)效率。結(jié)合之前的開發(fā)經(jīng)驗(yàn),選擇相對(duì)比較好入門的React搭配與其匹配的AntDesignPro框架作為本次系統(tǒng)的前端主流開發(fā)技術(shù)。系統(tǒng)后端ExpressExpress是Node.js中的Web框架,基于Node.js的HTTP模塊進(jìn)行開發(fā),提供路由、中間件、模板引擎和簡化的HTTP服務(wù)器等功能。開發(fā)者可以通過使用Express來快速搭建Web應(yīng)用和API。Express具有以下特點(diǎn):簡單易用:為Node.js提供輕量級(jí)、快速的API和Web應(yīng)用開發(fā)框架。中間件:提供大量的中間件函數(shù)來處理HTTP請(qǐng)求和響應(yīng)。路由:使用路由來定義API端口和網(wǎng)站頁面的路徑和行為。模板引擎:支持多種模板引擎,如EJS、Jade/Pug、Handlebars等,方便生成頁面。由于Express是基于NodeJS編寫的后端開發(fā)框架,為了降低學(xué)習(xí)成本,所以選擇了Express開發(fā)后端代碼4.1.3系統(tǒng)框架設(shè)計(jì)首先整體把握LoRaWAN架構(gòu)圖4.2LoRaWAN體系架構(gòu)圖4.2LoRaWAN體系結(jié)構(gòu)由LoraAlliance設(shè)計(jì)開發(fā),本系統(tǒng)處在最后一環(huán)——ApplicationServer。圖4.3設(shè)施園藝管理系統(tǒng)架構(gòu)本系統(tǒng)采用BS架構(gòu),將數(shù)據(jù)展示到瀏覽器頁面,前端頁面的開發(fā)使用AntDesignPro框架,后端需要先用MQTT協(xié)議訂閱網(wǎng)絡(luò)服務(wù)器器解析出數(shù)據(jù)再交由Express存儲(chǔ),最后即可等待前端請(qǐng)求將數(shù)據(jù)響應(yīng)給前端。4.2數(shù)據(jù)庫設(shè)計(jì)E-R圖是數(shù)據(jù)庫概念模型的主要表示方法,絕大多數(shù)數(shù)據(jù)庫管理系統(tǒng)都是基于關(guān)系型數(shù)據(jù)模型的。因此數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)的主要內(nèi)容是在E-R圖的基礎(chǔ)上設(shè)計(jì)數(shù)據(jù)庫關(guān)系模式。圖4.4E-R圖圖例矩形表示實(shí)體集,菱形表示聯(lián)系集,橢圓表示實(shí)體屬性,線段表示實(shí)體與屬性之間的關(guān)系。如圖4.5所示,表示普通用戶如果擁有管理員權(quán)限,可以對(duì)生產(chǎn)單元,終端,傳感器,用戶信息進(jìn)行新建,刪除,修改。圖4.5用戶與管理員與系統(tǒng)管理模塊的ER圖由圖3.1系統(tǒng)功能圖可知系統(tǒng)管理員可以管理系統(tǒng)管理模塊下的生產(chǎn)單元(cell),傳感器(sensor),終端(terminal)以及用戶(user)信息。如表4.1所示,生產(chǎn)單元的存儲(chǔ)表名為cell_list,字段包括:Id,表示生產(chǎn)單元ID,是本表主鍵;Type,生產(chǎn)單元生產(chǎn)的農(nóng)作物類型;Ownername,生產(chǎn)單元的歸屬人;Number,表示這種類型的生產(chǎn)單元數(shù)量。表4.1生產(chǎn)單元表(cell_list)字段名字段解釋數(shù)據(jù)類型允許空值備注IdidIntFalse主鍵Type生產(chǎn)單元類型VarcharTrueOwnername生產(chǎn)單元擁有者VarcharTrueNumber生產(chǎn)單元數(shù)量IntTrue如表4.2所示,傳感器的存儲(chǔ)表名為sensor_list,字段包括:Id,表示傳感器ID,是本表主鍵;Cell_id,表示傳感器所屬的生產(chǎn)單元ID;Term_deveui,表示傳感器所屬的終端的ID;address,表示傳感器在終端的相對(duì)地址;Numbers,表示傳感器可以采集的數(shù)據(jù)項(xiàng)數(shù)量;type_data_id表示傳感器可以采集的數(shù)據(jù)類型。表4.2傳感器表(sensor_list)字段名字段解釋數(shù)據(jù)類型允許空值備注Id傳感器idIntFalse主鍵Cell_id傳感器所屬的生產(chǎn)單元idIntTrueTerm_deveui傳感器所屬的終端的idVarcharTrueaddress在終端的相對(duì)傳感器485地址VarcharTrueNumbers傳感器所能采集的數(shù)據(jù)類型個(gè)數(shù)IntTruetype_data_id傳感器上傳的數(shù)據(jù)類型IntTrue如表4.3所示,終端信息存儲(chǔ)在名為terminal_list的表中,字段包括:ID,表示終端ID,是本表主鍵;Cell_id,表示終端所屬生產(chǎn)單元的ID;Deveui,表示終端編號(hào)。表4.3終端表(terminal_list)字段名字段解釋數(shù)據(jù)類型允許空值備注Id傳感器idIntFalse主鍵Cell_id終端所屬的生產(chǎn)單元idIntTrueDeveui終端編號(hào)VarcharTrue如表4.4所示,用戶信息存儲(chǔ)的表名為sys_users,字段主要包括:id,表示用戶ID;username,表示用戶賬戶名;Password,表示用戶登錄密碼;Phone,表示用戶聯(lián)系手機(jī)號(hào);current_authority,表示當(dāng)前賬號(hào)系統(tǒng)權(quán)限。表4.4用戶表(sys_users)字段名字段解釋數(shù)據(jù)類型允許空值備注IdidIntFalse主鍵username用戶名IntTruePassword登錄密碼VarcharTruePhone聯(lián)系電話VarcharTruecurrent_authority用戶權(quán)限1admin0userIntTrue如表4.5所示,數(shù)據(jù)類型信息存儲(chǔ)的表名為type_data,字段主要包括:id,表示數(shù)據(jù)類型ID,是本表主鍵;Type,表示數(shù)據(jù)類型;offset,表示在傳感器上的整個(gè)數(shù)據(jù)字節(jié)中,偏移起始處的距離;傳length,表示數(shù)據(jù)類型占用的字節(jié)數(shù)。表4.5數(shù)據(jù)類型表(type_data)字段名字段解釋數(shù)據(jù)類型允許空值備注IdidIntFalse主鍵Type數(shù)據(jù)類型VarcharTrueOffset偏移量IntTrueLength數(shù)據(jù)類型長度IntTrue圖4.6用戶與溫度等數(shù)據(jù)項(xiàng)關(guān)系圖如圖4.6表示用戶可以查看溫度,溶解氧,酸堿值,濁度,電導(dǎo)率的值,上傳時(shí)間,數(shù)據(jù)單位,以及采集傳感器的ID。如表4.6所示,電導(dǎo)率信息存儲(chǔ)在表data_list_conductivity,字段主要有:Id,表示電導(dǎo)率數(shù)據(jù)ID,是本表主鍵;Sensor_id,表示采集該電導(dǎo)率的傳感器ID;value,表示電導(dǎo)率數(shù)據(jù)數(shù)值;upload_time,表示電導(dǎo)率采集上傳時(shí)間;data_unit,表示電導(dǎo)率的數(shù)據(jù)單位。表4.6電導(dǎo)率表(data_list_conductivity)字段名字段解釋數(shù)據(jù)類型允許空值備注Id數(shù)據(jù)idIntFalse主鍵Sensor_id數(shù)據(jù)采集的傳感器IDIntTrueValue電導(dǎo)率真實(shí)數(shù)據(jù)VarcharTrueUpload_time數(shù)據(jù)上傳時(shí)間DatetimeTrueData_unit數(shù)據(jù)單位VarcharTrue如表4.7所示,溶解氧信息存儲(chǔ)在表data_list_dissolved_oxygen,字段主要有:Id,表示溶解氧數(shù)據(jù)ID,是本表主鍵;Sensor_id,表示采集溶解氧的傳感器ID;value,表示溶解氧數(shù)據(jù)數(shù)值;upload_time,表示溶解氧采集上傳時(shí)間;data_unit,表示溶解氧數(shù)據(jù)單位。表4.7溶解氧表(data_list_dissolved_oxygen)字段名字段解釋數(shù)據(jù)類型允許空值備注Id數(shù)據(jù)idIntFalse主鍵Sensor_id數(shù)據(jù)采集的傳感器IDIntTrueValue酸堿值真實(shí)數(shù)據(jù)VarcharTrueUpload_time數(shù)據(jù)上傳時(shí)間DatetimeTrueData_unit數(shù)據(jù)單位VarcharTrue如表4.8所示,溫度信息存儲(chǔ)在表data_list_temperature,字段主要有:Id,表示溫度數(shù)據(jù)ID;Sensor_id,表示采集溫度數(shù)據(jù)的傳感器ID;value,表示溫度數(shù)據(jù)數(shù)值;upload_time,表示溫度采集上傳時(shí)間;data_unit,表示溫度數(shù)據(jù)單位。表4.8溫度表(data_list_temperature)字段名字段解釋數(shù)據(jù)類型允許空值備注Id數(shù)據(jù)idIntFalse主鍵Sensor_id數(shù)據(jù)采集的傳感器IDIntTrueValue溫度真實(shí)數(shù)據(jù)VarcharTrueUpload_time數(shù)據(jù)上傳時(shí)間DatetimeTrueData_unit數(shù)據(jù)單位VarcharTrue如表4.9所示,濁度信息存儲(chǔ)在表data_list_turbidity,字段主要有:Id,表示濁度數(shù)據(jù)ID,是本表主鍵;Sensor_id,表示采集濁度數(shù)據(jù)的傳感器ID;value,表示濁度數(shù)據(jù)數(shù)值;upload_time,表示濁度數(shù)據(jù)采集上傳時(shí)間;data_unit,表示濁度數(shù)據(jù)單位。表4.9濁度表(data_list_turbidity)字段名字段解釋數(shù)據(jù)類型允許空值備注Id數(shù)據(jù)idIntFalse主鍵Sensor_id數(shù)據(jù)采集的傳感器IDIntTrueValue濁度真實(shí)數(shù)據(jù)VarcharTrueUpload_time數(shù)據(jù)上傳時(shí)間DatetimeTrueData_unit數(shù)據(jù)單位VarcharTrue4.3接口設(shè)計(jì)/no_token_api/register_user用戶注冊(cè)接口/no_token_api/login_user用戶登錄接口/no_token_api/current_user_info獲取當(dāng)前用戶信息/no_token_api/get_all_user獲取所有用戶信息/no_token_api/update_user_info更新用戶信息/no_token_api/delete_account刪除用戶信息/api/cell/create添加生產(chǎn)單元/api/cell/delete?cell_id=刪除特定ID的生產(chǎn)單元/api/cell/update更新特定ID的生產(chǎn)單元/api/cell/get_all_cell獲取所有生產(chǎn)單元/api/cell/item?cellId=獲取單個(gè)生產(chǎn)單元/api/terminal/create添加終端/api/terminal/delete?cell_id=刪除特定ID的終端/api/terminal/update更新特定ID的終端/api/terminal/get_all_cell獲取所有終端/api/terminal/item?cellId=獲取單個(gè)終端/api/sensor/create添加傳感器/api/sensor/delete?cell_id=刪除特定ID的傳感器/api/sensor/update更新特定ID的傳感器/api/sensor/get_all_sensor獲取所有傳感器/api/sensor/item?cellId=獲取單個(gè)傳感器/api/data_type/get_data_type_id獲取數(shù)據(jù)類型ID5系統(tǒng)功能模塊詳細(xì)設(shè)計(jì)5.1登錄模塊圖5.1系統(tǒng)登錄流程圖如圖5.1所示,啟動(dòng)項(xiàng)目,進(jìn)入登錄界面,首先輸入符合格式的賬號(hào)密碼,不符合的內(nèi)容會(huì)給予提示內(nèi)容,然后符合格式的賬號(hào)密碼會(huì)驗(yàn)證是否是已注冊(cè)的賬號(hào),不是則回到登錄界面,是,則進(jìn)行下一步。賬號(hào)密碼檢測成功的會(huì)進(jìn)行權(quán)限判斷,判斷登錄的賬號(hào)是否具有管理員權(quán)限,有則進(jìn)入管理員界面,沒有則進(jìn)入普通用戶界面。在用戶使用系統(tǒng)期間會(huì)不斷檢查用戶是否在線,不在線則跳回登錄界面,在線則繼續(xù)使用系統(tǒng)。5.2系統(tǒng)管理模塊圖5.2系統(tǒng)管理流程圖如圖5.2,用戶登錄系統(tǒng)后,會(huì)首先檢查用戶是否在線,不在線則跳轉(zhuǎn)登錄界面,在線就會(huì)進(jìn)入下一步。在線的用戶會(huì)被進(jìn)一步檢查是否具有管理員權(quán)限,沒有則流程結(jié)束;有管理員權(quán)限則進(jìn)入系統(tǒng)管理界面,在該界面,管理員可以對(duì)系統(tǒng)用戶信息,生產(chǎn)單元信息,終端信息,傳感器信息,數(shù)據(jù)類型信息進(jìn)行各自的新建,查詢,刪除,更新。操作完成,則流程結(jié)束。5.3數(shù)據(jù)展示模塊圖5.3數(shù)據(jù)展示流程圖如圖5.3,用戶登錄系統(tǒng)后,會(huì)首先檢查用戶是否在線,不在線則跳轉(zhuǎn)登錄界面,在線就會(huì)進(jìn)入下一步。進(jìn)入數(shù)據(jù)展示界面,可以對(duì)溫度,溶解氧,酸堿值,濁度,電導(dǎo)率五項(xiàng)數(shù)據(jù)進(jìn)行查看,檢索。操作完成后,流程結(jié)束。5.3控制決策模塊圖5.4決策控制流程圖如圖5.4,用戶登錄系統(tǒng)后,會(huì)首先檢查用戶是否在線,不在線則跳轉(zhuǎn)登錄界面,在線就會(huì)進(jìn)入下一步。進(jìn)入決策控制界面,可以對(duì)設(shè)備數(shù)據(jù)進(jìn)行編輯,開關(guān)閉操作。操作完成后,流程結(jié)束。第5章系統(tǒng)測試與分析6系統(tǒng)實(shí)現(xiàn)6.1登錄模塊圖6.1登錄模塊系統(tǒng)啟動(dòng)后,會(huì)進(jìn)入登錄界面,用戶輸入用戶名和密碼,不符合格式的輸入內(nèi)容會(huì)被提示輸入無效。然后,點(diǎn)擊登錄按鈕,觸發(fā)登錄事件handleSubmit,在這個(gè)函數(shù)里面,login對(duì)接口/no_token_api/login_user進(jìn)行網(wǎng)絡(luò)請(qǐng)求,提交用戶登錄信息表單,交由后端login函數(shù)處理,返回信息中的status表示本次登錄結(jié)果,0成功,1則是無效賬號(hào),登錄失敗;message是對(duì)status的解釋,token表示當(dāng)前賬號(hào)的標(biāo)識(shí)信息。fetchUserInfo函數(shù)會(huì)對(duì)接口/no_token_api/get_all_user進(jìn)行請(qǐng)求,交由后端的getCurrentUserInfo處理,返回status,message,data,status和message已經(jīng)解釋過,data主要是當(dāng)前用戶的相關(guān)信息,用于檢查用戶是否在線。6.2系統(tǒng)管理模塊6.2.1系統(tǒng)用戶管理實(shí)現(xiàn)效果如圖6.2,管理員點(diǎn)擊編輯按鈕可以對(duì)系統(tǒng)用戶郵箱,聯(lián)系電話,以及系統(tǒng)角色權(quán)限進(jìn)行修改;點(diǎn)擊編輯按鈕,可以出現(xiàn)標(biāo)紅的刪除按鈕,點(diǎn)擊刪除按鈕可以刪除系統(tǒng)用戶信息記錄;管理員在搜索框,輸入ID或賬號(hào),可以檢索出特定的系統(tǒng)用戶信息;管理員點(diǎn)擊展開按鈕,可以對(duì)系統(tǒng)用戶是否具有管理員權(quán)限進(jìn)行檢索。圖6.2系統(tǒng)用戶管理管理員進(jìn)入系統(tǒng)用戶管理界面,第一個(gè)加載的函數(shù)就是fetchAllUserInfo,其主要用來獲取所有的用戶數(shù)據(jù)。管理員輸入檢索條件,然后點(diǎn)擊查詢按鈕,會(huì)觸發(fā)ProTable組件的request屬性,該屬性可以賦值匿名回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)用于提交查詢條件表單,該函數(shù)返回的結(jié)果將會(huì)被賦值給組件的data屬性,從而重新渲染在頁面。6.2.2生產(chǎn)單元管理實(shí)現(xiàn)效果如圖6.3,管理員點(diǎn)擊編輯按鈕可以對(duì)生產(chǎn)單元的類型,擁有者,數(shù)量進(jìn)行修改;點(diǎn)擊編輯按鈕,可以出現(xiàn)標(biāo)紅的刪除按鈕,點(diǎn)擊刪除按鈕可以刪除生產(chǎn)單元信息記錄;管理員在搜索框,輸入ID,可以檢索出特定的生產(chǎn)單元信息;輸入類型可以查看生產(chǎn)特定農(nóng)作物的生產(chǎn)單元信息;管理員點(diǎn)擊展開按鈕,可以對(duì)系統(tǒng)用戶是否具有管理員權(quán)限進(jìn)行檢索。圖6.3生產(chǎn)單元管理管理員進(jìn)入生產(chǎn)單元管理界面,第一個(gè)加載的函數(shù)就是fetchAllCellInfo,其主要用來獲取所有的生產(chǎn)單元數(shù)據(jù),函數(shù)會(huì)對(duì)/api/cell/get_all_cell接口進(jìn)行請(qǐng)求,交由后端getAllCell處理。管理員輸入檢索條件,然后點(diǎn)擊查詢按鈕,會(huì)觸發(fā)ProTable組件的request屬性,該屬性可以賦值匿名回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)用于提交查詢條件表單,該函數(shù)返回的結(jié)果將會(huì)被賦值給組件的data屬性,從而重新渲染在頁面。6.2.3終端管理實(shí)現(xiàn)效果如圖6.4,管理員點(diǎn)擊編輯按鈕可以對(duì)終端的生產(chǎn)單元ID,deveui進(jìn)行修改;點(diǎn)擊編輯按鈕,可以出現(xiàn)標(biāo)紅的刪除按鈕,點(diǎn)擊刪除按鈕可以刪除終端信息記錄;管理員在搜索框,輸入ID,可以檢索出特定的終端信息;輸入生產(chǎn)單元ID可以查看特定生產(chǎn)單元下的終端信息。圖6.4終端管理管理員進(jìn)入終端管理界面,第一個(gè)加載的函數(shù)就是fetchAllTerminalInfo,其主要用來獲取所有的終端數(shù)據(jù),函數(shù)會(huì)對(duì)/api/cell/get_all_terminal接口進(jìn)行請(qǐng)求,交由后端getAllTerminal處理。管理員輸入檢索條件,然后點(diǎn)擊查詢按鈕,會(huì)觸發(fā)ProTable組件的request屬性,該屬性可以賦值匿名回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)用于提交查詢條件表單,該函數(shù)返回的結(jié)果將會(huì)被賦值給組件的data屬性,從而重新渲染在頁面。6.2.4傳感器管理實(shí)現(xiàn)效果如圖6.5,管理員點(diǎn)擊編輯按鈕可以對(duì)傳感器的deveui,生產(chǎn)單元ID,數(shù)量進(jìn)行修改;點(diǎn)擊編輯按鈕,可以出現(xiàn)標(biāo)紅的刪除按鈕,點(diǎn)擊刪除按鈕可以刪除傳感器信息記錄;管理員在搜索框,輸入deveui,可以檢索出特定終端下的傳感器信息;輸入數(shù)據(jù)類型ID可以查看采集特定數(shù)據(jù)項(xiàng)的傳感器信息。圖6.5傳感器管理管理員進(jìn)入傳感器管理界面,第一個(gè)加載的函數(shù)就是fetchAllSensorInfo,其主要用來獲取所有的傳感器數(shù)據(jù),函數(shù)會(huì)對(duì)/api/cell/get_all_sensor接口進(jìn)行請(qǐng)求,交由后端getAllSensor處理。管理員輸入檢索條件,然后點(diǎn)擊查詢按鈕,會(huì)觸發(fā)ProTable組件的request屬性,該屬性可以賦值匿名回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)用于提交查詢條件表單,該函數(shù)返回的結(jié)果將會(huì)被賦值給組件的data屬性,從而重新渲染在頁面。6.2.5數(shù)據(jù)類型管理實(shí)現(xiàn)效果如圖6.6,管理員點(diǎn)擊編輯按鈕可以對(duì)數(shù)據(jù)類型的類型,偏移量,長度進(jìn)行修改;點(diǎn)擊編輯按鈕,可以出現(xiàn)標(biāo)紅的刪除按鈕,點(diǎn)擊刪除按鈕可以刪除數(shù)據(jù)類型信息記錄;管理員在搜索框,輸入類型,可以檢索出特定類型的數(shù)據(jù)類型信息;輸入長度可以查看固有長度的數(shù)據(jù)類型信息。圖6.6數(shù)據(jù)類型管理管理員進(jìn)入數(shù)據(jù)類型管理界面,第一個(gè)加載的函數(shù)就是fetchAllDataTypeInfo,其主要用來獲取所有的數(shù)據(jù)類型數(shù)據(jù),函數(shù)會(huì)對(duì)/api/cell/get_all_data_type接口進(jìn)行請(qǐng)求,交由后端getAllDataType處理。管理員輸入檢索條件,然后點(diǎn)擊查詢按鈕,會(huì)觸發(fā)ProTable組件的request屬性,該屬性可以賦值匿名回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)用于提交查詢條件表單,該函數(shù)返回的結(jié)果將會(huì)被賦值給組件的data屬性,從而重新渲染在頁面。6.3數(shù)據(jù)展示模塊6.3.1溶解氧圖6.7溶解氧數(shù)據(jù)展示管理員進(jìn)入溶解氧數(shù)據(jù)展示界面,第一個(gè)加載的函數(shù)就是fetchAllDissolvedOxygen,其主要用來獲取所有的溶解氧數(shù)據(jù),函數(shù)會(huì)對(duì)/api/cell/get_all_dissolved_oxygen接口進(jìn)行請(qǐng)求,交由后端getAllDissolvedOxygen處理。管理員輸入檢索條件,然后點(diǎn)擊查詢按鈕,會(huì)觸發(fā)ProTable組件的request屬性,該屬性可以賦值匿名回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)用于提交查詢條件表單,該函數(shù)返回的結(jié)果將會(huì)被賦值給組件的data屬性,從而重新渲染在頁面。6.3.2酸堿值圖6.8酸堿值數(shù)據(jù)展示管理員進(jìn)入酸堿值數(shù)據(jù)展示界面,第一個(gè)加載的函數(shù)就是fetchAllPh,其主要用來獲取所有的酸堿值數(shù)據(jù),函數(shù)會(huì)對(duì)/api/cell/get_all_ph接口進(jìn)行請(qǐng)求,交由后端getAllPh處理。管理員輸入檢索條件,然后點(diǎn)擊查詢按鈕,會(huì)觸發(fā)ProTable組件的request屬性,該屬性可以賦值匿名回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)用于提交查詢條件表單,該函數(shù)返回的結(jié)果將會(huì)被賦值給組件的data屬性,從而重新渲染在頁面。6.3.3濁度圖6.9濁度數(shù)據(jù)展示管理員進(jìn)入濁度數(shù)據(jù)展示界面,第一個(gè)加載的函數(shù)就是fetchAllTurbidity,其主要用來獲取所有的濁度數(shù)據(jù),函數(shù)會(huì)對(duì)/api/cell/get_all_turbidity接口進(jìn)行請(qǐng)求,交由后端getAllTurbidity處理。管理員輸入檢索條件,然后點(diǎn)擊查詢按鈕,會(huì)觸發(fā)ProTable組件的request屬性,該屬性可以賦值匿名回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)用于提交查詢條件表單,該函數(shù)返回的結(jié)果將會(huì)被賦值給組件的data屬性,從而重新渲染在頁面。6.3.4電導(dǎo)率圖6.10電導(dǎo)率數(shù)據(jù)展示管理員進(jìn)入電導(dǎo)率數(shù)據(jù)展示界面,第一個(gè)加載的函數(shù)就是fetchAllConductivity,其主要用來獲取所有的電導(dǎo)率數(shù)據(jù),函數(shù)會(huì)對(duì)/api/cell/get_all_conductivity接口進(jìn)行請(qǐng)求,交由后端getAllConductivity處理。管理員輸入檢索條件,然后點(diǎn)擊查詢按鈕,會(huì)觸發(fā)ProTable組件的request屬性,該屬性可以賦值匿名回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)用于提交查詢條件表單,該函數(shù)返回的結(jié)果將會(huì)被賦值給組件的data屬性,從而重新渲染在頁面。6.3.6數(shù)據(jù)解析存儲(chǔ)根據(jù)圖2.18LoRaWAN網(wǎng)絡(luò)架構(gòu),應(yīng)用服務(wù)器需要與網(wǎng)絡(luò)服務(wù)器進(jìn)行數(shù)據(jù)交換,本系統(tǒng)二者進(jìn)行數(shù)據(jù)交換所使用的協(xié)議為MQTT協(xié)議。MQTT協(xié)議的pub/sub模式為傳統(tǒng)CS結(jié)構(gòu)提供了另一種可能。在CS結(jié)構(gòu)中,客服端直接通過一個(gè)端口進(jìn)行通信。而pub/sub模式對(duì)sender和receiver進(jìn)行解耦。publisher和subscriber從不直接進(jìn)行交流,甚至,彼此都不知道對(duì)方的存在。二者之間的會(huì)話由第三個(gè)模塊(broker)管理圖6.11MQTTpu/sub模式pub/sub模式最重要的是對(duì)消息發(fā)布者與消息接收者進(jìn)行分隔。其含義如下:空間解耦:二者無需知道彼此的位置(ip,port)時(shí)間解耦:二者無需同時(shí)運(yùn)行同步解耦:publisher|broker|subscriber三者操作互不打擾本系統(tǒng)數(shù)據(jù)解析步驟(電腦需要提前準(zhǔn)備node環(huán)境):安裝mqtt依賴npminstallmqtt連接網(wǎng)絡(luò)服務(wù)器表6.1連接網(wǎng)絡(luò)服務(wù)器constclient=mqtt.connect({host:"ipAddress",port:portNumber,});訂閱網(wǎng)絡(luò)服務(wù)器公布的主題主題需要是subscriber和publisher提前設(shè)定,如此,broker才可以將正確的消息分發(fā)給subscriber。此外,主題支持部分正則表達(dá)式。表6.2訂閱主題client.on("connect",()=>{
client.subscribe("application/1/device/+/rx",(err,granted)=>{
if(err){
console.error("數(shù)據(jù)源錯(cuò)誤");
console.log(`錯(cuò)誤信息=>${err}`);
}
});});對(duì)主題進(jìn)行預(yù)處理和分類表6.3數(shù)據(jù)格式序號(hào)內(nèi)容說明00xfe起始符1length總長度20x01版本號(hào)3cmd命令碼數(shù)據(jù)區(qū)m485地址類型碼_1(1byte)length_1后續(xù)Value_1長度(1字節(jié))value_1有效數(shù)據(jù)……485地址length_1value_1m+4m+50xfe結(jié)束符首先獲取主題的標(biāo)識(shí)deveui,然后將字符串類型的數(shù)據(jù)用JSON類解析成JSON類型。第一步需要對(duì)數(shù)據(jù)base64解碼,然后根據(jù)表3.3數(shù)據(jù)格式,對(duì)數(shù)據(jù)進(jìn)行簡單的預(yù)處理:去掉數(shù)據(jù)前4個(gè)信息字節(jié)和最后兩字節(jié)的校驗(yàn)和,結(jié)束符字節(jié),獲取最終的有效數(shù)據(jù)。然后filterData函數(shù)根據(jù)deveui將程序控制流程跳轉(zhuǎn)到對(duì)應(yīng)主題的處理函數(shù)。表6.4分類、預(yù)處理主題函數(shù)client.on("message",function(topic,message){
constdeveui=topic.split("/");
//1.字符串轉(zhuǎn)JSON對(duì)象
constdata_json_format=JSON.parse(message.toString());
//2.JSON.database64解碼轉(zhuǎn)Buffer對(duì)象
letbuffer=Buffer.from(data_json_format.data,"base64");
//3.Buffer對(duì)象,掐頭(4個(gè)元素)去尾(2個(gè)元素)保留最終有效數(shù)據(jù)
letbuffer_valid=Uint8Atotype.slice
.call(buffer)
.slice(4,buffer.length-2);
//含有有效數(shù)據(jù)
if(buffer_valid.length!=0){
filterData(deveui[3],buffer_valid);
}});functionfilterData(deveui,message){
switch(deveui){
case"8d00003100000005":
handle05Data(deveui,message);
break;
case"8d00003100000006":
handle06Data(deveui,message);
break;
case"8d00003100000007":
handle07Data(deveui,message);
break;
case"8d00003100000008":
handle08Data(deveui,message);
break;
case"8d00000051040013":
handle13Data(deveui,message);
break;
default:
break;
}}對(duì)分類過后的主題進(jìn)行數(shù)據(jù)插入表6.5字段說明Deveui傳感器Addr類型長度8D000031000000061水溫2溶解氧22ph23水溫24濁度2電導(dǎo)率4(這里標(biāo)識(shí)為“8d00003100000006”的終端舉例,說明解析過程)首先根據(jù)表3.15字段說明,可知終端標(biāo)識(shí)“8d00003100000006”攜帶4種類型的傳感器,其中編號(hào)為1的傳感器采集水溫和溶解氧兩項(xiàng)數(shù)據(jù),各占2個(gè)字節(jié);編號(hào)為2,3的傳感器分別采集ph和水溫單個(gè)數(shù)據(jù),各占用2字節(jié);編號(hào)為4的傳感器采集濁度和電導(dǎo)率兩項(xiàng)數(shù)據(jù),其中濁度占2字節(jié),電導(dǎo)率占4字節(jié)。表6.6終端8d00003100000006數(shù)據(jù)處理函數(shù)functionhandle06Data(deveui,message){
letflag=1;
//插入水溫?cái)?shù)據(jù)
insertTempData(deveui,message,flag);
//濁度
insertTurbidityData(deveui,message);
//溶解氧
insertDissolvedOxygenData(deveui,message);
//ph
insertPhData(deveui,me
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030汽車芯片產(chǎn)能布局優(yōu)化與終端應(yīng)用需求分析
- 2025-2030汽車電子產(chǎn)品供應(yīng)鏈管理現(xiàn)狀與質(zhì)量控制分析
- 2025-2030汽車新能源產(chǎn)業(yè)市場分析現(xiàn)狀供需及投資評(píng)估規(guī)劃分析報(bào)告
- 2025-2030汽車尾氣處理行業(yè)市場現(xiàn)狀需求分析及產(chǎn)業(yè)發(fā)展規(guī)劃方案
- 2025-2030汽車安全氣囊爆出事故市場召回監(jiān)管漏洞盡在探索
- 2025-2030汽車后市場服務(wù)體系創(chuàng)新與生態(tài)鏈構(gòu)建分析
- 2025-2030汽車半導(dǎo)體器件產(chǎn)業(yè)供需態(tài)勢及未來布局規(guī)劃分析洞察報(bào)告
- 2025-2030汽車產(chǎn)業(yè)鏈供應(yīng)鏈管理技術(shù)革新與行業(yè)競爭格局分析報(bào)告
- 實(shí)驗(yàn)室管理制度
- 2026年跨境電商有限公司跨境物流數(shù)據(jù)存儲(chǔ)與備份管理制度
- 2026年管線鋼市場調(diào)研報(bào)告
- 2025年江蘇省公務(wù)員面試模擬題及答案
- 2024-2025學(xué)年山東省濟(jì)南市槐蔭區(qū)七年級(jí)(上)期末地理試卷
- 2025中國家庭品牌消費(fèi)趨勢報(bào)告-OTC藥品篇-
- 機(jī)器人學(xué):機(jī)構(gòu)、運(yùn)動(dòng)學(xué)及動(dòng)力學(xué) 課件全套 第1-8章 緒論-機(jī)器人綜合設(shè)計(jì)
- JJG 694-2025原子吸收分光光度計(jì)檢定規(guī)程
- 廣東省2025屆湛江市高三下學(xué)期第一次模擬考試-政治試題(含答案)
- 2025年3月29日全國事業(yè)單位事業(yè)編聯(lián)考A類《職測》真題及答案
- 梯子使用安全操作規(guī)程
- 民航保健與衛(wèi)生
- 醫(yī)藥ka專員培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論