新聞中心

EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計應(yīng)用 > 多個Zigbee監(jiān)測網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控的實(shí)現(xiàn)

多個Zigbee監(jiān)測網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控的實(shí)現(xiàn)

作者:李強(qiáng) 時間:2008-07-31 來源:微計算機(jī)信息 收藏

  1.概述

本文引用地址:http://2s4d.com/article/86468.htm

  基于標(biāo)準(zhǔn)的技術(shù)是一種短距離、低速率無線網(wǎng)絡(luò)技術(shù)。其低功耗、易部署等特性,使它在無線監(jiān)控、工業(yè)自動化、家居智能化等領(lǐng)域成了應(yīng)用研究的熱點(diǎn)。

  結(jié)合IP網(wǎng)絡(luò)技術(shù),可方便地實(shí)現(xiàn)對監(jiān)測網(wǎng)絡(luò)的遠(yuǎn)程監(jiān)控。通常的實(shí)現(xiàn)方式是在兩種異質(zhì)網(wǎng)絡(luò)的結(jié)合點(diǎn)(網(wǎng)關(guān)節(jié)點(diǎn))上實(shí)現(xiàn)一個嵌入式的WebServer。對于多個監(jiān)測網(wǎng)絡(luò),這種實(shí)現(xiàn)方式在集中監(jiān)管上存在一定的困難。

  本文給出了利用IBM的消息中間件技術(shù),對多個Zigbee監(jiān)測網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程集中管理的實(shí)現(xiàn)方法。

  2.IBM中間件

  IBM的WebSphere消息中間件產(chǎn)品,根據(jù)功能、應(yīng)用對象的不同有不同的版本。WebSphere Connection Server Micro Edition,稱為微型消息代理,主要用于嵌入式的應(yīng)用,使用MQTT通信協(xié)議。

  MQTT是IBM開發(fā),在2001年發(fā)布的一個開放、輕型的消息傳輸協(xié)議,專門用于遠(yuǎn)程傳感應(yīng)用等低帶寬的網(wǎng)絡(luò)通信,并支持發(fā)布/訂閱消息傳遞模式。

  消息中間件系統(tǒng)的基本元素是客戶端、消息和消息代理。在發(fā)布/訂閱消息傳遞模式中,發(fā)布者和訂閱者是客戶端,通過連接到消息代理在網(wǎng)絡(luò)中傳遞數(shù)據(jù)。發(fā)布者向消息代理發(fā)送特定主題的消息,訂閱者向消息代理訂閱特定主題的消息,發(fā)布者和訂閱者之間的連接由消息代理管理。當(dāng)消息代理收到發(fā)布提供的消息后,由它向訂閱者傳遞所訂閱的消息。

  3.實(shí)現(xiàn)原理

  采用中間件技術(shù)后,整個系統(tǒng)結(jié)構(gòu)由兩層結(jié)構(gòu)變成了三層結(jié)構(gòu),如圖1所示。


