馮保壯,龔元明
(上海工程技術大學 機械與汽車工程學院,上海 201620)
隨著物聯網的發展,物聯網云平臺逐漸成為物聯網技術開發的關鍵一環。由于大部分物聯網云平臺是結合Web 網頁進行開發的、并運行于PC 端,因此開發一套能夠直接應用于手機移動端的平臺,將能給用戶帶來更大的便利。自微信平臺推出微信小程序后,各主流的軟件平臺也都開發了專屬的小程序。如今,小程序已被應用到各行各業,不僅具備了手機APP 的功能,而且還表現出所占內存小、不需要另外下載安裝包等出色優點,這也給人們的使用帶來極大的方便。
另據研究可知,液壓抓斗的工作特點是連續性強、自動化水平高,結合數據采集和傳輸技術將狀態信息及報警信息上傳至云服務器。云服務器通過PC 端上位機軟件對數據報文進行處理并存入數據庫。微信小程序通過接口程序獲取后臺數據庫信息,并顯示在界面上。同時微信小程序還具有備件預約和服務咨詢功能,還可與后臺進行數據交互。該系統利用官方微信開發工具的MINA 框架開發前端微信小程序;利用SpringBoot 框架結合JPA 編寫后端接口程序來操作數據庫;利用.NET 框架編寫服務器上位機軟件,處理上傳的報文數據,并在將其解析后存入SQL Server 數據庫。
Spring Boot框架是基于Spring4.0 的一個全新框架,能夠簡練開發過程,縮短開發周期,不僅其功能更加全面,性能上也更趨穩定。通過在項目目錄pom 文件中添加依賴包的方式代替復雜的XML配置過程,再利用注解實現各種功能;在application文件中進行數據庫地址、用戶名、密碼以及服務器端口配置;在發布部署時,直接打包為JAR 格式。如此一來,利用java -jar 項目名.jar 指令運行即可,不再需要在服務器上安裝Tomact 環境。本文利用Spring Boot 框架編寫微信小程序和數據庫通信的接口文件,處理生成jar 包,運行在云服務器上,實現微信小程序對于數據庫的增刪改查功能。為了進一步簡化程序,減少繁瑣的SQL 語句編寫,結合JPA 規范提供的API 接口,利用Hibernate 將Java 實體類對象與數據庫表建立映射關系,通過操作實體類、進而操作數據庫。在開發過程中,要符合實體類對象與數據庫表格中字段的映射規則,保證兩者命名相同。
MINA 框架是微信開發者開發微信小程序所使用的框架,運行機制為“響應-綁定”,框架中包含微信小程序需要的API。MINA 框架主要包括視圖層(View)和邏輯層(Service)。利用官方提供的WXML 和WXSS 語言進行視圖層的程序編寫,利用JavaScript 腳本語言進行邏輯層程序編寫。WXML可利用各種組件搭建頁面結構,采用flex 盒子布局的格式,使頁面結構更加有條理。WXSS 主要用于描述WXML 的樣式,使界面呈現效果更加貼合項目要求。JavaScript 用于邏輯功能的實現,以及與接口文件的數據交互。通過微信開發文檔提供的wx.request 接口發送HTTPS 請求,接收json 格式的返回數據。此外,還用到了wx.downloadFile 和wx.uploadFile 接口,配合在服務器上搭建HTTP 網頁服務,實現文件下載與上傳功能。因為微信小程序在發布后只支持HTTPS 協議,所以在填寫這些接口的開發者服務器地址(url)時,需要使用https 的地址。
系統整體架構如圖1 所示。通過在液壓抓斗終端設備上安裝GPRS/4G 模塊,實現入網功能,底層支持TCP/IP 協議,可以與服務器相連接,上傳報文數據至服務器端口;上位機軟件監聽該端口,并根據通信協議對報文的每一位進行解析,將解析后的數據存入數據庫。微信小程序發送獲取數據的請求,接口文件收到請求后,根據請求要求操作數據庫數據,并將數據返回給微信小程序,微信消息程序對這些數據進行加載并顯示出來。

圖1 系統整體架構Fig.1 Overall architecture diagram of the system
服務器端軟件采用C#開發的Windows 窗體應用程序,其主要功能是接收終端設備上傳的數據包,并根據自定義的數據包協議對數據包進行解析,并存入數據庫中。程序運行后,首先在IP 地址和端口輸入框中輸入本機IP 和軟件使用端口,點擊啟動服務按鈕;根據輸入的IP 和端口創建網絡節點對象,并創建服務器對象;配置服務端與客戶端建立連接時的處理函數、客戶端斷開連接時的處理函數,以及接收到客戶端數據時的處理函數等,最后開啟服務。
當有現場終端建立連接時,存儲該終端的信息,以便于微信小程序查詢現場終端信息,為數據查詢顯示做準備。當接收到現場設備的監測數據時,將數據格式進行解析,并從數據庫中查詢是否存在相應ID 的數據。若未查詢到,則將新數據插入到數據庫,否則選擇更新對應數據。上位機軟件操作及程序運行流程如圖2 所示。

