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