微信硬體平臺的基礎接入和硬體雲標準接入分析
本文分析基於微信硬體平臺的物聯網架構,將從物聯網的核心要素、物聯網的關鍵場景、微信硬體平臺的通訊協議分析三個維度去分析。更多的微信硬體平臺開發的深度技術原創分享請訂閱微信公眾號:嵌入式企鵝圈。
微信硬體平臺包括基礎接入方案與微信硬體雲標準接入方案。前者是在應用端和裝置端都完全由廠商開發,微信硬體平臺只負責使用者管理、裝置管理和透明的訊息推送;後者是在前者的基礎上,給裝置端提供了直連SDK(可以適配linux/android等平臺)、提供裝置API給第三方硬體平臺接入,甚至在應用端根據各種家電場景定義了標準協議和標準應用介面,簡化了廠商的開發流程。
最近的一年裡,微信硬體和阿里小智、京東智慧、機智雲、慶科雲都得到快速的發展,要麼是在雲端有深厚積累的企業通過合作眼神到裝置端,要麼是裝置模組商擴充套件到雲端,目標都是形成物聯生態圈。而物聯的產品應用形態基本上都是從單個APP走向超級APP,從技術上就是從C/S模式走向B/S模式。對技術人員的要求也是不一樣的。例如,微信、阿里小智等都是內建了瀏覽器的,那麼應用就要求web開發技術,而C/S方式的物聯單品,自然是android/ios開發。但是各個平臺都有自己的優點和缺點,體驗也有差異,有些體驗還是致命的硬傷。嵌入式企鵝圈將會專門寫一篇針對國內物聯網平臺發展的技術分析和比較文章。本文先分析微信接入方案。
一、 微信硬體平臺基礎接入架構
微信硬體平臺包括近場藍芽控制接入和遠場wifi控制接入兩種場景。對於藍芽接入,其需要通過微信定義的airsync協議跟手機的微信通訊,接入微信硬體平臺,藍芽裝置和廠商伺服器的通訊都需要經過微信伺服器的推送。而wifi接入的裝置是可以直接跟自己的廠商伺服器直接通訊的。在基礎接入方案中,wifi裝置是通過廠商伺服器給微信使用者提供服務的。在第二種微信硬體雲接入中,裝置端可以通過直連SDK與微信伺服器通訊,給微信使用者提供服務。
二、微信硬體平臺硬體雲標準接入方案
硬體雲標準接入方案是針對wifi接入,其有兩種形式。
1.第一種形式:裝置可以通過微信提供的直連SDK直接與微信硬體雲通訊,並實現微信標準場景的協議即可,不需要另加廠商伺服器。阿里小智也是類似這種方式。
2.第二種形式:微信通過HTTP提供裝置端的API,由裝置的廠商伺服器負責接入。即裝置先接入到裝置廠商伺服器,並由廠商伺服器接入微信硬體平臺。例如機智雲的裝置可以通過裝置端API接入微信。但是這種方式要求裝置廠商的開發能力足夠強。
接下來,我們著重分析基礎接入的架構分析,微信硬體雲標準接入方案以後再分析。
三、微信硬體平臺的基礎接入架構分析
上圖涵蓋以下資訊:
1. 基於微信硬體平臺的物聯網的架構組成,有微信公眾平臺/硬體平臺、第三方廠商雲後端、手機微信/公眾號、微信硬體裝置終端(Wifi和藍芽BLE)。
2. 綠色代表騰訊向開發者和公眾提供的基礎平臺和服務,並通過紅色(airsync/airkiss)定義的硬體外設協議供硬體裝置接入,紅色(微信硬體平臺接入協議,XML/JSON)供廠商雲後端接入;藍芽和紫色區域代表開發者所要完成的任務,其中藍芽是嵌入式硬體裝置終端的任務,紫色是第三方廠商雲後端的任務。
3. 物聯網各個組成部分之間的通訊協議標識。除了紅色標識的協議是微信公眾平臺和硬體平臺制定的協議必須遵循外,其他組成部分的協議都是自定義的協議。
4. Wifi模組的供應商提供的SDK一般都提供socket通訊介面,而云後端一般會使用JSP/PHP等web程式設計技術,因此wifi裝置需要模擬HTTP協議跟雲終端通訊。HTTP是一個標準的公共的通訊協議,應用層需要在HTTP之上建立自定義的應用協議來完成裝置的控制和互動,而應用協議可以是XML/JSON等等。當然,如果雲後端使用底層的socket程式設計,則wifi裝置終端可以不需要模擬http。
5. 藍芽通過airsync協議接入微信,該協議規定了裝置發現、繫結、登陸、初始化、接收使用者指令、主動傳送訊息等過程。
6. Airkiss是通過JSAPI的方式讓使用者可以在微信上輸入路由器的使用者名稱和密碼,然後告知沒有按鍵輸入和螢幕顯示的wifi裝置,讓該裝置能夠連上路由器進入網路線上狀態。除此之外,Airkiss跟之後使用者和廠商、裝置的互動完成沒有關係。本質上,Airkiss只是一個配置上網功能,跟物聯網的控制和互動無關。
7. Wifi裝置接入微信硬體平臺是遠場控制,裝置只要處於聯網線上狀態,那手機使用者無論在哪裡,只要能上網都可以對裝置進行控制,典型的例子是在公司上班可以通過手機控制家裡的智慧插座上電;藍芽裝置接入微信硬體平臺必須依賴於手機,是近場控制,典型的場景是手機控制家裡的燈和空調等。
四、物聯網的核心要素
本文是從開發者的角度去分析整個微信硬體平臺物聯網,不去探討物聯網運營之類等領域。那麼,從開發的角度,物聯網的核心要素什麼,微信平臺又支援了什麼?我的理解是:
1. 裝置的合法性和唯一性
微信硬體平臺在物聯網領域做的事情其實不多,只要仔細想想架構圖中的這麼多的紫色和藍色都是留給開發者,而且都是要赤裸裸的程式設計。對於一般的裝置商,他們想接入也是勉為其難啊。在這個體系架構中,微信硬體平臺做的最重要的一件事情就是身份認證。
就像一個人出生後要辦一張身份證(出生證明的號碼也是身份證號碼)一樣,裝置生產出來要想進入微信硬體領域,它就必須到微信硬體平臺註冊自己的身份,那它拿什麼去註冊呢,這個依據自然應該是獨一無二的,就像每個人的指紋,如果我國的小孩辦身份證都以錄指紋為依據,那就不會出現那麼多拐賣兒童了。現在公安局的做法是什麼,是硬生生地把一串身份證數字跟人名綁在一起,跟自然人的生物特徵沒有一丁點關係!!!裝置的獨一無二的依據就是48位的MAC地址(或者是MAC地址通過某種加密運算得到的結果)。
接著辦身份證/出生證不是要給小孩起個名字嗎,以後大家交流就叫名字了,公安局也是叫名字的嘛,不可能每次喊話都把指紋的二進位制數字讀出來的啊。嗯,那硬體設備註冊時也要報備自己的名字,即裝置ID。裝置ID也應該在微信硬體平臺唯一啊,不然會亂的。就像MAC地址一樣,有一部分是代表一個裝置提供商向世界IETF組織申請的企業識別字段,另一部分是裝置商內部的分配。或者像身份證那樣,前面6個欄位是代表一個人出生時的縣區行政區劃碼,後面的數字才代表自身,但同時要保證在這個行政區裡面的唯一性。那微信硬體平臺怎麼規範裝置身份?裝置身份包括兩個部分,deviceType是裝置商/銷售商的微信公眾號的原始ID,deviceID由裝置商/銷售商自定義,由裝置商保證deviceID在其deviceType中的唯一性。
這就是裝置的註冊場景。設備註冊了以後在微信硬體平臺就具有合法性和唯一性了。
2. 裝置被訪問的合理性和正當性
裝置最終是應該和人/手機使用者互動的,否則就失去了物聯的意義了。那麼哪個使用者能夠訪問這個裝置呢?
微信使用者要關注裝置商的微信公眾號和繫結裝置才能對裝置進行訪問。如果不繫結就可以訪問,那就是所有使用者都能夠訪問這個裝置,這顯然是不合理的。你買的智慧插座放家裡,另一個人也能控制你的插座,多危險。
微信硬體平臺確保裝置的唯一性,微信公眾平臺確保微信使用者的唯一性,兩者通過關注和繫結這個流程建立起完全權利的訪問關係。
微信硬體平臺是微信公眾平臺的一個子集,微信硬體平臺會利用微信公眾平臺已有的功能來完成基礎服務。
3. 裝置和使用者互動的訊息觸達能力
裝置要成為物聯網中的一員,必須能夠聯網,好比人體的神經元,具有能夠和外界交流的能力。
微信硬體平臺主要從雲後端接入和硬體接入兩方面作出努力。一是通過airsync協議讓藍芽裝置和微信互通,airkiss協議讓簡單的沒有按鍵和UI互動的wifi裝置聯網;二是通過制定雲後端接入協議來接納廠商雲,通過訊息介面和API介面使使用者和裝置的訊息能夠相互觸達。即裝置發出的訊息經過微信平臺傳送到廠商雲,廠商雲的訊息也能主動推送給裝置,完成互動。
4. 效率
掃一掃功能對微信的影響是巨大的,加關注,好友,移動支付等等都通過二維碼來完成,裝置繫結是二維碼。微信硬體平臺和公眾平臺產生的二維碼關聯了使用者、裝置ID等資訊,通過掃一掃功能能方便地進行繫結,接入進入公眾號的訊息介面。
物聯網涉及到終端、前端和後端等等,是一個大工程,無論從開發的角度,還是從使用者使用的角度,都要始終強調便捷的效率,以讓使用者有足夠好的體驗,才能使得物聯網得以壯大。
5. 訊息處理能力—嵌入式系統
這一點並沒有在物聯網架構的圖示中出現。物聯網決不僅僅是一種控制,例如開燈和關燈之類,也不僅僅是簡單的通過各種感測器來進行資料採集,未來的物聯網一定會讓使用者不斷地提高使用者體驗,例如多媒體、虛擬與實現、資料決策等等,這部分是由高階的嵌入式系統來完成的。嵌入式系統才是裝置的大腦,物聯網應該更好地擁抱嵌入式系統。
五、基於遠場wifi控制的微信物聯方案
1.註冊
上面已有說明
2.使用者繫結
上面已有說明
3.連線
由於使用者和wifi裝置並不在一個區域,而是通過網路來連線,因此使用者是不直接跟wifi裝置打交道的,所有的互動都給通過wifi裝置商的雲後端進行間接互動。(之前已經說了airkiss只是微信提供的一個配置上網功能,wifi裝置經過一次配置後,以後會記住這個路由器的ssid和pwd的,所以配置好一次後,airkiss跟物聯網互動一點關係都沒有,因此airkiss不應該算在物聯網的訊息觸達協議內)。
使用者進入wifi裝置對應的公眾號後,微信公眾號會通過微信公眾平臺向廠商雲訂閱和諮詢裝置的線上狀態。因此裝置一上線時應該主動聯絡廠商雲後端,告知自己上線了,並不時地傳送心跳包維持連線。這樣微信公眾號一訂閱請求,雲就返回裝置的狀態給它。
假設裝置線上,雲後端返回線上狀態,微信公眾號就會顯示裝置連線上。
4. 控制(選單控制)
1)使用者點選微信公眾號提供的選單,如開燈。
2)訊息通過微信公眾平臺傳送給廠商雲後端。
3)雲後端在自己的資料庫內驗證微信使用者和裝置的有效性後,將微信選單的開燈訊息轉化為自定義協議的開燈訊息(這個協議只有雲後端和外設裝置所認識),然後直接通過網路發給wifi裝置。
4)wifi外設收到訊息進行相應的處理。
5. 控制(H5控制)
1)使用者點選微信公眾號提供的H5網頁連結
2)微信瀏覽器通過H5地址向廠商雲後端請求響應,返回H5頁面。
3)使用者點選H5頁面的開燈button
4)button通過AJAX介面向廠商雲後端發出自定義的控制訊息。
5)廠商雲接收到訊息會轉化硬體控制訊息,直接通過網路發給wifi裝置。
6)wifi裝置收到訊息進行相應的處理。
從這點來看,wifi裝置接入微信硬體平臺,微信硬體平臺僅僅起到一個入口的作用,訊息轉發都不經過微信硬體平臺了。
六、基於近場藍芽控制的微信物聯方案
1.註冊
上面已有說明
2.使用者繫結
上面已有說明
3.連線
使用者在繫結過程中會自動完成對提供裝置的廠商的微信公眾號的關注。在以後每次進入公眾號時,會自動通過手機藍芽對藍芽裝置進行掃描連線。只有完成airsync協議的藍芽裝置才能連上微信。例如藍芽裝置廣播的欄位裡面要宣告自己的MAC地址,這樣微信能識別到這個一個要接入微信的藍芽裝置,然後才會主動地連線它。
4.控制(選單控制)
1)使用者點選微信公眾號提供的選單,如開燈。
2)訊息通過微信公眾平臺傳送給廠商雲後端。
3)雲後端在自己的資料庫內驗證微信使用者和裝置的有效性後,將微信選單的開燈訊息轉化為自定義協議的開燈訊息(這個協議只有雲後端和外設裝置所認識),並根據airsync中的protobuf協議對訊息體進行打包封裝,最後通過呼叫微信硬體平臺提供的API介面主動推送出去。
4)微信硬體平臺收到資訊後通過微信公眾平臺回傳給微信使用者所在的公眾號。
5)微信將這個訊息根據airsync協議通過手機藍芽傳送藍芽外設。
6)藍芽外設收到訊息進行相應的處理。
從這個過程來看,直接的選單控制走的流程太長了,影響效率。下面介紹的JSAPI控制就是直接控制,不需要再通過廠商雲來發指令。
5. 控制(H5/JASPI控制)
1)使用者點選微信公眾號提供的H5網頁連結
2)微信瀏覽器通過H5地址向廠商雲後端請求響應,返回H5頁面。
3)使用者點選H5頁面的開燈button
4)button通過JSAPI介面直接向藍芽裝置發出自定義的控制訊息,JSAPI藍芽介面已經封裝好airsync協議。
5)藍芽裝置收到訊息進行相應的處理。
業務諮詢請發郵件[email protected]
- 嵌入式企鵝圈原創團隊由阿里、魅族、nvidia、龍芯、炬力、拓爾思等資深工程師組成。百分百原創,每週兩篇,分享嵌入式、Linux、物聯網、GPU、Android、自動駕駛等技術。歡迎掃碼關注微信公眾號:嵌入式企鵝圈,
相關推薦
微信公眾平臺——基礎配置——務器配置:PHP版
sort 文件 cti pre amp 提交 false pst 加解密 在自己的服務器上新建一個空白php文件,輸入以下任一版本的代碼,如下: 版本一: <?php $token = "dige1994"; $signature = $_GET["signatur
第一篇:微信公眾平臺開發實戰Java版之瞭解微信公眾平臺基礎知識以及資料準備
相信很多人或多或少聽說了微信公眾平臺的火熱。但是開發還是有一點門檻,鑑於挺多朋友問我怎麼開發,問多了,自己平時也進行以下總結。 所以下面給大家分享一下我的經驗: 第一部分 介紹微信公眾號的一些簡單介紹以及微信扮演的一些角色,微信公眾號的重要性。 1. 微信公眾號是什麼? 官網
微信硬體平臺的基礎接入和硬體雲標準接入分析
本文分析基於微信硬體平臺的物聯網架構,將從物聯網的核心要素、物聯網的關鍵場景、微信硬體平臺的通訊協議分析三個維度去分析。更多的微信硬體平臺開發的深度技術原創分享請訂閱微信公眾號:嵌入式企鵝圈。微信硬體平
微信公眾號開發——3、硬體裝置接入
一、為裝置新增產品 1、在認證過的服務號或訂閱號下,在微信公眾平臺新增“裝置功能”外掛。公眾測試號提供裝置功能介面,供開發者測試使用。 2、在公眾號平臺的“測試號管理”下,選擇“裝置功能介面”並對其進行設定,進入“產品管理介面”並選擇“新增產品”。 3、產品新增成功後,
微信公眾平臺,微信接入及消息回復
llb file deb eat header host esc nat openid <?php /* 方倍工作室 http://www.fangbei.org/ CopyRight 2016 All Rights Reserved
微信公眾平臺開發教程(三) 基礎框架搭建
開發 images wxs user 設計實現 bytes trre 來源 app 上一章,我們已經初步講解了微信公眾賬號開發的基本原理,今天我們來探索設計實現。 首先我們設計了模塊層次圖,當然圖中只是給出一種實現方式,不局限於此。具體見下圖。 主要功能介紹如下: 1)請求
微信公眾平臺開發 - 接入及配置常見問題
配置 nes 寫法 同時 重要 open 無法 ani 多個參數 1.redirect_uri 參數錯誤 微信安全登陸“抱歉,出錯了” 微信公眾平臺換了服務器,域名也換了,所以要改一下配置,基礎配置都改完之後,調用自定義菜單接口,微信服務器始終登錄不上,就是因為這裏的網頁授
微信公眾平臺申請測試介面URL和TOKEN的配置,怎麼在本地讓微信能通過80埠訪問
最近開始微信公眾平臺的搗鼓,但相信和很多新手一樣,遇到的第一件事就是如何配置url,主要是微信的8
微信公眾平臺開發教程-關於申請微信公眾號訂閱號(服務號)的材料和流程
手機 開發 展示 公眾平臺開發 自定義 聯系 客服 申請微信公眾號 公眾 微信公眾號服務號與訂閱號的區別 訂閱號: 1、每天可以發1次信息,每次可以發送8篇文章(信息展示在微信公眾號折疊文件中) 2、不能申請微信支付功能 3、認證後才可以使用自定義菜單功能 4、訂閱號適合:
使用.net 操作 微信公眾平臺 —— 接入
接入 登入微信公眾平臺(https://mp.weixin.qq.com) 開發 => 基本配置 => 伺服器配置 EncodingAESKey 點 隨機生成 即可 在專案中新建CheckWxToken.aspx 把檔案釋出到伺服器,再回到微信公眾平
微信小程式裡面的標籤和html標籤的對比、微信小程式基礎之常用控制元件
微信小程式和html5標籤的區別: HTML5 微信小程式 <h1></h1>...<h6></h6> <p>&l
微信公眾平臺開發2-接入指南(驗證伺服器地址有效性)
接入指南 一、填寫伺服器配置 在測試號管理中填寫介面配置資訊 伺服器地址URL,URL是開發者用來接收微信訊息和事件的介面URL; Token可以任意填寫; 這是測試時填寫的,真實專案的填寫還要填寫EncodingAESKey,可以由開發者手動填寫或隨機生成,將
EasyWeChat微信開發平臺第三方接入(Laravel5+,EasyWeChat3.0)
一、準備微信開發平臺賬號(需要認證¥300) 二、看程式碼 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use EasyWeChat\Foundation\Applicati
微信小程式區別ios和android平臺的方式
具體方式如下: const that = this; wx.getSystemInfo({ success(res) { if (res.platform == "ios")
微信開放平臺和微信公眾平臺配置流程簡介,
一、如何開通微信公眾號、微信開發平臺、授權認證、介面許可權申請等等,這些不在本文描述,請參考官方資料。二、假設已順利完成第一步的工作,現在需要在自己開發的網站(PC端、移動端,注意兩者略有不同,下文有描述)接入微信登入功能。三、接入之前,首先要理解使用微信登入的常有的兩種應用
10天零基礎入門小程式開發(10天上線屬於自己的微信小程式)-----開篇和課程大綱
10天零基礎入門微信小程式開發,只講乾貨,實戰入門,10天開發屬於自己的上線小程式。 課程優勢 1 每節課都有配套視訊,學習更輕鬆 2 可加老師私人微信,微信線上解疑答惑 3 每節課都有對應原始碼
微信開放平臺 公眾號第三方平臺開發 教程四 代公眾號呼叫介面的SDK和demo
前幾章中我講解了微信開發平臺提供第三方平臺的好處,和使用流程,如果你看了我的文章相信你對開放平臺有了初步的瞭解,但是在實際的開發過程中可能會遇見很多問題。今天我將對每一個介面分別講解一下,以及的SKD的使用方法。
微信開放平臺第三方接入授權開發
微信開放平臺第三方接入授權開發 說在前面 解密方式 獲取ticket 根據ticket、appid和appsecret來獲得token 根據token來獲得pre_auth_code 引導進入授權頁面 根據a
基於微信公眾平臺的第三方介面接入Java接發訊息
玩過微信公眾號的都清楚,微信公眾號的專案欄是可以在裡面生成的,今天就來說一下使用Java接入微信平臺提供的第三方介面。 開啟微信公眾平臺,開啟開發者模式,裡面有一個介入指南,下面有三款:1.填寫伺服器配置。2.驗證伺服器地址的有效性。3依據介面文件實現業務邏輯。 1.填