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