基于SOS技術(shù)的物聯(lián)網(wǎng)實時數(shù)據(jù)管理系統(tǒng)開發(fā)
掃描二維碼
隨時隨地手機看文章
引言
物聯(lián)(Internet of Things, IoT)是指將各種信息傳感設(shè)備、 傳感器網(wǎng)絡(luò)、RFID電子標簽、儀表、條碼、二維碼和GPS 接收儀等同人們感興趣的物體以無線或有線的方式連接起來, 使這些物體可以提供本身及其所在環(huán)境的實時信息,這些信 息通過網(wǎng)關(guān)及傳輸網(wǎng)絡(luò)(互聯(lián)網(wǎng)、3G/4G移動網(wǎng)絡(luò))被發(fā)送到 數(shù)據(jù)服務(wù)中心進行數(shù)據(jù)存儲和智能化處理。物聯(lián)網(wǎng)應(yīng)用涉及智 能交通、環(huán)境保護、政府工作、公共安全、平安家居、智能消 防、工業(yè)監(jiān)測、老人護理、個人健康等多個領(lǐng)域。物聯(lián)網(wǎng) 具有高度的創(chuàng)造性、滲透性和帶動性,對國家安全、經(jīng)濟和 社會發(fā)展產(chǎn)生深遠影響,歐、美、日、韓等主要發(fā)達國家和地 區(qū)將物聯(lián)網(wǎng)納入國家戰(zhàn)略性計劃,我國也將物聯(lián)網(wǎng)放到了戰(zhàn)略 發(fā)展的地位。
1物聯(lián)網(wǎng)應(yīng)用系統(tǒng)
圖1所示是物聯(lián)網(wǎng)應(yīng)用實時信息系統(tǒng)的組成圖。該物聯(lián) 網(wǎng)應(yīng)用系統(tǒng)包含六個部分:節(jié)點(node)、網(wǎng)關(guān)(gateway)、傳 輸網(wǎng)絡(luò)、數(shù)據(jù)服務(wù)中心、物聯(lián)網(wǎng)服務(wù)接入網(wǎng)絡(luò)及物聯(lián)網(wǎng)服務(wù)客 戶端。
圖2所示是可同物聯(lián)網(wǎng)網(wǎng)關(guān)進行數(shù)據(jù)交換的各類節(jié)點。 具體來說,物聯(lián)網(wǎng)節(jié)點就是儀表、傳感器、RFID標簽、攝像 頭、GPS設(shè)備、執(zhí)行器和繼電器等。一維碼、二維碼、RFID 標簽等節(jié)點主要作用是識別物體;傳感網(wǎng)、傳感器及儀表等節(jié) 點主要用來獲取物體的狀態(tài)及環(huán)境信息;執(zhí)行器和繼電器主要用來控制被監(jiān)控的設(shè)備;GPS等節(jié)點主要用來跟蹤被監(jiān)控物 體的位置信息;攝像頭等節(jié)點主要用來監(jiān)控物體的當前的行為 狀態(tài)。物聯(lián)網(wǎng)節(jié)點通過USB、RS 232、RS 485、藍牙、紅外、 ZigBee、Wi-Fi等短距離有線或無線傳輸技術(shù)進行協(xié)同工作或 者傳遞數(shù)據(jù)到物聯(lián)網(wǎng)網(wǎng)關(guān)。網(wǎng)關(guān)進一步將來自不同節(jié)點的數(shù)據(jù) 通過傳輸網(wǎng)絡(luò)發(fā)送到物聯(lián)網(wǎng)數(shù)據(jù)服務(wù)中心。
圖1物聯(lián)網(wǎng)應(yīng)用實時信息系統(tǒng)組成
圖2可同物聯(lián)網(wǎng)網(wǎng)關(guān)進行數(shù)據(jù)交換的各類節(jié)點
IoT網(wǎng)關(guān)是一個具有多種接口的嵌入式計算機設(shè)備,其 可以收集并處理來自其所管理的各類節(jié)點的數(shù)據(jù),并將處理 后的數(shù)據(jù)通過其具有的廣域接口(3G/4G、Wi-Fi、以太網(wǎng)等) 傳輸?shù)絀oT數(shù)據(jù)服務(wù)中心。物聯(lián)網(wǎng)傳輸網(wǎng)絡(luò)負責網(wǎng)關(guān)與數(shù)據(jù)服 務(wù)中心之間的數(shù)據(jù)傳送,常見的傳輸網(wǎng)絡(luò)包括3G移動網(wǎng)絡(luò)、
Wi-Fi無線網(wǎng)絡(luò)及以太網(wǎng)等。物聯(lián)網(wǎng)數(shù)據(jù)服務(wù)中心負責存儲來 自一個或多個IOT網(wǎng)關(guān)的實時數(shù)據(jù),對數(shù)據(jù)進行智能化處理, 提供各種物聯(lián)網(wǎng)實時信息服務(wù),比如實時監(jiān)測、定位跟蹤、報 警聯(lián)動、自動化處理、反向控制、遠程維護、統(tǒng)計決策和信息 安全等。物聯(lián)網(wǎng)服務(wù)接入網(wǎng)絡(luò)使用戶可以接受或使用物聯(lián)網(wǎng)數(shù) 據(jù)服務(wù)中心提供的服務(wù)。物聯(lián)網(wǎng)服務(wù)接入網(wǎng)絡(luò)和物聯(lián)網(wǎng)傳輸網(wǎng) 絡(luò)可以是同一個網(wǎng)絡(luò),也可以是不同的網(wǎng)絡(luò)。物聯(lián)網(wǎng)服務(wù)客戶 端是用戶通過物聯(lián)網(wǎng)服務(wù)接入網(wǎng)絡(luò)接受或使用物聯(lián)網(wǎng)數(shù)據(jù)服 務(wù)中心提供的服務(wù)的設(shè)備,包括智能手機、平板電腦、筆記本 電腦和臺式電腦等。
對于較大規(guī)模的物聯(lián)網(wǎng)應(yīng)用,物聯(lián)網(wǎng)數(shù)據(jù)服務(wù)中心往往 要接收來自成百上千的物聯(lián)網(wǎng)網(wǎng)關(guān)的實時數(shù)據(jù),并且每一個網(wǎng) 關(guān)所管理的物聯(lián)網(wǎng)節(jié)點的數(shù)目和種類較多。每一網(wǎng)關(guān)如果希望 往數(shù)據(jù)服務(wù)器中心發(fā)送數(shù)據(jù),該網(wǎng)關(guān)所管理的物聯(lián)網(wǎng)節(jié)點必須 在數(shù)據(jù)服務(wù)中心進行注冊。另外,對于注冊后的物聯(lián)網(wǎng)節(jié)點的 數(shù)據(jù),也必須按照特定的格式由網(wǎng)關(guān)發(fā)送到數(shù)據(jù)服務(wù)中心。近 年來,物聯(lián)網(wǎng)應(yīng)用在我國得以迅速發(fā)展的同時,也出現(xiàn)了一些 亟待解決的問題。各種物聯(lián)網(wǎng)應(yīng)用的開發(fā)都是相關(guān)對獨立和 封閉的,導致了物聯(lián)網(wǎng)節(jié)點在數(shù)據(jù)服務(wù)中心的注冊的方式及網(wǎng) 關(guān)往數(shù)據(jù)服務(wù)中心所發(fā)送的格式都各有差異。有時,即使對 于同一個物聯(lián)網(wǎng)應(yīng)用,由于物聯(lián)網(wǎng)節(jié)點被添加的時間不同,其 被注冊的方式及數(shù)據(jù)傳輸?shù)母袷?,也有可能不同,這導致每 一個新的物聯(lián)網(wǎng)節(jié)點的添加,都會涉及到對數(shù)據(jù)服務(wù)中心和網(wǎng) 關(guān)軟件源代碼的修改。同時,由于節(jié)點注冊格式和節(jié)點數(shù)據(jù)傳 輸格式的不同,不同的物聯(lián)網(wǎng)應(yīng)系統(tǒng)之間數(shù)據(jù)交換或數(shù)據(jù)融 合也變得極為困難。目前,所存在的物聯(lián)網(wǎng)節(jié)點注冊難以管理、 數(shù)據(jù)傳輸存儲格式難以統(tǒng)一、難以實施數(shù)據(jù)融合及智能決策 等問題,造成了時間和經(jīng)濟資源的嚴重浪費,它們也成為當前 物聯(lián)網(wǎng)應(yīng)用開發(fā)領(lǐng)域迫切需要解決的問題。
為了解決所存在的實時數(shù)據(jù)標準化管理問題,本論文以 開放地理空間聯(lián)盟(Open Geospatial Consortium,OGC)制 定的 SOS(Sensor Observation Service)服務(wù)標準為基礎(chǔ)[5-10], 建立了標準化的物聯(lián)網(wǎng)節(jié)點注冊格式、標準化的節(jié)點實時數(shù)據(jù) 傳輸格式和標準化的節(jié)點實時數(shù)據(jù)存儲格式,并依此開發(fā)了物 聯(lián)網(wǎng)實時數(shù)據(jù)管理系統(tǒng)。同時,為驗證物聯(lián)網(wǎng)實時數(shù)據(jù)管理 系統(tǒng)的性能,研究團隊使用Android智能手機作為物聯(lián)網(wǎng)網(wǎng)關(guān), 使用手機上面所配置的各種傳感器及GPS接收儀作為物聯(lián)網(wǎng)節(jié) 點,實現(xiàn)并驗證了標準化的節(jié)點注冊、標準化數(shù)據(jù)傳輸、標準 化數(shù)據(jù)存儲和數(shù)據(jù)的智能化處理及顯示,取得了良好的效果。
2實時數(shù)據(jù)管理系統(tǒng)的開發(fā)及測試環(huán)境
實時數(shù)據(jù)管理系統(tǒng)所涉及的軟硬件及網(wǎng)絡(luò)拓撲圖如圖3 所示。
圖3系統(tǒng)開發(fā)及測試環(huán)境網(wǎng)絡(luò)拓撲圖
所開發(fā)的系統(tǒng)中數(shù)據(jù)庫采用PostGreSQL作為數(shù)據(jù)庫,以 MyEclipse作為開發(fā)軟件平臺,應(yīng)用當前流行的JavaEE SSH 開發(fā)框架進行整合開發(fā)。本系統(tǒng)所涉及的硬件包括筆記本數(shù)臺、 Android手機數(shù)臺,服務(wù)器一臺和無線路由器一臺。Android 手機需要安裝Android 2.2或者更高版本的操作系統(tǒng),手機上配 備有Wi-Fi無線上網(wǎng)功能。然后,下載并安裝PostgreSQL 8.x或者 更高版本的Postgres數(shù)據(jù)庫服務(wù)器。在安裝Postgres數(shù)據(jù)庫時, 需要選擇要安裝相應(yīng)的空間數(shù)據(jù)庫軟件PostGIS 1.5。完成安裝 PostgreSQL后,根據(jù)SOS的文件指南,運行必要需要的SQL 語句來建立相應(yīng)的數(shù)據(jù)庫表格。Maven軟件被用來管理SOS Web服務(wù)器平臺的開發(fā)和升級。下載并解壓縮apache-maven- 3.0.4-bin.zip,安裝好Maven后,需要修改配置文件setting.xml 來并配置Maven運行環(huán)境變量,插入以下代碼。
〈profile〉
<id>52n- start</id>
<repositories>
<repository><id>n52-releases</id>
<name>52n Releases</name>
<url>HYPERLINK "http://52north.org/maven/repo/releases%3c/url"> <releases><enabled>true</enabled></releases> <snapshots><enabled>false</enabled></snapshots> </repository>
<repository><id>geotools</id>
<name>Geotools repository</name> <url>HYPERLINK "http://maven.geotools.fr/repository%3c/url"> </repository>
<repository><id>Refractions</id> <name>Refractions repository</name> <url>HYPERLINK "http://lists.refractions.net/m2%3c/url"> </repository>
<repository><id>Apache</id>
<name>Apache repository</name>
<url>HYPERLINK "http://repo1.maven.org/maven2%3c/url">
</repository> </repositories> </profile> 安裝Java開發(fā)工具時,可以先從官方網(wǎng)站下載最新的 Java SE Development Kit (JDK)版本,安裝完成后,要進行“環(huán) 境變量,,和“系統(tǒng)變量”的配置,并建立JAVA_HOME路徑。 物聯(lián)網(wǎng)實時數(shù)據(jù)管理系統(tǒng)SOS Web服務(wù)器安裝有Tomcat應(yīng) 用服務(wù)器軟件??梢詮木W(wǎng)站HYPERLINK "http://jakarta.apache.org/site/%e4%b8%8b%e8%bd%bd" 最新版的Tomcat進行安裝及配置。安裝完成后,需要配置 Tomcat Web服務(wù)器的管理員權(quán)限,可在tomcat-users.xml配 置文件中添加如下管理員權(quán)限相關(guān)的信息。
<role rolename="manager-gui"/>
<role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user password="admin" roles="manager-gui" username=" tomcat" />
<user password="admin" roles= "manager-script,manager-jmx,manager-status" username="admin"/>
安裝及配置完成Maven、Postgres、JDK和Tomcat軟件后, 可以在命令行界面執(zhí)行mvn -命令來進行SOS Web服務(wù)軟件 的下載、升級和更新。例如,通過命令行mvn-Pwith-deploy, 對SOS服務(wù)生成和部署。
3 SOS服務(wù)介紹
圖4所示是SOS數(shù)據(jù)服務(wù)體系的結(jié)構(gòu)圖。SOS通過提 供一個標準的數(shù)據(jù)傳輸接口,收集來自物聯(lián)網(wǎng)網(wǎng)關(guān)及物聯(lián)網(wǎng) 節(jié)點的實時數(shù)據(jù)。實時數(shù)據(jù)按照標準的格式傳輸?shù)絊OS Web 服務(wù)器,并按照標準格式存儲到SOS數(shù)據(jù)庫。物聯(lián)網(wǎng)實時 數(shù)據(jù)使用客戶端可以通過標準的SOS接口來獲取SOS數(shù)據(jù) 庫中不同形式的數(shù)據(jù),然后進行智能化數(shù)據(jù)處理及各種物聯(lián) 網(wǎng)應(yīng)用的開發(fā)。例如,通過GetCapabilitiesRequest標準接 口,可以獲取一個Capabilities文檔,該文檔主要描述了 SOS Web服務(wù)器可以提供的各種數(shù)據(jù)服務(wù),包含了 SOS服務(wù)所 支持服務(wù)的所有操作,以及每個操作所涉及的參數(shù)等。使用 DescribeNodeRequest標準接口,可以獲取物聯(lián)網(wǎng)節(jié)點數(shù)據(jù)標 記語言(lOTNodeML) XML文件,該文件描述了物聯(lián)網(wǎng)節(jié) 點及其實時數(shù)據(jù)的特性。另外,使用GetObservationRequest 標準接口,可以獲取SOS數(shù)據(jù)庫中所存儲的物聯(lián)網(wǎng)實時或 者歷史數(shù)據(jù),說返回的XML文檔中包含Observations & Measurements (O&M)數(shù)據(jù)。
圖4 SOS數(shù)據(jù)服務(wù)體系結(jié)構(gòu)圖
SOS數(shù)據(jù)服務(wù)體系采用了 B/S三層架構(gòu),分別為數(shù)據(jù)展 示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。展示層主要負責與物聯(lián)網(wǎng)實 時數(shù)據(jù)使用客戶端的交互。業(yè)務(wù)邏輯層主要包括SOSServelet 以及RequestOperation這兩個核心類。前者用于處理用戶請求 以及返回響應(yīng)信息,后者接收SOSServelet請求,并將請求信 息進行有效的過濾,將信息傳給監(jiān)聽類,再由監(jiān)聽類決定調(diào) 用何種操作。數(shù)據(jù)訪問層主要包括各種工廠類和Dao類,負 責與數(shù)據(jù)庫的交互。
4物聯(lián)網(wǎng)實時數(shù)據(jù)的標準化管理
為了解決物聯(lián)網(wǎng)實時數(shù)據(jù)處理難以統(tǒng)一的問題,我們依 據(jù)OGC制定的SOS服務(wù)標準,建立了物聯(lián)網(wǎng)節(jié)點注冊的標 準化格式、節(jié)點實時數(shù)據(jù)傳輸?shù)臉藴驶袷?、?jié)點實時數(shù)據(jù) 存儲的標準化格式和查詢使用物聯(lián)網(wǎng)實時數(shù)據(jù)的標準化格式。 對于這些物聯(lián)網(wǎng)實時數(shù)據(jù)的標準化管理,分別敘述如下。 4.1標準化的物聯(lián)網(wǎng)節(jié)點注冊
在各種各類物聯(lián)網(wǎng)實時信息系統(tǒng)的開發(fā)過程中,一個重 要的方面是將來自無數(shù)物聯(lián)網(wǎng)節(jié)點的數(shù)據(jù)在數(shù)據(jù)服務(wù)中心進行 統(tǒng)一的存儲。在存儲數(shù)據(jù)之前,需要知道這些數(shù)據(jù)來自何地 的物聯(lián)網(wǎng)網(wǎng)關(guān)所管轄的物聯(lián)網(wǎng)節(jié)點,這就需要將這些物聯(lián)網(wǎng)節(jié) 點的名稱、地理位置和數(shù)據(jù)類型等信息在數(shù)據(jù)庫中進行注冊。 當前,注冊物聯(lián)網(wǎng)節(jié)點的方式多種多樣,有的物聯(lián)網(wǎng)節(jié)點注冊 是通過人工方式將物聯(lián)網(wǎng)節(jié)點相關(guān)文件導入到數(shù)據(jù)庫;有的 是直接通過數(shù)據(jù)庫SQL語句的人工操作來注冊物聯(lián)網(wǎng)節(jié)點信 息;有的是通過UI界面數(shù)據(jù)輸入來進行物聯(lián)網(wǎng)節(jié)點的注冊。 以上注冊方式,不但速度慢,易出錯,而且浪費大量的人力 和物力。在我們的物聯(lián)網(wǎng)實時系統(tǒng)設(shè)計和實踐中所采用的物聯(lián) 網(wǎng)節(jié)點注冊方式是,物聯(lián)網(wǎng)網(wǎng)關(guān)自動發(fā)現(xiàn)其所管理的物聯(lián)網(wǎng)節(jié) 點的名稱、位置和數(shù)據(jù)特征等信息,然后建立一個標準化的 物聯(lián)網(wǎng)節(jié)點XML注冊文件,并將該文件發(fā)送到SOS Web服 務(wù)的數(shù)據(jù)接收接口。當SOS服務(wù)器接收到注冊XML文檔信 息后,將會自動分析該文檔的特征,并將物聯(lián)網(wǎng)節(jié)點的相關(guān)信 息存入數(shù)據(jù)庫,自動完成物聯(lián)網(wǎng)節(jié)點的注冊。一個簡化版本的 物聯(lián)網(wǎng)節(jié)點標準化注冊XML文檔如下:t它主要包括物聯(lián)網(wǎng)節(jié) 點ID注冊、物聯(lián)網(wǎng)節(jié)點經(jīng)度、緯度和海拔高度位置信息注冊 和物聯(lián)網(wǎng)節(jié)點數(shù)據(jù)輸岀注冊等)
<?xml version="1.0" encoding="UTF-8"?>
<RegisterSensor service="SOS" version="1.0.0" > <SensorDescription>
<sml:SensorML version=''1.0.1">
<sml:member><sml:System >
<!--sml:identification元素必須包含物聯(lián)網(wǎng)節(jié)點的ID--> <sml:identification><sml:IdentifierList><sml:identifier> <sml:Term definition="OGC:uniqueID">
<sml:value> IfGI- SDP</sml:value>
</sml:Term></sml:identifier></sml:IdentifierList>
</sml:identification>
<!一物聯(lián)網(wǎng)節(jié)點最后一次測定位置信息-->
<sml:position name=" sensorPosition">
<swe:Position referenceFrame=" EPSG:4326"> <swe:location>
<swe:Vector gml:id="STATION_LOCATION"> <swe:coordinate name="easting">
<swe:Quantity axisID="x">
<swe:uom code="degree"/>
<swe:value>7.52</swe:value>
</swe:Quantity>
</swe:coordinate>
<swe:coordinate name="northing">
<swe:Quantity axisID="y">
<swe:uom code="degree"/>
<swe:value>52.90</swe:value> </swe:Quantity></swe:coordinate>
<swe:coordinate name="altitude">
<swe:Quantity axisID="z">
<swe:uom code="m"/>
<swe:value>52.0</swe:value> </swe:Quantity></swe:coordinate> </swe:Vector></swe:location> </swe:Position></sml:position>
<!—物聯(lián)網(wǎng)節(jié)點數(shù)據(jù)輸出列表-->
<sml:outputs><sml:OutputList>
<sml:output name=''imagesequence">
<swe:Quantity definition=" imagesequence"> <gml:metaDataProperty>
<id>IMAGE_SEQUENCE</id> <name>SDP</name></offering> </gml:metaDataProperty>
<swe:uom code=""/> </swe:Quantity></sml:output></sml:OutputList>
</sml:outputs></sml:System></sml:member>
</sml:SensorML></SensorDescription>
</RegisterSensor>
4.2標準化的數(shù)據(jù)傳輸格式
在各種各類物聯(lián)網(wǎng)實時信息系統(tǒng)的開發(fā)過程中,另外一 個重要的方面是如何將來自無數(shù)物聯(lián)網(wǎng)節(jié)點的數(shù)據(jù)傳輸?shù)綌?shù)據(jù) 服務(wù)中心,并進行統(tǒng)一的存儲。對于當前的物聯(lián)網(wǎng)實時信息系 統(tǒng),很多網(wǎng)關(guān)往同一個物聯(lián)網(wǎng)數(shù)據(jù)服務(wù)中心發(fā)送數(shù)據(jù)。對于每 一個網(wǎng)關(guān)而言,它管理著很多物聯(lián)網(wǎng)節(jié)點,每一個節(jié)點的數(shù)據(jù) 輸出格式也不相同。在很多情況下,網(wǎng)關(guān)按照不同的格式將不 同的節(jié)點數(shù)據(jù)發(fā)送到數(shù)據(jù)服務(wù)中心。數(shù)據(jù)服務(wù)中心需要能夠處 理所接收到的不同格式的實時數(shù)據(jù)。這種情況導致每次增加 一些物聯(lián)網(wǎng)節(jié)點,就需要修改網(wǎng)關(guān)軟件和數(shù)據(jù)服務(wù)中心軟件的 源代碼,這為物聯(lián)網(wǎng)的大面積和大規(guī)模應(yīng)用帶來了很多不便。
在我們的物聯(lián)網(wǎng)實時系統(tǒng)設(shè)計和實踐中,物聯(lián)網(wǎng)網(wǎng)關(guān)采 用標準的XML文檔數(shù)據(jù)傳輸格式,并將該文件發(fā)送到SOS Web服務(wù)的數(shù)據(jù)接收接口。當SOS接收到該XML文檔信息后, 將會自動分析該文檔的數(shù)據(jù)特征,自動解析物聯(lián)網(wǎng)節(jié)點實時 數(shù)據(jù)并存人數(shù)據(jù)庫。對于同一個或不同的物聯(lián)網(wǎng)實時信息系統(tǒng), 網(wǎng)關(guān)所采用的XML文檔傳輸格式都是相同的。也就是說不同 的網(wǎng)關(guān)所使用的XML文檔具有相同的標簽,只是不同標簽下 所包含的內(nèi)容對于不同的物聯(lián)網(wǎng)節(jié)點有所不同。一個簡化版本 的物聯(lián)網(wǎng)網(wǎng)關(guān)數(shù)據(jù)傳輸XML文檔如下所示,它主要包括物聯(lián) 網(wǎng)節(jié)點ID、數(shù)據(jù)采集時間、采樣點值、地理位置信息和實時 數(shù)據(jù)的值。
<InsertObservation service="SOS" version="1.0.0"> <AssignedSensorId> IfGI-SDP</AssignedSensorId> <om:Measurement><om:samplingTime><gml:TimeInsta nt>
<gml:timePosition>2014-07-20T17:44:15+00
</gml:timePosition></gml:TimeInstant>
</om:samplingTime>
<om:procedure xlink:href=" IfGI-SDP"/>
<om: observedProperty xlink:href="OGC:imagesequence"/>
<om:featureOfInterest>
<sa: SamplingPoint gml:id="SDP SamplingPoint 1">
<gml:name>SDP SamplingPoint 1</gml:name>
<sa: sampledFeature xlink:href=""/>
<sa:position>
<gml:Point>
<gml:pos srsName="EPSG:4326">40.6392 -73.7789
</gml:pos>
</gml:Point></sa:position></sa:SamplingPoint>
</om:featureOfInterest>
<om:result uom="">100</om:result>
</om: Measurement>
</InsertObservation>
4.3標準化的數(shù)據(jù)存儲格式
在數(shù)據(jù)服務(wù)中心,利用SOS數(shù)據(jù)庫對物聯(lián)網(wǎng)實時數(shù)據(jù)進 行標準化存儲。SOS數(shù)據(jù)庫設(shè)計所涉及的主要表格為Feature- of_interest (觀測點數(shù)據(jù)特征)表(即表1)、Observation (觀 測數(shù)據(jù))表(即表2)‘Phenomenon (節(jié)點數(shù)據(jù)現(xiàn)象)表(表3)、 Offering (節(jié)點數(shù)據(jù)服務(wù))表(表4)和Procedure (節(jié),點數(shù)據(jù) 處理過程)表(表5),分別敘述如下:
Feature_of_interest表格存儲有關(guān)物聯(lián)網(wǎng)節(jié)點觀測點的特 征及地理特征的參數(shù)。其中g(shù)eom字段是PostGIS的類型,詳 細記錄了觀測點的地理位置。
Observation表格結(jié)合了物聯(lián)網(wǎng)節(jié)點以及其它如時間、處 理過程、觀測點特征等分開存儲的數(shù)據(jù)。其中Procedure_id, Feature_of_interest_id 和 Offering_id 是外鍵。Observation 存 儲具體觀測到的每一條物聯(lián)網(wǎng)節(jié)點數(shù)據(jù),同時,觀測者可以 過濾物聯(lián)網(wǎng)節(jié)點實時數(shù)據(jù)信息。
表 2 Observation
字段名 |
含義 |
observation_id |
觀測者ID |
tme_s/mp |
觀測的時間戳 |
procedure_id |
過程ID |
feamie_o_inteiesLid |
觀測點特征ID |
phenomenon_id |
現(xiàn)象ID |
offering_id |
供應(yīng)傳感ID |
texLvalue |
Tex值 |
numeric_value |
數(shù)值 |
spatia_value |
空間值 |
m ^e_^pe |
Tex值 |
Phenomenon表存儲了物聯(lián)網(wǎng)節(jié)點所描述的數(shù)據(jù)觀察現(xiàn) 象,在SOS規(guī)范下的數(shù)據(jù)現(xiàn)象又稱為觀測屬性。該表格屬性 包括現(xiàn)象ID、現(xiàn)象描述、數(shù)據(jù)單位、值類型、復合現(xiàn)象和 Schema鏈接等。
Offering表存儲了可以提供SOS服務(wù)的物聯(lián)網(wǎng)節(jié)點信息。 當注冊物聯(lián)網(wǎng)節(jié)點時,節(jié)點相關(guān)的信息將被存儲到Offering表格。
表3 Phenomenon (節(jié)點數(shù)據(jù)現(xiàn)象)
字段名 |
含義 |
phenomenon_id |
現(xiàn)象ID |
phenomenon_description |
現(xiàn)象描述 |
unit |
單位 |
value恥e |
值類型 |
composite_phenomenon |
復合現(xiàn)象 |
om_application_schema_link |
Schema鏈接 |
表4 Offering (節(jié)點數(shù)據(jù)服務(wù))
字段名 |
含義 |
offering_id |
供應(yīng)傳感ID |
offering_name |
供應(yīng)名稱 |
min_time |
最小時間 |
max_time |
最大時間 |
Procedure表存儲了數(shù)據(jù)處理過程,是物聯(lián)網(wǎng)節(jié)點具體信 息在數(shù)據(jù)庫中的體現(xiàn),該表的屬性包括過程ID、url描述、描 述類型、Sml文件、實際地理位置、節(jié)點是否移動和節(jié)點是否 激活。
表5 Procedure (節(jié)點數(shù)據(jù)處理過程)
字段名 |
含義 |
procedure_id |
過程ID |
description_ur 1 |
ur描述 |
description.板pe |
描述類型 |
外 _file |
Sm文件 |
actua [position |
實際地理位置 |
mobi e |
節(jié)點是否移動 |
active |
節(jié)點是否激活 |
隨著物聯(lián)網(wǎng)應(yīng)用范圍和領(lǐng)域的擴大,各級各類物聯(lián)網(wǎng)實 時信息系統(tǒng)不斷涌現(xiàn)出來。當前,各級各類物聯(lián)網(wǎng)實時信息 系統(tǒng)之間的數(shù)據(jù)交換是一個難點。一個原因是很多物聯(lián)網(wǎng)實 時信息系統(tǒng)沒有提供數(shù)據(jù)交換的API接口。另一個原因是對 一些提供對外數(shù)據(jù)交換API接口的物聯(lián)網(wǎng)實時信息系統(tǒng),由 于它們提供的接口各不相同,當一個物聯(lián)網(wǎng)實時信息系統(tǒng)希望 使用其它幾個實時信息系統(tǒng)的數(shù)據(jù)時,該系統(tǒng)就需要大量修 改原有的源代碼,來從不同的API接口獲取其它系統(tǒng)的數(shù)據(jù)。 不同物聯(lián)網(wǎng)實時信息系統(tǒng)之間的數(shù)據(jù)交換問題,已經(jīng)制約了 物聯(lián)網(wǎng)應(yīng)用在各個領(lǐng)域大規(guī)模深入發(fā)展,我們研究小組試圖 解決這個難題。
在我們的物聯(lián)網(wǎng)實時系統(tǒng)設(shè)計和實踐中,物聯(lián)網(wǎng)網(wǎng)關(guān)采 用標準的XML文檔進行不同應(yīng)用和不同實時數(shù)據(jù)系統(tǒng)之間的 數(shù)據(jù)交換。當一個基于SOS的物聯(lián)網(wǎng)實時信息系統(tǒng)希望從另 外一個基于SOS的物聯(lián)網(wǎng)實時數(shù)據(jù)管理系統(tǒng)獲取數(shù)據(jù)時,該 系統(tǒng)可以將一個標準的XML文檔發(fā)送到SOS Web服務(wù)的數(shù) 據(jù)接收接口。當SOS Web服務(wù)器接收到該XML文檔信息后, 將會自動分析該文檔的特征,并從SOS數(shù)據(jù)庫中提取相關(guān)數(shù) 據(jù),并將這些數(shù)據(jù)以標準O&M XML文檔返回到調(diào)用數(shù)據(jù)的 物聯(lián)網(wǎng)實時數(shù)據(jù)系統(tǒng)。對于同一個或不同的物聯(lián)網(wǎng)實時信息系 統(tǒng),調(diào)用同一類數(shù)據(jù)時所采用的XML文檔傳輸格式都是相同 的。一個簡化版本的標準化的數(shù)據(jù)獲取GetObservation XML 文檔如下所示,它主要描述了所調(diào)用數(shù)據(jù)的名稱、數(shù)據(jù)特性、 返回數(shù)據(jù)格式和返回查詢結(jié)果模型。
<?xml version="1.0" encoding="UTF-8"?>
<GetObservation service="SOS" version="1.0.0" srsName="EPSG:4326">
<offering>GAUGE_HEIGHT</offering>
<observedProperty>OGC: waterlevel</observedProperty> <responseFormat>text/xml</responseFormat> <resultModel>Measurement</resultModel> <responseMode>inline</responseMode> </GetObservation>
5物聯(lián)網(wǎng)實時數(shù)據(jù)管理系統(tǒng)設(shè)計
基于SOS Web實時數(shù)據(jù)服務(wù)平臺,我們開發(fā)了物聯(lián)網(wǎng)實 時數(shù)據(jù)管理系統(tǒng)。整個系統(tǒng)的設(shè)計分為物聯(lián)網(wǎng)網(wǎng)關(guān)數(shù)據(jù)傳輸 客戶端功能設(shè)計與SOS Web服務(wù)器端數(shù)據(jù)處理及管理功能的 設(shè)計。
5.1物聯(lián)網(wǎng)網(wǎng)關(guān)客戶端設(shè)計
客戶端設(shè)計比較簡單,它主要包括物聯(lián)網(wǎng)網(wǎng)關(guān)節(jié)點標準 化注冊設(shè)計、數(shù)據(jù)收集設(shè)計和標準化數(shù)據(jù)傳輸設(shè)計。物聯(lián)網(wǎng) 網(wǎng)關(guān)客戶端通過Post請求將標準化的XML文檔發(fā)送到一個 指定的url地址進行物聯(lián)網(wǎng)節(jié)點的標準化注冊和實時數(shù)據(jù)傳 輸。本論文以Android智能手機作為物聯(lián)網(wǎng)網(wǎng)關(guān),它所配置的 各種傳感器作為物聯(lián)網(wǎng)節(jié)點,對物聯(lián)網(wǎng)網(wǎng)關(guān)客戶端節(jié)點標準化 注冊和標準化數(shù)據(jù)傳輸功能進行了測試。
5.2服務(wù)器端SOS數(shù)據(jù)服務(wù)設(shè)計
SOS服務(wù)采用PostgreSQL數(shù)據(jù)庫,實現(xiàn)物聯(lián)網(wǎng)節(jié)點數(shù) 據(jù)的自動注冊、采集、過濾和存儲。通過SOS服務(wù),可以有 效觀測物聯(lián)網(wǎng)實時的數(shù)據(jù)。具體流程是:當服務(wù)器接收到來 自客戶端的請求,RequestOperation檢查其合法和有效性,如 果是合法的請求,則把它交給Listener。SOS服務(wù)中存在多種 Listener,每個listener都有其對應(yīng)的請求,當Listener監(jiān)聽 到請求信息,就調(diào)用相應(yīng)的數(shù)據(jù)庫訪問層的DAO,或者反饋 一些有效信息到客戶端。數(shù)據(jù)庫訪問層包含了各個處理業(yè)務(wù)信 息的DAO, SOS通過DAO與數(shù)據(jù)庫交互。
5.3 Web服務(wù)器端數(shù)據(jù)處理及管理設(shè)計
基于SOS服務(wù)所提供的各種實時數(shù)據(jù),可設(shè)計各種各樣 的物聯(lián)網(wǎng)應(yīng)用。本論文只簡單討論具有4個功能模塊的的物聯(lián) 網(wǎng)應(yīng)用的設(shè)計,它們是用戶信息管理、物聯(lián)網(wǎng)實時數(shù)據(jù)管理、 GIS數(shù)據(jù)管理和日志管理。用戶信息管理模塊主要管理所有此 系統(tǒng)用戶的基本信息,管理員可以通過此模塊注冊新的管理 員或者普通用戶,同時管理員可以查看和刪除普通用戶賬號。 普通用戶可以通過此模塊修改自身信息。
通過物聯(lián)網(wǎng)實時數(shù)據(jù)管理,可查看物聯(lián)網(wǎng)網(wǎng)關(guān)發(fā)送過來 的實時數(shù)據(jù)。在我們開發(fā)的系統(tǒng)中,主要是通過動態(tài)曲線圖和 表格來查看數(shù)據(jù)的詳細信息。其中數(shù)據(jù)表格可以通過時間范 圍分頁查詢詳細的物聯(lián)網(wǎng)節(jié)點數(shù)據(jù)信息。管理員和普通用戶都 具有查看此模塊具體內(nèi)容的權(quán)限。
GIS數(shù)據(jù)管理模塊通過Google map定位物聯(lián)網(wǎng)節(jié)點的具 體位置,可以查看所有物聯(lián)網(wǎng)節(jié)點數(shù)據(jù)的具體表格信息。當雙 擊其中某條數(shù)據(jù)時,Google map上的彈窗可以顯示據(jù)此條數(shù) 據(jù)時間點附近的五條相同類型數(shù)據(jù),通過柱狀圖的比較,可 以看出其中的差異。通過日志管理模塊可查看系統(tǒng)的所有登錄 信息,只有管理員具備此權(quán)限,普通用戶無法查看。
6物聯(lián)網(wǎng)網(wǎng)關(guān)客戶端功能實現(xiàn)
本論文以Android智能手機及它的傳感器作為物聯(lián)網(wǎng)網(wǎng) 關(guān)及物聯(lián)網(wǎng)節(jié)點,來測試網(wǎng)關(guān)客戶端的功能實現(xiàn)。Android客 戶端負責光線數(shù)據(jù)、方向數(shù)據(jù)、磁場數(shù)據(jù)和加速度數(shù)據(jù)的產(chǎn) 生與傳輸,通過Post請求將XML格式數(shù)據(jù)發(fā)送到一個指定 的url地址。Web服務(wù)器端通過運行SOS服務(wù)將收集到的數(shù) 據(jù)自動持久化到PostgreSQL數(shù)據(jù)庫。數(shù)據(jù)觀測員或者管理員 可以訪問系統(tǒng)網(wǎng)站,通過詳細的實時數(shù)據(jù)和曲線圖觀測傳感器 數(shù)據(jù)的變化。
本次設(shè)計涉及到的傳感器數(shù)據(jù)的收集和發(fā)送主要是通 過Android設(shè)備里面自帶的傳感裝置和GPS模塊來進行傳感 器數(shù)據(jù)和位置信息的收集。通過選擇發(fā)送各個傳感器數(shù)據(jù)到 SOS服務(wù)器端。傳感器數(shù)據(jù)的發(fā)送需要封裝成標準化的XML 格式,XML具體格式如以下代碼所示。
<?xml version="1.0" encoding="UTF-8"?>
<InsertObservationservice="SOS" version="1.0.0">
<AssignedSensorId> androidsensor-accelerometer </AssignedSensorId>
<om:CategoryObservation>
<om:samplingTime><gml:TimeInstant>
<gml:timePosition>2012-04-02T17:44:15+02:00 </gml:timePo sition>
</gml:TimeInstant></om:samplingTime>
<om:procedure xlink:href="androidsensoi-accelerometer"/> <om: observedProperty xlink: href= "accelerometer"/> <om:featureOfInterest>
<sa:SamplingPoint gml:id="foi_sensor_10001"> <gml:name>SANMING</gml:name>
<sa:sampledFeature xlink:href=""/>
<sa:position>
<gml:Point>
<gml:pos srsName="EPSG:4326">5L7167 8.76667 </gml:pos></gml:Point></sa:position>
</sa: SamplingPoint></om: featureOfInterest> <om:result>12, 12, 12</om:result> </om:CategoryObservation>
</InsertObservation>
SOS指定了一個可以發(fā)送和接收數(shù)據(jù)的網(wǎng)絡(luò)地址,http:// IP地址:8080/52nSOSv3/sos,具體的IP地址和端口視具體網(wǎng)絡(luò) 環(huán)境改變,手機端軟件每隔一段時間(1 s、5 s或10 s)便會自動 將收到的實時數(shù)據(jù)以標準化的數(shù)據(jù)傳輸XML文檔發(fā)送到SOS 服務(wù)器。當服務(wù)器接收到post請求,便調(diào)用SOS的Servlet和監(jiān) 聽器類,對XML代碼詳細解析,當判斷出此XML是觀測到的傳 感器數(shù)據(jù)信息,將自動持久化到數(shù)據(jù)庫,并反饋插入成功的標識和 信息到客戶端。當用戶點擊此軟件客戶端,就會進入如圖5所示的 主界面,用戶可以觀測到各種傳感器數(shù)據(jù)的變換,并通過menu鍵, 選擇發(fā)送數(shù)據(jù)或停止發(fā)送數(shù)據(jù)。
圖5 Android客戶端展示
7 Web服務(wù)器端的功能實現(xiàn)
如圖6所示,在瀏覽器地址欄中輸入http:// IP地址:8080/ sensorSystem,就可以看到登陸界面,通過輸入用戶名和密碼, 以及角色權(quán)限,經(jīng)驗證合法,將會跳轉(zhuǎn)到系統(tǒng)首頁。管理員 與普通用戶的權(quán)限不盡相同,管理員可以查看各個模塊的信 息,以及管理各個用戶,并且查看日志信息,普通用戶只能查 看傳感器數(shù)據(jù)信息。圖7所示是光線傳感器的實時動態(tài)數(shù)據(jù) 顯示界面,其它的傳感數(shù)據(jù)顯示界面相似。動態(tài)曲線圖顯示的 是實時的十五條最新數(shù)據(jù),用戶也通過grid條件查詢,查詢 某個時間范圍內(nèi)的數(shù)據(jù)列表如圖8所示。圖9所示是Google map模塊數(shù)據(jù)管理界面。Google map展示頁與管理頁的風格 是一致的,采用將Google map嵌入panel的形式,不僅可以 實現(xiàn)物聯(lián)網(wǎng)網(wǎng)關(guān)及節(jié)點的定位,而且與Grid數(shù)據(jù)的交互更加 方便。圖10所示是Google map界面實時數(shù)據(jù)柱狀圖展示。 當用戶雙擊界面列表中的某一條記錄,Google map上將會打 開一個信息窗口,此窗口展示了與此記錄相同傳感類型的五條 傳感器數(shù)據(jù),通過柱狀圖的比較,可以觀測出他們的區(qū)別,更 為直觀地展示數(shù)據(jù)。
圖6物聯(lián)網(wǎng)實時數(shù)據(jù)數(shù)據(jù)管理系統(tǒng)登錄界面
圖7光線傳感器動態(tài)數(shù)據(jù)曲線顯示
圖8光線傳感器數(shù)據(jù)列表
圖9 Google map模塊數(shù)據(jù)管理界面
圖10 Google map界面實時數(shù)據(jù)柱狀圖展示
8結(jié)語
本論文依據(jù)SOS Web數(shù)據(jù)服務(wù)標準,建立了標準化的物 聯(lián)網(wǎng)實時數(shù)據(jù)管理體系,它包括物聯(lián)網(wǎng)節(jié)點的標準化注冊、物 聯(lián)網(wǎng)實時數(shù)據(jù)標準化傳輸、物聯(lián)網(wǎng)實時數(shù)據(jù)標準化存儲和物 聯(lián)網(wǎng)實時數(shù)據(jù)標準化調(diào)用。同時,為了驗證該實時數(shù)據(jù)標準化 管理體系的有效性,使用了目前非常流行的Web前后臺開發(fā) 框架 Extjs 和 SSH2(Struts2, Spring,Hibernate)開發(fā)了物聯(lián) 網(wǎng)實時數(shù)據(jù)管理系統(tǒng),該系統(tǒng)使用了 PostgreSQL數(shù)據(jù)庫,它 運行于小巧靈活的Tomcat Web服務(wù)器。開發(fā)及測試表明,我 們所采用的物聯(lián)網(wǎng)實時數(shù)據(jù)處理標準可以幫助快速建立高性 能的物聯(lián)網(wǎng)實時數(shù)據(jù)處理系統(tǒng),并可以方便地完成不同系統(tǒng) 之間的數(shù)據(jù)交換。
20211222_61c2f6f48f193__基于SOS技術(shù)的物聯(lián)網(wǎng)實時數(shù)據(jù)管理系統(tǒng)開發(fā)