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