迅鸣物联网文档

迅鸣物联网文档


蓝牙控制板底层通信协议V2版

<center>蓝牙底层通信协议</center>

注意事项:

1、不发和发0意义不同。

一、广播数据

LEN TYPE VALUE 备注
2 0x01 0x06 蓝牙特性
3 0x03 0xF0FF 蓝牙主服务
9 0xFF 0x0101XXXXXXXXXXXXXX “0101”为厂商标识,“xx..xx”为MAC地址
10 0x08 0xXXXXXX… 广播名称,10byte

注:Mac地址为系统识别设备使用,iOS系统mac为加密地址所以不能直接用mac定位。

二、应用服务

服务ID:00000001-0000-1000-8000-00805F9B34FB
characteristicId-write:000284CF-F7E3-55B4-6C4C-9FD140100A16
characteristicId-notify:000384CF-F7E3-55B4-6C4C-9FD140100A16

三、设备控制过程

  1. 扫描通过“主服务”过滤扫描设备。
  2. 通过“广播”数据中的mac定位需要连接设备的地址(ios为加密地址,Android为设备mac地址)。
  3. 连接设备。(3s内认证设备自动断开)
  4. 发现应用服务。
  5. 开启characteristicId-notify特征监听。
  6. 接收到设备发送的通讯加密参数。
  7. 使用通讯加密参数向设备发送指令。

四、设备发送秘钥解析

当主机与设备连接成功后在开启监听characteristicId-notify的情况下会收到设备的认证参数

认证参数:0x31584d5f6c63685776363338314635434241

ASCII对照:31=字符1 58=字符X 依次类推可得结果:

1XM_lock_v6381F5CBA

1为流程ID:连接成功

XM_lock_v6 为 10个字符长度的设备名称

381F5CBA 为 8个字符长度的随机串,每次连接和断开会重置

XM_lock_v6381F5CBA 保存,用于后期交互验证【以下均称为认证串】

五、流程2-指令发送

指令集:

指令ID 响应数 功能
20 2 读配置
21 2 开锁
24 1 改密码
25 1 改名字
26 1 查状态
27 1 写27
28 1 写28
29 1 读版本
2a 1 带参数的开锁
2b 1 带参数的关锁
默认密码“00000000” 

读取锁的配置信息“20”:

第一次通知characteristicId-notify:3330xxxxxxxxxxxxxxxxxxxx

  • 33 => 字符3
  • 30 => 字符0

3330=>30 表示对20的回复 如果:xxxx….为0则密钥验证失败

第二次通知characteristicId-notify:3338xxxxxxxx

开指令21

第一次通知characteristicId-notify:转换为ASCII字符串310d120003000300 (收到开锁指令,直接发送)

  • 31 对 21 指令的回复
  • 0D12 16进制电压mv
  • 0003 16进制开锁次数
  • 0003 电池剩余电量百分比
  • 0 接收指令时的状态 [0关/1开]
  • 0x30+(钥匙开锁<<2 |锁舌触发<<1 | 锁被锁定)(图片此处未更新)

第二次通知characteristicId-notify:转换为ASCII字符串310d120003000310 (开锁成功后,由锁状态中断触发。未检测到开锁或无开锁传感器,本次不会发送) 内容同第一次。

第三次通知characteristicId-notify: (超时触发。) 内容同第一次。

对比收到的前两次回复的锁状态

  • 0->1 表示打开成功
  • 0->0 表示打开失败
  • 1->1 表示打开成功

注意: 2a 定时器开,超时时间最大值为: 0x000fffff 单位: 秒

--20220411修改: 1、更新版本号0x4040。 2、返回锁状态最后一位增加入户门控锁状态监控,值=0x30+(钥匙开锁<<2 |锁舌触发<<1 | 锁被锁定) 3、开锁返回又固定2次,改为2~3次。正常3次,未成功开锁返回2次。 --20220412修改: 1、增加电机锁锁舌关闭等待时间配置,非0按设置等待,==0则不自动关闭锁舌。 2、增加电机锁AB相交换参数,用来解决电机接口不统一导致的正反转相反问题。 3、增加电池电量及百分比计算三个参数:最大压差、最低电压、分压比。 4、失能,电机锁最小运行时间、重试次数、是否重试功能。

页面列表

ITEM_HTML