一種基于物聯(lián)網(wǎng)協(xié)議的中繼型智能插座軟硬件設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引 言
隨著智能家居概念的興起,市場(chǎng)上出現(xiàn)了越來(lái)越多的智能電器產(chǎn)品,從智能家電到智能插座,所有這些都使得現(xiàn)代生活耳目一新,并越來(lái)越方便人們的日常生活。
近年來(lái),智能手機(jī)的普及也使智能家居的管理模式和手段越來(lái)越豐富,從固定集中控制延伸到了可移動(dòng)式管理控制, 通過(guò)將APP 程序安裝到智能手機(jī)上, 以 3G,WiFi 或LAN 為通信手段實(shí)現(xiàn)對(duì)智能家居的遠(yuǎn)程管理和控制。但上述智能家居應(yīng)用模式主要以智能家庭的應(yīng)用為主,該模式采用WiFi 或 LAN 的方式對(duì)市電供電的電器設(shè)備進(jìn)行控制,但一些行業(yè)卻無(wú)法直接采用上述控制方式,如燃?xì)庑袠I(yè)的設(shè)備以電池供電為主,采用RF 遠(yuǎn)程控制,而 RF 頻段屬于ISM,在433 ~498 MHz 之間,使用時(shí)無(wú)需像IP 化設(shè)備那樣需要一定的時(shí)間間隔刷新和維持通信鏈路暢通,而是通過(guò)睡眠喚醒的方法進(jìn)行遠(yuǎn)程管理和控制,大大降低了設(shè)備的功耗,延長(zhǎng)了燃?xì)獗黼姵毓╇姇r(shí)間,因此無(wú)線(xiàn)智能水表\ 熱能表\ 燃?xì)獗淼倪h(yuǎn)程控制多采用RF 方式,但該方法只對(duì)行業(yè)的集中管理具有重要意義,業(yè)務(wù)人員可通過(guò)手持式抄表設(shè)備遠(yuǎn)程讀取相關(guān)設(shè)備的數(shù)據(jù)。在今天大力推廣智慧家庭、智慧小區(qū)、智慧城市的背景下,用戶(hù)對(duì)智能燃?xì)獗?/a>等設(shè)備的管理控制也有強(qiáng)烈需求,將智能燃?xì)獗淼仍O(shè)備融入智能家居是目前的發(fā)展趨勢(shì),但因?yàn)椴杉?jié)點(diǎn)數(shù)量龐大,對(duì)互聯(lián)網(wǎng)鏈路的要求較高,因此設(shè)計(jì)一種可實(shí)現(xiàn)物聯(lián)網(wǎng)協(xié)議傳送采集信號(hào)的智能插座是本文的重點(diǎn)。
1 中繼型智能插座的設(shè)計(jì)思路及實(shí)現(xiàn)原理
對(duì)目前市場(chǎng)上流行的智能插座進(jìn)行功能分析可以看出,
其主要針對(duì)智能家庭的相關(guān)應(yīng)用,比如實(shí)現(xiàn)電器的遠(yuǎn)程開(kāi)斷電功能,其最大的特點(diǎn)是可移動(dòng)控制,即下載 APP 軟件到智能手機(jī)上,通過(guò)手機(jī)實(shí)現(xiàn)對(duì)插座的遠(yuǎn)程監(jiān)控。而中繼型智能插座除了上述功能外,還需將管理平臺(tái)的信號(hào)通過(guò)智能插座轉(zhuǎn)發(fā)給采用RF 頻段的智能燃?xì)獗?/a>,以實(shí)現(xiàn)數(shù)據(jù)采集及控制,同時(shí)該智能插座還能實(shí)現(xiàn)管理平臺(tái)的動(dòng)態(tài)注冊(cè),以便平臺(tái)了解插座的運(yùn)行狀態(tài)是否正常。同樣,通過(guò)權(quán)限設(shè)定,用戶(hù)也可用手機(jī)APP 訪(fǎng)問(wèn)指定的智能插座。智能插座的實(shí)現(xiàn)原理如圖1所示。
圖 1 可知,該插座采用了 RF 無(wú)線(xiàn)模塊 +WiFi 模塊的設(shè)計(jì)方式,通過(guò)單獨(dú)的MCU 處理器進(jìn)行管理和控制。該方案最大的特點(diǎn)在于采用了成熟的器件及內(nèi)部串口通信方式,可靠性高,開(kāi)發(fā)周期短,便于進(jìn)行新功能擴(kuò)展等,其控制原理如圖 2所示。
插座控制原理較為簡(jiǎn)單,主要采用成熟的模塊搭建而成,性能可靠,成本較低,對(duì)智慧家庭應(yīng)用而言是理想的輔助設(shè)備。針對(duì)家庭應(yīng)用,插座使用量較少,數(shù)據(jù)傳輸?shù)臄?shù)據(jù)量和占用帶寬可忽略不計(jì)。但如果行業(yè)應(yīng)用規(guī)模較大,如燃?xì)庑袠I(yè),用戶(hù)規(guī)??赡苓_(dá)到幾萬(wàn)甚至幾十萬(wàn),如果每戶(hù)都采用智能插座進(jìn)行數(shù)據(jù)收集及其他服務(wù),那么會(huì)對(duì)后臺(tái)帶寬造成較大壓力,因此若按照傳統(tǒng)思路設(shè)計(jì)智能插座軟件部分,在大規(guī)模推廣應(yīng)用時(shí),會(huì)在流量和帶寬的問(wèn)題上對(duì)后臺(tái)造成影響,故需采用新模式設(shè)計(jì)插座的通信協(xié)議部分,由此引入 MQTT 協(xié)議對(duì)插座與后臺(tái)的通信模式進(jìn)行規(guī)劃設(shè)計(jì)。
2 MQTT協(xié)議的原理及應(yīng)用
2.1 關(guān)于MQTT
消息隊(duì)列遙測(cè)傳輸協(xié)議(Message Queuing Telemetry Transport,MQTT)是IBM 于1999 年開(kāi)發(fā)的一個(gè)即時(shí)通信協(xié)議,也是一個(gè)輕量級(jí)的,基于代理的發(fā)布/ 訂閱消息傳輸協(xié)議。所謂輕量級(jí),是指該協(xié)議設(shè)計(jì)思想開(kāi)放、簡(jiǎn)單、輕量、易于實(shí)現(xiàn), 因此它也是為計(jì)算能力有限,且工作在低帶寬、不可靠網(wǎng)絡(luò)的遠(yuǎn)程傳感器和控制設(shè)備通信而設(shè)計(jì)的協(xié)議。
針對(duì)物聯(lián)網(wǎng)應(yīng)用中數(shù)據(jù)采集需要通過(guò)不斷輪詢(xún)才能得到即時(shí)數(shù)據(jù)的缺陷,MQTT 協(xié)議擁有信息推送功能,可有效地將物聯(lián)網(wǎng)中的大量傳感器與外部設(shè)備進(jìn)行連接,并實(shí)現(xiàn)最小的網(wǎng)絡(luò)開(kāi)銷(xiāo)。
目前 MQTT v 2.1 主要包含 14 類(lèi)消息類(lèi)型的指令,如下所示:
(1)CONNECT:將客戶(hù)端請(qǐng)求發(fā)送到服務(wù)器 ;
(2)CONNACK :連接確認(rèn)(服務(wù)器端→客戶(hù)端);
(3)PUBLISH :發(fā)布消息(雙向);
(4)PUBACK :發(fā)布確認(rèn)(雙向);
(5)PUBREC :確保發(fā)布被收到(雙向);
(6)PUBREL :確保發(fā)布分發(fā)(雙向);
(7)PUBCOMP:確保發(fā)布完成(雙向);
(8)SUBSCRIBE :客戶(hù)端訂閱請(qǐng)求 ;
(9)SUBACK :訂閱確認(rèn)(服務(wù)器端→客戶(hù)端);
(10)UNSUBSCRIBE :客戶(hù)端退訂請(qǐng)求 ;
(11)UNSUBACK :服務(wù)器端退訂確認(rèn) ;
(12)PINGREQ :PING 請(qǐng)求(客戶(hù)端→服務(wù)器端);
(13)PINGRESP:PING 響應(yīng)(服務(wù)器端→客戶(hù)端);
(14)DISCONNECT:斷開(kāi)連接通知(客戶(hù)端→服務(wù)器端)
上述 14類(lèi)消息體都采用了固定頭 + 可變頭 + 有效載荷組成方式,其中固定頭是所有消息類(lèi)型必須包含的部分,其結(jié)構(gòu)見(jiàn)表 1 所列。
從表 1 可以看出,MQTT 協(xié)議的標(biāo)準(zhǔn)格式由消息類(lèi)型、重復(fù)標(biāo)識(shí)、質(zhì)量等級(jí)、保留標(biāo)識(shí)及剩余字長(zhǎng)組成,MQTT 協(xié)議具有如下特點(diǎn):
(1) 通信開(kāi)銷(xiāo)小 :最小消息為 2 B,降低了網(wǎng)絡(luò)負(fù)載。
(2) 協(xié)議具有簡(jiǎn)單和跨平臺(tái)的特點(diǎn):MQTT采用訂閱/發(fā)布模式,提供一到多的分發(fā)方法,使應(yīng)用耦合度降低,并可在 TCP/IP及其他無(wú)線(xiàn)協(xié)議中使用RF,ZigBee等。
(3) 可訂制合適的服務(wù)質(zhì)量:根據(jù)網(wǎng)絡(luò)狀態(tài)及服務(wù)要求可選擇三種不同的消息質(zhì)量等級(jí)。
由此可見(jiàn),正因?yàn)镸QTT協(xié)議的開(kāi)放性與消息短小性, 使得它在.NET,WINRT,M2M,PHP等平臺(tái)上都有良好的表現(xiàn)。同時(shí)對(duì)于MQTT協(xié)議的實(shí)現(xiàn)多以庫(kù)函數(shù)的方式實(shí)現(xiàn), 包括 C語(yǔ)言設(shè)計(jì),J2ME,J2EE 等,本節(jié)就智能插座如何實(shí)現(xiàn)消息的定閱和發(fā)送機(jī)制做簡(jiǎn)單討論。
2.2 智能插座的軟件設(shè)計(jì)方案
中繼型智能插座可將 WiFi 模塊及RF 模塊之間的數(shù)據(jù)進(jìn)行交換、轉(zhuǎn)發(fā)及控制。智能插座就是MQTT 協(xié)議中所描述的終端設(shè)備,為了簡(jiǎn)化智能插座軟件設(shè)計(jì),根據(jù)智能插座的特點(diǎn),在中繼型插座的通信協(xié)議設(shè)計(jì)上只選擇了 MQTT 協(xié)議14 種消息類(lèi)型中的 6 種, 分別為 CONNECT,CONNACK, PUBLISH,PINGREQ,PINGRESP,DISCONNECT,這幾類(lèi)
消息主要用于插座與后臺(tái)的連接和信息發(fā)布。插座注冊(cè)及信息接收過(guò)程如圖 3 所示。
為適應(yīng)本應(yīng)用的特點(diǎn),系統(tǒng)通信連接做了如下設(shè)置:
(1) 為節(jié)省時(shí)間片及帶寬開(kāi)銷(xiāo),取消除了 CONNACK確認(rèn)信息外其他指令的確認(rèn)信息,是一種無(wú)可靠質(zhì)量(QoS)連接的傳輸。
(2) 隨機(jī)給智能插座每天分配多個(gè)斷開(kāi)時(shí)間片 Tu和連通時(shí)間片 Tc,且在連通時(shí)間片 Tc內(nèi),如PUBLISH已完成則立即發(fā)送DISCONNECT,退出連通,即實(shí)際連通時(shí)間≤ Tc,此舉不易造成通信堵塞。智能插座在進(jìn)入 Tc時(shí),發(fā)送 CONNECT, 如服務(wù)器端無(wú)CONNACK 返回或返回拒絕信息,待這一 Tc結(jié)束后,在下一 Tc 再進(jìn)行連接。
(3)在連通時(shí)間片 Tc 內(nèi),智能插座每隔一定時(shí)間便發(fā)出 一 PINGREQ 心跳信號(hào)給服務(wù)器端,待服務(wù)器端收到后返回 一 PINGRESP 給智能插座。這一時(shí)間間隔在 MQTT 中稱(chēng)為 KEEP ALIVE,服務(wù)器端在收到 DISCONNECT 或在 1.5 倍 KEEP ALIVE 時(shí)間內(nèi)沒(méi)有收到智能插座發(fā)送的信息則認(rèn)為智 能插座已斷開(kāi)連接。
3 結(jié) 語(yǔ)
將現(xiàn)有 RF 及 WiFi 模塊集成到智能插座中,不僅實(shí)現(xiàn)了 市場(chǎng)上流行的遠(yuǎn)程控制智能插座開(kāi)斷電功能,還在軟件設(shè)計(jì) 中采用了 MQTT 協(xié)議,減少了節(jié)點(diǎn)數(shù)據(jù)傳輸在帶寬及時(shí)間片 上的需要。該方案已成功應(yīng)用在智慧廚房的整體解決方案中, 滿(mǎn)足了燃?xì)庑袠I(yè)和家庭應(yīng)用的需求。