陳麗芬 儲成誠 趙鵬 葉迅凱 張濤 方玉如
1.中國家用電器研究院 北京 100037;2.安徽眾家云物聯網科技有限公司 安徽滁州 239000;3.中輕合盛科技有限公司 安徽滁州 239000
目前,各智能家居企業基于利益等方面的考慮,不同廠商、不同品牌的產品之間不能實現互聯互通,缺乏互動標準,由于布局不完善并采用封閉式的方式,影響了用戶體驗。蘋果的HomeKit、亞馬遜的Echo、華為的HiLink、阿里的YunOS、百度的Dulife、海爾的U+、美的的M-Smart等多是系統內部的協同,主要的技術壁壘在于通信接口的不開放,通信協議的不兼容[1]。
智能家居管理單元是一個可以有效整合家庭內部設備的處理模塊,配合定制的App不僅實現了單個App遠程控制所有智能家居設備的功能,打破現有同類型產品只能連接自家產品的自有生態鏈屬性,同時還實現了設備數據的集中化管理,使得不同品牌、不同接口類型的家庭設備聯網協同,全方位地提升了人們的生活體驗。
如圖1所示為管理單元的工作框圖[2],包含有云端、控制端、設備端三大部分,其中云端以家電領域行業性公共云服務平臺眾家云平臺[3]為依托,基于智能家電國家標準實現家電智能化的數據交互過程。
管理單元可實現的功能包括設備管理以及數據管理,設備管理是指設備在云端的注冊、注銷、登錄、登出等;數據管理包含了每個設備的通信幀格式與網絡報文的轉換、多種設備間通信協議的相互轉換;除此之外,管理單元會周期內查詢設備的狀態并向云端上報,同時會接收從已建立連接的云端下發出的遠程控制指令給產品,實現通信數據的集中化管理。

圖1 管理單元工作框圖
在可接入設備接入方面,管理單元集成了無線局域網中的Wi-Fi、ZigBee網絡,同時還可掛載總線型設備,如UART、RS485、SPI、DIDO等。本文重點介紹ZigBee網絡設備的接入實現。
ZigBee是一種開放的雙向無線自組網通信技術,主要特色有低功耗、低成本、低速率、近距離、延時短、高容量、高安全等特點[4],網絡自愈能力強、支持多種網上拓撲,其關于組網、安全及應用軟件方面的技術是基于IEEE 80215.4無線標準,在2.4 GHz(全球)、915 MHz(美國)和868 MHz(歐洲)等未經授權的頻段上運行,該項技術尤為適用于數據流量偏小的業務,可便捷的在一系列固定式、便攜式移動終端中進行安裝[5],隨著ZigBee聯盟近年推出的ZigBee 3.0標準使得ZigBee通信在智能家居行業內的使用愈加廣泛。基于上述原因,智能網關的無線局域網以ZigBee作為通訊標準的一種。
以小米插座為例簡述智能家居管理單元的工作過程。小米插座是集成了ZigBee協議的智能設備,在加入由管理單元建立的ZigBee網絡之后,設備通過無線局域網將當前狀態傳送給管理單元,管理單元遵循TCP/IP網絡通訊協議將設備數據上報至云端平臺,控制端可在App遠程查看設備的狀態、實時顯示插座用電量、控制插在智能插座上的電器的電源開關,實現數據在局域網與廣域網之間的傳輸,即實現了為不直接連接廣域網的智能家電提供網絡協議轉換和代理連接服務的功能。
管理單元硬件主要由MCU模塊、接口模塊、接口擴展模塊、電源模塊、輸入模塊、顯示模塊等部分組成,其中MCU主控制器選用MT7268處理器,軟件內部集成了設備底層驅動、協議解析、云端交互等模塊,功能框圖如圖2所示。

