景 旭 馬 蓓
(西北農(nóng)林科技大學 信息工程學院,陜西 楊凌 712100)
智能溫室群數(shù)據(jù)共享及決策是指溫室群中的智能控制系統(tǒng)工作過程中不同設備和控制系統(tǒng)之間交互數(shù)據(jù)的共享,以及在共享的基礎上進一步做出決策,可以使得溫室群中的數(shù)據(jù)得到合理的利用。不同溫室內的物聯(lián)網(wǎng)設備實現(xiàn)數(shù)據(jù)共享獲取統(tǒng)一的決策標準,能夠更加精準的控制溫室內的環(huán)境。智能溫室群的數(shù)據(jù)共享及決策可以為作物提供更優(yōu)的生長環(huán)境[1],實現(xiàn)高效、連續(xù)的生產(chǎn)從而提高土地的利用率,并且可以使總體控制系統(tǒng)參照全局數(shù)據(jù)實現(xiàn)整體控制,避免了因為局部數(shù)據(jù)的局限做出不適宜作物生長的決策。智能溫室群的數(shù)據(jù)共享及決策能夠提升溫室群的工作效率,提高作物的質量及產(chǎn)量,符合綠色發(fā)展的理念,具有重要的研究意義。
傳統(tǒng)的農(nóng)業(yè)物聯(lián)網(wǎng)通過建立管理設備的控制系統(tǒng)實現(xiàn)數(shù)據(jù)的共享。例如,在單溫室內設計分布式多源農(nóng)林物聯(lián)網(wǎng)感知數(shù)據(jù)共享平臺[2]、環(huán)境信息采集和發(fā)布系統(tǒng)[3]、溫室智能監(jiān)控系統(tǒng)[4]、溫室信息管理系統(tǒng)[5]、溫度場監(jiān)測系統(tǒng)[6]和分區(qū)灌溉系統(tǒng)[7],和提出溫室環(huán)境相關活動自動化優(yōu)化方案[8]、數(shù)據(jù)預處理和決策融合方法[9]等對農(nóng)業(yè)物聯(lián)網(wǎng)數(shù)據(jù)進行共享。在溫室群中建立溫室群雙模糊調控系統(tǒng)[10]、溫室群監(jiān)控系統(tǒng)軟件[11]、溫室群環(huán)境遠程監(jiān)控系統(tǒng)[12],設計物聯(lián)網(wǎng)群控終端變量協(xié)調控制方法[13],實現(xiàn)對溫室群的管控。現(xiàn)有文獻可以看出,目前無論是單個溫室還是溫室群數(shù)據(jù)在共享過程中,數(shù)據(jù)管理均存在超級管理員,具有任意篡改原始數(shù)據(jù)的權限,導致共享數(shù)據(jù)和決策結果不可信;在各個控制系統(tǒng)內,設備對決策的執(zhí)行情況無法驗證,不能準確判斷設備工作狀態(tài)。
聯(lián)盟鏈[14]是僅對特定的組織團體開放的區(qū)塊鏈[15]系統(tǒng),主要特點是共識[16]過程受到預選節(jié)點的控制,其數(shù)據(jù)可能允許所有用戶可讀,也可能只允許受限于參與者讀取。在結構上,聯(lián)盟鏈采用“部分去中心化”的方式,將節(jié)點運行在組成聯(lián)盟共同體的有限數(shù)量機構中[17]。聯(lián)盟鏈由聯(lián)盟成員機構共同維護,聯(lián)盟節(jié)點通過成員機構的網(wǎng)關節(jié)點接入,并且聯(lián)盟鏈具有防篡改性、可追溯性的特點,因此適用于智能溫室群物聯(lián)網(wǎng)多成員機構動態(tài)數(shù)據(jù)的存儲、管理[18]。
針對上述問題,本研究擬采用聯(lián)盟鏈實現(xiàn)智能溫室群的數(shù)據(jù)共享及決策協(xié)同,以期解決溫室群中數(shù)據(jù)共享不可信以及決策執(zhí)行情況無法驗證的問題,保證溫室數(shù)據(jù)的可信共享以及決策執(zhí)行結果的真實性。
單智能溫室控制系統(tǒng)以獨立溫室的自動控制為主,主要關注局域環(huán)境的自動調控,缺乏多智能溫室集中控制,缺少局域環(huán)境間的信息交換。它的調控機制一般是比較死板的程式化設置參數(shù),缺少基于專家知識、針對具體作物生理特點和生長規(guī)律的靈活調控。
智能溫室群是由數(shù)個智能溫室組成的群體,可跨智能溫室交換信息,在培育同一種作物的狀態(tài)下,不同溫室之間產(chǎn)生的環(huán)境數(shù)據(jù)和決策數(shù)據(jù)可相互作為信息源,為總體控制提供全面的數(shù)據(jù)依據(jù),使溫室內的環(huán)境控制做決策時更具有準確性,從而提高溫室管理效率。多個溫室在一個整體區(qū)域內分布,溫室群分布要使各個溫室盡可能的光照分布均勻、間距合適、方位合理[19]。在溫室分布合理的基礎上,需要各個溫室單獨控制溫室內環(huán)境,即每個智能溫室內都有獨立的控制系統(tǒng),控制系統(tǒng)主要由一些控制裝置、傳感器[20]以及邊緣服務器整體聯(lián)動構成。每個邊緣服務器將傳感器采集到的數(shù)據(jù)收集起來,作為決策的基礎。根據(jù)做出的決策,邊緣服務器發(fā)送命令至控制裝置,最終達到調控環(huán)境的目的。通過建立智能溫室群,在空間結構上可以解決獨立管理復雜的問題。但是智能溫室群數(shù)據(jù)共享時可能會存在數(shù)據(jù)不可信的問題,會導致協(xié)同決策結果不可信,不能為作物提供最優(yōu)的生長環(huán)境;也可能會出現(xiàn)決策結果沒有協(xié)同執(zhí)行,影響溫室群的總體調控效果。
借助聯(lián)盟鏈的數(shù)據(jù)防篡改性、強共識性保障數(shù)據(jù)高度可信等特點,本研究將單個智能溫室的邊緣服務器作為節(jié)點,以智能溫室群組成聯(lián)盟鏈,實現(xiàn)聯(lián)盟鏈在智能溫室群內共享數(shù)據(jù),保證數(shù)據(jù)可信;聯(lián)盟鏈上存儲一段時間內環(huán)境數(shù)據(jù)的散列,將完整的數(shù)據(jù)匯聚到數(shù)據(jù)決策方,平衡了數(shù)據(jù)可信與環(huán)境數(shù)據(jù)上鏈存儲量過大的矛盾;在可信數(shù)據(jù)集上基于人工神經(jīng)網(wǎng)絡的決策結果更加全面和準確;基于聯(lián)盟鏈決策協(xié)同的執(zhí)行過程,保證智能溫室群精準控制,構建基于聯(lián)盟鏈的智能溫室群數(shù)據(jù)共享與決策協(xié)同方案。
本研究每個溫室內的邊緣服務器按角色劃分為數(shù)據(jù)提供方和決策分析方。按照邊緣服務器的角色和數(shù)據(jù)決策方為節(jié)點搭建聯(lián)盟鏈網(wǎng)絡,形成智能溫室群聯(lián)盟鏈網(wǎng)絡的總體框架見圖1。
圖1 智能溫室群聯(lián)盟鏈網(wǎng)絡的總體框架Fig.1 General frame of consortium blockchain network of the intelligent greenhouse group
1)傳感器:主要包括土壤溫濕度傳感器、空氣溫濕度傳感器、二氧化碳傳感器、光照強度傳感器等,與對應的邊緣服務器連接,主要是用于采集智能溫室環(huán)境信息。
2)控制裝置:主要包括風機、濕簾、灌溉、遮陽、溫控、天窗等裝置,主要用于控制智能溫室改變環(huán)境的狀態(tài)。
3)數(shù)據(jù)提供方:集中采集類傳感器采集的數(shù)據(jù),為數(shù)據(jù)決策方提供數(shù)據(jù)。
4)數(shù)據(jù)決策方:利用數(shù)據(jù)提供方的歷史數(shù)據(jù)離線訓練決策模型;根據(jù)最近的環(huán)境數(shù)據(jù),基于訓練好的模型做出決策。
5)決策執(zhí)行方:執(zhí)行數(shù)據(jù)決策方的決策結果,調動控制裝置執(zhí)行。
6)聯(lián)盟鏈網(wǎng)絡:以數(shù)據(jù)提供方、數(shù)據(jù)決策方以及決策分析方作為聯(lián)盟鏈節(jié)點,形成聯(lián)盟鏈網(wǎng)絡。聯(lián)盟鏈網(wǎng)絡中記錄了智能溫室群中不同節(jié)點間的交互日志[21]。
7)智能合約[22]:一系列部署在區(qū)塊鏈上模塊化、可重用、自動執(zhí)行的鏈上代碼。數(shù)據(jù)提供方、模型訓練方和決策分析方通過調用智能合約在聯(lián)盟鏈中存儲或獲取數(shù)據(jù)。
基于聯(lián)盟鏈的智能溫室群數(shù)據(jù)共享及決策協(xié)同的交互過程是數(shù)據(jù)提供方、數(shù)據(jù)決策方及決策分析方在聯(lián)盟鏈網(wǎng)絡中調用各類智能合約對數(shù)據(jù)進行操作。數(shù)據(jù)提供方將數(shù)據(jù)摘要上鏈,為數(shù)據(jù)決策方提供數(shù)據(jù)源可驗證的依據(jù)。數(shù)據(jù)決策方將決策數(shù)據(jù)摘要上鏈以便于決策分析方從鏈上獲取可驗證的決策結果,發(fā)送至控制裝置實現(xiàn)控制。決策分析方將執(zhí)行狀態(tài)數(shù)據(jù)及哈希值上鏈以便于驗證決策結果執(zhí)行的真實性?;诼?lián)盟鏈的智能溫室群數(shù)據(jù)交互流程如下:
1)各類傳感器采集溫室內的環(huán)境數(shù)據(jù)后,傳送到本溫室的數(shù)據(jù)提供方,如圖2中的①所示。
2)數(shù)據(jù)提供方調用存儲數(shù)據(jù)的智能合約將自身數(shù)據(jù)資源的摘要存儲到聯(lián)盟鏈上;聯(lián)盟鏈向數(shù)據(jù)提供方返回摘要的存儲地址。數(shù)據(jù)摘要包含邊緣服務器編號、哈希生成時間、哈希值A,如圖2中的②所示。
3)數(shù)據(jù)決策方接收到數(shù)據(jù)提供方提供的數(shù)據(jù),使用SHA256散列函數(shù)生成哈希值B;同時,從聯(lián)盟鏈中獲取相同數(shù)據(jù)存儲在鏈上的哈希值A;將A與B比對一致的數(shù)據(jù)存儲到數(shù)據(jù)決策方的本地數(shù)據(jù)庫;數(shù)據(jù)決策方利用本地數(shù)據(jù)庫的數(shù)據(jù)訓練決策模型。
4)數(shù)據(jù)決策方利用數(shù)據(jù)提供方發(fā)送最近的環(huán)境數(shù)據(jù)傳入決策模型輸出決策結果,利用SHA256生成散列值,調用存儲決策數(shù)據(jù)摘要的智能合約將數(shù)據(jù)存儲到聯(lián)盟鏈上,如圖2中的③所示。
5)決策數(shù)據(jù)摘要存儲到聯(lián)盟鏈后,各決策分析方從聯(lián)盟鏈上獲取決策數(shù)據(jù)摘要并分析,將分析后的數(shù)據(jù)發(fā)送至控制裝置,如圖2中的④所示。
6)控制裝置按照接收的分析結果執(zhí)行指令,執(zhí)行狀態(tài)發(fā)生變化,向決策分析方返回當前執(zhí)行狀態(tài);決策分析方調用存儲狀態(tài)數(shù)據(jù)的智能合約將返回的執(zhí)行狀態(tài)存儲到聯(lián)盟鏈上,保證決策結果的執(zhí)行的可信性,如圖2中的⑤所示。
圖2 基于聯(lián)盟鏈的智能溫室群數(shù)據(jù)交互流程Fig.2 Data interaction process of intelligent greenhouse group on consortium blockchain
智能溫室群中,每個邊緣服務器對應不同的溫室,邊緣服務器記為ESi,i為邊緣服務器的編號,i∈Z。在每個邊緣服務器下層,連接著各種類型的傳感器和控制裝置??刂蒲b置標記如下:風機SDF、濕簾SWP、灌溉SRW、遮陽SSU、溫控STR、天窗SSK。
考慮到各類傳感器采集環(huán)境數(shù)據(jù)的頻率不同,對邊緣服務器設定合理的存儲數(shù)據(jù)的時間間隔,使數(shù)據(jù)提供方可以周期性地將數(shù)據(jù)摘要存儲到鏈上。邊緣服務器既是數(shù)據(jù)提供方又是決策分析方,則數(shù)據(jù)提供方可以提供決策分析方的決策結果。數(shù)據(jù)提供方的基礎數(shù)據(jù)項包括服務器編號、傳感器編號、采集時間、采集數(shù)據(jù)和決策結果。采集數(shù)據(jù)的數(shù)據(jù)項包括空氣溫度、空氣濕度、二氧化碳濃度、光照強度、土壤濕度及土壤溫度等。決策結果包括控制裝置的類型和執(zhí)行動作。數(shù)據(jù)提供方以設定時間段內的數(shù)據(jù)為一批次,借助于SHA256散列函數(shù)生成哈希值,記為哈希值A,并且記錄生成哈希值的時間,記為T。數(shù)據(jù)提供方為了保證自身數(shù)據(jù)可驗證,以key-value的形式將數(shù)據(jù)摘要上鏈,key值設定為邊緣服務器編號ESi拼接哈希生成時間T,value值設定為哈希值A。數(shù)據(jù)提供方數(shù)據(jù)存儲流程如圖3所示。
圖3 數(shù)據(jù)提供方數(shù)據(jù)存儲流程Fig.3 Data storage procedure of the data provider
1.5.1數(shù)據(jù)準備
數(shù)據(jù)決策方接收到數(shù)據(jù)提供方發(fā)送的基礎環(huán)境數(shù)據(jù)和哈希生成時間(數(shù)據(jù)決策方標記為MT),利用SHA256散列函數(shù)生成哈希值B,并且根據(jù)數(shù)據(jù)提供方邊緣服務器編號和提供的哈希生成時間作為key值,從鏈上獲得相匹配的value值即哈希值A。數(shù)據(jù)決策方比對哈希值A和B,若比對成功,將數(shù)據(jù)提供方發(fā)送的數(shù)據(jù)保存至數(shù)據(jù)決策方的本地數(shù)據(jù)庫;否則,不接受數(shù)據(jù),以此保證數(shù)據(jù)的可信性。
1.5.2決策模型
人工神經(jīng)網(wǎng)絡[23]是基于現(xiàn)代神經(jīng)網(wǎng)絡對生物神經(jīng)網(wǎng)絡的研究抽象所得的運算模型,具有良好的自適應和自學習能力[24],可以很好地處理非線性問題。通常包含3層結構:輸入層、隱藏層、輸出層。輸入層輸入向量為X=(x1,x2,…,xn)T;隱藏層輸出向量為H=(h1,h2,…,hm)T;輸出層輸出向量為O=(o1,o2,…,oi)T。輸入層到隱藏層之間的權值用wij表示,閾值用vj表示;隱含層到輸出層之間的權值用wjk表示,閾值用vk表示。具體人工神經(jīng)網(wǎng)絡示意圖見圖4。
x1,x2,…,xn為輸入層輸入向量X的元素;h1,h2,…,hm為隱藏層輸出向量H的元素;o1,o2,…,oi為輸出層輸出向量O的元素;wij,vj分別表示輸入層到隱藏層之間的權值和閾值;wjk,vk分別表示隱含層到輸出層之間的權值和閾值。x1,x2,…,xn are the elements of the input vector X of the input layer;h1,h2,…,hm are the elements of the hidden layer output vector H;o1,o2,…,oi are the elements of the output vector O of the output layer;wij,vj respectively represent the weights and thresholds between the input layer and the hidden layer;wjk and vk respectively represent the weights and thresholds between the hidden layer and the output layer.圖4 人工神經(jīng)網(wǎng)絡示意圖Fig.4 Schematic diagram of artificial neural network
溫室本身是一個多變量、高耦合、時變的非線性復雜系統(tǒng)[25],很難建立準確的數(shù)學模型,需要選擇一個非線性的模型處理數(shù)據(jù),所以本方案選用人工神經(jīng)網(wǎng)絡建立決策模型。溫室群內決策時要同時確定控制裝置類型和執(zhí)行操作,共同組成決策結果。本研究使用2個人工神經(jīng)網(wǎng)絡,2個網(wǎng)絡的輸入?yún)?shù)一致,都以溫室群內的基礎環(huán)境數(shù)據(jù)和決策結果作為輸入層的參數(shù),第一個網(wǎng)絡用于預測控制裝置類型,第二個網(wǎng)絡用于預測執(zhí)行動作。輸入層節(jié)點個數(shù)由輸入量決定,則輸入層確定為8個節(jié)點。輸出層的節(jié)點由輸出結果所決定,溫室中的控制裝置包括風機、濕簾、灌溉、遮陽、溫控、天窗,則第一個網(wǎng)絡對應的輸出結果有6個;控制裝置當中連續(xù)設備執(zhí)行動作包括增大(上升)和減小(下降)2種狀態(tài),開關設備執(zhí)行動作包括工作和關閉兩種狀態(tài),則第二個網(wǎng)絡對應的輸出結果有4個。采用式(3)確定第一個人工神經(jīng)網(wǎng)絡隱藏層的節(jié)點數(shù)為11個,第二個人工神經(jīng)網(wǎng)絡隱藏層的節(jié)點數(shù)為6個。各層節(jié)點數(shù)確定,以第一個人工神經(jīng)網(wǎng)絡為例,信號傳播過程為:
式中:hj為隱藏層輸出向量H的元素;oi為輸出層輸出向量O的元素;wij,vj分別表示輸入層到隱藏層之間的權值和閾值;wjk,vk分別表示隱含層到輸出層之間的權值和閾值,其中i,k為輸入層節(jié)點數(shù),j為隱藏層節(jié)點數(shù)。f表示激活函數(shù),這里選用sigmoid函數(shù):
隱藏層節(jié)點數(shù)計算公式為:
式中:n為輸入層節(jié)點個數(shù);l為輸出層節(jié)點個數(shù);m為隱藏層節(jié)點數(shù)。
模型訓練過程中,將訓練數(shù)據(jù)分為訓練集和測試集,訓練集用來計算梯度和神經(jīng)網(wǎng)絡的權值,測試集用于驗證模型的有效性,依此建立決策模型。
1.5.3決策數(shù)據(jù)上鏈
數(shù)據(jù)決策方得到?jīng)Q策模型后,將基礎環(huán)境數(shù)據(jù)傳入決策模型,從而輸出基礎環(huán)境數(shù)據(jù)對應的決策,將決策數(shù)據(jù)摘要以key-value的方式存儲至聯(lián)盟鏈中,key值設為服務器編號和利用基礎環(huán)境數(shù)據(jù)生成哈希值的拼接,value值為控制裝置、執(zhí)行操作和決策數(shù)據(jù)哈希值。
1.5.4決策數(shù)據(jù)執(zhí)行
當決策數(shù)據(jù)摘要存儲到聯(lián)盟鏈后,各決策分析方根據(jù)服務器編號和基礎數(shù)據(jù)哈希值從鏈上查詢匹配的決策結果。若匹配成功,則解析決策數(shù)據(jù),解析結果發(fā)送至控制裝置,控制裝置執(zhí)行解析結果并返回執(zhí)行結果。決策分析方接收到控制裝置的執(zhí)行結果,記錄決策返回時間,以決策返回時間和控制裝置的編號為key值,決策執(zhí)行結果為value值,存儲控制裝置的狀態(tài)數(shù)據(jù)至聯(lián)盟鏈??刂蒲b置執(zhí)行狀態(tài)被存儲,使得決策結果有反饋,能更準確的控制溫室內的環(huán)境。若是匹配不成功,則無決策結果可執(zhí)行,重新發(fā)送數(shù)據(jù)至數(shù)據(jù)決策方做決策。
在智能溫室群中數(shù)據(jù)共享及決策協(xié)同的整個過程,多次調用智能合約完成節(jié)點在聯(lián)盟鏈中存儲和獲取數(shù)據(jù)。存儲的數(shù)據(jù)包括數(shù)據(jù)提供方數(shù)據(jù)摘要、數(shù)據(jù)決策方?jīng)Q策數(shù)據(jù)摘要以及決策分析方狀態(tài)數(shù)據(jù)。獲取的數(shù)據(jù)主要包括數(shù)據(jù)決策方哈希值和決策分析方?jīng)Q策數(shù)據(jù)。
1)數(shù)據(jù)決策方?jīng)Q策數(shù)據(jù)上鏈。
根據(jù)決策數(shù)據(jù)的存儲流程,將設定好的key值和value值放入結構體DecisionInfo,DecisionInfo作為參數(shù)傳入智能合約算法Decisioninfoupload (DecisionInfo),判斷參數(shù)是否符合要求,符合執(zhí)行PutState函數(shù)完成數(shù)據(jù)存儲,不符合輸出錯誤信息,如算法1所示。
算法1:
Decisioninfoupload (DecisionInfo)
輸入:DecisionInfo
輸出:("Decision data store Success/Decision data store Error")
var decisioninfo DecisionInfo
function,args:= stub.GetFunctionAndParameters()∥獲取函數(shù)名,以及字符串
if function == "Decisioninfoupload" {∥函數(shù)名是否相同
if len(args) !=5 {∥判斷參數(shù)個數(shù)
return shim.Error("Decision data store Error ")
} else {
DercisionInfoBytes,err:= json.Marshal(decisioninfo) ∥生成json數(shù)據(jù)
return PutState(DecisionInfoBytes) ∥數(shù)據(jù)上鏈}}
2)決策分析方?jīng)Q策數(shù)據(jù)獲取。
將服務器編號ESi和基礎數(shù)據(jù)哈希值BaseHashedValue放入結構體DecisionKey,作為唯一標識從鏈上查詢對應的結果,判斷參數(shù)是否符合要求,符合執(zhí)行GetHistory函數(shù)完成數(shù)據(jù)查詢,不符合輸出錯誤信息,如算法2所示。
算法2:
Decisioninfodownload(DecisionKey)
輸入:DecisionKey
輸出:("Decision data store Success/Decision data store Error")
if function == " Decisioninfodownload" {
if len(args) !=3{
return shim.Error("Decision data store Error ")
} else {
return GetHistory(DecisionKey)}
1)智能溫室群的試驗條件:智能溫室4個,均種植了相同的番茄幼苗,對應ES1、ES2、ES3、ES4邊緣服務器,控制裝置包括風機、濕簾、灌溉、遮陽、溫控、天窗各1個。
2)數(shù)據(jù)形式:數(shù)據(jù)來源于陜西省楊凌區(qū)揉谷鎮(zhèn)溫室群番茄幼苗生長1個月的數(shù)據(jù),包括二氧化碳傳感器、光照強度傳感器、土壤溫度傳感器、土壤濕度傳感器和空氣溫度傳感器采集的數(shù)據(jù)。
3)聯(lián)盟鏈網(wǎng)絡:選用Hyperledger Fabric 1.4.0搭建聯(lián)盟鏈網(wǎng)絡。ES1、ES2、ES3、ES4、MT等peer節(jié)點充當記賬節(jié)點,獨立部署1個order節(jié)點。狀態(tài)數(shù)據(jù)庫采用levelDB,區(qū)塊最大交易數(shù)為10 筆,最大打包時間間隔4 s。
4)人工神經(jīng)網(wǎng)絡算法:選用patrikeh的人工神經(jīng)網(wǎng)絡算法(https:∥github.com/patrikeh/go-deep.git)完成決策模型的訓練。
5)系統(tǒng)環(huán)境:ubuntu虛擬機18.04,8 G內存,70 G存儲磁盤。
6)性能測試工具:Hyperledger Caliper是一個通用的區(qū)塊鏈性能測試框架,允許用戶使用自定義的用例測試不同的區(qū)塊鏈解決方案,并得到一組性能測試結果。
1)智能溫室群聯(lián)盟鏈網(wǎng)絡搭建。
本方案以智能溫室群的邊緣服務器和決策服務器作為節(jié)點搭建聯(lián)盟鏈網(wǎng)絡,分為邊緣服務器組織和數(shù)據(jù)決策方組織。邊緣服務器組織egdeserver有peer0.egdeserver.itcast.cn,peer1.egdeserver.itcast.cn,peer2.egdeserver.itcast.cn,peer3.egdeserver.itcast.cn等4個節(jié)點,既是數(shù)據(jù)提供方又是決策分析方,對應ES1、ES2、ES3、ES4;數(shù)據(jù)決策方組織training只有1個peer0.training.itcast.cn節(jié)點,對應MT。
2)數(shù)據(jù)提供方數(shù)據(jù)摘要存儲及數(shù)據(jù)共享。
數(shù)據(jù)提供方向數(shù)據(jù)決策方發(fā)送了10 000條數(shù)據(jù),將這些數(shù)據(jù)的摘要存儲到鏈上,采用Hyperledger Fabric的命令行模式調用Sensorinfoupload函數(shù)完成數(shù)據(jù)上鏈,數(shù)據(jù)摘要存儲后可使用Hyperledger explorer查看存儲結果(圖5)。決策數(shù)據(jù)上鏈的key值為ES1_2022-4-12 21:50,value值為:5362F9EF26CCE079BF48A39723D22C832FAF58BB149FCF1B5B95049C81048879,數(shù)據(jù)提供方發(fā)送數(shù)據(jù)證據(jù)存儲成功。
3)模型決策過程。
數(shù)據(jù)決策方利用環(huán)境數(shù)據(jù)做決策,第一個神經(jīng)網(wǎng)絡決策出需要執(zhí)行的控制裝置,輸入環(huán)境數(shù)據(jù)為:空氣溫度21.46 ℃,空氣相對濕度29.49%,光照強度21 535 Lx,土壤相對濕度56.13%,土壤溫度18.1 ℃,二氧化碳濃度2 613.95 μmol/L;控制裝置中風機、濕簾、灌溉、遮陽、溫控、天窗,分別對應矩陣的1,2,…,6列,輸出的矩陣為[0 0 0 1 0 0],控制裝置的決策中第4列為1,代表遮陽控制裝置將執(zhí)行動作。第二個神經(jīng)網(wǎng)絡決策出控制裝置要執(zhí)行的操作,設備狀態(tài)包括打開、關閉、增大、減小,分別對應矩陣的1,2,…,4列,輸出的矩陣為[1 0 0 0],設備執(zhí)行動作的決策中第1列為1,代表要將遮陽板打開,以此降低溫室的光照強度。
模型訓練的過程中,隨著訓練次數(shù)的增加,第一個網(wǎng)絡和第二個網(wǎng)絡的精確度不斷提升,訓練次數(shù)達到3 000 次時,模型趨于穩(wěn)定(圖6(a));訓練時間與訓練次數(shù)呈正相關,訓練次數(shù)為2 400 次時,第一個網(wǎng)絡所需訓練時間為44.43 s,第二個網(wǎng)絡所需訓練時間為33.69 s,整體上第一個網(wǎng)絡所花費時間多于第二個網(wǎng)絡(圖6(b))。
圖5 數(shù)據(jù)提供方數(shù)據(jù)摘要的存儲結果Fig.5 Data summary storage results for data provider
圖6 決策模型的訓練效果Fig.6 Training effect of the decision model
4)決策數(shù)據(jù)存儲。
數(shù)據(jù)決策方將決策數(shù)據(jù)摘要同樣以key-value的形式使用invoke調用Decisioninfoupload函數(shù)完成數(shù)據(jù)上鏈,使用Hyperledger explorer查看存儲結果(圖7)。決策數(shù)據(jù)上鏈的key值為:ES1_c0 ed8e698101b2c95968a1b703b19c6f7cf85c91791b2c6977e5c84543422acd,value值為Control:4,decision:1,hashedValue:b11cefcc254daf1311f1a871f218b7ef667ffda7089cc7c5e530167112a9064d,ES1邊緣服務器基礎環(huán)境數(shù)據(jù)對應的決策數(shù)據(jù)上鏈成功。
圖7 數(shù)據(jù)決策方的決策數(shù)據(jù)摘要存儲結果Fig.7 The decision data summary storage results of the data decision maker
5)決策數(shù)據(jù)執(zhí)行過程。
① 決策分析方從鏈上查詢決策數(shù)據(jù),使用invoke調用Decisioninfodownload函數(shù)完成數(shù)據(jù)鏈上查詢,結果見圖7。
②根據(jù)決策結果,決策分析方首先判斷服務器編號,屬于自身的服務器編號,對基礎數(shù)據(jù)的哈希值進行比對,服務器編號和基礎數(shù)據(jù)哈希值同時比對成功后解析決策數(shù)據(jù),確定為1號溫室內將遮陽裝置打開。
③決策分析方將分析結果發(fā)送至控制裝置,控制裝置接收到指令,將遮陽板打開。
④控制裝置接收到?jīng)Q策分析方的命令并執(zhí)行后,向決策分析方返回執(zhí)行狀態(tài),決策分析方將控制裝置的執(zhí)行狀態(tài)上鏈,調用Stateinfoupload函數(shù)完成數(shù)據(jù)上鏈,使用Hyperledger explorer查看存儲結果(圖8)。狀態(tài)數(shù)據(jù)上鏈的key值為:2021-10-12 9:10_SSU,value值為sensordata:1,hashvalue:26ea6c55f47a86db219f34acea41b4355244dd36e4195548ad7e40a86b2b8bbf;狀態(tài)數(shù)據(jù)上鏈成功,可查詢到遮陽裝置的執(zhí)行狀態(tài)為1,代表遮陽裝置執(zhí)行了操作,決策結果得到了反饋,提高了決策的可信性。若是未達到環(huán)境控制的目的,可從鏈上查看設備執(zhí)行情況。
圖8 決策分析方的狀態(tài)數(shù)據(jù)存儲結果Fig.8 State data storage results for decision analysts
在區(qū)塊的最大打包數(shù)和最大存儲量確定的情況下,改變區(qū)塊打包時間,以此來測試向聯(lián)盟鏈存儲數(shù)據(jù)和從聯(lián)盟鏈查詢數(shù)據(jù)時的平均時延和吞吐量。
區(qū)塊打包時間由2 s遞增至10 s,設定決策數(shù)據(jù)上鏈與查鏈的交易總量為1 000,交易發(fā)送率為100事務數(shù)/s。區(qū)塊打包時間為4 s時決策數(shù)據(jù)上鏈的平均時延最小為30.4 s(圖9(a));區(qū)塊打包時間5 或6 s時,決策數(shù)據(jù)查鏈的平均時延最小為0.022 s(圖9(b))。
圖9 決策數(shù)據(jù)上鏈和查鏈的平均時延Fig.9 Average delay on blockchain and query blockchain of the decision data
區(qū)塊打包時間由2 s遞增至10 s的過程中,區(qū)塊打包時間為4 s時,決策數(shù)據(jù)上鏈吞吐量最大為27.3事務數(shù)/s(10(a));4 s之后,隨著區(qū)塊打包時間的增大,決策數(shù)據(jù)上鏈的吞吐量在不斷下降。決策數(shù)據(jù)查鏈6 s時吞吐量最大(10(b)),但總體上隨著區(qū)塊打包時間的變化,決策數(shù)據(jù)查鏈吞吐量變化不大。因此,最終將區(qū)塊打包時間設置為4 s。
圖10 決策數(shù)據(jù)存儲和查詢的吞吐量Fig.10 Throughput of decision data storage and query
本研究分析了國內外智能溫室數(shù)據(jù)共享及決策的現(xiàn)狀,指出智能溫室中數(shù)據(jù)共享及決策中數(shù)據(jù)不可信以及決策執(zhí)行情況無法驗證的問題,結合聯(lián)盟鏈具有的防篡改和可驗證的特點,提出了基于聯(lián)盟鏈的智能溫室群數(shù)據(jù)共享及決策協(xié)同方案。
本研究中每個溫室內的邊緣服務器按角色劃分為數(shù)據(jù)提供方和決策分析方,以邊緣服務器和數(shù)據(jù)決策方為節(jié)點搭建聯(lián)盟鏈網(wǎng)絡,形成符合智能溫室群管理的總體框架;基于聯(lián)盟鏈的智能溫室群數(shù)據(jù)共享及決策協(xié)同的交互過程是數(shù)據(jù)提供方、數(shù)據(jù)決策方及決策分析方在聯(lián)盟鏈中調用智能合約對數(shù)據(jù)進行操作,基于時序圖設計了傳感器、數(shù)據(jù)提供方、智能合約、聯(lián)盟鏈網(wǎng)絡、數(shù)據(jù)決策方、決策分析方、控制裝置等實體之間的數(shù)據(jù)交互流程;數(shù)據(jù)提供方將時間段內的溫室環(huán)境數(shù)據(jù)傳送給數(shù)據(jù)決策方,并將數(shù)據(jù)摘要上鏈,以鏈上鏈下的方式實現(xiàn)數(shù)據(jù)哈??沈炞C;數(shù)據(jù)決策方接收可信的數(shù)據(jù)基于決策模型離線決策,將決策數(shù)據(jù)摘要以key-value的形式上鏈;決策分析方從聯(lián)盟鏈上獲得決策結果后,發(fā)送給控制裝置執(zhí)行,將執(zhí)行結果存儲到聯(lián)盟鏈。利用Hyperledger Fabric 1.4.0搭建聯(lián)盟鏈網(wǎng)絡進行測試分析,結果表明該方案可以實現(xiàn)數(shù)據(jù)提供方摘要數(shù)據(jù)存儲及數(shù)據(jù)共享、決策模型訓練、決策數(shù)據(jù)摘要上鏈與決策過程的鏈上執(zhí)行;當區(qū)塊的最大打包數(shù)和最大存儲字節(jié)確定的條件下,改變區(qū)塊打包時間為2~10 s,得出當區(qū)塊打包時間為4 s時,數(shù)據(jù)存儲到聯(lián)盟鏈中平均時延最低為30.4 s,吞吐量最大27.3事務數(shù)/s。