本文介紹如何基于生活物聯網SDK開發接入生活物聯網平臺的網關。
術語解釋
- 網關設備:也叫主設備,是指可以掛載子設備的直連設備,網關具有子設備管理模塊,維持子設備的拓撲關系,并且可以將拓撲關系同步到云端。
- 子設備:本質上也是設備,但子設備不能直接連接到云端,只能通過掛接到網關上,通過網關間接連云,例如使用zigbee協議聯網的設備。
- 設備ID:設備句柄,在網關SDK中用于標識一個具體的設備。
- 設備證書:指設備的ProductKey、DeviceName和DeviceSecret,用于唯一標識設備。
- 拓撲關系:子設備和網關的關聯關系為拓撲關系,子設備與網關建立拓撲關系后,便可以復用網關的物理通道進行數據通信。
- 子設備動態注冊:子設備無需燒錄一機一密(設備證書),只需要燒錄ProductKey、ProductSecret,然后基于子設備的唯一標識作為設備證書中的DeviceName(例如SN),再使用網關SDK到云端動態注冊獲取DeviceSecret,從而得到完整的設備證書。子設備就可以使用該設備證書到云端進行設備的身份認證,并進而被云端統一管理。
- TSL:Thing Specification Language,基于JSON格式,用于描述設備所具備的功能和能力,詳細說明參見物模型介紹。
網關開發流程
網關產品的開發流程如下圖所示。
- 底色為藍色的步驟表示該步驟中的功能完全由網關廠商自己定義與實現。
- 網關如何去發現以及連接子設備是由網關廠商與子設備廠商去協商和定義的,平臺并不參與網關與子設備之間的通信過程和數據格式定義。但是當網關添加一個子設備后,需要使用平臺提供的子設備驗證機制來驗證子設備的合法性。
- 當手機App對子設備進行控制時,命令將會通過手機發送到云端、再由云端發送到網關設備后轉發給子設備。網關與子設備之間的數據格式由網關廠商和子設備廠商定義,因此網關需要進行數據格式從平臺格式到廠商數據格式的轉換。
- 平臺提供的網關SDK并不包含網關如何獲取IP地址的功能。網關可能使用以太網、WiFi、或者蜂窩網技術(GRPS、3G、4G等)方式連網,網關上如何通過DHCP獲取IP地址、域名服務器地址、下一跳路由器的IP地址等功能由網關廠商實現。
- 如果網關使用WiFi接入網絡,并且網關具有串口、或者web server這樣的功能可以讓用戶輸入WiFi熱點的SSID/密碼,那么網關廠商可以不用適配與集成SDK中的WiFi配網功能。
下載SDK與網關編程說明
在生活物聯網平臺定義網關產品
終端用戶添加子設備的交互示意圖
本節介紹用戶添加子設備的整個交互示意,以讓網關廠商了解子設備添加到云端的整體過程。設備用戶購買了網關和子設備之后,需要先添加網關,再將子設備添加到網關。完成后才能對子設備進行控制。下面是已添加網關后,添加子設備的多端交互示意圖。
當用戶發起子設備添加時,手機App將會向云端發送PermitJoin命令,之后云端會將該命令轉發給網關,此時網關需要去發現與連接子設備,網關如何去發現與連接子設備是由網關廠商與子設備廠商來定義和實現的。當網關收到PermitJoin后,將發現的子設備上報到云端。
說明 如果網關沒有收到來自云端的permitJoin消息,即使子設備已連接到網關,也不要向云端添加子設備;可以等到收到permitJoin之后再將已連接的子設備通知云端。
云端與網關之間數據格式由阿里云IoT定義,網關與子設備之間的數據格式是網關廠商與子設備廠商定義,因此網關需要實現阿里云IoT數據格式與子設備之間數據格式的轉換工作。
當云端添加子設備到網關之后,將會發送消息到手機端,從而讓用戶可以看見添加的子設備,繼而對子設備進行控制。
SDK應用于網關時的推薦配置
解壓獲取到的SDK包后,在主目錄下的make.settings文件,定義功能模塊的需求。對網關而言,除了不同聯網方式(WiFi,以太網、蜂窩網)的不同配置之外,還需要配置以下參數的使能。
FEATURE_DEVICE_MODEL_GATEWAY=y