圖2 管理單元軟件功能框圖
(1)ZigBee接入模塊:該模塊中,ZigBee相關的處理任務是由ZigBee協調器完成的,它是一款低成本、低功耗的ZigBee網絡處理器,以下簡稱ZNP(ZigBee Network Processor),它提供封裝好的 ZigBee解決方案,在設計無線子網時,ZNP在系統里充當ZigBee從機角色,負責建立ZigBee網絡并與ZigBee子設備進行通訊。
(2)RS485接入模塊:RS485總線因傳輸能力強、抗干擾能力強、多機通訊簡單,易在家電行業中實現組網傳輸,因此,管理單元采用RS485總線作為有線子網設計的主要鏈路通道。在有線子網設計中,RS485接入模塊運行在接口擴展模塊上,負責與RS485子設備通訊。
(3)RPC/Transport Layer:該層是系統的驅動傳輸底層,它提供了UART串口驅動程序用以實現串行數據的傳輸,由于ZigBee接入模塊以及RS485接入模塊都是通過串口將數據傳輸至主控制器MT7628,所以該層是管理單元實現數據采集的基礎。
(4)ZigBee控制單元與RS485控制單元:二者是運行在MT7628內部的控制單元,負責實現主控MCU與ZigBee子設備以及RS485子設備間的數據交互。
(5)多協議適配模塊:眾家云平臺對其可接入設備設計了數據點協議,是對設備功能點的抽象,用于描述產品功能及其參數。設備私有協議與眾家云平臺數據點協議之間的對應關系是在多協議適配模塊中定義的,最終實現設備、云平臺相互識別二者間互聯互通數據的功能,該模塊是實現設備間多協議互操作的基礎。
(6)網絡代理模塊:該模塊負責建立設備與云端平臺的長連接通訊,用于設備的注冊、登錄、接收云端控制指令并上報設備狀態,為每臺接入的設備提供相應的管理及服務,該模塊是設備數據、云端M2M服務器、控制端的數據交互橋梁,由眾家云提供SDK。
軟件流程圖如圖3所示。
管理單元提供設備私有數據協議與云端數據協議相互轉換的功能,即多協議適配模塊,用以實現私有數據協議格式的自動錄入、私有數據的解析及業務數據的解析功能。云端在完成產品的定義之后可自動生成兩類配置文件,一種是設備數據配置文件,另一種是云端數據點配置文件,智能家居管理單元工作時會自動獲取對應的云端配置文件,用于實現設備私有協議與云端數據點協議之間的相互轉換。

圖3 管理單元程序設計流程圖
以蘭舍新風控制器為例,該設備為RS485接口,在管理單元中,將設備私有協議格式進行如圖4a)所示的定義,多協議適配模塊依據圖4b)所示的配置文件中云端dataPointID匹配設備協議的功能點ID的原則,來查找設備功能點與云端數據間點的對應關系,結合其他字段信息最終實現云端協議與設備協議間的轉換。

圖4 云端數據點與設備協議對應關系
3.3.1 ZigBee協調器
ZigBee網絡中存在三種邏輯設備類型,協調器、路由器、終端節點[6]。在管理單元中采用CC2530ZNP組合MT7628的方式來實現ZigBee子網設計,其中CC2530ZNP作為協調器來處理所有關于ZigBee協議棧的任務,它提供ZigBee協議棧的物理層、Mac層、網絡層、應用支持子層的數據處理及各層的API軟件接口;MT7628中的ZigBee控制單元通過調用ZNP各層的API軟件接口實現ZigBee主程序,如設置網絡ID、設置設備類型、發送接收數據[6]。CC2530ZNP與MT7628采用UART接口通訊,如圖5所示。

圖5 通訊接口示意圖
CC2530ZNP在使用前需要配置:
(1)硬件接口配置
UART配置:選擇GPIO口實現TX、RX功能,波特率115200,數據位8位,停止位1位,無校驗;
RESET:CC2530ZNP復位信號;
CFG0:CC2530ZNP配置信號,ZNP上電時讀取此信號,并進行相應配置。
(2)軟件接口配置
ZNP提供五類軟件命令接口,分別是:
SYS:系統接口,為應用處理器提供了與ZNP硬件和軟件的底層接口;
AF:應用程序框架接口,允許應用程序處理器向ZNP注冊其應用程序并發送和接收數據;
ZDO:ZigBee設備對象接口,提供各種ZigBee管理功能,如設備和服務發現;
UTIL:(MT_UTIL)該接口提供支持功能,如設置網絡ID、獲取設備信息、獲取NV信息、訂閱回調;
APP CONF:(MT_APP_CNF)該接口支持BDB功能,如設置安裝代碼、主從通道、觸發不同的子設備入網方式和網絡秘鑰配置。
通過ZNP提供的上述接口,修改TI公司提供的基于Z-Stack協議棧的ZNP工程文件,實現管理單元中的ZNP所需功能。
3.3.2 ZigBee控制單元
ZigBee控制單元運行在MT7628之上,它通過ZNP提供的API以及訂閱回調函數來實現與ZNP之間的通訊,ZigBee控制單元功能框架如圖6所示。

