设备蓝牙协议

可以通过蓝牙扫描发现设备,并通过蓝牙连接与盒子交互。

设备提供的 GATT 服务

1)Service: Device info(0000180a-0000-1000-8000-00805f9b34fb)

本服务主要获取设备的基本信,characteristic 特征值如下表:

UUID 说明
00002a29-0000-1000-8000-00805f9b34fb 厂商:MAGEWELL
00002a24-0000-1000-8000-00805f9b34fb 型号,例如:ULTRA STREAM HDMI
00002a25-0000-1000-8000-00805f9b34fb 设备序列号,例如:C301170101001
00002a26-0000-1000-8000-00805f9b34fb 固件版本号,例如:1.3.11


2)Service: GATT(e20a39f4-73f5-4bc4-a12f-17d1ad07a961)

本服务主要是用来跟设备交互的。如:获取设备状态、密码认证、配置Wi-Fi、打开设备AP模式、AP信息等

UUID 别名
08590f7e-db05-467e-8757-72f6faeb13d4 Buffer-0
f4be124e-4cdc-43e2-a6bb-8628e4009e6b Buffer-1
1de1bf3d-1bbe-43aa-9a30-b2bb5ce9671d Buffer-2
8d7bd67d-d0b3-4a5e-8d2b-2912af174a7d Buffer-3
3a10340a-85e3-4190-86b4-b94dc505e4f8 Buffer-4

BLE广播

BLE Name: 固定为设备序列号,为 13 位字符,以一个大写字母开头,后面是 12 个数字,例如:C301170101001,序列号校验规则为:

  1. 第一个为大写字母 A-Z;
  2. 第 5-6 位代表生产年份,限定为 17-27的数字;
  3. 第 7-8 位代表生产月份,限定为 01-12 的数字;
  4. 第 9-10 位代表生产日期,限定为 01-31 的数字。

广播数据约定

  • 广播包有两种:广播包(Advertising Data) 、 响应包(Scan Response)。
  • 广播包中包含若干个广播数据单元,广播数据单元也称为 AD Structure。
  • 广播数据单元 = 长度值Length + AD type + AD Data。
  • 长度值Length只占一个字节,并且位于广播数据单元的第一个字节。
广播包 广播数据单元  
Length AD type AD Data 总长度 说明
Advertising Data 0x05 0x04 4 bytes 6 Bytes UUID
0x16 0xFF 21 Bytes 23Bytes 厂商自定义数据
Scan Response 0x0E 0x09 13 Bytes 15Bytes Complete Local Name


1.UUID (6 Bytes)

UUID: "ad07a961-0000-1000-8000-00805f9b34fb"

可用于指定UUID扫描设备

数据长度 说明
1 byte 0x05 UUID length
1 byte 0x04 UUID flag: Incomplete List of 32-bit Service Class UUIDs
4 bytes {0x61, 0xa9, 0x07, 0xad} UUID value


2.厂商自定义数据(23 Bytes)

AD Data(21Bytes)定义如下:

数据长度 说明
1 byte 0x14 Custom data length:自定义数据长度
1 byte 0xFF custom data flag:自定义数据标志
2 bytes 0x2935 vender id:常量值
2 bytes 0x0808 product id:常量值
1 bytes 0x01 ble data layout:常量值
2 bytes 0x0001 net protocol version, 1.0:常量值
4 bytes 0x01010101 box status:设备状态掩码
4 bytes 0x00000000 box eth ip:以太网 IP 地址
4 bytes 0x00000000 box wifi ip:无线网 IP 地址


3.Complete Local Name

完整的设备名称,即上文中的BLE Name,固定为13位字符的设备序列号

设备交互

客户端通过蓝牙发现服务(GATT Service: e20a39f4-73f5-4bc4-a12f-17d1ad07a961),再通过BLE读/写特性值与设备交互

Service: GATT(e20a39f4-73f5-4bc4-a12f-17d1ad07a961):

本服务主要是用来跟设备交互的。 如:获取设备状态、密码认证、配置Wi-Fi、打开设备AP模式、AP信息等,Service Characteristic 如下表:

