本文為介紹為智能家居設備制定的藍牙Mesh擴展消息定義,便于更多的智能家居設備通過藍牙Mesh技術來接入生活物聯網平臺。自有品牌項目與天貓精靈生態項目均遵循本協議。

背景信息

藍牙技術聯盟(Bluetooth SIG)定義的SIG Mesh的模型目前尚未覆蓋所有的智能家居設備,我們采用廠商自定義模型(Vendor Model)來實現智能家居設備的控制和狀態上報。在天貓精靈生態項目中,Mesh網關包括天貓精靈音箱與天貓精靈App。在自有品牌項目中,Mesh網關包括自有品牌項目Mesh網關產品與云智能App。注意以下部分消息僅在天貓精靈生態項目中支持。

Vendor Model

SIG定義Vendor Model格式為4字節(其中2字節的Company ID和2字節的Vendor-assigned Model ID),其中Alibaba的Company ID為0x01A8,如下表所示。

字段 字節數 說明
16-bit Company Identifier 2 0x01A8
16-bit vendor-assigned model Identifier 2 -

下表為兩個VendorModel ID,用于消息擴展用。

Model Name SIG Model ID
Vendor Model Server 0x01A80000
Vendor Model Client 0x01A80001
說明 Mesh設備作為Vendor Model Server,Mesh網關作為Vendor Model Client。

擴展消息操作碼

在藍牙Mesh協議中規定,操作碼分為3種:1字節Opcode、2字節Opcode、3字節Opcode。
  • 1字節Opcode的最高位為0,所以1字節Opcode的取值范圍從0x00-0x7e(其中0x7f用于將來擴展用)。
  • 2字節Opcode第一字節的最高位為1,第2位為0,所以2字節OpCode的取值范圍從0x8000到0xbfff,都為SIG分配。
  • 3字節Opcode第一字節的最高兩位均為1,后兩字節z是由SIG分配的Company ID,Company ID使用小端優先的方式傳輸,阿里巴巴使用的Company ID為0x01a8。6 bit的x可由廠商定義64個Opcodes。
Opcode Format 說明
0b0xxxxxxx(排除0b01111111) 1字節Opcode。
0b01111111 保留,用于將來擴展。
0b10xxxxxx xxxxxxxx 2字節Opcode。
0b11xxxxxx zzzzzzzz zzzzzzzz 3字節Opcode。

操作碼定義

智能生活平臺藍牙Mesh擴展消息Opcode定義如下表所示。

Vendor Message Name Opcode
Vendor Message Attribute Get 0xD001A8
Vendor Message Attribute Set 0xD101A8
Vendor Message Attribute Set Unacknowledged 0xD201A8
Vendor Message Attribute Status 0xD301A8
Vendor Message Attribute Indication 0xD401A8
Vendor Message Attribute Confirmation 0xD501A8
Vendor Message Attribute Indication To Tmall Genie 0xDE01A8
Vendor Message Attribute Confirmation From Tmall Genie 0xDF01A8
Vendor Message Transparent msg 0xCF01A8
Vendor Message Transparent Indication 0xCE01A8
Vendor Message Transparent ACK 0xCD01A8

Vendor Model屬性消息結構