圖1系統(tǒng)結(jié)構(gòu)

  底層為多個Zigbee監(jiān)測網(wǎng)絡(luò),負(fù)責(zé)監(jiān)測數(shù)據(jù)的采集。每個Zigbee監(jiān)測網(wǎng)絡(luò)有一個網(wǎng)關(guān)節(jié)點(diǎn)和若干的數(shù)據(jù)采集節(jié)點(diǎn)。監(jiān)測網(wǎng)絡(luò)采用星型結(jié)構(gòu),網(wǎng)關(guān)節(jié)點(diǎn)作為每個監(jiān)測網(wǎng)絡(luò)的基站。網(wǎng)關(guān)節(jié)點(diǎn)具有雙重功能,一是充當(dāng)網(wǎng)絡(luò)協(xié)調(diào)器的角色,負(fù)責(zé)網(wǎng)絡(luò)的自動建立和維護(hù)、數(shù)據(jù)匯集;二是作為監(jiān)測網(wǎng)絡(luò)與中間層交互的接口,與中間層的消息代理傳遞消息。

  中間層為消息代理,完成消息的路由功能。分別接收管理應(yīng)用、網(wǎng)關(guān)節(jié)點(diǎn)發(fā)來的消息,然后進(jìn)行轉(zhuǎn)發(fā),使管理應(yīng)用與監(jiān)測網(wǎng)絡(luò)的網(wǎng)關(guān)間實(shí)現(xiàn)數(shù)據(jù)交互。

  上層為管理應(yīng)用,作為人機(jī)接口,實(shí)時顯示各個Zigbee監(jiān)測網(wǎng)絡(luò)的監(jiān)測數(shù)據(jù);接收用戶的各種設(shè)置參數(shù)和控制命令。

  網(wǎng)關(guān)節(jié)點(diǎn)與管理應(yīng)用間的數(shù)據(jù)傳遞是雙向的,即網(wǎng)關(guān)節(jié)點(diǎn)接收到數(shù)據(jù)采集節(jié)點(diǎn)發(fā)來的監(jiān)測數(shù)據(jù)后,預(yù)處理后形成消息發(fā)給消息代理,由消息代理轉(zhuǎn)給管理應(yīng)用;管理應(yīng)用收到用戶的設(shè)置參數(shù)或控制命令后,形成消息傳遞給消息代理,再由消息代理發(fā)給網(wǎng)關(guān)節(jié)點(diǎn)。所以,它們即是消息的提供者,也是消息的使用者。

  發(fā)布/訂閱模型允許多個消息提供者向同一主題發(fā)布消息。因此,多個Zigbee監(jiān)測網(wǎng)絡(luò)通過其網(wǎng)關(guān)節(jié)點(diǎn)分別連接到消息代理,向同一主題發(fā)布有關(guān)監(jiān)測數(shù)據(jù)的消息。管理應(yīng)用通過訂閱同一個主題,就能獲得所有監(jiān)測網(wǎng)絡(luò)的監(jiān)測數(shù)據(jù)。

  另外,發(fā)布/訂閱模型還允許多個消息使用者訂閱同一個主題,消息代理會向不同的訂閱者廣播。因此,不同網(wǎng)關(guān)節(jié)點(diǎn)訂閱同一主題后,管理應(yīng)用只需向消息代理發(fā)送一條控制命令,多個監(jiān)測網(wǎng)絡(luò)的網(wǎng)關(guān)節(jié)點(diǎn)就能收到同一條控制命令。

  4.  具體實(shí)現(xiàn)

  4.1. 與消息代理間的消息傳遞

  通過MQTT協(xié)議實(shí)現(xiàn)管理應(yīng)用、監(jiān)測網(wǎng)絡(luò)中網(wǎng)關(guān)節(jié)點(diǎn)與中間層消息代理間的數(shù)據(jù)傳輸。

  首先需要對中間層的消息代理進(jìn)行配置,主要包括:創(chuàng)建連接工廠、創(chuàng)建主題、創(chuàng)建激活規(guī)范等。

  在消息代理上需要創(chuàng)建兩個主題,一個用于傳遞監(jiān)測數(shù)據(jù),一個用于傳遞控制命令。不同監(jiān)測網(wǎng)絡(luò)的網(wǎng)關(guān)節(jié)點(diǎn)向監(jiān)測數(shù)據(jù)主題提供消息,管理應(yīng)用訂閱監(jiān)測數(shù)據(jù)主題。管理應(yīng)用向控制命令主題提供消息,不同的網(wǎng)關(guān)節(jié)點(diǎn)訂閱控制命令主題。

  網(wǎng)關(guān)節(jié)點(diǎn)、管理應(yīng)用作為客戶端,還需要編寫專門的消息收、發(fā)送模塊。雖然它們運(yùn)行平臺不同,網(wǎng)關(guān)節(jié)點(diǎn)運(yùn)行于嵌入式設(shè)備的Linux環(huán)境,管理應(yīng)用運(yùn)行于臺式機(jī)的Windows環(huán)境,但它們實(shí)現(xiàn)的步驟和原理是一樣的。用MQTT庫實(shí)現(xiàn)消息的發(fā)布和訂閱模塊,主要包括以下幾個部分。

  一、連接 MQTT

  1) 生成連接字符串:指定消息代理主機(jī)的IP地址和MQTT分配的端口號,端口號缺省值為 1883;

  2) 設(shè)置連接屬性,包括客戶機(jī)的標(biāo)識、訂閱類型、發(fā)送活動消息的間隔時間;

  3) 創(chuàng)建 MQTT 客戶機(jī)對象。

  二、向代理發(fā)布信息

  直接使用MQTT 提供的API函數(shù)publish,需要提供主題、消息、服務(wù)質(zhì)量等參數(shù)。

  三、向代理訂閱消息

  訂閱是由 MQTT 對象處理的,要求有兩個數(shù)組參數(shù)。分別是訂閱主題數(shù)組、服務(wù)質(zhì)量數(shù)組。這兩個數(shù)組是“索引關(guān)聯(lián)的”。

  主題數(shù)組是一個字符串對象數(shù)組,主題按層次結(jié)構(gòu)排列,并且通過“/”字符分隔。


  服務(wù)質(zhì)量數(shù)組是一個整數(shù)類型的數(shù)組。服務(wù)質(zhì)量的值可以為 0、1 和 2,根據(jù)具體的應(yīng)用設(shè)置。通常將服務(wù)質(zhì)量的值置為2,使消息僅傳遞一次,以減少傳輸開銷。

  四、接收來自代理的消息

  要使應(yīng)用能接收到訂閱的消息,必須創(chuàng)建一個回調(diào)處理函數(shù),并且在MQTT客戶端注冊。

  用MqttSimpleCallback 接口創(chuàng)建簡單接口的對象,并實(shí)現(xiàn)connectionLost 和 publishArrived兩個方法。

  當(dāng)與代理的連接意外終止時,就調(diào)用 connectionLost 方法。如果出現(xiàn)這種情況,則此方法試圖重新連接到代理。如果 connectionLost 方法無法重新連接,則會拋出異常來通知客戶機(jī)重新連接失敗。

  publishArrived 方法通知系統(tǒng)訂閱主題的消息已到達(dá)客戶端。

 


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