物聯(lián)網(wǎng)開源數(shù)據(jù)交換標準BITXML研究
引言
自從2009年8月溫家寶總理提出“感知中國”以來,物聯(lián)網(wǎng)被正式列為國家五大新興戰(zhàn)略性產(chǎn)業(yè)之一,寫入政府工作扌艮告。顧名思義,物聯(lián)網(wǎng)(InternetofThings,IoT)就是實現(xiàn)“物”與“物”之間的相連通信。通過射頻識別(RFID)、紅外感應(yīng)器、全球定位系統(tǒng)、激光掃描器等信息傳感設(shè)備,按約定的協(xié)議,使任何物品與互聯(lián)網(wǎng)相連接,進行信息交換和通信,實現(xiàn)智能化識別、定位、跟蹤、監(jiān)控和管理。
然而,我國在物聯(lián)網(wǎng)的核心技術(shù)上與國外發(fā)達國家還存在一定的差距,部分技術(shù)領(lǐng)域還沒有掌握核心技術(shù);大部分技術(shù)領(lǐng)域落后于國際先進水平,以跟隨為主,處在產(chǎn)業(yè)鏈低端。我國企業(yè)基本掌握了低端傳感器研發(fā)的技術(shù),但高端傳感器和新型傳感器的部分核心技術(shù)仍然未掌握。我國僅有組件式傳感器的通用標準,新型傳感器標準還基本為空白。
物聯(lián)網(wǎng)標準的關(guān)鍵點和大有作為之處是物物相連的數(shù)據(jù)表達、交換和處理標準以及相應(yīng)的軟件體系架構(gòu)。M2M的通信更需要建立一個統(tǒng)一規(guī)范的通信接口和標準化的傳輸內(nèi)容。數(shù)據(jù)交換標準主要落地在物聯(lián)網(wǎng)DCM三層體系的應(yīng)用層和感知層,配合傳輸層通道,目前國外已提出很多標準,BITXML便是應(yīng)用層可行性比較高的協(xié)議之一。
XML(ExtensibleMarkupLanguage)即可擴展標記語言。XML是為互聯(lián)網(wǎng)的數(shù)據(jù)交換而設(shè)計的。它可以為構(gòu)建數(shù)據(jù)提供一種高度結(jié)構(gòu)化的、易于處理的方式,而且能夠存儲、交換數(shù)據(jù),從而使WEB信息交流更便捷。
BITXML是在XML基礎(chǔ)上定義而成的一個協(xié)議標準。BITX由意大利M2M廠商YourVoice發(fā)起,并有西門子、愛立信等M2M領(lǐng)域的知名廠商參與,專門針對M2M應(yīng)用開發(fā)數(shù)據(jù)標準,并對其代碼開源,以便于標準的共同完善。BITXML是一個開放的,面向M2M數(shù)據(jù)傳輸?shù)耐ㄐ艆f(xié)議。一些公司和組織正在制定M2M國際數(shù)據(jù)標準,但目前影響力不大。M2M數(shù)據(jù)標準是指M2M行業(yè)應(yīng)用設(shè)備和應(yīng)用平臺的數(shù)據(jù)標準。目前比較多的公司和標準組織都是基于XML來制定的,比如OASIS的oBIX標準、BITX的BITXML標準,國內(nèi)有同方的oMIX標準。其中BITXML標準比較受到國際認可,有成為國際主流標準的趨勢。
1 BITXML協(xié)議模型
BITXML是一種可讀性強和易于擴展的協(xié)議規(guī)范,包括對不同的I/O端口,網(wǎng)絡(luò)協(xié)議和核心功能的支持。BITXML旨在用一種簡單有效的方式來表達命令和控制過程,使每個M2M項目都擁有一個可以參考的框架?;贐ITXML協(xié)議的體系結(jié)構(gòu)參考模型如圖1所示。
BITXML命令/回復(fù)
圖1 BITXML體系結(jié)構(gòu)模型
BITXML體系結(jié)構(gòu)模型中,BITXML網(wǎng)關(guān)應(yīng)用程序可以把任何一種使用BITXML語言的應(yīng)用軟件都作為一個“智慧”的遠程執(zhí)行模塊;而對于BITXML控制器來說,任何一種使用BITXML語言應(yīng)用軟件,都可以作為主控模塊來控制一個或多個網(wǎng)關(guān)應(yīng)用程序;它的網(wǎng)絡(luò)傳輸包括任何一種網(wǎng)絡(luò)傳輸層;再就是I/O端口一般的物理或邏輯設(shè)備的控制端口都可以連接到任何的I/O端口上,而且I/O端口可以支持包括從模擬和數(shù)字的GPIO、定位裝置、串行端口到用戶自定義(邏輯)端口等;事實上,任何邏輯或物理設(shè)備都可以連接到可用的I/O端口。
BITXML體系結(jié)構(gòu)是由以上五個部分組成的,首先可由BITXML控制器同過網(wǎng)絡(luò)傳輸將BITXML事件傳送給BITXML網(wǎng)關(guān)應(yīng)用程序,再由網(wǎng)關(guān)應(yīng)用程序發(fā)送至輸入輸出端口,最終將事件指令傳送給外部設(shè)備執(zhí)行。同時,BITXML網(wǎng)關(guān)應(yīng)用程序再把回復(fù)送回控制器。
2 BITXML網(wǎng)關(guān)應(yīng)用程序的處理過程
BITXML網(wǎng)關(guān)應(yīng)用程序的參考模型標準如圖2所示。BITXML網(wǎng)關(guān)應(yīng)用程序一般由網(wǎng)絡(luò)層(圖2右側(cè))和設(shè)備/端口驅(qū)動包圍,其中網(wǎng)關(guān)可分成同步處理和異步處理兩個主要的邏輯部分。
2.1異步處理
異步處理涉及幾個執(zhí)行單元,每一個單元完成一個系統(tǒng)內(nèi)定義函數(shù)。異步處理單元包括狀態(tài)監(jiān)控器、歷史監(jiān)控器、重新配置監(jiān)控器。
狀態(tài)監(jiān)控器:系統(tǒng)上已經(jīng)預(yù)先安裝了一些狀態(tài),等待相匹配的狀態(tài)觸發(fā),一旦發(fā)現(xiàn)有可匹配的狀態(tài),就會生成事件,并將此事件發(fā)送給大主控單元。
歷史監(jiān)控器:系統(tǒng)上安裝了一系列由監(jiān)控器執(zhí)行的端口狀態(tài)的請求,任何狀態(tài)的答復(fù)都將存儲在本地非易失性的固定大小的FIFO區(qū)。歷史記錄會用一種可編程的方式發(fā)送到主單元。
重新配置監(jiān)控器:系統(tǒng)安裝的日程安排表,可使得監(jiān)控器定期檢查是否有重新配置的需要。
2.2同步處理
BITXML網(wǎng)關(guān)應(yīng)用程序從網(wǎng)絡(luò)傳輸層接收BITXML指令,并返回此指令執(zhí)行結(jié)果,同時產(chǎn)生一個端口指令。同步處理各單元的功能如下:
BITXML服務(wù)器:網(wǎng)絡(luò)客戶端與控制單元相連,以接收BITXML命令,并由命令解釋器執(zhí)行,然后返回相應(yīng)的結(jié)果。
BITXMLDNS:這是一個自定義協(xié)議的客戶端,連接網(wǎng)關(guān)可以使網(wǎng)關(guān)動態(tài)分配網(wǎng)絡(luò)地址(如GPRS或Wi-Fi網(wǎng)絡(luò)設(shè)備)。DNS負責連接到控制器,用來注冊網(wǎng)關(guān),并在操作超時時使網(wǎng)絡(luò)保持連接。
網(wǎng)關(guān)應(yīng)用程序有同步處理過程和異步處理過程兩個邏輯部分:在同步處理過程中,BITXML服務(wù)器負責處理由網(wǎng)絡(luò)傳輸層發(fā)來的BITXML命令并回復(fù)上級命令,再將處理后的命令傳送給BITXML協(xié)議命令分析器進行分析處理;在異步處理過程中,BITXML協(xié)議命令分析器會與歷史監(jiān)控器和狀態(tài)監(jiān)控器不斷收發(fā)指令,同時,將事件通過網(wǎng)絡(luò)傳輸層最終傳送回上級BITXML控制器。
2.3網(wǎng)關(guān)應(yīng)用程序狀態(tài)
網(wǎng)關(guān)應(yīng)用程序的狀態(tài)可以配置為連接、斷開和自定義三種。處于連接狀態(tài)的網(wǎng)關(guān)應(yīng)用程序必須運行該協(xié)議的服務(wù)器和DNS客戶端,同時可運行狀態(tài)和歷史監(jiān)控器;斷開狀態(tài)網(wǎng)關(guān)的應(yīng)用程序不能運行協(xié)議服務(wù)器和DNS客戶端,必須運行至少一個歷史或狀態(tài)監(jiān)控器;自定義應(yīng)用程序在遵從由協(xié)議定義的消息流下,可使用任何配置;而重新配置監(jiān)控器可以運行任何類型的網(wǎng)關(guān)應(yīng)用程序。
3 BITXML數(shù)據(jù)流
標準網(wǎng)關(guān)應(yīng)用的主要預(yù)定義的信息流的六種情景:網(wǎng)關(guān)初始化、初始化錯誤、狀態(tài)監(jiān)測數(shù)據(jù)流、歷史監(jiān)控數(shù)據(jù)流、命令服務(wù)器、重新配置檢查數(shù)據(jù)流。激活一個網(wǎng)關(guān)應(yīng)用程序需要激活一系列的參考模型中所描述的子進程,這意味著,與網(wǎng)關(guān)相連的各個異步事件發(fā)生器都需要進行初始化(如狀態(tài)監(jiān)測、歷史監(jiān)測、重構(gòu)檢查)。BITXML數(shù)據(jù)流包括以下幾種:
(1)初始化錯誤數(shù)據(jù)流。很多原因都可能會導(dǎo)致初始化錯誤,例如網(wǎng)關(guān)內(nèi)部故障,不正確的初始化等。初始化出錯只需重新啟動初始化序列就可以了。
(2)狀態(tài)監(jiān)測數(shù)據(jù)流。狀態(tài)監(jiān)測是網(wǎng)關(guān)應(yīng)用程序內(nèi)部的一個子進程,用于定期檢查配置的狀態(tài),并當一個或多個狀態(tài)值為true時,將事件發(fā)送給主控器。
(3)歷史監(jiān)測數(shù)據(jù)流。歷史監(jiān)測器也是網(wǎng)關(guān)應(yīng)用程序內(nèi)部的一個子進程,用于定期生成狀態(tài)值,并在FIFO持久緩沖區(qū)收集這些狀態(tài),然后發(fā)送歷史事件(狀態(tài)值序列)。
(4)命令服務(wù)數(shù)據(jù)流。命令服務(wù)器是一個連接網(wǎng)關(guān)應(yīng)用程序的子進程。這里的連接具有雙重含義:首先,從應(yīng)用的角度來看,連接意味著在任何時間,命令都有可能被發(fā)送到網(wǎng)關(guān),從而需要在控制設(shè)備中瞬間激活或檢索數(shù)據(jù);其次,從網(wǎng)絡(luò)傳輸來看,一個連接意味著網(wǎng)關(guān)和控制器(或它的邏輯部分在這個文件命名的橋)之間保持連接,以便支持先前應(yīng)用程序。
(5)重新配置檢查數(shù)據(jù)流。重新配置檢查器是一個網(wǎng)關(guān)應(yīng)用程序外部的子進程,用于定期發(fā)送REINIT系統(tǒng)事件。
4結(jié)語
物聯(lián)網(wǎng)標準的關(guān)鍵是基于軟件和中間件的數(shù)據(jù)交換和處理標準?!耙涣髌髽I(yè)做標準”,這是“地球人都知道”的物聯(lián)網(wǎng)產(chǎn)業(yè)界的共識,也是很多企業(yè)乃至一個國家戰(zhàn)略層面想達到的制高點。BITXML只是物聯(lián)網(wǎng)應(yīng)用層的各種標準之一,對于我國物聯(lián)網(wǎng)標準的制定有著積極的參考意義。
20210908_61383c08a834e__物聯(lián)網(wǎng)開源數(shù)據(jù)交換標準BITXML研究