圖6 ZigBee控制單元內部框圖
(1)RPC/Transport Layer:即Remote procedure call,傳輸層為該框架的最底層,提供了UART或SPI驅動程序用以實現串行數據報文的組包與拆包,用以實現主機應用程序與ZNP程序業務數據的交互。
(2)MT Subsystems API:即MT Subsystems Layer是基于RPC/Transport Layer之上的,該層為上層提供了大量的sys、af、zdo、sapi的API接口,方便上層應用程序對所有ZNP命令的訪問,其中下發的命令可直接調用API函數,輸入的命令可使用回調注冊。
(3)ZCL庫:基于MT Subsystems Layer之上,為上層應用程序提供更為標準的一套通信接口。所有來自底層的數據通過ZCL封裝后,實現了數據和命令格式的標準化,將上層應用敏感的命令和相關的數據直接呈現給應用層,從而保證應用層只需關注其節點自身功能的實現,將繁瑣的標準化通信任務交給下層來處理[8]。
(4)ZigBee主程序:負責調用底層API接口及訂閱回調功能函數,實現ZigBee的基本功能,如網絡建立、設置網絡ID、允許設備加入網絡、綁定設備、獲取設備信息[9]。
在程序主線程中創建了兩個子線程,分別實現設備狀態數據獲取和控制設備命令數據發送的功能。在使用多線程技術進行開發的過程中,需要考慮線程間的同步問題,設計中采用的線程間同步機制是互斥量,通過定義一個互斥量實現在對共享資源進行訪問前對互斥量進行加鎖[10]。
管理單元的設備管理包括管理單元自身的注冊、注銷、登錄、登出、心跳維持等,以及接入設備的添加、刪除、列表變更等,以管理單元注冊為例說明設備管理流程。管理單元向云平臺提交描述文件唯一標識、設備標識碼及設備校驗碼,向云平臺發起注冊請求,云平臺成功響應注冊請求后返回管理單元的唯一標識碼,之后管理單元保存該標識碼,完成注冊流程。
管理單元管理的數據可分為兩大類,下發設備的數據以及上報云端的數據。
下發設備數據:指APP、云端下發的控制數據。局域網內運行時,App可以選擇經過云端下發指令給管理單元,也可以直接下發指令給管理單元。
上報云端數據:指設備回復的當前狀態。設備在未收到控制指令或設備狀態未發生變化時,一般按設定周期上報數據。當設備狀態發生變化時,則立即上報最新狀態,發送頻率不受輪詢周期限制。
如圖7所示為驗證連接圖,小米門磁、小米插座、小米紅外設備均是集成了ZigBee協議的智能設備,它們通過ZigBee網絡加入到管理單元的無線局域網中;空氣盒子、海林地暖、蘭舍新風等設備通過RS485總線加入到管理單元的有線局域網絡中;無線局域網絡與總線型設備通過串口與核心主控制器MT7628通信。

圖7 驗證連接圖
在管理單元PCB板完成電源網絡上電前后對地阻抗測試和硬件接口測試正常后,以小米插座為例對其功能部分進行測試。
接入局域網測試中,小米智能插座、CC2530ZNP作為測試設備;Ubiqua Protocol Analyzer軟件,即ZigBee協議分析器作為測試軟件,搭配CC2531 USB Dongle無線網絡分析儀[11],通過使用ZigBee協議分析器抓取ZigBee設備入網時及入網后的空氣報文并解析,入網流程如圖8所示。
接入廣域網測試中,用戶需要在云端平臺配置ZigBee設備的相關參數,如產品類別、品牌名稱、型號、接口類型、PK、PS、MAC地址等,配置完成后,管理單元依據云端生產自動生成的配置文件,完成設備在云平臺的注冊和登錄,設備有數據交互時,在云端平臺可以看到交互數據,如圖9所示。

圖8 ZigBee節點入網流程圖

圖9 云端顯示接入設備狀態信息
上述步驟均調試通過后,用戶通過如圖10所示的手機App界面可以實現實時監控小米智能插座用電量情況以及準確控制設備開關機狀態的功能。

圖10 App顯示設備狀態信息
綜上所述,驗證了管理單元是一套完成度高、可實際應用、能夠幫助普通家電或者局域網內家電實現接入廣域網功能的系統。
本文所述的智能家電管理單元可以連接整合家庭內部的無線有線局域網設備,實現了設備狀態信息的采集、數據的集中化管理、設備的遠程聯動控制等功能。文中以ZigBee無線局域網絡設備的接入為例詳細闡述了其軟件實現過程,并通過市售智能設備的成功接入及控制驗證了智能管理單元是一款高效便捷、穩定可靠、網絡容量大、品牌兼容性強的智能設備。