圖2 操作及程序流程圖Fig.2 Flow chart of operations and the procedure
MySQL 數據庫是一款小型數據庫,具有運行速度快、維護成本低,以及代碼開源等特點。在設計數據庫表格時,盡量減少數據表的數量,減少關聯查詢。數據庫主要存放用戶注冊信息、錯誤記錄信息、設備數據表等,此外還需另行設計一張關聯表格,用于不同公司查詢不同的設備。其中,錯誤記錄表主要記錄設備發生故障時上傳的報警信息;設備數據表中存儲設備實時上傳的各種傳感器數據,每接收一條新的數據,就會覆蓋先前存儲的數據。所以在查詢數據表時,每次獲取的都是最新數據。設備數據表結構見表1。

表1 設備數據表結構Tab.1 Devices data table structure
用戶注冊表(tbRegister)中主要存放用戶注冊微信小程序時填寫的注冊信息,以及微信的資料信息,見表2。表2 中,為確定微信用戶的唯一標識。通過該字段存儲的信息區別用戶,判斷用戶是否注冊過,防止重復注冊,在獲取時需要用戶授權才能發送到數據庫中。

表2 用戶注冊表結構Tab.2 Users registry structure
微信小程序作為與用戶交互的界面不僅要實現各種功能,同時需要良好的界面設計,方便用戶操作。針對項目要求,主要設計了我的設備、備件預約、服務咨詢以及智能設備四個版塊。其中,智能設備界面用于顯示智能設備的數據信息,對應數據庫中tbSHP 表格。在注冊小程序填寫信息時,會將注冊的公司名稱存入緩存中,每次點擊智能設備時會向服務器發送公司名稱,對數據庫表格進行關聯查詢,最終獲取公司所包含的設備信息。用戶成功登錄后,自動跳轉至設備信息顯示界面,界面中包括設備ID、制造號、型號、狀態、量程和自重等。用戶可以觀察到各個設備的使用狀況,從而選擇所要測試的設備。
用戶選擇設備詳細信息后,則跳轉至實時數據顯示界面,顯示現場終端設備的測試數據、并實時更新。設備詳細信息如圖3 所示。當現場終端設備測得的數據超出設置臨界值時(如超重、回油壓力過大、液壓油溫過高、電機溫度過高等),則視為出現故障。

圖3 設備詳細信息Fig.3 Devices details
在完成整個系統的設計開發工作后,對各功能實現進行測試。首先搭建測試環境,設備終端將采集的3 臺設備的數據發送至服務器,使用電腦登錄服務器后打開上位機軟件顯示數據接收和解析情況,微信小程序發布后使用手機注冊登錄、打開設備詳細信息界面。觀察對比并記錄設備終端、服務器、微信小程序的數據顯示情況,當現場設備的傳輸速率大于每幀500 ms 時,微信小程序和設備終端顯示單元的數據完全一致,沒有數據遺漏現象,也沒有明顯網絡延遲;當傳輸速率在每幀300 ms 至每幀500 ms時,微信小程序會有部分數據遺漏,正確顯示的數據比重在80%~90%之間;當傳輸速率在每幀200 ms 至每幀300 ms 時,正確顯示的數據所占比重為50%以上。對于液壓抓斗設備來講,每幀500 ms的數據發送間隔完全可以滿足數據監測功能的要求。
通過反復測試,結果證明該物聯云平臺的設計實現了最初的設計目標。設備終端顯示控制單元、云端服務器程序以及微信小程序實時數據監測對比如圖4 所示。

圖4 監測對比圖Fig.4 Monitoring comparison diagram
本次開發設計的遠程監測系統,實現了遠程數據查詢、遠程抓斗狀態報警的功能,助力垃圾填料設備在物聯網時代的應用和拓展。該系統可實現抓斗狀態全面監測,隨時掌控抓斗工作歷史裝貨量、抓斗實時工作狀態以及抓斗液壓系統狀態參數。微信小程序移動客戶端可進行全天候在線監測,同時支持多設備同時在線監測。一旦抓斗出現故障可以及時發現抓斗故障所在,減少故障處理時間,提高垃圾處理運行效率。該系統可實現近程無線遙控,也改善了現場觀察和控制技術人員的工作環境,使得垃圾處理更加智能、高效。