物聯網架構演進和微信智能設備平臺開發

  本文從場景和技術的角度去理解物聯網技術和方案的演進,我的觀點,可能與主流定義稍有誤差。php

 

1、物聯網與物聯設備

  本人對物聯網的理解是物聯設備組成的網絡,所以物聯網須要兩個要素,一是設備可以互聯,另外一個是可以組網。物聯網每每又跟智能硬件概念相結合,當今物聯網產品形態每每又帶有無線鏈接的特色(有線最主要的弊端就是佈線麻煩)。所以可以支持互聯、組網、無線三個特色的物聯設備技術就是常見的藍牙和wifi了。藍牙是近距離通訊,穿牆能力差;而wifi距離遠,可穿牆,可是功耗比較高。ZigBee其實通訊距離比藍牙遠,功耗也比wifi低,看起來是比較理想的物聯技術,可是ZigBee的組網能力比較差,帶寬低,傳輸慢。ZigBee更多用在工業控制領域。web

 

  手機是現代社會每一個人不可或缺的產品,藍牙和wifi是手機的必備模塊,因此手機是最大的物聯智能設備。另外,因爲人是物聯網的直接使用者,所以幾乎全部的物聯解決方案都是圍繞手機用戶展開。瀏覽器

2、物聯場景演進

1.手機直接控制物聯設備架構安全

下圖是wifi物聯架構示意圖:服務器


  手機鏈接並控制物聯設備是物聯技術的基礎,第一種方式是手機和硬件控制設備都以client的方式鏈接路由器,這樣手機和硬件控制設備都能得到一個動態的IP,這樣手機能夠經過socket通訊方式來控制硬件控制設備。第二種方式是硬件控制設備帶有wifi AP熱點功能,手機以wifi client鏈接上AP,AP的IP是固定的,所以手機也可以對硬件控制設備進行控制。微信

 

  這種物聯方式通常只是演示的模型,實際應用不多。由於它的缺點顯而易見,咱們都知道socket通訊須要知道通訊對方的IP,所以手機上的APP控制硬件設備時須要填入設備的IP。第一種方式的IP是動態的,須要經過路由器的web控制頁面(通常電腦鏈接後瀏覽器輸入192.168.1.1)得到,這在商用應用中不可能存在。第二種方式也須要手機APP輸入固定的IP,控制不一樣的設備就得輸入不一樣的IP,用戶體驗很差。並且這種物聯跟遙控沒有本質的區別,不利於獲取用戶的信息。而獲取用戶的信息並提供優質服務纔是物聯網的核心要素。網絡


2.基於獨立後臺服務的物聯架構微信開發

  下圖是wifi物聯架構示意圖:架構


  這種物聯架構中的獨立服務器是以域名的方式存在,這樣能夠直接解決動態IP不固定的問題。另外,這種物聯架構中手機和硬件控制都須要以用戶名註冊和登錄的方式來訪問獨立服務器,並由服務器經過心跳技術來確認手機和硬件控制設備的在線狀態。手機和硬件控制在服務器看來都是普通的物聯設備,它們在服務器看來都具備惟一的用戶ID,物聯設備登錄服務器時服務器會獲取到用戶ID所在設備的IP地址。而手機APP控制硬件設備是以用戶ID爲依據進行控制,其先將用戶ID送往服務器便可獲取到對應的IP地址。後續控制能夠經過服務器,也能夠繞過服務器直接進行。微信公衆平臺

 

  相似web互聯架構在互聯網應用普遍存在,如QQ。每臺手機都以QQ帳號和密碼進行登陸,登陸後,QQ後臺服務器會獲知每一個用戶所在手機的IP地址。兩個QQ用戶通訊時會先經過帳號來獲取對方的IP,並進行下一步通訊。這些訪問細節都已經封裝在QQ客戶端程序中,QQ使用者並不須要理會。用戶間的通訊可能會通過QQ服務器,也可能繞過服務器進行。如文字信息通常會送往QQ服務器進行信息過濾再送到對方,而QQ視頻應該是雙方直接經過IP進行通訊。

 

  這種架構在物聯領域曾經是主流的架構,可是其固有的缺點也約束了它的發展壯大。這種架構中,獨立服務器通常是由硬件控制設備的銷售廠商開發維護的,另外其還須要向購買硬件設備的用戶提供手機APP,以讓用戶可以進行遠端的硬件控制。如小孩監護攝像頭,廠商須要開發手機監護APP給用戶安裝使用。能夠想到,用戶每購買一種物聯設備,都須要安裝一個不一樣的APP。這直接影響了用戶體驗。用戶通常是不情願安裝不少的手機APP的,不只安全沒法保障,手機佈滿控制APP時,要找到哪款設備對應的APP還要花時間。另外,獨立服務器的廠商受限於本身的技術儲備和運維能力,難以兼容支持第三方廠商的物聯設備。

