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