藍牙Mesh 技術 一起學 入門篇(4)

大家有沒有覺得最近的幾篇文章越來越難以理解啦。當然,雖然 大威 我絞盡腦汁想把這些術語和概念講清楚,但是說真的,真是XX的太難了。所以,如果各位親看了一次沒看懂,那就再看一下。如果還是不行,那就麻煩先吞下去,慢慢消化。很多知識點我們在後面的文章里也會說到。

上次咱們說到了很重要的概念, 訂閱和發布(Publish/Subscribe),也談到了狀態和屬性(States and Properties)。今天我們再多講一點關於 消息(Message),狀態(States)和屬性(Properties)的關係。

藍牙mesh的基本概念(又續)。n

  • 消息,狀態和屬性的關係 (Messages, States and Properties)

藍牙Mesh裡面,要進行某種操作,就是調用消息這一基本機制。一個給定的消息類型代表了一個對狀態的操作或者對多個狀態的採集。所有的消息都可以分成三種簡單類型。哪三種呢? 想想之前我們說的和狀態的關係,對了, 一定有SET,然後還有GET,除了這個一拿一放以外,還有一個STATUS類型。

GET 顧名思義,就是獲取一個節點或者多個節點的給定的狀態。當收到GET消息以後,STATUS消息就發出來了。當然,它裡面帶著的是相對應的狀態內容。

SET, 也一樣,一定是要設置什麼。設置什麼呢?設置狀態! 當收到SET消息之後,要不要有STATUS發出來呢?還記得咱們之前說過「消息可以按照有應答(acknowledged)和沒應答(unacknowledged)來分類」這裡和GET不一樣的是,SET消息分為有應答和無應答兩種。如果是有應答的,就會有STATUS消息跟著出來,如果是無應答的話,那就沒有應答包啦。

STATUAS 消息,除了剛才說的兩種情況會出現意外,也可以在其他的消息中出現,當然也可以獨立出現。比方說某個元素用定時器每隔一段時間發送一次。

其實在藍牙mesh裡面定義了很多種消息,通過Opcode來區分,還包含了相關聯的參數和行為。Opcode可以是單位元組,雙位元組(常見)或者三位元組(廠商指定)。

所以絕大部分的mesh消息都是對狀態進行操作的,只有特別的和屬性相關的消息,才會對屬性進行操作,而且需要制定16位的屬性ID。

  • 狀態轉換(State transitions)

我們剛才說到了狀態的設置和獲取,那麼在進行狀態改變的時候,這種改變可以是立刻發生的,也可以是過一段時間發生的。這張圖把不同的時間給表示出來了。

初始化狀態(initial State)是指剛收到SET新的狀態值的時間。從收到SET消息到狀態改變的時間叫做轉換時間。從STATUS消息發出(可以在中間的任何時間點)到目標狀態完成這個叫保持時間(Remaining time), 所以當你收到STATUS消息的時候,狀態可能還沒有變化,在STATUS消息里也可以包含離目標狀態的變化還有多少時間。 這一部分,我相信各家的協議棧應該都有涉及,等我們分析了各家的協議處理基本就清楚了。

  • 狀態綁定(Bound States)

不同的狀態之間可能會有一些關係。比如說一個狀態的變化會造成另外狀態的出發,這種關係叫做狀態綁定。狀態的綁定是可以跨Model的,(Model這個重要概念我們馬上會提到),也可以在多個元素中。再舉個例子,燈光亮度狀態和開光狀態。當你把亮度狀態改到0了,也就觸發了開關狀態的「關」狀態,反之亦然。

今天先說道這裡,大家消化一下。下次我們還有幾個關鍵知識點講完就要進入別的內容啦。

推薦閱讀:

簡單一文帶你快速的了解藍牙發展歷程並介紹藍牙Mesh技術的基本概念
藍牙Mesh 技術 一起學 入門篇(3)

TAG:蓝牙Bluetooth | Mesh | 物联网 |