季華瑛
【摘 要】論文結合物聯網對果園的一系列環境參數進行采集,并開發收集程序將物聯網監測數據實時收集到數據庫中。同時通過B/S架構模式,基于PHP開發語言對數據進行可視化監測,結合目前主流的前端開源框架,將果園的實時數據集成在B/S模式的系統內,通過這個系統能夠讓果園管理者實時查看果園的數據信息,并且利用可視化平臺,將果園信息體現在系統中。
【Abstract】Combined with the internet of things, a series of environmental parameters of orchard are collected, and a collection program is developed to collect the monitoring data of the internet of things into the database in real time. And meanwhile, through the B/S architecture mode, and on the basis of the PHP development language, the data monitoring is visualized. Combined with the current mainstream open source front-end framework, the orchard real-time data is integrated into the B/S mode system. The system allows managers to obtain orchard information in real time, and reflect the information in the system through visualization platform.
【關鍵詞】B/S;數據庫;果園;可視化監測
【Keywords】B/S; database; orchard; visualized monitoring
【中圖分類號】S126 【文獻標志碼】B 【文章編號】1673-1069(2019)04-0072-03
1 引言
數據的積累和科技的創新日新月異,智慧農業是農業發展的一個必然階段,它引領社會改革,成為和人們生活密不可分的一部分。果園本來就是一個復雜的系統,相較于棚內種植的果園,種植環境、氣象因素、病蟲害等都會對其造成不小的影響,這使得果園種植的難度變大。運用果園可視化監測系統,可以實時監測這些影響因素。本系統運用傳感設備將數據進行實時、穩定接收,然后將數據實時存儲到關系型數據庫中進行處理,通過開源框架搭建的Web端進行數據的實時可視化以及面向農戶的數據處理平臺。果農可觀測果園中農作物的所有數據,通過可視化的數據分析對果園進行精準化管理,把外部的影響因子控制在一個合理的范圍內,這對發展科技農業有著重要意義。
2系統可視化監測設計與實現
2.1 設計分析
設計這個系統時,主要通過對農業數據如何采集、采集的數據通過什么進行傳輸、傳輸后如何進行操作、同時我們如何將實時數據展示給果園管理者等這幾個問題貫穿整體設計。在物聯網的數據接收方面,采用氣象站采集果園數據。氣象站的485串口通信將采集的土壤溫濕度,空氣二氧化碳等數據傳給中央控制器STM32芯片,之后通過TCP協議進行網絡傳輸。硬件工作完成后,主要對處理數據接收和可視化監測進行設計,在可視化監測設計中采用B/S架構進行可視化開發設計,并且采用多個先進的開源框,降低開發PC端程序的成本,并且極大簡化操作使用。
2.1.1 設計先進性
設計B/S架構模式必不可少的是服務端,本系統采用TP5框架進行搭建,使用PHP作為基礎開發語言。通過簡潔的代碼風格,能夠以最少的片段完成復雜的數據邏輯操作。相對于Java語言,其不需要安裝Jdk包,只需要在可視化設計中搭建PHP運行環境即可,不需要復雜的包依賴。同時PHP語言在B/S模式下有許多優秀的開源框架,降低了很多設計難度。再結合前端頁面,將果園數據以圖表的形式在網頁中顯示,做到果園的可視化監測。
2.1.2 設計穩定性
當果農在訪問可視化監測網頁時,這些邏輯處理的事件必須有專門的服務端進行處理。所以在Linux操作系統上搭建Nginx服務器作為Web服務端,并且使用Mysql數據庫。相對于其他Web服務器來說,PHP+nginx+mysql搭建的Web服務器比較穩定,可以防止在前后臺的數據交互時發生服務器崩潰,保證可視化平臺的穩定性。
2.2 系統監測設計
可視化監測設計是基于B/S模式下開發的,就是設計一個可視化監測的網頁。可視化監測設計包含果園數據的接收、數據的存儲、處理邏輯的服務端以及可視化界面模塊。
2.2.1 數據接收模塊
數據接收模塊就是接收果園氣象站發送的數據。在氣象站中采用TCP通訊發送數據,接收模塊也需要TCP通訊協議進行接收。在接收模塊中開通Socket通道,監聽服務端指定端口,判斷在指定端口下連接信息,然后建立通道與氣象站進行通訊。通過正則表達式的形式對接收的數據流進行判斷,即用特定字符組成一個規則字符串,通過這個規則字符串來表達對字符串的一種過濾邏輯。判斷數據流的頭格式對數據流進行正則截取,將對應數據存入數據庫。
2.2.2數據存儲模塊
通過上述接收模塊,將硬件傳過來的數據存儲到傳統的關系型數據庫中。對數據存儲模塊進行設計時,考慮到數據存儲后,需要快速查找所需數據的可視化界面。所以數據庫存儲數據的物理結構如表1所示。
在存儲果園數據信息數據表中建立四個字段,考慮到將來會有千萬條數據,必須對數據查找進行優化,防止在select時完全遍歷千萬條數據,所以在建表時引用了索引,在device_pid,timestamp字段中加入了索引,防止查詢時間過長,另外,引用索引也會提高數據庫運行效率。同時也建立了硬件設備的名稱數據表,如表2所示。
Wisdom_meta.sql表中主要存儲硬件設備的地址,氣象站傳感器具體信息,在這個表中的更新時段為每十分鐘更新一次。
2.2.3 服務端模塊
因為可視化監測設計采用B/S架構,所以必須有服務端模塊。在開發過程中采用比較適合服務端的后臺語言PHP,通過Nginx開通一個專門的端口訪問服務端信息,在Nginx中配置PHP運行環境。在服務端處理邏輯模塊中采用TP5開源框架,充分利用框架的MVC(模式、視圖、控制器)三層架構的方式。如在數據可視化監測頁面,建立一個新的模塊LEbig模塊,在這個模塊下把用戶的請求信息發送給后臺控制器進行業務處理,結合TP5框架,將業務信息進行數據處理,把處理結果通過Json數據返回給控制器,同時將處理的數據傳給視圖層進行數據展示。
2.2.4 可視化界面模塊
在可視化界面中,采用JavaScript包和Echarts圖表的形式組成可視化前端界面,Echarts底層依賴輕量級的矢量圖形庫 ZRender,提供直觀,交互豐富,可高度個性化定制的數據可視化圖表。在這個模塊大量使用H5和JS的基礎邏輯,在與服務端進行交互時采用Query.js中的Ajax方法進行異步獲取服務端數據。通過Ajax函數調用URL,將HTML中的請求傳遞給控制器,經過一系列處理后將以Json的數據形式傳遞給Ajax,當Ajax獲取到數據后,再通過多個JavaScript進行操作,來完成數據可視化界面的展示。采用圖表的形式進行展示,便于果農對數據的查看與分析,在網頁端用的圖表是Echarts組件,通過圖表將數據更清晰地展示在果農眼前,而且在設計中所有的圖表都是動態異步可以進行交互的。
3 系統實現及特點
3.1 主要功能
果園用戶需要使用瀏覽器進行訪問可視化模塊,這一模塊能把果園的所有信息實時展示出來。可視化設計中整合數據收集以及數據實時監測界面,通過數據可視化界面將數據展示到網頁中,讓果農能夠更加直接清楚地看到信息化數據。在數據可視化界面的中間為視頻界面,因為視頻模塊沒有接入,所以在頁面顯示中沒有視頻。可視化模塊如圖1 所示。
上圖中包含有數據條數,山東省地圖,設備分布地圖,視頻,當天平度地區氣象數據,當天威海地區氣象數據,平度實時數據,威海實時數據,對照監測數據九個模塊,點擊每個模塊都可以進行入大圖查看模式。
3.2 主要特點
第一,采用B/S架構模式,將果園數據以圖表的形式展示在網頁中,使用簡單,不需要安裝復雜的軟件程序,同時在訪問時不限制地點,任何地點只要有網絡就可以訪問。
第二,可視化監測模塊展示出當天的數據曲線,同時也有多天,即三天,七天,一個月,三個月的數據展示,同時在每個監測模塊中都能夠在圖標中通過按鈕查看一個環境因素。
第三,在可視化界面中,果園用戶可以直接將圖表下載下來,對數據以折線圖或柱狀圖的形式查看,如圖2所示。
4 結論
在平臺設計中,主要分為四個模塊,來自硬件檢測數據的接收模塊,能夠保證數據不斷存儲,這為我們以后的大數據開發提供了強有力的數據支持;數據存儲邏輯模塊,通過對存儲邏輯的設計提高數據讀取速度;基于B/S架構的Server端;最后是可視化模塊。在開發過程中采用多項最新技術,如大數據UI前端設計、Ajax跨模塊的異步處理、采用的開源框架。系統的完成,為農業果園數據信息注入新的活力,通過可視化監測可以讓果園管理者實時掌握果樹的生長環境,這對以后果園的數字化管理具有深遠意義。