王西剛, 任 佳
(浙江理工大學(xué) 機(jī)械與自動(dòng)控制學(xué)院,杭州 310018)
當(dāng)今時(shí)代,互聯(lián)網(wǎng)技術(shù)發(fā)展迅速,作為新時(shí)代互聯(lián)網(wǎng)技術(shù)和傳統(tǒng)制造業(yè)相融合的產(chǎn)物,工業(yè)互聯(lián)網(wǎng)將在新一輪的工業(yè)革命中起到關(guān)鍵作用. 工業(yè)互聯(lián)網(wǎng)有著數(shù)字化,網(wǎng)絡(luò)化,智能化的優(yōu)點(diǎn),同時(shí),網(wǎng)絡(luò)的開放性和便利性又給工業(yè)互聯(lián)網(wǎng)的信息安全帶來了更大的挑戰(zhàn),因此,加強(qiáng)工業(yè)互聯(lián)網(wǎng)防護(hù)建設(shè),保障其數(shù)據(jù)信息的安全顯得尤為重要.
2018年,工業(yè)和信息化部印發(fā)了《工業(yè)控制系統(tǒng)信息安全行動(dòng)計(jì)劃(2018-2020年)》,為工業(yè)互聯(lián)網(wǎng)信息安全保障工作提供了系統(tǒng)性指導(dǎo). 國內(nèi)外眾多專家和學(xué)者在網(wǎng)絡(luò)協(xié)議[1],可信計(jì)算[2],安全分析方法[3],網(wǎng)絡(luò)攻擊[4,5],集群證明機(jī)制[6]和用戶認(rèn)證[7]等方面進(jìn)行了研究,加強(qiáng)了工業(yè)互聯(lián)網(wǎng)信息安全保障. 但隨著工業(yè)控制系統(tǒng)更加復(fù)雜化,系統(tǒng)對(duì)數(shù)據(jù)管理的便捷性要求越來越高,各類數(shù)據(jù)管理軟件也層出不窮,針對(duì)工業(yè)數(shù)據(jù)的特點(diǎn)來設(shè)計(jì)便捷性高,適應(yīng)性強(qiáng)的數(shù)據(jù)管理平臺(tái)才能提高生產(chǎn)效率,推動(dòng)工業(yè)生產(chǎn)的智能化進(jìn)程. 首先,機(jī)器設(shè)備生產(chǎn)的高頻性,工業(yè)過程的復(fù)雜性使得工業(yè)數(shù)據(jù)具有體量大,種類多的特點(diǎn),這意味著對(duì)數(shù)據(jù)管理平臺(tái)的存儲(chǔ)性能要求較高. 第二,由于工業(yè)生產(chǎn)的系統(tǒng)性和過程變量之間的關(guān)聯(lián)性,工業(yè)數(shù)據(jù)存在完整性要求高,關(guān)聯(lián)性強(qiáng)的特點(diǎn),因此要求數(shù)據(jù)管理平臺(tái)能夠進(jìn)行條理清晰,結(jié)構(gòu)分明的數(shù)據(jù)管理. 第三,工業(yè)數(shù)據(jù)來源于工業(yè)網(wǎng)絡(luò)和傳感設(shè)備,存在時(shí)序性強(qiáng),處理速度要求高的特點(diǎn),需要數(shù)據(jù)管理平臺(tái)能夠?qū)崿F(xiàn)快速數(shù)據(jù)讀寫和數(shù)據(jù)傳輸功能. 最后,數(shù)據(jù)管理平臺(tái)一方面需要向管理人員和操作人員提供快捷的交互接口,一方面又要盡量保護(hù)數(shù)據(jù)信息安全,實(shí)現(xiàn)兩者平衡的關(guān)鍵是建立靈活,精確的權(quán)利分配機(jī)制,在滿足管理需求的前提下盡量降低數(shù)據(jù)泄露和破壞的風(fēng)險(xiǎn),提升數(shù)據(jù)管理平臺(tái)的信息安全保護(hù)能力.
針對(duì)以上問題,本文以中國移動(dòng)的物聯(lián)網(wǎng)平臺(tái)OneNET為基礎(chǔ),基于Qt開發(fā)框架設(shè)計(jì)了一套用于PC端的工業(yè)互聯(lián)網(wǎng)數(shù)據(jù)管理平臺(tái). 該平臺(tái)可以及時(shí)將云端存儲(chǔ)的數(shù)據(jù)保存到本地,解決了云平臺(tái)不能長期存儲(chǔ)大量數(shù)據(jù)的問題,為后續(xù)工業(yè)數(shù)據(jù)的建模和分析工作提供了便利. 另一方面,本文設(shè)計(jì)框架和思路可為解決工業(yè)互聯(lián)網(wǎng)數(shù)據(jù)管理平臺(tái)設(shè)計(jì)過程中的信息安全問題提供參照.
OneNET是中國移動(dòng)基于物聯(lián)網(wǎng)技術(shù)建造的開放平臺(tái),它支持多種協(xié)議類型,提供豐富的API和應(yīng)用模板,可以便捷地進(jìn)行工業(yè)互聯(lián)網(wǎng)應(yīng)用平臺(tái)搭建. 其總體架構(gòu)如圖1所示.
OneNET作為PaaS[8](Platfom-as-a-Service)層,一方面通過多種協(xié)議連接設(shè)備,另一方面為應(yīng)用軟件開發(fā)提供接口,在工業(yè)互聯(lián)網(wǎng)中起到了橋梁作用.OneNET采用分布式存儲(chǔ)的結(jié)構(gòu)保障了數(shù)據(jù)的存儲(chǔ)安全,同時(shí)基于消息對(duì)象結(jié)構(gòu),多種數(shù)據(jù)調(diào)用接口來實(shí)現(xiàn)數(shù)據(jù)的高并發(fā)讀寫操作,加強(qiáng)了數(shù)據(jù)信息的安全保障.除此之外,它還提供了私有云功能模塊,特有的私有協(xié)議RGMP以及第三方平臺(tái)接入的加解密方案,為解決應(yīng)用平臺(tái)開發(fā)過程中的安全問題提供了便利. 得益于其較高的安全性和容災(zāi)性,目前OneNET已經(jīng)成功應(yīng)用在了礦業(yè)生產(chǎn)遠(yuǎn)程監(jiān)測[9,10],智能設(shè)備數(shù)據(jù)管理[11,12]等工業(yè)互聯(lián)網(wǎng)領(lǐng)域.
圖1 OneNET平臺(tái)架構(gòu)示意圖
REST(Representational State Transfer,表述性狀態(tài)轉(zhuǎn)移)是一種萬維網(wǎng)軟件架構(gòu)風(fēng)格[13],它把所有的數(shù)據(jù)信息抽象為資源并且對(duì)每一個(gè)資源使用唯一的資源標(biāo)識(shí)符URL(Universal Resource Locator,統(tǒng)一資源定位符)來標(biāo)識(shí)[14],所有資源及其結(jié)構(gòu)組成了資源模型. 本文使用的資源模型組織架構(gòu)形式如圖2所示,設(shè)備數(shù)據(jù)以數(shù)據(jù)流的形式進(jìn)行存儲(chǔ),APIKey用于限制設(shè)備和產(chǎn)品的訪問權(quán)限,觸發(fā)器用于滿足觸發(fā)條件時(shí)發(fā)送通知.
用戶在初始使用時(shí)需要?jiǎng)?chuàng)建用戶和產(chǎn)品,創(chuàng)建完成后即可通過數(shù)據(jù)管理平臺(tái)調(diào)用API方法不斷完善產(chǎn)品的設(shè)備信息和數(shù)據(jù)流等資源. 對(duì)于用戶創(chuàng)建的產(chǎn)品,OneNET會(huì)自動(dòng)分配一個(gè)產(chǎn)品APIKey,該產(chǎn)品APIKey默認(rèn)關(guān)聯(lián)產(chǎn)品下的所有設(shè)備,即具有訪問該產(chǎn)品下所有設(shè)備信息和設(shè)備數(shù)據(jù)的最高權(quán)限. 對(duì)于每一個(gè)設(shè)備,用戶可以自行創(chuàng)建并關(guān)聯(lián)APIKey,但是其形式只能由OneNET平臺(tái)分配而不能自定義,該設(shè)備APIKey只具有訪問與其相關(guān)聯(lián)設(shè)備的權(quán)限,對(duì)于其他設(shè)備沒有訪問權(quán)限. 這種權(quán)限分級(jí)的設(shè)計(jì)可以有效地對(duì)設(shè)備的數(shù)據(jù)信息進(jìn)行分類和分級(jí),為實(shí)現(xiàn)設(shè)備數(shù)據(jù)信息的分類保護(hù)提供了基礎(chǔ). 用戶可以使用觸發(fā)器實(shí)現(xiàn)對(duì)數(shù)據(jù)的監(jiān)控,在發(fā)生某些意外情況時(shí)向用戶發(fā)送告警通知.OneNET支持手機(jī)短信,郵件和URL地址3種通知方式.
圖2 資源模型組織架構(gòu)形式
RESTful API[15,16]是一種使用HTTP協(xié)議并符合REST風(fēng)格的Web API. 數(shù)據(jù)管理平臺(tái)需要通過RESTful API的方式和OneNET平臺(tái)進(jìn)行交互,獲取云端數(shù)據(jù)保存在本地并且進(jìn)行進(jìn)一步的管理和分析. 具體來講,資源模型中的單個(gè)資源或者一組資源都具有各自的URL作為從外部訪問該資源的接口,第三方應(yīng)用可以通過GET,PUT,POST,DELETE這4種HTTP請求方法分別對(duì)資源進(jìn)行查詢,更新,新建和刪除操作[16].
以終端設(shè)備的接入?yún)f(xié)議為MODBUS為例,新建設(shè)備的URL為“http(s)://api.heclouds.com/devices”,HTTP請求方式為POST,HTTP頭部參數(shù)名稱為“apikey”,值為前文所述OneNET分配的的默認(rèn)APIKey,請求參數(shù)及其說明如表1所示.
表1 HTTP請求參數(shù)說明
OneNET平臺(tái)返回的參數(shù)一般包括errno,error和data分別表示調(diào)用錯(cuò)誤代碼,錯(cuò)誤描述和請求的資源信息如查詢的數(shù)據(jù),設(shè)備的狀態(tài)等.
為提高資源傳輸速率,發(fā)送的請求和接收到的響應(yīng)都通過JSON[17]類型傳輸. 例如新建一個(gè)名稱為“example”,地理位置信息為東經(jīng)106度,北緯40度,鑒權(quán)信息為“xxx123”的設(shè)備,其請求參數(shù)JSON格式應(yīng)為:
工業(yè)互聯(lián)網(wǎng)通過網(wǎng)絡(luò)解除了設(shè)備之間的空間距離限制,匯聚了大量的工業(yè)數(shù)據(jù),只有對(duì)這些紛繁的數(shù)據(jù)進(jìn)行條理清晰,層次分明的結(jié)構(gòu)化管理才能有效保障數(shù)據(jù)信息的安全,同時(shí)也能提高工作效率. 但是數(shù)據(jù)管理平臺(tái)作為人與數(shù)據(jù)交互的主要途徑,具有接觸人員數(shù)量較多,人員類型復(fù)雜的特點(diǎn),因此需要在滿足管理需求的情況下加強(qiáng)數(shù)據(jù)信息的保護(hù). 本文基于Qt開發(fā)框架對(duì)數(shù)據(jù)管理平臺(tái)進(jìn)行開發(fā). 圖3為數(shù)據(jù)管理平臺(tái)的整體架構(gòu)圖,平臺(tái)包含數(shù)據(jù)庫和交互界面兩部分,這兩部分通過模型-視圖框架進(jìn)行結(jié)合,在滿足數(shù)據(jù)管理需求的同時(shí),根據(jù)用戶信息對(duì)數(shù)據(jù)操作權(quán)限和數(shù)據(jù)可訪問范圍進(jìn)行分級(jí)和限制,實(shí)現(xiàn)對(duì)數(shù)據(jù)信息的保護(hù).
圖3 數(shù)據(jù)管理平臺(tái)整體架構(gòu)
Qt中的QtSql模塊提供了對(duì)數(shù)據(jù)庫的支持,同時(shí)也包含QtNetwork和QJsonObject[18,19]等模塊可以進(jìn)行基于HTTP的網(wǎng)絡(luò)通信和JSON對(duì)象處理,因此可以很方便地調(diào)用OneNET的API獲取云端數(shù)據(jù),并進(jìn)行解析和存儲(chǔ).
為了對(duì)數(shù)據(jù)進(jìn)行結(jié)構(gòu)化管理,本文設(shè)計(jì)了工廠,廠房,設(shè)備組,設(shè)備四個(gè)級(jí)別的數(shù)據(jù)標(biāo)識(shí),對(duì)每一條數(shù)據(jù)都將根據(jù)其標(biāo)識(shí)進(jìn)行分類歸納存儲(chǔ). 如圖3所示,虛線框中顯示了數(shù)據(jù)及其標(biāo)識(shí)之間的關(guān)系,每一個(gè)數(shù)據(jù)標(biāo)識(shí)對(duì)應(yīng)一個(gè)數(shù)據(jù)表,數(shù)據(jù)表中存儲(chǔ)了標(biāo)識(shí)的編號(hào),創(chuàng)建時(shí)間等詳細(xì)信息,表2列出了各個(gè)數(shù)據(jù)標(biāo)識(shí)及其存儲(chǔ)在數(shù)據(jù)表中的信息.
表2 來源標(biāo)識(shí)數(shù)據(jù)表信息
表2中所列出的數(shù)據(jù)標(biāo)識(shí)相關(guān)信息為“是”表示對(duì)應(yīng)的數(shù)據(jù)表存儲(chǔ)了該信息,“否”表示不含有該信息. 經(jīng)緯度信息用于在界面地圖中標(biāo)注,具體內(nèi)容參考2.2.1節(jié). 各級(jí)別的標(biāo)識(shí)根據(jù)編號(hào)建立聯(lián)系,例如某廠房的“父項(xiàng)編號(hào)”即為該廠房所在工廠的編號(hào),而工廠有可能含有多個(gè)廠房,其含有廠房的數(shù)量用“子項(xiàng)數(shù)量”表示. “狀態(tài)”體現(xiàn)了隸屬該標(biāo)識(shí)的所有設(shè)備的運(yùn)行情況,分為正常和異常兩種,所有設(shè)備正常運(yùn)行時(shí)狀態(tài)信息為正常,而只要有一個(gè)設(shè)備發(fā)生了數(shù)據(jù)異?;蛘唠x線等異常情況時(shí)狀態(tài)信息變?yōu)楫惓?,此時(shí)可根據(jù)各級(jí)別標(biāo)識(shí)的狀態(tài)信息逐級(jí)查找異常設(shè)備.
除了以上用于存儲(chǔ)數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)表,數(shù)據(jù)庫還需要存儲(chǔ)從OneNET獲得的設(shè)備數(shù)據(jù)信息以及用戶的用戶名和密碼等信息. 設(shè)備的數(shù)據(jù)信息數(shù)據(jù)量龐大,是數(shù)據(jù)庫的主要部分,通過定時(shí)向OneNET發(fā)送查詢請求獲得,數(shù)據(jù)內(nèi)容由不同的工業(yè)過程和設(shè)備決定.
用戶數(shù)據(jù)表包含用戶名,密碼,APIKey和權(quán)限等級(jí)四項(xiàng)內(nèi)容,用戶名和密碼用于登錄平臺(tái),APIKey用作向OneNET發(fā)送請求的頭部參數(shù)值,所以APIKey的權(quán)限大小決定了該用戶所能查詢的數(shù)據(jù)范圍,通過這種方法可以將不同種類的設(shè)備與不同種類的用戶一一對(duì)應(yīng),使得用戶只能對(duì)自己權(quán)利范圍內(nèi)的數(shù)據(jù)進(jìn)行操作和管理,而無法獲取其他設(shè)備的數(shù)據(jù)信息,從而有效防止設(shè)備信息泄露. 權(quán)限等級(jí)則用來對(duì)用戶的操作方式進(jìn)行權(quán)限劃分,等級(jí)從高到低分別為管理員,高級(jí)用戶和普通用戶. 各等級(jí)用戶的權(quán)限及其關(guān)系如圖4所示. 高等級(jí)用戶可以對(duì)低等級(jí)用戶進(jìn)行創(chuàng)建和刪除等管理操作,不同等級(jí)用戶擁有不同的數(shù)據(jù)訪問權(quán)限.
交互界面主要有3種:(1) 是數(shù)據(jù)顯示界面,包含工廠界面,廠房界面,設(shè)備組界面,設(shè)備界面和設(shè)備數(shù)據(jù)界面,分別對(duì)應(yīng)顯示設(shè)備數(shù)據(jù)的4個(gè)來源標(biāo)識(shí)信息和數(shù)據(jù)信息; (2) 是操作界面,作為對(duì)數(shù)據(jù)庫進(jìn)行操作的交互接口; (3) 是用戶登錄和注冊界面,用于用戶登錄或者創(chuàng)建新用戶.
2.2.1 顯示界面
主界面如圖5所示,其中圖5(a)是管理員登錄后的主界面,圖5(b)是普通用戶登錄后的主界面. 界面由標(biāo)題欄,菜單欄,工具欄,主窗口和狀態(tài)欄組成. 如圖 5中,菜單欄包含所有功能菜單,工具欄包含菜單欄中一些常用操作的快捷方式,如“主頁”,“定位”,“刷新”等. 狀態(tài)欄顯示了登錄用戶的類別以及網(wǎng)絡(luò)連 接狀態(tài). 主窗口是基于數(shù)據(jù)表格和地圖的工廠信息管理界面,主窗口左側(cè)表格用于顯示所有工廠的名稱,可以通過表格“右鍵菜單-屬性”查看工廠的詳細(xì)信息.
為了實(shí)現(xiàn)用戶的權(quán)限分級(jí),應(yīng)針對(duì)不同級(jí)別的用戶設(shè)計(jì)不同的交互界面. 管理員和高級(jí)用戶具有高于普通用戶的操作權(quán)限,對(duì)比圖5中兩幅圖的工具欄可以發(fā)現(xiàn)管理員比普通用戶擁有更多的操作接口,具體包括“創(chuàng)建用戶”,“添加”,“刪除”和“修改”操作,同樣的,在菜單欄中也進(jìn)行了相應(yīng)權(quán)限的劃分. 在數(shù)據(jù)范圍方面,管理員的APIKey可以訪問所有設(shè)備信息,而普通用戶只能訪問部分權(quán)利范圍內(nèi)的設(shè)備信息. 假設(shè)所有工廠包括工廠A-J,其中工廠A-F為普通工廠,其余工廠為機(jī)密性工廠且不允許普通用戶查看,基于此假設(shè)對(duì)管理員和普通用戶的APIKey進(jìn)行設(shè)備關(guān)聯(lián)并測試登錄效果,結(jié)果如圖5所示,圖5(a)所示管理員登錄后可以訪問所有工廠信息,圖5(b)所示普通用戶只能訪問普通工廠信息. 需要說明的是用戶可訪問的數(shù)據(jù)范圍并不是根據(jù)用戶的級(jí)別確定的,而是在創(chuàng)建用戶時(shí)指定的(參考2.2.3節(jié)),即同樣是普通用戶其可訪問的數(shù)據(jù)范圍也是存在差異的,這樣能夠提高權(quán)限劃分的靈活性.
地圖顯示是通過Qt的QWebChannel[18]模塊調(diào)用百度地圖JavaScript API[20,21]來實(shí)現(xiàn)的,該API提供了豐富的函數(shù)接口,不僅可以顯示地圖,還可以進(jìn)行標(biāo)注,設(shè)置視圖范圍,導(dǎo)航等基于地圖的操作. 地圖中顯示的工廠標(biāo)注和表格中的工廠一一對(duì)應(yīng),如果某工廠的設(shè)備出現(xiàn)了異常狀態(tài),地圖圖標(biāo)會(huì)由“水滴”變?yōu)椤案袊@號(hào)”,如圖5主窗口地圖中的左上方所示,此時(shí)可以通過地圖標(biāo)注的“右鍵菜單-在表格中位置”來選中表格中對(duì)應(yīng)的異常工廠,如果需要從表格中找到相應(yīng)的地圖標(biāo)注,可以單擊表格中的某一工廠,此時(shí)地圖中的對(duì)應(yīng)圖標(biāo)會(huì)變?yōu)樯舷萝S動(dòng)的動(dòng)態(tài)圖標(biāo). 雙擊表格中的某一工廠或者地圖中的工廠圖標(biāo)可以打開該工廠的廠房界面.
圖6為某工廠E的詳細(xì)信息. 主窗口右側(cè)地圖界面用于顯示地圖并根據(jù)工廠經(jīng)緯度信息在地圖中標(biāo)注.主窗口內(nèi)的搜索框用于對(duì)地圖內(nèi)關(guān)鍵字進(jìn)行搜索,需連接互聯(lián)網(wǎng),而工具欄的搜索用于本地?cái)?shù)據(jù)庫的關(guān)鍵字搜索,可在離線狀態(tài)下使用.
圖6 某工廠E詳細(xì)信息
圖7所示為某工廠E的廠房界面示例,其中包含了該工廠的工廠名和所有的廠房信息,以圖標(biāo)和文字的形式顯示,并對(duì)顯示格式進(jìn)行了簡單的渲染(參考2.3節(jié)). 類似的,通過雙擊的方式還可以逐級(jí)打開設(shè)備組界面,設(shè)備界面和設(shè)備數(shù)據(jù)界面,設(shè)備組界面和設(shè)備界面形式類似廠房界面,只是作為不同級(jí)別的數(shù)據(jù)標(biāo)識(shí),其顯示的信息內(nèi)容不同. 設(shè)備數(shù)據(jù)界面以表格的形式呈現(xiàn)所有設(shè)備數(shù)據(jù),并且會(huì)隨著平臺(tái)與OneNET的數(shù)據(jù)傳輸不斷更新來實(shí)時(shí)顯示數(shù)據(jù)內(nèi)容,歷史數(shù)據(jù)則保存在數(shù)據(jù)庫中,歷史數(shù)據(jù)的可查詢時(shí)間范圍也可以根據(jù)用戶級(jí)別進(jìn)行自定義劃分. 使用工具欄中的“主頁”,“向前”,“向后”可以靈活地進(jìn)行不同級(jí)別數(shù)據(jù)標(biāo)識(shí)顯示界面的切換.
2.2.2 數(shù)據(jù)操作界面
用戶對(duì)數(shù)據(jù)進(jìn)行操作時(shí)需要通過操作界面進(jìn)行信息交互,如填寫想要查詢的設(shè)備ID,新建設(shè)備的名稱.在顯示界面已經(jīng)對(duì)數(shù)據(jù)操作接口進(jìn)行了權(quán)限分級(jí),這里以管理員權(quán)限為例介紹數(shù)據(jù)操作界面.
數(shù)據(jù)操作主要包括設(shè)備數(shù)據(jù)和各級(jí)數(shù)據(jù)標(biāo)識(shí)的新建,查詢,刪除和修改操作. 由于本地?cái)?shù)據(jù)結(jié)構(gòu)和OneNET端的存儲(chǔ)結(jié)構(gòu)是保持統(tǒng)一的,兩者之間通過“設(shè)備”這一數(shù)據(jù)標(biāo)識(shí)進(jìn)行數(shù)據(jù)信息的對(duì)接,即圖2資源模型中的一個(gè)設(shè)備對(duì)應(yīng)圖3數(shù)據(jù)結(jié)構(gòu)中的的一個(gè)設(shè)備,資源模型中的設(shè)備數(shù)據(jù)對(duì)應(yīng)本地?cái)?shù)據(jù)庫中的設(shè)備數(shù)據(jù)表,所以在進(jìn)行數(shù)據(jù)操作時(shí)也要保證進(jìn)行本地?cái)?shù)據(jù)庫和OneNET端的數(shù)據(jù)內(nèi)容相統(tǒng)一,例如在刪除某一數(shù)據(jù)標(biāo)識(shí)時(shí),會(huì)刪除該標(biāo)識(shí)以及其下屬級(jí)別的所有數(shù)據(jù)標(biāo)識(shí)和數(shù)據(jù)信息,同時(shí)也需要?jiǎng)h除OneNET端屬于該標(biāo)識(shí)的設(shè)備和數(shù)據(jù)信息.
新建工廠時(shí)需要指定工廠的地理位置和名稱,為方便確認(rèn)地理位置,在執(zhí)行該操作時(shí)需結(jié)合工廠顯示界面的地圖,首先在地圖中定位需要新建工廠的地理位置,然后單擊該點(diǎn),獲得該點(diǎn)的經(jīng)緯度信息并顯示在彈出的新建工廠操作界面中,如圖8所示,然后輸入新建工廠的名稱,最后關(guān)閉界面,平臺(tái)會(huì)自動(dòng)獲取系統(tǒng)當(dāng)前時(shí)刻的具體時(shí)間并根據(jù)工廠數(shù)據(jù)表中工廠的數(shù)量確定新建工廠的編號(hào),一起保存在工廠數(shù)據(jù)表中.
圖7 某工廠E的廠房界面
圖8 新建工廠操作界面
新建設(shè)備的操作界面如圖9所示,首先需要選擇設(shè)備的來源標(biāo)識(shí),如果數(shù)據(jù)庫中沒有保存所需的來源標(biāo)識(shí),應(yīng)先在本地?cái)?shù)據(jù)庫中新建各級(jí)來源標(biāo)識(shí),然后在新建設(shè)備操作界面中選擇相應(yīng)的標(biāo)識(shí). 確定標(biāo)識(shí)后需要輸入設(shè)備名稱和鑒權(quán)信息,對(duì)于表1中非必須的參數(shù)暫時(shí)沒有設(shè)置輸入接口,可根據(jù)實(shí)際需求進(jìn)行添加.信息輸入完成后平臺(tái)會(huì)向OneNET端發(fā)送新建設(shè)備的POST請求并獲取OneNET端返回的設(shè)備ID,然后把新設(shè)備的所有信息保存在設(shè)備數(shù)據(jù)表中,并提示設(shè)備新建成功,在OneNET端新建成功的設(shè)備信息如圖10所示.
圖9 新建設(shè)備操作界面
圖10 OneNET端設(shè)備信息
用戶能夠通過新建觸發(fā)器來確定觸發(fā)通知的條件,實(shí)現(xiàn)對(duì)數(shù)據(jù)的實(shí)時(shí)監(jiān)控. 刪除和修改操作可以直接通過目標(biāo)項(xiàng)目右鍵菜單中的刪除和修改來執(zhí)行操作,也可通過相應(yīng)操作界面中的下拉列表逐級(jí)查找目標(biāo)項(xiàng)目來進(jìn)行刪除和修改操作. 為保護(hù)原始數(shù)據(jù),修改操作無法對(duì)設(shè)備數(shù)據(jù)和來源標(biāo)識(shí)的創(chuàng)建時(shí)間,狀態(tài)等固有屬性進(jìn)行修改,只能修改名稱,經(jīng)緯度等可變信息. 查詢操作可以通過關(guān)鍵字進(jìn)行本地?cái)?shù)據(jù)庫搜索和地圖內(nèi)的關(guān)鍵字搜索,也可以通過查詢操作界面輸入對(duì)應(yīng)參數(shù)向OneNET發(fā)送查詢請求獲取查詢結(jié)果.
2.2.3 登錄和注冊界面
登錄界面用于用戶登錄時(shí)輸入用戶名,密碼和用戶類別,并根據(jù)用戶數(shù)據(jù)表信息給出“登陸成功”,“用戶名不存在”,“密碼錯(cuò)誤”的提示信息. 如圖11所示為用戶登錄界面.
圖11 用戶登錄界面
為了保護(hù)數(shù)據(jù)信息安全,盡量減少不必要的用戶數(shù)量,創(chuàng)建用戶的權(quán)限也進(jìn)行了劃分,管理員用戶可以創(chuàng)建所有級(jí)別的用戶,高級(jí)用戶可以創(chuàng)建普通用戶,普通用戶不能創(chuàng)建新的用戶,如圖12所示為管理員權(quán)限的創(chuàng)建用戶界面.
創(chuàng)建用戶時(shí)需要輸入用戶名和密碼,選擇用戶類型并添加允許該用戶訪問的設(shè)備. 添加完成后平臺(tái)將所添加設(shè)備的ID作為請求參數(shù)向OneNET發(fā)送新建APIKey的POST請求,OneNET會(huì)新建一個(gè)APIKey,并將其與添加的所有設(shè)備建立關(guān)聯(lián),然后返回給數(shù)據(jù)管理平臺(tái)作為新用戶的APIKey,這樣就劃定了新用戶能訪問設(shè)備信息的范圍.
MVC[22](Model-View-Controller)是一種常用于創(chuàng)建用戶界面的設(shè)計(jì)模式,包含3個(gè)組件:模型,視圖和控制,分別用來表示數(shù)據(jù),顯示數(shù)據(jù)和操作數(shù)據(jù). 在Qt中將視圖和控制兩種組件結(jié)合形成了模型-視圖架構(gòu),將數(shù)據(jù)的存儲(chǔ)和數(shù)據(jù)的顯示進(jìn)行分離,能夠更加方便地對(duì)數(shù)據(jù)進(jìn)行顯示和操作,同時(shí)為了對(duì)用戶輸入進(jìn)行靈活處理,Qt還引入了代理(Delegate)的概念,以此來優(yōu)化數(shù)據(jù)顯示[18]. 模型-視圖的架構(gòu)如圖13所示.
前文所述工廠等數(shù)據(jù)表即為圖13中的數(shù)據(jù),為了更加方便地訪問基于表格結(jié)構(gòu)的數(shù)據(jù),在本文中使用了QSqlTableModel作為數(shù)據(jù)模型,而對(duì)于視圖分別使用了QWebEngineView,QTableView和QListView等多種視圖進(jìn)行顯示,分別如圖5右側(cè)地圖和左側(cè)表格以及圖7所示,其中圖7是使用代理渲染的圖標(biāo)列表視圖.
圖12 注冊用戶界面
圖13 模型-視圖架構(gòu)
本文基于物聯(lián)網(wǎng)開放平臺(tái)OneNET設(shè)計(jì)并實(shí)現(xiàn)了一套用于PC端的工業(yè)互聯(lián)網(wǎng)數(shù)據(jù)管理平臺(tái),在設(shè)計(jì)過程中著重考慮了可能發(fā)生的人為數(shù)據(jù)泄漏和破壞問題,結(jié)合OneNET的APIKey權(quán)限分類方法針對(duì)每個(gè)用戶獨(dú)立地進(jìn)行數(shù)據(jù)訪問范圍上的劃分,通過交互界面多級(jí)設(shè)計(jì)的方法實(shí)現(xiàn)用戶數(shù)據(jù)操作權(quán)限的分級(jí),建立了數(shù)據(jù)的異常監(jiān)控報(bào)警機(jī)制,在發(fā)生異常情況時(shí)能夠及時(shí)向用戶發(fā)送告警通知. 整個(gè)流程可為加強(qiáng)工業(yè)互聯(lián)網(wǎng)終端平臺(tái)搭建過程中的信息安全保障提供參照. 除此之外,本文實(shí)現(xiàn)了基于百度地圖的地理位置信息管理和設(shè)備數(shù)據(jù)的結(jié)構(gòu)化管理方式,使得交互界面更加友好,方便數(shù)據(jù)的分析和建模工作. 在接下來的工作中,為進(jìn)一步加強(qiáng)數(shù)據(jù)信息安全保護(hù),可以結(jié)合比較成熟的生物特征識(shí)別算法加強(qiáng)用戶信息認(rèn)證的安全性,同時(shí)考慮到數(shù)據(jù)信息中可能包含個(gè)人敏感信息,在后續(xù)工作中會(huì)對(duì)數(shù)據(jù)進(jìn)行脫敏處理,保障信息安全.