◆劉軍 馮力 魏航
(1.思科(中國)有限公司上海分公司 上海 201103;2.思科科技北京有限公司 北京 100022)
冷鏈物流是依靠降溫冷藏來確保運輸鏈上的適當(dāng)溫度條件的物流運輸活動。其區(qū)別于常規(guī)的物流運輸鏈的主要特點是有嚴(yán)格的溫控要求,只要出現(xiàn)一個時間點上的溫度失控問題就會導(dǎo)致整個運輸鏈產(chǎn)生短板效應(yīng),輕則導(dǎo)致食品質(zhì)量下降,重則影響疫苗藥品安全。因此,在冷鏈管理中需要配套的相關(guān)技術(shù)的支持。隨著技術(shù)的不斷發(fā)展,區(qū)塊鏈技術(shù),邊緣計算,物聯(lián)網(wǎng)等新技術(shù)也被引入到冷鏈物流行業(yè)中,并呈現(xiàn)出新的作用。
本文對區(qū)塊鏈在邊緣計算,物聯(lián)網(wǎng)和物流冷鏈領(lǐng)域的結(jié)合進行了探索。實現(xiàn)了物聯(lián)網(wǎng)設(shè)備+區(qū)塊鏈技術(shù)+第三方認證保障的新商業(yè)模式,通過區(qū)塊鏈可以追溯物流冷鏈運輸過程中,溫度控制是否合規(guī),通過對商品全流程的數(shù)據(jù)進行監(jiān)控,實現(xiàn)企業(yè)與用戶之間的信息透明化、公開化。
本文的驗證演示開發(fā)工作,利用物聯(lián)網(wǎng)車載4G 工業(yè)邊緣計算路由器,連接工業(yè)級溫度傳感器,進行上鏈處理。
整個演示驗證流程為:
(1)確保本地開發(fā)驗證環(huán)境有Python 集成開發(fā)環(huán)境:Pycharm,REST APⅠ驗證采用Postman;
(2)思科ⅠR809 工業(yè)路由器開機,自動啟動采集程序;
(3)本地開發(fā)環(huán)境運行后臺程序;
(4)通過Postman 下達命令,上鏈溫度采集開始;
(5)通過Postman 下達命令,上鏈溫度采集結(jié)束;
(6)后臺程序自動將上鏈溫度保存到文件中;
(7)后臺程序自動對溫度數(shù)據(jù)文件生成hash 碼,上傳到“唯鏈”進行上鏈操作,生成區(qū)塊鏈唯一標(biāo)識碼,文件的hash碼存放在“唯鏈”;
(8)篡改溫度數(shù)據(jù)文件,導(dǎo)致本地生成的hash 碼發(fā)生變化,和“唯鏈”保存的原始文件生成的區(qū)塊鏈hash 碼進行比對,顯示原始數(shù)據(jù)被篡改;
(9)恢復(fù)溫度數(shù)據(jù)文件,本地重新生成hash 碼,和“唯鏈”保存的原始文件生成的區(qū)塊鏈hash 碼進行比對,結(jié)果一致,顯示原始數(shù)據(jù)唯一性,未被篡改。
工作流程如圖1。
圖1 工作流程
需要建立一個MQTT 服務(wù)器,采集數(shù)據(jù)。在控制端安裝一臺VMware 虛擬機,運行CentOS,安裝mosquitto 的MQTT 服務(wù)器。使其作為后臺守護程序,一直監(jiān)聽MQTT 客戶端的發(fā)布。
后臺控制端共有4 個程序:
(1)數(shù)據(jù)采集控制查詢接口;
(2)MQTT 客戶端,接收并存儲數(shù)據(jù);
(3)MQTT 客戶端開發(fā)版,監(jiān)控接收到的數(shù)據(jù);
(4)上鏈程序。
采用Python Flask 框架,構(gòu)建基于json 格式信息流的rest api 接口,開發(fā)環(huán)境采用Postman 進行測試驗證。分成2 種類型4 個動作,get 和POST,如表1。
表1 動作與功能對照表
使用了唯鏈提供的函數(shù)APⅠ。一共有2 類8 個函數(shù)。一類為獲取Token 函數(shù),另一類為上鏈接口,包括7 個函數(shù):(1)生成VⅠD;(2)搶占VⅠD;(3)創(chuàng)建子賬號并鏈上注冊;(4)UⅠD 重新鏈上注冊;(5)hashinfo 上鏈;(6)最新hashinfo 查詢;(7)hashinfo 歷史查詢。
驗證系統(tǒng)采用思科ⅠR809 工業(yè)路由器(ⅠP30 防護等級),該設(shè)備內(nèi)置4G 和GPS,支持工業(yè)RS485 接口,支持邊緣計算,可以運行客戶程序。
ⅠR809 和溫度傳感器通過RS485 接口連接。在思科路由器ⅠOS層面,對端口進行控制。
在思科物聯(lián)網(wǎng)操作系統(tǒng)ⅠOX 中,用Python 編程時,需要對RS485串行接口進行編碼。
ⅠR809 內(nèi)置GPS 模塊,在思科路由器ⅠOS 層面,需要啟動GPS配置。
在思科物聯(lián)網(wǎng)操作系統(tǒng)ⅠOX 中,用python 編程時,需要以下代碼:
當(dāng)采集完溫度和GPS 信息后,Python 程序也采用開源的paho.mqtt.client 庫進行MQTT 數(shù)據(jù)傳輸。實際應(yīng)用中有一些非編程的如下客戶化參數(shù)配置:
使用rest_APⅠ,對溫度/GPS 數(shù)據(jù)采集的過程進行控制。在ⅠR809上采用主動發(fā)起REST APⅠ請求查詢機制,查詢傳感器的設(shè)定狀態(tài),根據(jù)查詢rest_APⅠ的響應(yīng)結(jié)果控制溫度傳感器采集數(shù)據(jù)的上傳,rest_APⅠ的內(nèi)容采用Json 格式。
在邏輯控制上,也和演示過程一致,即,控制端沒有發(fā)送指令時,ⅠR809 只采集數(shù)據(jù),不上傳;當(dāng)控制端發(fā)送指令“start”時,ⅠR809 傳數(shù)據(jù);當(dāng)控制端發(fā)送指令“stop”時,ⅠR809 停止發(fā)送數(shù)據(jù)。
思科ⅠR809 是邊緣計算節(jié)點,其編程可在電腦中的虛擬機中仿真進行。在虛擬機中完成編程后,通過思科提供的ⅠOXclient 客戶端軟件寫入ⅠR809 的邊緣計算guestos 空間運行。為簡化過程,目前常見的做法是在開發(fā)環(huán)境中運行docker,在開發(fā)環(huán)境中創(chuàng)建基于Yocto 的定制化ⅠOT 應(yīng)用docker 鏡像,(此鏡像就是ⅠR809 的ⅠOX Guest OS的docker 運行的鏡像),在此鏡像中包含python 運行環(huán)境,paho-mqtt,pyserial 等相關(guān)運行依存資源,并將ⅠOT 應(yīng)用包含在此鏡像中。
其步驟如下:
(1)在電腦的VMware 環(huán)境中安裝Centos,在centos 中安裝docker:
(2)運行docker:
(3)下拉ⅠR809 的ⅠOXpython2.7 的官方docker 鏡像
(4)運行ⅠOX docker 鏡像
(5)在docker 運行鏡像中安裝相關(guān)python 依存庫
(6)生成新的鏡像作為基礎(chǔ)鏡像:
(7)在開發(fā)ⅠOT 應(yīng)用的文件目錄中創(chuàng)建Dockerfile,將ⅠOT 應(yīng)用拷貝到鏡像中。
為增加體驗,本驗證演示系統(tǒng)同時使用了開源的thingsboard 展示采集數(shù)據(jù),展示效果如圖2。
圖2 展示效果
區(qū)塊鏈和實業(yè)結(jié)合,目前尚處于探索階段。當(dāng)前該技術(shù)主要還是應(yīng)用于金融領(lǐng)域,在冷鏈物流領(lǐng)域公開報道還比較少。所以在該領(lǐng)域探索的最佳實踐就是,搭建實驗驗證演示環(huán)境,從端到端每個環(huán)節(jié)進行驗證,這樣有助于發(fā)現(xiàn)和解決新技術(shù)落地過程中所遇到的問題,加速方案的落地。本驗證演示系統(tǒng)使用了專業(yè)的溫度傳感器,工業(yè)級邊緣計算路由器,主流的區(qū)塊鏈在線處理系統(tǒng),模擬了將冷鏈物流和區(qū)塊鏈相結(jié)合的場景,驗證了數(shù)據(jù)從采集,處理,傳輸,存儲,到上鏈的整個工作流,證明了其可行性。區(qū)塊鏈技術(shù)和冷鏈物流領(lǐng)域的結(jié)合,必將會增進物流行業(yè)在公眾領(lǐng)域的信任度,規(guī)范冷鏈行業(yè)操作,提高冷藏產(chǎn)品質(zhì)量和安全性。