Vendor message里的數據都使用小端優先方式傳輸。
  • Vendor Message Attribute Get
    該消息用于Vendor Model Client獲取Vendor Model Server的一個或多個屬性值,消息格式如下。
    字段 字節數 說明
    Opcode 3 0xD001A8
    TID 1 Transaction Identifier,每條新消息遞增
    Attribute Type 2 讀取的Attribute類型

    Attribute Type最多可有15個。當Vendor Model Server收到Attribute Get消息后,必須向Vendor Model Client回復Attribute Status。如Vendor Model Client在下發該命令之后未收到Vendor Model Server返回的Attribute Status,可以再次下發該指令。

  • Vendor Message Attribute Set
    該消息用于Vendor Model Client設置Vendor Model Server的一個或多個屬性值,消息格式如下。
    字段 字節數 說明
    Opcode 3 0xD101A8
    TID 1 Transaction Identifier,每條新消息遞增
    Attribute Type 2 設置的Attribute類型
    Attribute Parameter N 設置的Attribute參數

    Attribute Type和Attribute Parameter最多可有15個。當Vendor Model Server收到Attribute Set消息后,必須向Vendor Model Client回復Attribute Status。如Vendor Model Client在下發該命令之后未收到Vendor Model Server返回的Attribute Status,可以再次下發該指令。

  • Vendor Message Attribute Set Unacknowledged
    該消息用于Vendor model Client設置Vendor Model Server的一個或多個屬性值,消息格式如下。
    字段 字節數 說明
    Opcode 3 0xD201A8
    TID 1 Transaction Identifier,每條新消息遞增
    Attribute Type 2 設置的Attribute類型
    Attribute Parameter N 設置的Attribute參數

    Attribute Type和Attribute Parameter最多可有15個。當Vendor Model Server收到Attribute Set Unacknowledged消息后,不需要向Vendor Model Client發送Attribute Status消息。

  • Vendor Message Attribute Status
    該消息用于Vendor Model Server回復Attribute Get和Attribute Set命令或上報設備狀態信息給Vendor Model Client,消息格式如下。
    字段 字節數 說明
    Opcode 3 0xD301A8
    TID 1 Transaction Identifier,每條新消息遞增
    Attribute Type 2 上報的Attribute類型
    Attribute Parameter N 上報的Attribute參數

    Vendor Model Client收到Attribute Status后,不需要回復消息給Vendor Model Server。

  • Vendor Message Attribute Indication
    該消息用于Vendor Model Server發送屬性給Vendor Model Client,消息格式如下。
    字段 字節數 說明
    Opcode 3 0xD401A8
    TID 1 Transaction Identifier,每條新消息遞增,回復控制命令的TID為下發消息的TID;設備狀態主動改變上報的TID從128到191循環。
    Attribute Type 2 上報的Attribute類型
    Attribute Parameter N 上報的Attribute參數

    Attribute Type和Attribute Parameter最多可有15個。當Vendor Model Client收到Attribute Indication消息后,必須向Vendor Model Server回復Attribute Confirmation。如Vendor Model Server在發出該命令之后未收到Vendor Model Client回復的confirmation,可以再次發送該指令。

  • Vendor Message Attribute Confirmation
    該消息用于Vendor Model Client回復給Vendor Model Server,用于表示已收到Vendor Model Server發出的Indication,消息格式如下。
    字段 字節數 說明
    Opcode 3 0xD501A8
    TID 1 Transaction Identifier,收到的Indication消息的TID

    Vendor Model Server收到Attribute Confirmation后,不需要回復消息給Vendor Model Client。

  • Vendor Message Attribute Indication To TmallGenie
    該消息用于天貓精靈生態項目Vendor Model Server發送屬性給Vendor Model Client,該消息由天貓精靈音箱直接處理,消息格式如下。
    字段 字節數 說明
    Opcode 3 0xDE01A8
    TID 1 Transaction Identifier,每條新消息遞增
    Attribute Type 2 上報的Attribute類型
    Attribute Parameter N 上報的Attribute參數

    Attribute Type和Attribute Parameter最多可有15個。當Vendor Model Client收到Attribute Indication消息后,必須向Vendor Model Server回復Attribute Confirmation。如Vendor Model Server在發出該命令之后未收到Vendor Model Client回復的Confirmation,可以再次發送該指令。

  • Vendor Message Attribute Confirmation From TmallGenie
    該消息用于天貓精靈生態項目Vendor Model Client回復給Vendor Model Server,用于表示天貓精靈音箱已收到Vendor Model Server發出的Indication,消息格式如下。
    字段 字節數 說明
    Opcode 3 0xDF01A8
    TID 1 Transaction Identifier,每條新消息遞增
    Attribute Type 2 設置的Attribute類型
    Attribute Parameter N 設置的Attribute參數

    Attribute Type和Attribute Parameter的個數從0到15。Vendor Model Server收到Attribute Confirmation后,不需要回復消息給Vendor Model Client。

說明 TID:對于TID相同的消息,需按照協議回復對應的消息,但應用層是否處理則由產品自身特性決定。

Vendor Model透傳消息結構

Vendor message里的數據都使用小端優先方式傳輸。
  • Vendor Message Transparent Message
    該消息用于Mesh設備與天貓精靈音箱與天貓精靈App之間透傳數據,Payload數據格式由各廠家自己實現。
    字段 字節數 說明
    Opcode 3 0xCF01A8
    TID 1 Transaction Identifier,每條新消息遞增,回復控制命令的TID為下發消息的TID;設備狀態主動改變上報的TID從0到255循環。
    Payload N 由廠商自定義
  • Vendor Message Transparent Indication
    該消息用于天貓精靈生態項目中Vendor Model Server發送屬性給Vendor Model Client,消息格式如下。
    字段 字節數 說明
    Opcode 3 0xCE01A8
    TID 1 Transaction Identifier,每條新消息遞增,回復控制命令的TID為下發消息的TID;設備狀態主動改變上報的TID從128到191循環。
    Payload N 由廠商自定義
  • Vendor Message Transparent ACK
    該消息用于天貓精靈生態項目中Vendor Model Client回復給Vendor Model Server,用于表示已收到Vendor Model Server發出的Transparent Indication,消息格式如下。
    字段 字節數 說明
    Opcode 3 0xCD01A8
    TID 1 Transaction Identifier,收到的Indication消息的TID。
