BLE 通信与协议¶
概述¶
OvApp 使用蓝牙低功耗(BLE)与 Omnivoltaic 设备(如充电站、电池系统、车辆和嵌入式键盘)通信。BLE 提供低功耗、短距离、可靠的通信,支持在线和离线操作。
本文档介绍 BLE 架构、连接流程、数据结构、安全模型和支持的操作。
支持的角色¶
BLE 功能主要通过 BLE 设备管理器角色访问,其他操作角色具有有限访问权限。
| 角色 | BLE 访问级别 |
|---|---|
| BLE 设备管理器 | 完整配置、诊断和控制 |
| 服务员 | 操作读/写访问 |
| 骑手 | 只读和有限命令 |
| 键盘 | 嵌入式 BLE 交互 |
BLE 架构¶
OvApp 遵循中央–外围 BLE 模型:
- 中央设备: 运行 OvApp 的移动设备
- 外围设备: Omnivoltaic 硬件设备
OvApp (Central)
↓ Scan
BLE Device (Peripheral)
↓ Advertise
Service Discovery
↓
Characteristic Read / Write / Notify
设备发现与配对¶
设备发现¶
- OvApp 扫描广播 Omnivoltaic 特定 UUID 的附近设备
-
设备按以下条件筛选:
-
设备类型
- 信号强度(RSSI)
- 广播负载
配对与绑定¶
- 首次连接需要安全配对
-
支持的方法:
-
密码或 PIN 码配对
- 预共享密钥(PSK)
- 配置码
!!! note 配对信息安全存储以允许受信任的重新连接。
GATT 服务与特征¶
OvApp 使用 GATT(通用属性规范)服务与设备通信。
核心服务¶
| 服务 | 描述 |
|---|---|
| 设备信息服务 | 制造商、固件、型号 |
| 状态服务 | 电池、健康、连接状态 |
| 命令服务 | 设备控制和配置 |
| 数据服务 | 遥测和测量 |
| 诊断服务 | 错误、日志、故障码 |
数据负载结构¶
BLE 消息遵循结构化负载格式:
{
"att": {},
"cmd": {},
"sts": {},
"dta": {},
"dia": {}
}
| 部分 | 描述 |
|---|---|
att |
设备属性 |
cmd |
OvApp 发出的命令 |
sts |
当前设备状态 |
dta |
遥测和传感器数据 |
dia |
诊断和故障报告 |
通信操作¶
读取操作¶
- 检索设备属性
- 获取当前状态
- 查询配置值
写入操作¶
- 发送控制命令
- 更新设备设置
通知/指示¶
- 实时遥测更新
- 状态变化
- 故障和告警通知
连接生命周期¶
- 扫描 BLE 设备
- 连接到所选设备
- 发现 GATT 服务和特征
- 身份验证(如需要)
- 数据交换
- 订阅通知
- 正常断开连接
安全与授权¶
BLE 通信安全采用:
- 加密 BLE 连接
- 基于角色的命令授权
- 设备白名单
- 基于会话的身份验证令牌
!!! warning 敏感命令仅限授权角色使用。
错误处理与恢复¶
OvApp 实现了稳健的错误处理,包括:
- 自动重连尝试
- 超时处理
- 命令重试逻辑
- 离线后备机制
常见错误¶
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 设备不可见 | BLE 已禁用 | 启用蓝牙 |
| 连接超时 | 设备超出范围 | 移近设备 |
| 身份验证失败 | 凭据无效 | 重新配对设备 |
| 命令被拒绝 | 角色权限不足 | 验证权限 |
性能注意事项¶
- 优化的 BLE 负载大小
- 受控的通知频率
- 省电的扫描策略
- 自适应重连间隔