UUID 别名
08590f7e-db05-467e-8757-72f6faeb13d4 Buffer-0
f4be124e-4cdc-43e2-a6bb-8628e4009e6b Buffer-1
1de1bf3d-1bbe-43aa-9a30-b2bb5ce9671d Buffer-2
8d7bd67d-d0b3-4a5e-8d2b-2912af174a7d Buffer-3
3a10340a-85e3-4190-86b4-b94dc505e4f8 Buffer-4


1.获取设备状态

步骤 操作
Step 1 APP -> Box
Buffer-0: 2 Bytes = 0x5335 , 2 Bytes = Index
Step 2 Box -> APP
Buffer-4: 2 Bytes = 0x5336 , 4 Bytes = Box Status , 2 Byte = Same index

Step 1:通过写Buffer-0特征值请求设备状态。特征值封装:2 Bytes常量值(0x5335)+ 2 Bytes随机数

Step 2:通过读Buffer-4特征值获取设备状态。特征值解析:2 Bytes常量值(0x5336)+4 Bytes设备状态 + 2 Bytes随机数

注意:Step 2中的随机数必须与Step1中的随机数一致


2.密码认证

步骤 操作
Step 1 APP -> Box
Buffer-4: 2 Bytes = 0x5333 , 2 Bytes = Index
Buffer-0: 2 Bytes = 0x5333 , 16 Bytes = MD5(password)
Step 2 Box -> APP
Buffer-4: 2 Bytes = 0x5334 , 4 Bytes = retSucceed (0), errPasswd(-1) , 2 Byte = Same index

Step 1 中必须先写Buffer-4特征值,再写Buffer-0特征值


3.配置 Wi-Fi

Step 1 APP -> Box
  Buffer-0: 2 Bytes = 0x5337  2 Bytes = secuID, 0 - none, 1 - WEP, 2 - WPAPSK, 3 - WPA2PSK | 2 Bytes = Index | 2 Bytes = 0 - only ipv4, 1 - ipv4 or ipv6, 2 - only ipv6
Buffer-1: 18 Bytes = Wifi Name - 1
Buffer-2: 18 Bytes = Wifi Name - 2
Buffer-3: 18 Bytes = Wifi Passwd
Buffer-4: 2 Bytes = 0x5337 | 16 Bytes = Wifi Passwd - 2
Step 2 Box -> APP
  Buffer-0: 2 Bytes = 0x5332 | 2 Bytes = Same Index
Buffer-4: 2 Bytes = 0x5332 | 4 Bytes = retRunning(2), retSucceed (0), errPasswd(-1), errDevice(-4), errTimeout(-12), errNotFound(-14), errEmpty(-20)| 4 Bytes = WifiIP if retSucceed | 4 Bytes = Box Status | 2 Bytes = Version Major| 2 Bytes = Version Minor |

Step 1:Wi-Fi名称和密码超过18个字节时,拆分成两部分写入,写入顺序:Buffer-0 Buffer-1 Buffer-2 Buffer-3 Buffer-4

Step 2:必须先读Buffer-0特征值,读完后才能读Buffer-4特征值


4.打开设备 AP 模式

Step 1 APP -> Box
  Buffer-0: 2 Bytes = 0x5341  | 2 Bytes = Index
Step 2 Box -> APP
  Buffer-4: 2 Bytes = 0x5342 | 4 Bytes = retSucceed (0),  retRunning(2), errDevice(-4) | 2 Byte = Same index


5.AP 信息

Step 1 APP -> Box
  Buffer-0: 2 Bytes = 0x5343  | 2 Bytes = Index
Step 2 Box -> APP
  Buffer-4: 2 Bytes = 0x5344 | 2 Bytes = secuID, 0 - none, 1 - WEP, 2 - WPAPSK, 3 - WPA2PSK | 2 Byte = Same index
  Buffer-2: 2 Bytes = 0x5344 | 16 Bytes = Wi-Fi Name
  Buffer-3: 2 Bytes = 0x5344 | 16 Bytes = Wi-Fi Passwd

Step 2 中读特征值的顺序为: Buffer-4 Buffer-2 Buffer-3


6.Ping

Step 1 Box -> APP
  Buffer-1:

建立Gatt连接后,周期性读Buffer-1特征,防止Gatt连接断开。

与“”相关结果约

    找不到与“”相关的结果

    与“”相关结果约

      找不到与“”相关的结果