手机不在场也不丢数:BLE 设备先落盘后同步,连接失败下次补传
一次性电池供电的监测设备采集的多是非实时数据:环境状态、睡眠记录、健康记录、资产状态、周期告警。这类数据不要求手机立即收到,但要求设备长期运行且数据最终能同步出去。设备不能长期开广播等连接,否则平均功耗上升,直接吃掉电池寿命。可行策略是:平时深度休眠,到点采集并先落盘,只在约定时间短暂开蓝牙;手机按约定时间找设备,连上后同步。核心是"数据先落地,蓝牙后同步",连接失败不丢数,下次补。

适用前提
- 一次性电池供电,目标是长时间运行。
- 数据不要求秒级实时上传。
- 手机不需要随时控制设备。
- 设备有本地存储,且双方能在上次连接时约定下次同步时间。
要求手机随时连接、实时查看或实时控制的产品不适用,蓝牙在线时间必须提高,功耗预算要重新算。同步也不该依赖人工按键:设备常放在床垫、贴片、柜内等不便接触的位置,用户不该为每次同步去操作设备。按键只保留作调试、首次绑定和售后入口。
数据交换流程
每次连接成功后双方记录下一次同步时间,然后进入下一轮:
- 休眠:关蓝牙和传感器,只留唤醒计时。
- 采集:到点唤醒,完成本轮记录。
- 保存:写入序号、时间、上传状态。
- 等待同步:到约定时间后短暂开蓝牙。
- 同步:手机提前扫描并连接,读取本轮和历史未同步数据。
- 确认:手机确认收到后,设备标记为已同步。
- 记录下一次同步时间,关蓝牙,回到休眠。
蓝牙活动被限制在第 4 到 6 步的短窗口内,其余时间不广播、不保持连接。
连接失败处理
手机可能不在附近,也可能被系统后台限制没能及时扫描到。设备端不能假设本次一定连上,所以先保存再同步:本次没连上就关蓝牙继续休眠,数据留在本地,下次连接成功时补齐。连接失败只推迟数据到达手机的时间,不造成丢失。
手机端要保存设备返回的下次同步时间并提前扫描,连上后同步所有未完成数据并回确认,避免历史记录长期滞留在设备端。
实施要点
设备侧:
- 本地数据队列,每条带序号、时间、同步状态。
- 同步确认机制,手机确认后才更新已同步状态。
- 同步时间管理,每次连接后双方更新时间。
手机侧:
- 记录下次同步时间,提前进入扫描。
- 连接后补齐所有未同步数据。
结论
用同步延迟换电池寿命,靠本地保存和确认机制保证数据最终可达。
本文由 AI 辅助生成,可能存在错误或遗漏,请以实际资料和官方文档为准。