左衛剛,徐全飛
(1.山西管理職業學院信息管理系,山西 臨汾 041000;2.山西省農業科學院農業資源與經濟研究所,山西 太原 030006)
食用菌生產及產品質量安全的監督管理是落實食品安全法律法規、探索食用菌產品質量安全長效管理機制的重要措施[1]。食用菌產品的安全監管主要涉及食用菌產品的農藥殘留、獸藥殘留、有害微生物、毒素、化學毒物、重金屬、營養成分、品質鑒定等方面的檢測和監管,為食用菌農產品檢測技術、質量標準和質量認證技術等提供服務[2]。隨著互聯網技術的發展,手機、平板電腦等移動終端設備大量普及,而移動終端的軟件、APP等也發展迅猛,這給食用菌產品安全管理系統的開發設計提供了良好的載體。傳統的信息監管系統也逐步被視頻監控等先進的可視化管理系統替代。視頻監控、圖像顯示、記錄回放、遠程監管成為了監管系統發展的新方向[3]。利用移動終端的軟件系統和視頻監控的硬件系統,可以組成一個新型的食用菌產品安全信息監督管理系統,在手機等移動終端上的操作也更加方便快捷。
食用菌產品安全信息監督管理系統基于Vue 2.0框架設計出移動終端監控管理APP[4]。移動終端APP共分為三大模塊:首頁、消息和用戶。首頁模塊主要用于展示食用菌安全管理系統的功能模塊;消息模塊主要是安全提示的消息列表;用戶模塊可以查看用戶賬號的基本信息,并有退出、登錄、切換賬號等用戶管理功能。
移動終端APP總體框架設計主要是包括前端框架的實現和后端服務器的實現2個部分,是從使用前端框架進行前端界面的設計和后端框架搭建好后臺服務,實現數據讀取。系統開發設計環境為:1)操作系統和開發平臺,Windows 10、Vue 2.0版本;2) 項目版本管理工具,Git和NPM;3) 開發工具,Sublime Text 3;4) 服務器,Nginx;5) 上線系統,Linux操作系統;6) 開發框架,MVVM+Vue 2.0+B/S。
前端采用Vue 2.0框架,與后端服務器的交互使用基于Ajax封裝的Axios,使用Nginx和Tomcat進行反向代理進行高并發處理,以實現監管系統的高并發用戶訪問。
MVVM (model-view-view model,MVVM) 分層架構[5]:整個監控系統采用的是MVVM四層架構進行整體的設計。在Vue 2.0中應用MVVM實現響應式的架構,采用的B/S體系結構,傳統組件只是進行靜態的渲染,基本上都需要進行DOM操作,而Vue數據驅動基于MVVM進行,其工作原理見圖1。
由圖1可知,頁面采用的Vue框架搭配CSS技術;數據使用AJAX進行一個數據的獲?。婚_發平臺使用NPM開發工具,采用Sublime Text 3進行一個文本編寫;上線采用Linux操作系統,搭配Nginx進行產品的上線;搭配云服務器進行互聯網訪問。
移動終端APP主要應用了HTTP協議,使用A-jax進行數據的獲取,Axios中的GET方法進行一個數據訪問,而且數據整體都是采用JSON格式。在Axios在讀取的時候讀取數據就是JSON格式,不需要自己解析。
2.1.1 食用菌企業信息管理
主要查看食用菌產品生產的相關企業及其下級部門的詳細信息,如食用菌生產企業列表(包括部門列表)、企業詳細信息(如法人代表、領導簡介、企業名稱、所在地區、企業類型、聯系方式、地址、郵編等)。
2.1.2 地理信息系統
可以查看食用菌企業和下級部門的地圖位置信息及周邊環境、街道等信息。
2.1.3 安全生產實時監測系統
查看實時的食用菌企業安全生產狀態,具體功能包括圖層的選擇、所屬系統、圖例等監測。
2.1.4 安全信息監管系統
查看監控監測的實時數據,并根據實時數據自動安全報警。選擇食用菌企業來查看所有的數據或下級部門的安全生產數據,刷新頻率可自動設置(默認10 s),顯示的安全信息有:監測點名稱、所屬企業、安裝位置、實時數據、監控狀態等。
2.1.5 人員定位系統
查看安全重點監控人員的定位實時數據和報警數據,安全重點監控人員包括:安全事故責任者和當事人、重復違章人員、新進企業員工、專職安全管理人員,定位刷新頻率可自動設置(默認30 s),顯示的定位信息有:企業、姓名、所處位置、是否報警(無故脫離安全監管區域)。
2.1.6 實時視頻監控系統
安全信息的視頻圖像采集、視頻傳輸和遠程監控,可以隨時切換視頻畫面、設置視頻監控參數。
2.1.7 安全隱患排查系統
主要包括隱患發現和隱患現場2個功能。隱患發現功能:用戶通過手機對發現的安全隱患進行現場拍照、錄音、拍攝視頻等媒體記錄操作,填寫基本的隱患發現信息后提交到監控系統平臺。隱患現場功能:用戶通過手機APP對隱患處理過程中各環節的現場情況進行記錄然后上傳。
移動終端APP的后端主要功能模塊有:1) 數據傳輸,即通過Ajax進行JSON數據傳輸和使用Nginx進行數據跨域問題的解決;2) APP上線,即在Linux操作系統中使用Nginx進行APP的發布和上線,實現通過阿里云進行云端訪問;3) git版本管理,即使用GitHub倉庫和git版本管理工具進行代碼的版本控制。
由于移動終端APP上的數據是從服務器中獲取的,所以需要考慮的是從服務器是否能夠正常獲取數據以及上線是否能夠正常訪問和多個用戶高并發的情況,因此移動終端的APP后端采用JSON數據格式。
移動終端APP服務器主要從用戶數量、傳輸數據類型、功能等一系列方面進行考慮。1)考慮到該APP是食用菌產品安全信息的監管系統,可能同時訪問的人數較高,而且視頻傳輸的數據量比較大;2) 移動終端APP主要的數據都是從服務器獲取,傳輸的數據多為JSON文件類型;3)從功能方面主要是存儲與食用菌產品安全相關的視頻、圖片和文字信息,存儲容量較大。綜合以上幾點,選擇Nginx服務器作為APP的服務器。Nginx解決了高并發的問題,通過異步、非阻塞、使用epoll模型和反向代理來實現負載均衡;通過反向代理和epoll模型讓大量請求同時到來時可以通過代理服務器進行轉發。而該APP直接訪問JSON文件在Nginx中也可以直接進行配置,讓UI直接進行JSON文件的訪問,能夠滿足安全監管系統的需求。
安全信息監管系統的視頻監控系統主要包含3個功能模塊:1)視頻采集模塊:完成安全信息的視頻圖像采集、視頻編碼和數據發送;2)視頻傳輸模塊:完成安全信息數據在網絡上中的傳輸;3)遠程監控模塊:完成數據接收、數據解碼和數據最終顯示在移動終端設備上。
視頻采集模塊主要是通過OpenCV模塊進行攝像頭數據采集,具體步驟如下:1)使用cv2.Video-Capture(Camera.video_source) 函數連接到要監控的攝像頭;2) 再用_,img=camera.read() 按幀讀取視頻。其中_是布爾值,如果讀取幀是正確的則返回True,如果文件讀取到結尾,它的返回值就為False。frame就是每一幀的圖像,是個三維矩陣;3)再使用cv2.imwrite() 和cv2.imencode() 將攝像頭拍攝到的圖像轉換成.jpg格式保存到設置的存儲路徑video_config.txt中,將視頻的存儲格式轉換是為了將數據進行壓縮。否則傳輸的數據量太大,通常的外網訪問基本沒法承受。最后讓客戶端使用Web-Socket使得客戶端和服務器端之間的數據交換變得更加簡單。允許服務器端主動向客戶端發起連接請求,并且只需要完成一次握手就可以成功創建持久性連接,并進行雙向數據傳輸。
視頻傳輸模塊主要使用的是WebSocket來進行數據交換。WebSocket是在HTML5上提供的一種在單個TCP連接上進行的全雙工通訊協議。瀏覽器通過JavaScript向服務器發出建立Websocket連接請求,連接建立以后客戶端就可以和服務器端通過TCP連接進行直接的數據交換。它和傳統的HTTP報文不同的是由以下幾個參數設置如下。
遠程監控模塊通過使用WebSocket模塊的TCP協議將服務器發來的數據進行解碼。解碼使用的函數是cv2.imdencode(),將幀還原成圖片,并且還可以根據配置文件的參數改變來改變整個監控的參數,如圖片的分辨率、圖像的像素還有服務器IP。在本次設計中的服務器端參數如下。
因為客戶端連接服務器端有可能是多個線程,request會因為多個請求發生數據錯亂,所以使用了單進程單線程(多協程)解決資源錯亂問題。優先使用協程,如果是單線程多協程導入獲取協程唯一標識。
食用菌產品的安全問題一直是人們關注的熱點。將先進的互聯網技術應用到食用菌安全信息監管中是一種行之有效的監管辦法,手機等移動終端的普及也使得安全監管系統更多的以APP的形式存在,極大地方便了人們的使用。人們可以從手機上獲取食用菌的菌種、栽培、采摘、加工生產、包裝運輸和銷售等全產業鏈上的安全信息。政府監管部門、食用菌供應鏈參與企業和消費者都可以通過手機掃描二維碼、遠程查看監控錄像、傳遞安全信息等手段,方便快捷地對食用菌產品安全信息進行監管。但監管系統只是提供了技術和數據,食用菌產品的安全還需要各方參與者共同努力,為食用菌產品的安全體系建設獻計獻策。