亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于互聯(lián)網(wǎng)服務(wù)器的海量ZigBee節(jié)點管理系統(tǒng)①

        2019-07-23 02:07:46蘆晨博
        關(guān)鍵詞:服務(wù)端消息指令

        蘆晨博

        (沈陽工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110870)

        引言

        在基于Z-Stack 協(xié)議棧的ZigBee 網(wǎng)絡(luò)中通過使用16 位短地址[1]在本地網(wǎng)絡(luò)中標(biāo)識設(shè)備和在網(wǎng)絡(luò)中發(fā)送數(shù)據(jù),當(dāng)一個節(jié)點加入網(wǎng)絡(luò)的時候?qū)⒂伤母腹?jié)點給它分配短地址[2].這個短地址的長度規(guī)定了在一個ZigBee 網(wǎng)絡(luò)中最多能搭載65 535 個節(jié)點,而在實際應(yīng)用中由于ZigBee 節(jié)點芯片的運算能力有限,加上載波偵聽多路訪問/沖突避免[3](Carrier Sense Multiple Access with Collision Detection,CSMA/CA)等原因很難達(dá)到上萬節(jié)點的掛載.在使用全路由節(jié)點網(wǎng)絡(luò)[4,5],更強性能的協(xié)調(diào)器或多信道通訊等手段時雖然可有效提高網(wǎng)絡(luò)中的節(jié)點數(shù)量,仍然無法突破短地址帶來的上限,同時又大大增加了系統(tǒng)復(fù)雜度.在物聯(lián)網(wǎng)蓬勃發(fā)展的今天與萬物皆可互聯(lián)的理念下[6],搭建能夠處理大量節(jié)點的網(wǎng)絡(luò)結(jié)構(gòu)意義重大.

        本文通過在ZigBee 節(jié)點網(wǎng)絡(luò)之上利用互聯(lián)網(wǎng)服務(wù)器搭建外網(wǎng)結(jié)構(gòu),集中管理各個內(nèi)網(wǎng)ZigBee 節(jié)點群,并提供自組網(wǎng)功能.根據(jù)實際業(yè)務(wù)需求進(jìn)行節(jié)點網(wǎng)絡(luò)的組建,服務(wù)端將集中管理所有節(jié)點數(shù)據(jù)并對外提供Web 服務(wù).在服務(wù)端的架構(gòu)設(shè)計上可采用分布式,搭建集群,負(fù)載均衡等多種應(yīng)對高并發(fā)[7,8]的設(shè)計方式,使得系統(tǒng)性能與節(jié)點掛載能力獲得極大提升.

        1 整體設(shè)計

        系統(tǒng)整體由終端節(jié)點,節(jié)點協(xié)調(diào)器,內(nèi)網(wǎng)控制器,中央服務(wù)器,人機(jī)接口構(gòu)成五層網(wǎng)絡(luò)結(jié)構(gòu).

        終端節(jié)點、協(xié)調(diào)器、內(nèi)網(wǎng)控制器組成內(nèi)網(wǎng)結(jié)構(gòu).其中ZigBee 終端節(jié)點可掛載各類傳感器和控制設(shè)備與ZigBee 協(xié)調(diào)器之間通過利用Z-Stack 協(xié)議棧完成自組網(wǎng)與無線通訊功能.每個獨立的ZigBee 網(wǎng)絡(luò)都配有一臺直接與外網(wǎng)相連并具有一定存儲功能的內(nèi)網(wǎng)控制器.協(xié)調(diào)器與內(nèi)網(wǎng)控制器可通過串口相連或直接集成在一起.控制器接受中央服務(wù)器的指令信息來驅(qū)動ZigBee 協(xié)調(diào)器,并通過廣播的方式向終端節(jié)點傳遞指令消息,同時將終端的狀態(tài)信息同步至中央服務(wù)器.

        中央服務(wù)器內(nèi)維護(hù)著各個內(nèi)網(wǎng)系統(tǒng)控制器的IP地址和與之相匹配的身份標(biāo)識.整個系統(tǒng)中每一個終端節(jié)點擁有一個唯一的全局節(jié)點ID(GlobalID),服務(wù)器通過GlobalID 和控制器IP 地址可對指定節(jié)點發(fā)送控制信息.中央數(shù)據(jù)庫內(nèi)存儲著所有節(jié)點的狀態(tài)信息并可提供Web 服務(wù)供用戶客戶端訪問.整體結(jié)構(gòu)如圖1.

        2 內(nèi)網(wǎng)結(jié)構(gòu)設(shè)計

        2.1 終端節(jié)點

        任意一個內(nèi)網(wǎng)結(jié)構(gòu)中,每個終端節(jié)點在啟動之前會被分配一個身份標(biāo)識符(NodeID).啟動設(shè)備后在ZStack 協(xié)議棧的幫助下會自動尋找當(dāng)前網(wǎng)絡(luò)內(nèi)的協(xié)調(diào)器,若匹配成功則加入該網(wǎng)絡(luò).在完成自組網(wǎng)工作后節(jié)點進(jìn)入正常工作狀態(tài).終端節(jié)點除自組網(wǎng)任務(wù)外仍需在Z-Stack 協(xié)議棧操作系統(tǒng)抽象層(Operating System Abstraction Layer,OSAL)[9]中注冊和初始化兩項基本任務(wù).

        圖1 整體機(jī)構(gòu)示意圖

        (1)狀態(tài)信息定時發(fā)送任務(wù):終端節(jié)點周期性的向網(wǎng)絡(luò)內(nèi)的協(xié)調(diào)器發(fā)送狀態(tài)信息其目的是為了表明自身存活狀態(tài)并可傳遞各類傳感器信息.數(shù)據(jù)格式一般為:NodeID+狀態(tài)信息.

        (2)指令消息接受任務(wù):系統(tǒng)中協(xié)調(diào)器以廣播的形式傳遞消息,數(shù)據(jù)格式為:NodeID+操作碼,當(dāng)終端指令與指令消息中的NodeID 對比成功后執(zhí)行操作碼對應(yīng)的自定義任務(wù),對比失敗則忽略消息.

        2.2 協(xié)調(diào)器

        系統(tǒng)中ZigBee 協(xié)調(diào)器除完成自組網(wǎng)任務(wù)外,僅作為消息的傳遞者.將內(nèi)網(wǎng)控制器傳來并將受到的終端節(jié)點狀態(tài)信息傳遞給內(nèi)網(wǎng)控制器.

        2.3 內(nèi)網(wǎng)控制器

        內(nèi)網(wǎng)控制器是連接ZigBee 網(wǎng)絡(luò)與中央服務(wù)器的核心樞紐,用于解析服務(wù)端請求,向協(xié)調(diào)器發(fā)送指令信息和封裝節(jié)點狀態(tài)信息同步至中央服務(wù)器.控制器會被分配一個公網(wǎng)IP 地址供中央服務(wù)器查找.在本文的設(shè)計中控制器需至少包含四項基本任務(wù):

        (1)中央服務(wù)器消息監(jiān)聽任務(wù)(CenterMsgListener):啟動一個SocketService 監(jiān)聽指定端口,中央服務(wù)器會向該端口發(fā)送各類指令信息,調(diào)用MsgParser 解析指令消息,其中數(shù)據(jù)段的格式為GlobalID(全局節(jié)點ID)的指令消息原封不動通過廣播方式發(fā)送出去.

        (2)中央服務(wù)器消息發(fā)送任務(wù)(CenterMsgSender):新建SocketClient 向中央服務(wù)器發(fā)送包括控制器心跳、注冊信息、節(jié)點狀態(tài)的更新、新節(jié)點入網(wǎng)與節(jié)點失活等多種消息.

        (3)協(xié)調(diào)器消息監(jiān)聽任務(wù)(ZNodeMsgListener):接收協(xié)調(diào)器收集到的終點節(jié)點狀態(tài)信息.

        (4)協(xié)調(diào)器消息發(fā)送任務(wù)(ZNodeSender):向協(xié)調(diào)器發(fā)送正確格式的指令字符.在控制器初始化階段還需加載4 張基本數(shù)據(jù)表.

        表1 控制器初始化基本數(shù)據(jù)表

        2.3.1 處理服務(wù)器控制信息

        當(dāng)控制器接收到中央服務(wù)器的指令消息時需依次執(zhí)行以下任務(wù):

        (1)解析消息獲取指令數(shù)據(jù)段,解析失敗向服務(wù)器返回ERROR-指令消息非法.

        (2)查詢Global2Node 獲取內(nèi)網(wǎng)節(jié)點ID,獲取失敗時向服務(wù)端返回EXCEPTION-節(jié)點不存在或已下線.

        (3)對照Command 表封裝正確格式的指令信息.

        (4)獲取ZNodeSender 向協(xié)調(diào)器發(fā)送指令消息字符,若發(fā)送失敗向服務(wù)端返ERROR (節(jié)點操作失敗).

        (5)向服務(wù)端返回SUCCESS.

        (6)更新NodeStatus 表中的狀態(tài)信息.

        (7)在本地磁盤內(nèi)新增操作記錄與日志信息.

        2.3.2 處理協(xié)調(diào)器節(jié)點消息

        控制器接收到協(xié)調(diào)器節(jié)點心跳信息時需根據(jù)內(nèi)容作出不同的處理,當(dāng)某一節(jié)點的心跳消息第一次出現(xiàn)時需在本地緩存節(jié)點狀態(tài)信息,為減輕服務(wù)器端的壓力只有在節(jié)點狀態(tài)發(fā)生實質(zhì)上的變化時才會發(fā)送更新消息.具體處理流程如圖2所示.

        2.3.3 處理節(jié)點離線

        Status 中記錄著對應(yīng)節(jié)點的上次心跳時間,控制器初始化完成后啟動監(jiān)聽線程周期性的遍歷NodeStatus表,根據(jù)當(dāng)前時間戳查找已超時節(jié)點,封裝超時節(jié)點信息向服務(wù)端發(fā)送節(jié)點下線消息,清除NodeStatus 中緩存的對應(yīng)節(jié)點記錄,更新本地數(shù)據(jù)庫.

        3 外網(wǎng)結(jié)構(gòu)設(shè)計

        3.1 中央服務(wù)器

        中央服務(wù)器是外網(wǎng)結(jié)構(gòu)的核心,其核心功能主要分為三部分:

        (1)維護(hù)各個內(nèi)網(wǎng)控制器的通訊地址與通訊方式,快速匹配目標(biāo)節(jié)點發(fā)送控制信息.

        (2)響應(yīng)并處理控制器請求,存儲所有節(jié)點狀態(tài)信息,維護(hù)系統(tǒng)內(nèi)數(shù)據(jù)的一致性.

        (3)對外提供Web 服務(wù),將對ZigBee 節(jié)點的操作抽象成具體業(yè)務(wù)功能.外網(wǎng)結(jié)構(gòu)如圖3所示.

        對于客戶端來說,所有被查詢的節(jié)點數(shù)據(jù)均來自于中央數(shù)據(jù)庫,在享受這種高效的,體驗良好的查詢服務(wù)時,需要重點關(guān)注數(shù)據(jù)實時性的問題.系統(tǒng)內(nèi)影響實時性的主要因素來源于從節(jié)點狀態(tài)發(fā)生變化到數(shù)據(jù)庫更新所產(chǎn)生的時間差.

        針對此問題在內(nèi)網(wǎng)結(jié)構(gòu)中可以選擇提高心跳信息的采集頻率、使用更高性能的網(wǎng)絡(luò)模塊、在終端節(jié)點上采用中斷的方式提交更新數(shù)據(jù)或者可以在同一業(yè)務(wù)區(qū)域內(nèi)搭建多個內(nèi)網(wǎng)結(jié)構(gòu).更高的實時性必然需要付出更多的成本和性能.對于中央服務(wù)器而言并不需要過多的關(guān)心業(yè)務(wù),最重要的是盡可能的提高處理并發(fā)的能力.除了在請求處理上采用合理的負(fù)載均衡策略外,值得一提的是在節(jié)點ID 字段的分配時可在其中加入業(yè)務(wù)地區(qū)與業(yè)務(wù)類型的標(biāo)識字符,這種設(shè)計在存儲時十分有利于做分庫分表[10],在查詢時也可根據(jù)ID 中的標(biāo)識字符定位數(shù)據(jù)庫的位置.性能提高十分明顯.

        圖2 節(jié)點信息處理流程圖

        圖3 外網(wǎng)結(jié)構(gòu)示意圖

        當(dāng)服務(wù)器接受到節(jié)點操作請求時,為保證節(jié)點操作的準(zhǔn)確性與系統(tǒng)內(nèi)數(shù)據(jù)的一致性,用戶的請求與中央服務(wù)器對控制器的操作請求都應(yīng)該是阻塞的,核心數(shù)據(jù)的事務(wù)[11]應(yīng)包含整個過程.

        3.2 控制器注冊與組網(wǎng)機(jī)制

        在控制器初始化階段控制器需向中央服務(wù)器發(fā)送注冊信息表明身份請求接入網(wǎng)絡(luò).數(shù)據(jù)段中至少包括:自身IP 地址,用于接受消息的端口號與通訊的使用密鑰.

        其中密鑰為中央服務(wù)器與控制器之間約定的加密與解密字符,為保證通訊的安全每一次消息的傳遞都應(yīng)使用密鑰,出于對時效性與安全性的考慮還在加密字段中加入了時間戳,在加密與解密的兩次結(jié)果中時間間隔過長也應(yīng)視為異常信息.

        當(dāng)控制器第一次注冊時(即服務(wù)器內(nèi)沒有該控制器記錄)視為新入網(wǎng)控制器.中央服務(wù)器會為其分配一個ID 響應(yīng)給控制器,同時在中央數(shù)據(jù)庫生成連接記錄,并將該控制器加入心跳監(jiān)聽序列中.

        當(dāng)注冊完成后控制器陸續(xù)會將它所在內(nèi)網(wǎng)中新加入的ZigBee 節(jié)點信息發(fā)送至服務(wù)器,此時消息數(shù)據(jù)段中包括控制器ID 節(jié)點GlobalID 和節(jié)點信息.在服務(wù)器將新增ZigBee 節(jié)點的數(shù)據(jù)同步完成后該網(wǎng)絡(luò)內(nèi)的節(jié)點即可正常使用.

        順利完成第一次注冊后控制器會在本地持久化控制器ID,當(dāng)控制器重新啟動再次進(jìn)行注冊任務(wù)時會攜帶控制器ID 表明身份重新激活網(wǎng)絡(luò)連接.當(dāng)控制器各項信息需要更新時便可使用重新注冊的方式.

        3.3 控制器與中央服務(wù)器之間的心跳機(jī)制

        控制器注冊完成之后會周期性的向中央服務(wù)器發(fā)送心跳包,服務(wù)器會集中管理并監(jiān)聽所有ZigBee 網(wǎng)絡(luò)的心跳[12].本文的設(shè)計中使用了redis[13,14]中SortedSet結(jié)構(gòu)集中管理心跳記錄,成員分?jǐn)?shù)為最近一次心跳的時間戳.當(dāng)集合中成員數(shù)量大于64 時SortedSet 同時使用了Hash 和Skiplist[15]兩種設(shè)計實現(xiàn),其范圍查找操作復(fù)雜度一般為O(log(N)+M)(N為有序集的基數(shù),M為被結(jié)果集的基數(shù)).使用范圍查找在集合中成員分?jǐn)?shù)小于當(dāng)前時間戳與約定超時時間的差所產(chǎn)生的結(jié)果集即可認(rèn)為是心跳已超時的連接.服務(wù)端將會對結(jié)果集內(nèi)的控制器發(fā)送存活確認(rèn)消息,當(dāng)消息響應(yīng)異常時可視為連接中斷,更改控制器及屬于該控制器網(wǎng)絡(luò)中所有節(jié)點的連接狀態(tài)并執(zhí)行相應(yīng)的離線異常處理機(jī)制.

        3.4 人機(jī)接口設(shè)計思路

        系統(tǒng)內(nèi)針對用戶的查詢與控制操作都通過訪問中央服務(wù)器所提供的Web 服務(wù)實現(xiàn).用戶可通過使用瀏覽器或手機(jī)app 等多種互聯(lián)網(wǎng)手段向服務(wù)器發(fā)送請求,服務(wù)端最終會將用戶的行為翻譯成節(jié)點GlobalID 與操作碼的形式.通過GlobalID 查詢數(shù)據(jù)庫,如果是控制信息將獲取節(jié)點所在內(nèi)網(wǎng)的IP 地址,再由服務(wù)端與指定的ZigBee 網(wǎng)絡(luò)進(jìn)行通訊.

        4 簡單測試系統(tǒng)的搭建

        為驗證系統(tǒng)可行性,利用有限的硬件資源搭建如下測試系統(tǒng):

        系統(tǒng)中央服務(wù)器采用阿里云輕量級應(yīng)用服務(wù)器:1 核CPU、2 GB 內(nèi)存、40 GB 固態(tài)硬盤、峰值帶寬1 Mbps、操作系統(tǒng)為CentOS 7.3 版本、提供獨立公網(wǎng)IP 與域名解析功能.在服務(wù)器內(nèi)使用Redis 3.0 搭配MySQL 5.7 版本作為系統(tǒng)中央數(shù)據(jù)庫.后端代碼主要由Java 語言編寫,所有針對處理用戶http 請求的服務(wù)均使用了Tomcat 服務(wù)器.網(wǎng)站的入口使用Nginx 作為反向代理服務(wù)器用于匹配并分發(fā)不同類型的請求.

        內(nèi)網(wǎng)控制器由Java 語言編寫,并只依賴于Java 虛擬機(jī),便于移植.為驗證存在多個內(nèi)網(wǎng)控制器時系統(tǒng)的運行狀態(tài),使用VMware 啟動10 臺虛擬機(jī)作為內(nèi)網(wǎng)控制器,運行環(huán)境為CentOS7.3,利用花生殼內(nèi)網(wǎng)穿透、端口映射軟件將10 臺虛擬機(jī)與公網(wǎng)相連.個人電腦與協(xié)調(diào)器通過串口相連,為解決多個虛擬機(jī)無法同時訪問一個串口的問題,編寫腳本進(jìn)行串口收發(fā)再與虛擬機(jī)進(jìn)行通訊起到模擬相連的作用.雖然多個控制器是與同一個ZigBee 網(wǎng)絡(luò)相連,但由于相互之間網(wǎng)絡(luò)地址不同,數(shù)據(jù)也不同步,即可視為多個網(wǎng)絡(luò).

        系統(tǒng)中協(xié)調(diào)器與終端均使用CC2530 芯片,協(xié)議棧版本為TI-Z-Stack 2007.網(wǎng)絡(luò)內(nèi)有一個協(xié)調(diào)器搭配37 枚終端,部分終端搭載了超聲波傳感器或溫濕度傳感器.

        在整個測試過程中,系統(tǒng)能夠自行處理任意ZigBee 節(jié)點層面和內(nèi)網(wǎng)控制器層面的接入與離線情況,運行穩(wěn)定魯棒性強.通過訪問中

        央服務(wù)器可實時查詢?nèi)我夤?jié)點上傳感器的測量值,針對不同內(nèi)網(wǎng)之間實際相同節(jié)點的數(shù)據(jù)查詢極少出現(xiàn)不同步狀況.通過http 請求的方式對節(jié)點上LED 小燈的控制信息在當(dāng)前測試環(huán)境下操作延遲一般在3 秒內(nèi)即可完成響應(yīng),當(dāng)對于任意一個網(wǎng)絡(luò)內(nèi)的節(jié)點下達(dá)控制信息后,其余9 個網(wǎng)絡(luò)中的節(jié)點信息均能在不超過兩個節(jié)點心跳的時間內(nèi)同步至中央服務(wù)器.

        5 結(jié)束語

        本文提出一種通過搭建互聯(lián)網(wǎng)服務(wù)器的方式來集中管理多個ZigBee 網(wǎng)絡(luò)的設(shè)計方案.所有節(jié)點的數(shù)據(jù)集中存儲便于訪問,同時可對系統(tǒng)內(nèi)任意節(jié)點實現(xiàn)精準(zhǔn)控制與狀態(tài)信息的獲取.各個ZigBee 網(wǎng)絡(luò)之間的設(shè)計不存在耦合,在不同業(yè)務(wù)背景下應(yīng)用時不需要更改底層實現(xiàn),系統(tǒng)擴(kuò)展性強.接下來的工作中需重點關(guān)注ZigBee 網(wǎng)絡(luò)中對控制指令執(zhí)行的可靠性問題,完善各類異常處理機(jī)制.并針對系統(tǒng)各個模塊的性能進(jìn)行更多的測試工作.

        猜你喜歡
        服務(wù)端消息指令
        聽我指令:大催眠術(shù)
        一張圖看5G消息
        ARINC661顯控指令快速驗證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        電子測試(2018年18期)2018-11-14 02:30:34
        云存儲中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
        新時期《移動Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
        在Windows Server 2008上創(chuàng)建應(yīng)用
        消息
        消息
        消息
        国产一区二区三区四区五区加勒比| 中文字幕精品久久一区二区三区| 日本五十路人妻在线一区二区| 国产乱码卡二卡三卡老狼| 亚洲精品久久久无码av片软件| 中文字幕人成人乱码亚洲| 日产精品毛片av一区二区三区| 天堂av在线美女免费| 亚洲伊人色欲综合网| 精品免费人伦一区二区三区蜜桃| 国产成人高清精品亚洲一区| 加勒比东京热中文字幕| 久久精品国产色蜜蜜麻豆| 日韩中文网| 色视频日本一区二区三区| 亚洲中文字幕舔尻av网站| 亚洲av无码xxx麻豆艾秋| 免费中文熟妇在线影片| 亚洲精品av一区二区日韩| 成人日韩熟女高清视频一区| 少妇高潮尖叫黑人激情在线| 国产欧美曰韩一区二区三区| 日本在线一区二区三区视频| 国产熟妇与子伦hd| 日本午夜免费福利视频| 99RE6在线观看国产精品| 人妻一区二区三区在线看| 国产永久免费高清在线| 福利一区视频| 在线视频一区二区三区中文字幕| 极品尤物人妻堕落沉沦| 精品人妻va出轨中文字幕| 亚洲成a人片在线播放观看国产| 国语对白自拍视频在线播放| 午夜时刻免费入口| 大胆欧美熟妇xxbbwwbw高潮了 | 欧美日韩免费一区中文字幕| 美女视频在线观看一区二区三区| 久久亚洲av成人无码电影a片| 国产精品麻豆最新AV| 精品一区二区亚洲一二三区|