馮保壯,龔元明
(上海工程技術(shù)大學(xué) 機(jī)械與汽車工程學(xué)院,上海 201620)
隨著物聯(lián)網(wǎng)的發(fā)展,物聯(lián)網(wǎng)云平臺(tái)逐漸成為物聯(lián)網(wǎng)技術(shù)開發(fā)的關(guān)鍵一環(huán)。由于大部分物聯(lián)網(wǎng)云平臺(tái)是結(jié)合Web 網(wǎng)頁進(jìn)行開發(fā)的、并運(yùn)行于PC 端,因此開發(fā)一套能夠直接應(yīng)用于手機(jī)移動(dòng)端的平臺(tái),將能給用戶帶來更大的便利。自微信平臺(tái)推出微信小程序后,各主流的軟件平臺(tái)也都開發(fā)了專屬的小程序。如今,小程序已被應(yīng)用到各行各業(yè),不僅具備了手機(jī)APP 的功能,而且還表現(xiàn)出所占內(nèi)存小、不需要另外下載安裝包等出色優(yōu)點(diǎn),這也給人們的使用帶來極大的方便。
另據(jù)研究可知,液壓抓斗的工作特點(diǎn)是連續(xù)性強(qiáng)、自動(dòng)化水平高,結(jié)合數(shù)據(jù)采集和傳輸技術(shù)將狀態(tài)信息及報(bào)警信息上傳至云服務(wù)器。云服務(wù)器通過PC 端上位機(jī)軟件對(duì)數(shù)據(jù)報(bào)文進(jìn)行處理并存入數(shù)據(jù)庫。微信小程序通過接口程序獲取后臺(tái)數(shù)據(jù)庫信息,并顯示在界面上。同時(shí)微信小程序還具有備件預(yù)約和服務(wù)咨詢功能,還可與后臺(tái)進(jìn)行數(shù)據(jù)交互。該系統(tǒng)利用官方微信開發(fā)工具的MINA 框架開發(fā)前端微信小程序;利用SpringBoot 框架結(jié)合JPA 編寫后端接口程序來操作數(shù)據(jù)庫;利用.NET 框架編寫服務(wù)器上位機(jī)軟件,處理上傳的報(bào)文數(shù)據(jù),并在將其解析后存入SQL Server 數(shù)據(jù)庫。
Spring Boot框架是基于Spring4.0 的一個(gè)全新框架,能夠簡(jiǎn)練開發(fā)過程,縮短開發(fā)周期,不僅其功能更加全面,性能上也更趨穩(wěn)定。通過在項(xiàng)目目錄pom 文件中添加依賴包的方式代替復(fù)雜的XML配置過程,再利用注解實(shí)現(xiàn)各種功能;在application文件中進(jìn)行數(shù)據(jù)庫地址、用戶名、密碼以及服務(wù)器端口配置;在發(fā)布部署時(shí),直接打包為JAR 格式。如此一來,利用java -jar 項(xiàng)目名.jar 指令運(yùn)行即可,不再需要在服務(wù)器上安裝Tomact 環(huán)境。本文利用Spring Boot 框架編寫微信小程序和數(shù)據(jù)庫通信的接口文件,處理生成jar 包,運(yùn)行在云服務(wù)器上,實(shí)現(xiàn)微信小程序?qū)τ跀?shù)據(jù)庫的增刪改查功能。為了進(jìn)一步簡(jiǎn)化程序,減少繁瑣的SQL 語句編寫,結(jié)合JPA 規(guī)范提供的API 接口,利用Hibernate 將Java 實(shí)體類對(duì)象與數(shù)據(jù)庫表建立映射關(guān)系,通過操作實(shí)體類、進(jìn)而操作數(shù)據(jù)庫。在開發(fā)過程中,要符合實(shí)體類對(duì)象與數(shù)據(jù)庫表格中字段的映射規(guī)則,保證兩者命名相同。
MINA 框架是微信開發(fā)者開發(fā)微信小程序所使用的框架,運(yùn)行機(jī)制為“響應(yīng)-綁定”,框架中包含微信小程序需要的API。MINA 框架主要包括視圖層(View)和邏輯層(Service)。利用官方提供的WXML 和WXSS 語言進(jìn)行視圖層的程序編寫,利用JavaScript 腳本語言進(jìn)行邏輯層程序編寫。WXML可利用各種組件搭建頁面結(jié)構(gòu),采用flex 盒子布局的格式,使頁面結(jié)構(gòu)更加有條理。WXSS 主要用于描述WXML 的樣式,使界面呈現(xiàn)效果更加貼合項(xiàng)目要求。JavaScript 用于邏輯功能的實(shí)現(xiàn),以及與接口文件的數(shù)據(jù)交互。通過微信開發(fā)文檔提供的wx.request 接口發(fā)送HTTPS 請(qǐng)求,接收json 格式的返回?cái)?shù)據(jù)。此外,還用到了wx.downloadFile 和wx.uploadFile 接口,配合在服務(wù)器上搭建HTTP 網(wǎng)頁服務(wù),實(shí)現(xiàn)文件下載與上傳功能。因?yàn)槲⑿判〕绦蛟诎l(fā)布后只支持HTTPS 協(xié)議,所以在填寫這些接口的開發(fā)者服務(wù)器地址(url)時(shí),需要使用https 的地址。
系統(tǒng)整體架構(gòu)如圖1 所示。通過在液壓抓斗終端設(shè)備上安裝GPRS/4G 模塊,實(shí)現(xiàn)入網(wǎng)功能,底層支持TCP/IP 協(xié)議,可以與服務(wù)器相連接,上傳報(bào)文數(shù)據(jù)至服務(wù)器端口;上位機(jī)軟件監(jiān)聽該端口,并根據(jù)通信協(xié)議對(duì)報(bào)文的每一位進(jìn)行解析,將解析后的數(shù)據(jù)存入數(shù)據(jù)庫。微信小程序發(fā)送獲取數(shù)據(jù)的請(qǐng)求,接口文件收到請(qǐng)求后,根據(jù)請(qǐng)求要求操作數(shù)據(jù)庫數(shù)據(jù),并將數(shù)據(jù)返回給微信小程序,微信消息程序?qū)@些數(shù)據(jù)進(jìn)行加載并顯示出來。
圖1 系統(tǒng)整體架構(gòu)Fig.1 Overall architecture diagram of the system
服務(wù)器端軟件采用C#開發(fā)的Windows 窗體應(yīng)用程序,其主要功能是接收終端設(shè)備上傳的數(shù)據(jù)包,并根據(jù)自定義的數(shù)據(jù)包協(xié)議對(duì)數(shù)據(jù)包進(jìn)行解析,并存入數(shù)據(jù)庫中。程序運(yùn)行后,首先在IP 地址和端口輸入框中輸入本機(jī)IP 和軟件使用端口,點(diǎn)擊啟動(dòng)服務(wù)按鈕;根據(jù)輸入的IP 和端口創(chuàng)建網(wǎng)絡(luò)節(jié)點(diǎn)對(duì)象,并創(chuàng)建服務(wù)器對(duì)象;配置服務(wù)端與客戶端建立連接時(shí)的處理函數(shù)、客戶端斷開連接時(shí)的處理函數(shù),以及接收到客戶端數(shù)據(jù)時(shí)的處理函數(shù)等,最后開啟服務(wù)。
當(dāng)有現(xiàn)場(chǎng)終端建立連接時(shí),存儲(chǔ)該終端的信息,以便于微信小程序查詢現(xiàn)場(chǎng)終端信息,為數(shù)據(jù)查詢顯示做準(zhǔn)備。當(dāng)接收到現(xiàn)場(chǎng)設(shè)備的監(jiān)測(cè)數(shù)據(jù)時(shí),將數(shù)據(jù)格式進(jìn)行解析,并從數(shù)據(jù)庫中查詢是否存在相應(yīng)ID 的數(shù)據(jù)。若未查詢到,則將新數(shù)據(jù)插入到數(shù)據(jù)庫,否則選擇更新對(duì)應(yīng)數(shù)據(jù)。上位機(jī)軟件操作及程序運(yùn)行流程如圖2 所示。
圖2 操作及程序流程圖Fig.2 Flow chart of operations and the procedure
MySQL 數(shù)據(jù)庫是一款小型數(shù)據(jù)庫,具有運(yùn)行速度快、維護(hù)成本低,以及代碼開源等特點(diǎn)。在設(shè)計(jì)數(shù)據(jù)庫表格時(shí),盡量減少數(shù)據(jù)表的數(shù)量,減少關(guān)聯(lián)查詢。數(shù)據(jù)庫主要存放用戶注冊(cè)信息、錯(cuò)誤記錄信息、設(shè)備數(shù)據(jù)表等,此外還需另行設(shè)計(jì)一張關(guān)聯(lián)表格,用于不同公司查詢不同的設(shè)備。其中,錯(cuò)誤記錄表主要記錄設(shè)備發(fā)生故障時(shí)上傳的報(bào)警信息;設(shè)備數(shù)據(jù)表中存儲(chǔ)設(shè)備實(shí)時(shí)上傳的各種傳感器數(shù)據(jù),每接收一條新的數(shù)據(jù),就會(huì)覆蓋先前存儲(chǔ)的數(shù)據(jù)。所以在查詢數(shù)據(jù)表時(shí),每次獲取的都是最新數(shù)據(jù)。設(shè)備數(shù)據(jù)表結(jié)構(gòu)見表1。
表1 設(shè)備數(shù)據(jù)表結(jié)構(gòu)Tab.1 Devices data table structure
用戶注冊(cè)表(tbRegister)中主要存放用戶注冊(cè)微信小程序時(shí)填寫的注冊(cè)信息,以及微信的資料信息,見表2。表2 中,為確定微信用戶的唯一標(biāo)識(shí)。通過該字段存儲(chǔ)的信息區(qū)別用戶,判斷用戶是否注冊(cè)過,防止重復(fù)注冊(cè),在獲取時(shí)需要用戶授權(quán)才能發(fā)送到數(shù)據(jù)庫中。
表2 用戶注冊(cè)表結(jié)構(gòu)Tab.2 Users registry structure
微信小程序作為與用戶交互的界面不僅要實(shí)現(xiàn)各種功能,同時(shí)需要良好的界面設(shè)計(jì),方便用戶操作。針對(duì)項(xiàng)目要求,主要設(shè)計(jì)了我的設(shè)備、備件預(yù)約、服務(wù)咨詢以及智能設(shè)備四個(gè)版塊。其中,智能設(shè)備界面用于顯示智能設(shè)備的數(shù)據(jù)信息,對(duì)應(yīng)數(shù)據(jù)庫中tbSHP 表格。在注冊(cè)小程序填寫信息時(shí),會(huì)將注冊(cè)的公司名稱存入緩存中,每次點(diǎn)擊智能設(shè)備時(shí)會(huì)向服務(wù)器發(fā)送公司名稱,對(duì)數(shù)據(jù)庫表格進(jìn)行關(guān)聯(lián)查詢,最終獲取公司所包含的設(shè)備信息。用戶成功登錄后,自動(dòng)跳轉(zhuǎn)至設(shè)備信息顯示界面,界面中包括設(shè)備ID、制造號(hào)、型號(hào)、狀態(tài)、量程和自重等。用戶可以觀察到各個(gè)設(shè)備的使用狀況,從而選擇所要測(cè)試的設(shè)備。
用戶選擇設(shè)備詳細(xì)信息后,則跳轉(zhuǎn)至實(shí)時(shí)數(shù)據(jù)顯示界面,顯示現(xiàn)場(chǎng)終端設(shè)備的測(cè)試數(shù)據(jù)、并實(shí)時(shí)更新。設(shè)備詳細(xì)信息如圖3 所示。當(dāng)現(xiàn)場(chǎng)終端設(shè)備測(cè)得的數(shù)據(jù)超出設(shè)置臨界值時(shí)(如超重、回油壓力過大、液壓油溫過高、電機(jī)溫度過高等),則視為出現(xiàn)故障。
圖3 設(shè)備詳細(xì)信息Fig.3 Devices details
在完成整個(gè)系統(tǒng)的設(shè)計(jì)開發(fā)工作后,對(duì)各功能實(shí)現(xiàn)進(jìn)行測(cè)試。首先搭建測(cè)試環(huán)境,設(shè)備終端將采集的3 臺(tái)設(shè)備的數(shù)據(jù)發(fā)送至服務(wù)器,使用電腦登錄服務(wù)器后打開上位機(jī)軟件顯示數(shù)據(jù)接收和解析情況,微信小程序發(fā)布后使用手機(jī)注冊(cè)登錄、打開設(shè)備詳細(xì)信息界面。觀察對(duì)比并記錄設(shè)備終端、服務(wù)器、微信小程序的數(shù)據(jù)顯示情況,當(dāng)現(xiàn)場(chǎng)設(shè)備的傳輸速率大于每幀500 ms 時(shí),微信小程序和設(shè)備終端顯示單元的數(shù)據(jù)完全一致,沒有數(shù)據(jù)遺漏現(xiàn)象,也沒有明顯網(wǎng)絡(luò)延遲;當(dāng)傳輸速率在每幀300 ms 至每幀500 ms時(shí),微信小程序會(huì)有部分?jǐn)?shù)據(jù)遺漏,正確顯示的數(shù)據(jù)比重在80%~90%之間;當(dāng)傳輸速率在每幀200 ms 至每幀300 ms 時(shí),正確顯示的數(shù)據(jù)所占比重為50%以上。對(duì)于液壓抓斗設(shè)備來講,每幀500 ms的數(shù)據(jù)發(fā)送間隔完全可以滿足數(shù)據(jù)監(jiān)測(cè)功能的要求。
通過反復(fù)測(cè)試,結(jié)果證明該物聯(lián)云平臺(tái)的設(shè)計(jì)實(shí)現(xiàn)了最初的設(shè)計(jì)目標(biāo)。設(shè)備終端顯示控制單元、云端服務(wù)器程序以及微信小程序?qū)崟r(shí)數(shù)據(jù)監(jiān)測(cè)對(duì)比如圖4 所示。
圖4 監(jiān)測(cè)對(duì)比圖Fig.4 Monitoring comparison diagram
本次開發(fā)設(shè)計(jì)的遠(yuǎn)程監(jiān)測(cè)系統(tǒng),實(shí)現(xiàn)了遠(yuǎn)程數(shù)據(jù)查詢、遠(yuǎn)程抓斗狀態(tài)報(bào)警的功能,助力垃圾填料設(shè)備在物聯(lián)網(wǎng)時(shí)代的應(yīng)用和拓展。該系統(tǒng)可實(shí)現(xiàn)抓斗狀態(tài)全面監(jiān)測(cè),隨時(shí)掌控抓斗工作歷史裝貨量、抓斗實(shí)時(shí)工作狀態(tài)以及抓斗液壓系統(tǒng)狀態(tài)參數(shù)。微信小程序移動(dòng)客戶端可進(jìn)行全天候在線監(jiān)測(cè),同時(shí)支持多設(shè)備同時(shí)在線監(jiān)測(cè)。一旦抓斗出現(xiàn)故障可以及時(shí)發(fā)現(xiàn)抓斗故障所在,減少故障處理時(shí)間,提高垃圾處理運(yùn)行效率。該系統(tǒng)可實(shí)現(xiàn)近程無線遙控,也改善了現(xiàn)場(chǎng)觀察和控制技術(shù)人員的工作環(huán)境,使得垃圾處理更加智能、高效。