說明 TID:對于TID相同的消息,需按照協議回復對應的消息,但應用層是否處理則由產品自身特性決定。

Vendor Message 示例數據

  • Vendor Model Client設置目標溫度

    本示例為Vendor Model Client設置目標溫度為22攝氏度。

    • Vendor Model Client下發設置目標溫度的Attribute Set命令。
      0xD1 0xA8 0x01 0x01 0x0C 0x01 0x4B 0x73
      Opcode TID Attribute Type Attribute Value
      0xD101A8 01 目標溫度(0x010C) 目標溫度值:22攝氏度(0x734B = 295.15K)
    • Vendor Model Server設置目標溫度成功時返回的Attribute Status如下。
      0xD3 0xA8 0x01 0x01 0x0C 0x01 0x4B 0x73
      Opcode TID Attribute Type Attribute Value
      0xD301A8 01 目標溫度(0x010C) 目標溫度值:22攝氏度(0x734B = 295.15K)
    • Vendor Model Server設置目標溫度失敗時返回的Attribute Status如下。
      0xD3 0xA8 0x01 0x01 0x00 0x00 0x0C 0x01 0x80
      Opcode TID Error Code Type Attribute Type Error Code
      0xD301A8 01 0x0000 目標溫度(0x010C) 狀態碼:設備未準備好(0x80)
  • Vendor Model Client讀取數據

    本示例為Vendor Model Client讀取前后位置,當前溫度,當前濕度。

    • Vendor Model Client發送Attribute Get讀取前后位置、當前溫度、當前濕度屬性的值如下。
      0xD0 0xA8 0x01 0x01 0x10 0x01 0x0D 0x01 0x0F 0x01
      Opcode TID Attribute Type Attribute Type Attribute Type
      0xD001A8 01 前后位置(0x0110) 當前溫度(0x010D) 當前濕度(0x010F)
    • Vendor Model Server讀取三個屬性成功時返回的Attribute Status如下。
      D3 A8 01 01 10 01 32 0D 01 4B 73 0F 01 2D 00
      Opcode TID Attribute Type Attribute Value Attribute Type Attribute Value Attribute Type Attribute Value
      0xD301A8 01 前后位置(0x0110) 前后位置:50(0x32) 當前溫度(0x010D) 當前溫度:22攝氏度(0x734B=295.15K) 當前濕度(0x010F) 當前濕度:45%(0x002D)
    • Vendor Model Server讀取溫度失敗時返回的Attribute Status如下。
      D3 A8 01 01 10 01 32 00 00 0D 01 81 0F 01 2D 00
      Opcode TID Attribute Type Attr. Value Error Code Type Attribute Type Error Code Attribute Type Attribute Value
      0xD301A8 01 前后位置 前后位置:50(0x32) 0x0000 當前溫度(0x010D) 錯誤碼:不支持的屬性(0x81) 當前濕度 當前濕度值:45%(0x002D)
  • Vendor Model Server上報溫度

    本示例為Vendor Model Server發送溫度給Vendor Model Client。

    • Vendor Model Server發送Attribute Indication上報溫度如下。
      0xD4 0xA8 0x01 0x80 0x0D 0x01 0x4B 0x73
      Opcode TID Attribute Type Attribute Value
      0xD401A8 80 當前溫度(0x010D) 當前溫度值:22攝氏度(0x734B = 295.15K)
    • Vendor Model Client收到Attribute Indication后發送Confirmation如下。
      0xD5 0xA8 0x01 0x80
      Opcode TID
      0xD501A8 80
  • Vendor Model Server上報漏水故障

    本示例為Vendor Model Server上報漏水故障給Vendor Model Client。

    • Vendor Model Server發送Attribute Indication上報漏水故障如下。
      0xD4 0xA8 0x01 0x80 0x09 0xF0 0x00 0x00 0x00 0xAA
      Opcode TID Attribute Type Attribute Value Error Code Type Error Code Value
      0xD401A8 80 事件 (0xF009) 故障事件(0x00) 錯誤碼屬性(0x0000) 錯誤碼:漏水故障(0xAA)
    • Vendor Model Client收到Attribute Indication后發送Confirmation如下。
      0xD5 0xA8 0x01 0x80
      Opcode TID
      0xD501A8 80