3.基於統一後臺服務的物聯架構

  由第2點,咱們天然能夠想到,若是有一家實力超雄的廠商可以提供統一的後臺服務,並被廣大手機用戶使用者承認願意使用,而物聯設備廠商按照統一後臺服務擬定的協議進行設備生產並接入到統一的後臺服務,那大一統的物聯網大平臺將成爲可能。

 

  微信公衆號和微信硬件平臺得益於騰訊QQ的超大用戶量,很天然就承載了這種平臺的實現。徹底能夠預見,微信將是將來物聯網的重要支撐平臺之一,而小米在手機、智能家居和相關行業的佈局也是物聯網重要支撐平臺的競爭者。微信擬定統一開發的協議,讓社會上不一樣的第三方硬件設備公司接入並得到惟一的用戶ID,而小米不只是統一後臺的開發維護者,也是小米不一樣硬件設備的生產者,二者走的路並不一致。但二者的共同點是後臺服務是統一的,二者的隸屬公司都是超大致量型企業。

 

  在移動互聯網領域,用戶基礎是很是核心的要素,涉及平臺相關的服務,沒有超大型體量的企業很難快速構建,頂多只能在垂直領域有所做爲。事實上,在微信智能硬件平臺出現以前,也有一些企業構建了統一的後臺服務,讓第三方設備廠商接入。但受限於用戶的支持,這些平臺都未能爲人熟知(也許是我涉獵這方面知識較少,以前有了解過一個平臺,後來忘記了)。

 

  這種架構的示意圖以下,以微信和藍牙設備控制爲例:


  微信公衆平臺的最核心做用就是給各類不一樣的外設提供接入並分配惟一的設備ID。微信智能硬件平臺的設備ID分配策略包括外設廠商編碼和設備編碼兩個部分。設備編碼在統一廠商裏面是惟一的。

 

  手機須要關注外設廠商運維的微信公衆號,才能經過該公衆號的頁面發出設備控制指令消息。控制消息會經過微信公衆號服務器發往外設廠商獨立運維的後臺服務器,並由後臺服務器做出處理後向外設發出控制消息,該消息會經過微信公衆號服務器到手機的微信客戶端,而微信控制端調用藍牙JSAPI來控制藍牙外設。手機微信要控制外設須要先開啓藍牙並鏈接上藍牙外設。鏈接協議由微信硬件平臺制定,稱爲airsys協議。

 

  微信公衆平臺是開放平臺,支持第三方服務接入,同時提供微信支付、客戶接口、用戶管理等九大接口供第三方服務調用。微信公衆號支持開發者模式,開啓後便可以接入第三方的服務。所謂微信開發便是在調用微信提供的接口的基礎上完成業務邏輯開發,支持的語言是php,asp等等。如何構建第三方服務器和如何進行微信接口開發另文再述。藍牙和wifi因爲功耗的差別,其互聯微信的架構也有差別,在往後的技術實現分享中會詳細進行比較。

 

 

3、native APP & light APP

  在第2種架構,手機要控制外設須要安裝外設廠商開發的APP,是原生APP(native APP);而在第3種架構,手機控制外設只須要關注外設廠商運維的微信公衆號,微信是手機的原生APP,而每一個外設廠商經過微信公衆號提供的服務稱爲輕應用(light APP)。微信是智能手機的首選APP,用戶量超大,所以基於微信統一後臺服務的物聯平臺是將來物聯網的重要支撐。

      嵌入式企鵝圈原創團隊由阿里、魅族、nvidia、龍芯、炬力、拓爾思等資深工程師組成。百分百原創,每週兩篇,分享嵌入式、Linux、物聯網、GPU、Android、自動駕駛等技術。歡迎掃碼關注微信公衆號:嵌入式企鵝圈,實時推送原創文章!

相關文章
相關標籤/搜索