本文從物聯網的中心要素、物聯網的關鍵場景、微信硬件平臺的通信協議剖析三個維度去剖析基於微信硬件平臺的物聯網架構。前端
上圖涵蓋如下信息:web
基於微信硬件平臺的物聯網的架構組成,有微信大衆平臺/硬件平臺、第三方廠商雲後端、手機微信/大衆號、微信硬件設備終端(Wifi和藍牙BLE)。數據庫
綠色表明騰訊向開發者和大衆提供的根底平臺和效勞,並通過白色(airsync/airkiss)定義的硬件外設協議供硬件設備接入,白色(微信硬件平臺接入協議,XML/JSON)供廠商雲後端接入;藍牙和紫色區域表明開發者所要完成的義務,其中藍牙是嵌入式硬件設備終端的義務,紫色是第三方廠商雲後端的義務。編程
物聯網各個組成局部之間的通信協議標識。除了白色標識的協議是微信大衆平臺和硬件平臺制定的協議必需遵守外,其餘組成局部的協議都是自定義的協議。後端
Wifi模組的供給商提供的SDK普通都提供socket通信接口,而云後端普通會運用JSP/PHP等web編程技術,於是wifi設備需求模仿HTTP協議跟雲終端通信。HTTP是一個規範的公共的通信協議,使用層需求在HTTP之上樹立自定義的使用協議來完成設備的控制和交互,而使用協議能夠是XML/JSON等等。固然,假如雲後端運用底層的socket編程,則wifi設備終端能夠不需求模仿http。微信
藍牙通過airsync協議接入微信,該協議規則了設備發現、綁定、登錄、初始化、接納用戶指令、自動發送音訊等進程。網絡
Airkiss是通過JSAPI的方式讓用戶能夠在微信上輸出路由器的用戶名和密碼,而後告知沒有按鍵輸出和屏幕顯示的wifi設備,讓該設備能夠連上路由器進入網絡在線形態。除此以外,Airkiss跟以後用戶和廠商、設備的交互完成沒有關係。實質上,Airkiss只是一個配置上網功用,跟物聯網的控制和交互有關。架構
Wifi設備接入微信硬件平臺是遠場控制,設備只需處於聯網在線形態,那手機用戶不管在哪裏,只需能上網均可以對設備中止控制,典型的例子是在公司下班能夠通過手機控制家裏的智能插座上電;藍牙設備接入微信硬件平臺必需依賴於手機,是近場控制,典型的場景是手機控制家裏的燈和空調等。socket
本文是從開發者的角度去剖析整個微信硬件平臺物聯網,不去討論物聯網運營之類等範疇。那麼,從開發的角度,物聯網的中心要素什麼,微信平臺又支持了什麼?個人瞭解是:加密
設備的合法性和獨一性
微信硬件平臺在物聯網範疇作的事情其實很少,只需細心想一想架構圖中的這麼多的紫色和藍色都是留給開發者,並且都是要光禿禿的編程。關於普通的設備商,他們想接入也是勉爲其難啊。在這集體系架構中,微信硬件平臺作的最重要的一件事情就是身份認證。
就像一團體出生後要辦一張身份證(出生證實的號碼也是身份證號碼)同樣,設備消費出來要想進入微信硬件範疇,它就必需到微信硬件平臺註冊本人的身份,那它拿什麼去註冊呢,這個根據天然應該是無獨有偶的,就像每團體的指紋,假如我國的小孩辦身份證都以錄指紋爲根據,那就不會呈現那麼多拐賣兒童了。現在公安局的作法是什麼,是硬生生地把一串身份證數字跟人名綁在一同,跟天然人的生物特徵沒有一丁點關係!!!設備的無獨有偶的根據就是48位的MAC地址(或許是MAC地址通過某種加密運算失掉的後果)。
接着辦身份證/出生證不是要給小孩起個名字嗎,當前你們交流就叫名字了,公安局也是叫名字的嘛,不可以每次喊話都把指紋的二進制數字讀出來的啊。嗯,那硬件設備註冊時也要報備本人的名字,即設備ID。設備ID也應該在微信硬件平臺獨一啊,否則會亂的。就像MAC地址同樣,有一局部是表明一個設備提供商向世界IETF組織請求的企業辨認字段,另外一局部是設備商外部的分配。或許像身份證那樣,後面6個字段是表明一團體出生時的縣區行政區劃碼,前面的數字才表明自己,但同時要保證在這個行政區外面的獨一性。那微信硬件平臺怎樣標準設備身份?設備身份包括兩個局部,deviceType是設備商/銷售商的微信大衆號的原始ID,deviceID由設備商/銷售商自定義,由設備商保證deviceID在其deviceType中的獨一性。
這就是設備的註冊場景。設備註冊了當前在微信硬件平臺就具備合法性和獨一性了。
設備被拜訪的合感性和合理性
設備最終是應該和人/手機用戶交互的,不然就獲得了物聯的意義了。那麼哪一個用戶能夠拜訪這個設備呢?
微信譽戶要關注設備商的微信大衆號和綁定設備才幹對設備中止拜訪。假如不綁定就能夠拜訪,那就是一切用戶均可以拜訪這個設備,這顯然是不合理的。你買的智能插座放家裏,另外一團體也能控制你的插座,多風險。
微信硬件平臺確保設備的獨一性,微信大衆平臺確保微信譽戶的獨一性,二者通過關注和綁定這個流程樹立起徹底權益的拜訪關係。
微信硬件平臺是微信大衆平臺的一個子集,微信硬件平臺會應用微信大衆平臺已有的功用來完成根底效勞。
設備和用戶交互的音訊觸達才能
設備要成爲物聯網中的一員,必需能夠聯網,比如人體的神經元,具備能夠和外界交流的才能。
微信硬件平臺次要從雲後端接入和硬件接入兩方面做出努力。一是通過airsync協議讓藍牙設備和微信互通,airkiss協議讓複雜的沒有按鍵和UI交互的wifi設備聯網;二是通過制定雲後端接入協議來接納廠商雲,通過音訊接口和API接口運用戶和設備的音訊能夠互相觸達。即設備收回的音訊通過微信平臺發送到廠商雲,廠商雲的音訊也能自動推送給設備,完成交互。
效率
掃一掃功用對微信的影響是宏大的,加關注,好友,挪動領取等等都通過二維碼來完成,設備綁定是二維碼。微信硬件平臺和大衆平臺發生的二維碼關聯了用戶、設備ID等信息,通過掃一掃功用能方便地中止綁定,接入進入大衆號的音訊界面。
物聯網觸及到終端、前端和後端等等,是一個大工程,不管從開發的角度,仍是從用戶運用的角度,都要一直強調便捷的效率,以讓用戶有足夠好的體驗,才幹使得物聯網得以壯大。
音訊處置才能—嵌入式零碎
這一點並無在物聯網架構的圖示中呈現。物聯網決不僅僅是一種控制,例如開燈和關燈之類,也不僅僅是複雜的通過各類傳感器來中止數據採集,未來的物聯網必定會讓用戶不時地進步用戶體驗,例如多媒體、虛擬與完成、數據決策等等,這局部是由初級的嵌入式零碎來完成的。嵌入式零碎纔是設備的大腦,物聯網應該更好地擁抱嵌入式零碎。
下面已有闡明
下面已有闡明
用戶在綁定進程中會自動完成對提供設備的廠商的微信大衆號的關注。在當前每次進入大衆號時,會自動通過手機藍牙對藍牙設備中止掃描銜接。只要完成airsync協議的藍牙設備才幹連上微信。例如藍牙設備播送的字段外面要聲明本人的MAC地址,這樣微信能辨認到這個一個要接入微信的藍牙設備,而後纔會自動地銜接它。
1)用戶點擊微信大衆號提供的菜單,如開燈。
2)音訊通過微信大衆平臺發送給廠商雲後端。
3)雲後端在本人的數據庫內驗證微信譽戶和設備的無效性後,將微信菜單的開燈音訊轉化爲自定義協議的開燈音訊(這個協議只要雲後端和外設設備所見解),並依據airsync中的protobuf協議抵消息體中止打包封裝,最初通過調用微信硬件平臺提供的API接口自動推送出去。
4)微信硬件平臺收到信息後通過微信大衆平臺回傳給微信譽戶所在的大衆號。
5)微信將這個音訊依據airsync協議通過手機藍牙發送藍牙外設。
6)藍牙外設收到音訊中止相應的處置。
從這個進程來看,間接的菜單控制走的流程太長了,影響效率。上面引見的JSAPI控制就是間接控制,不需求再通過廠商雲來發指令。
1)用戶點擊微信大衆號提供的H5網頁連接
2)微信閱讀器通過H5地址向廠商雲後端懇求呼應,前往H5頁面。
3)用戶點擊H5頁面的開燈button
4)button通過JSAPI接口間接向藍牙設備收回自定義的控制音訊,JSAPI藍牙接口曾經封裝好airsync協議。
5)藍牙設備收到音訊中止相應的處置。
下面已有闡明
下面已有闡明
因爲用戶和wifi設備並不在一個區域,而是通過網絡來銜接,於是用戶是不間接跟wifi設備打交道的,一切的交互都給通過wifi設備商的雲後端中止直接交互。(以前曾經說了airkiss只是微信提供的一個配置上網功用,wifi設備通過一次配置後,當前會記住這個路由器的ssid和pwd的,因此配置好一次後,airkiss跟物聯網交互一點關係都沒有,於是airkiss不該該算在物聯網的音訊觸達協議內)。
用戶進入wifi設備對應的大衆號後,微信大衆號會通過微信大衆平臺向廠商雲訂閱和徵詢設備的在線形態。於是設備一上線時應該自動聯絡廠商雲後端,告知本人上線了,並不時地發送心跳包維持銜接。這樣微信大衆號一訂閱懇求,雲就前往設備的形態給它。
假定設備在線,雲後端前往在線形態,微信大衆號就會顯示設備銜接上。
1)用戶點擊微信大衆號提供的菜單,如開燈。
2)音訊通過微信大衆平臺發送給廠商雲後端。
3)雲後端在本人的數據庫內驗證微信譽戶和設備的無效性後,將微信菜單的開燈音訊轉化爲自定義協議的開燈音訊(這個協議只要雲後端和外設設備所見解),而後間接通過網絡發給wifi設備。
4)wifi外設收到音訊中止相應的處置。
1)用戶點擊微信大衆號提供的H5網頁連接
2)微信閱讀器通過H5地址向廠商雲後端懇求呼應,前往H5頁面。
3)用戶點擊H5頁面的開燈button
4)button通過AJAX接口向廠商雲後端收回自定義的控制音訊。
5)廠商雲接納到音訊會轉化硬件控制音訊,間接通過網絡發給wifi設備。
6)wifi設備收到音訊中止相應的處置。
從這點來看,wifi設備接入微信硬件平臺,微信硬件平臺僅僅起到一個入口的做用,音訊轉發都不通過微信硬件平臺了。
回過頭來想一想,國際這幾年早曾經有多家物聯網平臺,如機智雲,yelink等等,它們除了充任公安局的角色確保設備的獨一性,還完成了後端的效勞平臺,甚至給用戶提供物聯設備模塊,極大地簡化了物聯設備消費商的開發流程。在這樣的根底上,微信硬件平臺把那麼多的義務丟給了開發者,但仍是不少廠商擁抱它,只能說微信是一個超級APP,是一個極佳的入口,掌握了全社會大局部用戶的入口。在挪動互聯網範疇,用戶數量就是霸道。
當然,用戶量宏大和騰訊體量龐大是微信硬件平臺物聯網的劣勢,但要想作得更好,是否是思索給用戶多作一些像機智雲同樣的任務?
換做各位小同伴,大家會怎樣作呢?歡送留言~~