資源簡介
藍(lán)牙m(xù)esh基礎(chǔ)概念講解,節(jié)點,Model, Provision,元素,單播地址,組播地址等等概念性知識講解。
閱了"餐廳"這個地址,所以只有燈3能被開關(guān)2控制。在這個例子里同樣說明了每個節(jié) 點可以訂閱多個確切的地址。同樣的,你一定也注意到了,開關(guān)5和開關(guān)6同樣都可以 發(fā)布消息到”花園“。 17狀態(tài)和屬性( States and Properties) 在藍(lán)牙m(xù)esh中,元素的不同情況叫做狀態(tài)( States),狀態(tài)是一個特定類型的值,在 每個元素內(nèi)部存在。除了本身的值以外,狀態(tài)還有一些相關(guān)的行為。拿燈來說,藍(lán)牙 mesh定義了一個狀態(tài)叫” Generic0noff.“燈收到了一個0N的狀態(tài),理解以后就會 執(zhí)行相應(yīng)的動作比方說點亮燈泡的行為 在藍(lán)牙m(xù)esh里面的屬性它提供一個來解釋 Characteristic的上下文。舉個例子。 如果有一個 Character istic,叫做 Temperature8,一個8位的溫度狀態(tài)類型,它有著 些相關(guān)聯(lián)的屬性,包含現(xiàn)在室內(nèi)環(huán)境溫庋和現(xiàn)在室外環(huán)境溫庋。這兩個屬性允許 個傳感器來發(fā)布傳感器消息,收到的客戶端(關(guān)于客戶端和服務(wù)器端的內(nèi)容找們后面會 講)會根據(jù)屬性得知到底是哪個溫度信息。 18消息,狀態(tài)和屬性的關(guān)系( Messages, States and Properties) 藍(lán)牙Mesh里面,要進(jìn)行某種操作,就是調(diào)用消息這一基本機(jī)制。一個給定的消息 類型代表了一個對狀態(tài)的操作或者對多個狀態(tài)的采集。所有的消息都可以分成三種簡單 類型:get、set、 status。 GET顧名懇義,就是獲取一個節(jié)點或者多個節(jié)點的給定的狀態(tài)。當(dāng)收到GET消息以 后, STATUS消息就發(fā)出來了。當(dāng)然,它里面帶著的是相對應(yīng)的狀態(tài)內(nèi)容。 SET消息分為有應(yīng)答和無應(yīng)答兩種。如果是有應(yīng)答的,就會有 STATUS消息跟著出 來,如果是無應(yīng)答的話,那就沒有應(yīng)答包。 STATUS消息,除上面的兩種情況會出現(xiàn)之外,乜可以在其他的消息中出現(xiàn),當(dāng)然 乜可以獨(dú)立出現(xiàn)。比方說某個元素用定時器勾隔一段時間發(fā)送一次。 在藍(lán)牙m(xù)esh里面定義了很多種消息,通過0 ocode來區(qū)分,還包含了相關(guān)聯(lián)的參數(shù) 和行為。 pcade可以是單字節(jié),雙字節(jié)(常見)或者三字節(jié)(廠商指定)。 絕大部分的mesh消息都是對狀態(tài)進(jìn)行操作的,只有特別的和屬性相關(guān)的消息,才 會對屬性進(jìn)行操作,而且需耍制定16位的屬性ID 3/10 19狀態(tài)轉(zhuǎn)換( State transitions) 1.8說到了狀態(tài)的設(shè)置和獲取,那么在進(jìn)行狀態(tài)改變的時候,這種改變可以是立刻 發(fā)生的,也可以是過一段時間發(fā)生的。圖4把不同的時間給表示出來了。 Target State Present state Initial state Remaining Time Transition Tim日 Set (new state value) Status(present state value, target state message received value, remaining time)message sent Fiqure 3.26: State transition 圖4 初始化狀態(tài)( initia state)是指剛收到SET新的狀態(tài)值的時間。從收到SET消息 到狀態(tài)改變的時間叫做轉(zhuǎn)換時間。從 STATUS消息發(fā)出(可以在中間的任何時間點)到 日標(biāo)狀態(tài)完成這個叫保持時間( Rema in ing time),所以當(dāng)你收到 STATUS消息的時候, 狀態(tài)可能還沒有變化,在 STATUS消息里也可以包含離目標(biāo)狀態(tài)的變化還有多少間。 1.10狀態(tài)綁定( Bound states) 不同的狀態(tài)之間可能會有一些關(guān)系。比如說一個狀態(tài)的變化會造成另外狀態(tài)的觸發(fā), 這種關(guān)系叫做狀態(tài)綁定。狀態(tài)的綁定是可以跨Mode的,(Mode丨這個重要概念我們馬 上會提到),也可以在多個元素中。再舉個例子,燈光亮度狀態(tài)和開光狀態(tài)。當(dāng)你把亮 度狀態(tài)改到0了,乜就觸發(fā)了開關(guān)狀態(tài)的“關(guān)”狀態(tài),反之亦然。 1.11模型( Models) 1.11.1 模型( Mode l)定義了一個節(jié)點的基本功能。一個節(jié)點當(dāng)然可以包含多個 Mode l。 個Mode丨定義了節(jié)點所需要的所有的狀態(tài)。消息會給基于這些狀態(tài)進(jìn)行操作,當(dāng)然也會 有相應(yīng)的行為隨之產(chǎn)生。 Mesh的應(yīng)用定義的是使用“發(fā)布-訂閱( pub l i sh- subscr ibe)”的典型的“服務(wù) 器一客戶端( client- server)”的架構(gòu)。在Mesh里面,并沒有沿用傳統(tǒng)的端到端的 Profile”的概念,而是定義了三種不同的模式, Client, Server和 Contro 4/10 定義了狀態(tài) states,狀態(tài)轉(zhuǎn)換 state tr ons,狀態(tài)綁 定 state bind ings和包含了哪些消息,當(dāng)然也同樣定義了與這些消息,狀態(tài), 狀態(tài)轉(zhuǎn)換相關(guān)的行為 Behaviors 沒有定義任何的狀態(tài) States,但是它定義了要牧發(fā)哪些消息。 定義這些消息是為了GT,SET或者獲取在 Server mode s里面定義的狀態(tài)。 具備 client mode I的功能與其他的 server mode進(jìn)行交互, 同時也可以有 server mode I功能與其他 client mode l進(jìn)行交互。內(nèi)置了邏 輯控制層〔一套規(guī)則和行為在各個與之連接的模型中進(jìn)行協(xié)調(diào)交互)。 圖5展示的是 Device c( server mode)帶有狀態(tài),支持 RST XYZ消息, Device A ( client mode)支持Ⅹ丫Z消息, Device B( cient mode l)支持RSTz消息。 Client Model Server Model Message Y Element Device A State Client Model Message R Message s Message T MMessage 2 Element Element Device b Device C 圖5客戶端與服務(wù)端糢型交互 圖6 Device C( contro mode l)可以作為 client mode與 server mode l( device A與 device B)進(jìn)行通訊(分別攴持XYZ和RST消息),也可以作為 server mode I與 client model( device D)進(jìn)行通訊(支持ABC消息)。 5/10 Server Model Control mode Server Model Message X Message R Controller State Message Y Logic(Client) Message State ■■ ■■ Message z Message T Element Controller Message Z State(Server) Device A Element Device B Element Device C 9 Client Model Element Device d 圖6控制模型交互 1.11.2通用( Gener ics) 為了滿足不同的需求,Mesh中定義了多種不同的mode丨s,實際上SG確實有 個 Mode I specification。現(xiàn)在是1.0的版本,只定義了幾個 Model group Gener ics, Sensor s, Time and scenes和 Light ing。你仔細(xì)看一下這幾個名字就 會發(fā)現(xiàn),其實 Gener ic這個mode就是把很多不同應(yīng)用的相似的部分例如0NOFF, Leve丨一些狀態(tài)和行為放在了一個叫做通用的 mode l里面。如果你的產(chǎn)品沒有辦 法找到對應(yīng)的 mode I,就可以先用 gener Ic這個mode先用。 112配網(wǎng)( Provisioning 配網(wǎng)的全過程包括大概5個步驟,分別是 Step 1. Beaconing; Step 2. Invitation; Step 3. Exchang ing Pub l ic Keys Step 4. Authent icat ion Step 5. distr ibut ion of the Provisioning data 6/10 其實也很筒單,第一步,告訴你我要配網(wǎng),這里使用的是新定義的AD廣播包 類型, Mesh ad。第二部,配網(wǎng)者 Provisioner聽到了這個 Beacon以后,就發(fā)一 個邀請,這個邀請就是配網(wǎng)邀請PDU( Protoco Data Unit)。要入網(wǎng)的設(shè)備收到 邀請以后,會把自己的一些配網(wǎng)的能力( Provisioning capabilities)發(fā)回來。接 下來,既然郎有情妾有意,就公開交換信物-公鑰唄。接下來就會有一個互動隨機(jī) 數(shù)的認(rèn)證流程,這點和原來藍(lán)牙輸入0000的密碼很像,但是會筒單一點點。最 后一步,認(rèn)證完成,從公鑰和兩個設(shè)備的私鑰浪生出 Session Key。后面的配網(wǎng)的 信息交互的過程會用這個 Session key來加密。配網(wǎng)成功以后,就會根據(jù)最后一步 里面包含交換的 NetKey來加密后面的數(shù)據(jù)交換。跟加密相關(guān)的一些參數(shù)例如V index,和單播地址,會存在配網(wǎng)者那里。 1.13節(jié)點特性( node features) mesh里面還給每個節(jié)點有一些額外的四種可選的特性( Features)。分別是中繼 Relay代理 Proxy,朋友 Friend和低功耗 Low Power features。節(jié)點可以在某個時 間點選擇不支持或者支持多個 Feature。 中繼(Reay)支持中繼的節(jié)點,可以幫忙轉(zhuǎn)發(fā)收到的消息。因為有了 Relay, Mesh網(wǎng)絡(luò)就可以實現(xiàn)多跳(Hops)s 低功耗和朋友( Low Power nodes and friend nodes),這是搭配來用的。 我們先說 Low power節(jié)點,類似于對功耗有要求的設(shè)備,例如溫度傳感器。這種 類型的設(shè)備為了節(jié)約功耗,很大的時間都是在休眠的。也就是意味著他們收不到網(wǎng) 絡(luò)中發(fā)過來的消息。 Friend節(jié)點能幫LP節(jié)點暫存消息。當(dāng)LP節(jié)點需要的時候,可 以發(fā)消息給 Friend節(jié)點,問問有沒有" waiting message"。如果有,就會一條條的 發(fā)給LP節(jié)點。簡而言之,Fend節(jié)點就像是門衛(wèi)的張大爺,你( Low power node) 想起來的時候去門衛(wèi)拿你要的信就好了。這種方式和 zigbee里面的 enddevice向 父節(jié)點拿數(shù)據(jù)的方式類似。 下面簡單的拓?fù)浣Y(jié)構(gòu)基本上說明了這兩種 Feature和其他一般Node的關(guān)系和 消息路徑。顯而易見,如果有消息要發(fā)從T發(fā)給L,S會幫忙轉(zhuǎn)發(fā),O會幫忙L存 起來。L要消息的時候,O再把T的消息發(fā)給L。 …ADV( Not relayed) ADV(Low Power) ADV Beare GATT Bearer Low Power node Relay node Friend nodc I Friend feature( rot used K 圖7mesh網(wǎng)絡(luò)中的拓?fù)浣Y(jié)構(gòu) 7/10 代理( Proxy)的 feature又是什么呢?這就是Mesh想到的兼容現(xiàn)有的非Mesh 設(shè)備的方法。在 Proxy節(jié)點,其實是可以通過BLE的GATT來交流的。(這是現(xiàn)在 非 Mesh ble設(shè)備最常用的數(shù)據(jù)交流方式)。 Non mesh Mesh 圖8有mesh功能與無mesh功能之間的通訊方式 每個節(jié)點當(dāng)然還有一系列配套的配置集,在 Configuration Server Model和 Configuration Client Mode里的 States都有實現(xiàn)。比如,上面說到的不同的 Feature 都是在 Configuration Server states說明的。在藍(lán)牙Mesh也一樣定義了配置消息 (configuration messages) E 2藍(lán)牙m(xù)esh協(xié)議架構(gòu) 21mesh協(xié)議層架構(gòu)圖 Model Laver Foundation Model Layer Access Layer Upper Transport Layer Lower Transport Layer Network Layer Bearer Layer Bluetooth Low Energy Core Specification 圖9mesh系統(tǒng)架構(gòu) 8/10 22承載層( Bearer layer) Bearer Layer定義了Mesh節(jié)點怎么傳遞網(wǎng)絡(luò)消息的。定義了兩種 Bearer,廣 播 advertising bearer和 gatt bearer Advertising Bearer利用的是 BLE GAP廣播包的 advertising和 scannIng 的功能來傳遞接收mesh的報文。 The gatt bearer允許不支持 Advertising Bearer的設(shè)備間接的與mesh節(jié)點 進(jìn)行通訊。怎么通訊呢?使用前面講的代理 Proxy protoco)。 Proxy protocol是封 裝在GATT里面,當(dāng)然會用特別定義的 gatt characteristics。上一講我們講到了 Proxy Feature,支持 Proxy Feature的 Proxy node也就是代理節(jié)點,因為可以同時 支持兩種 Bearer Layer,所以可以作為mesh節(jié)點和非mesh節(jié)點的中間橋梁。 23網(wǎng)絡(luò)層( Network Layer) 網(wǎng)絡(luò)層定義了幾件事情,一個是定義了多種網(wǎng)絡(luò)地址類型,我之前有說過關(guān) 于Mesh地址的內(nèi)容。二是定義了網(wǎng)絡(luò)層的格式,打通傳輸層( Transport layer) 和承載層( Bearer laye);三是定義了一些輸入輸出 Filter,決定哪些消息需要轉(zhuǎn)發(fā), 處理還是拒絕。四是定義了網(wǎng)絡(luò)消息的加密和認(rèn)證 24底層傳輸層[ Lower Transport Layer) 這層做的事情很簡單,就是拆拆拼拼。把太長的傳輸層的包拆成若干個分給網(wǎng) 絡(luò)層,把短的網(wǎng)終層的包再組成一個長的傳輸層的PDU( Protocol Data Unit) 25上層傳輸層( Upper transport Layer) 上層傳輸層主要是負(fù)責(zé)加密,揭秘和應(yīng)用數(shù)據(jù)授權(quán)。一句話,消息的安全性和 機(jī)密性就是有這一層負(fù)責(zé)的。還有就是會定義一些節(jié)點間在這一層的一些會話,比 如 Friend功能,心跳包( Heartbeats)。 26訪問層( Access Layer 訪問層主要負(fù)責(zé):1定義更高層的應(yīng)用如何跟 upper transport layer通訊。2定 義應(yīng)用數(shù)據(jù)的格式。3定義和控制 upper transport layer應(yīng)用數(shù)據(jù)的加解密。4在把 應(yīng)用數(shù)據(jù)扔到上層之前,會檢查校驗接收過來的應(yīng)用數(shù)據(jù)是否合法 27基礎(chǔ)Mode層( Foundation Models Layer) 基礎(chǔ)mdel層定義訪問層( access layer)的尖態(tài),消息,模型配置和mesh網(wǎng) 絡(luò)管理。 28Mode層( Model Layer) Mode層定義了典型的用戶場景標(biāo)準(zhǔn)化操作的相關(guān) models(相關(guān)的 models定 9/10 義在 文檔中)。更高層次模型規(guī)范的例子包括照 明和傳感器的模型。 10/10
代碼片段和文件信息
評論
共有 條評論