蓝牙设备的离线数据怎么同步到云端

只有蓝牙、没有联网能力的设备,使用记录怎么读出来、存下来、同步到云端?以电动工具蓝牙管理 App 与桌面端为例,讲清通讯帧设计、分包批量回读、中断续传、本地存储、联网同步,以及手机和电脑共用协议解析的做法。

多爱普团队7 分钟阅读
蓝牙设备的离线数据怎么同步到云端
本文目录
  1. 先把通讯帧定下来
  2. 记录很多时,分包回读
  3. 先存本地,联网再同步
  4. 为什么还要做电脑端
  5. 四端怎么不让成本翻倍
  6. 适合哪些设备参考
  7. 常见问题
  8. 设备固件已经定型了,不能改协议怎么办?
  9. 读取速度能做多快?
  10. 手机读过的数据,电脑还能再读吗?
  11. 只要手机 App,不要电脑端,可以吗?

很多设备只有蓝牙模块,没有 Wi-Fi 也没有 4G:电动工具、测量仪器、医疗耗材、计数器。设备每用一次就在本地记一条,但厂家想知道设备在市场上到底怎么被使用,就得想办法把这些记录读出来、存起来、汇总到云端。

我们给一个电动工具厂商做过一套蓝牙管理系统:手机 App、Windows / macOS 桌面端、Web 管理后台和云端 API。下面按这个项目说说蓝牙设备的离线数据同步怎么设计。项目情况可以看 电动工具蓝牙管理 App 与桌面端案例。

先把通讯帧定下来

设备、手机 App、电脑端三方要读同一份数据,第一件事是定一个统一的通讯帧格式。我们和固件约定的帧结构是:帧头、长度、功能码、数据、异或校验、帧尾。

这件事看起来是固件的事,其实决定了后面所有环节的工作量。帧格式和校验方式统一了,手机端和桌面端才能共用同一套协议解析代码。帧设计的通用思路可以参考 蓝牙APP开发怎么做。

记录很多时,分包回读

一台用了很久的电动工具,可能存着大量使用记录,每条包含时间、电压、电流等数据。一次性全读出来不现实,蓝牙单次传输的数据量有限,读到一半断了还得从头来。

我们的做法是分两步:

  1. 先读总使用次数,知道一共有多少条记录
  2. 再按每包 10 条批量回读详细记录,界面显示读取进度

每包读完立刻存到本地,记下读到了第几条。中途断开后重新连接,可以从断点继续读,不用从头开始。

先存本地,联网再同步

现场网络经常不稳定,有些地方干脆没信号。所以数据的流向是:

设备 → 手机或电脑本地存储 → 联网后同步到云端

手机 App 读出来的记录先写入本地数据库,电脑端写入本地 SQLite。等设备联网后,客户端再把未同步的记录批量上传到云端 API。同步时要处理好几件事:

  • 每条记录有唯一标识,重复上传不会产生重复数据
  • 上传成功的记录要标记,避免反复上传
  • 同一台设备被手机和电脑分别读过时,云端要能合并去重

这些规则要在开发前和后台一起定好。

为什么还要做电脑端

这个项目的客户除了手机,还明确要了电脑端。原因很实际:门店和售后要批量处理很多台设备,在电脑上读取、查看、导出比手机方便得多。

电脑端我们用 Go + Wails 开发,在 Windows 和 macOS 上直接扫描、连接蓝牙设备,不需要先连手机。要注意的是,电脑的蓝牙和手机差异很大,不同电脑、不同蓝牙适配器的表现也不一样,一定要在目标系统上真机验证。

四端怎么不让成本翻倍

手机 App、桌面端、Web 后台、云端 API,听起来是四个项目。我们用 Monorepo 统一管理代码,类型定义、协议常量和工具函数共享,手机端和电脑端主要的差异只在蓝牙接入和界面。

手机端用的是 React Native + Expo,支持扫码连接、最近设备一键重连;界面做了英、俄、中三种语言,因为产品主要卖海外。框架选择的考虑可以看 React Native 与 Flutter 在 IoT APP 中怎么选。

如果产品要在多个国家发布,海外物联网 App 开发 列出了多语言、云部署和各端上架的交付范围。

适合哪些设备参考

这套做法适合几类设备:

  • 只有蓝牙、没有联网能力,但设备里存着有价值的数据
  • 需要在手机和电脑上都能读取的场景
  • 现场网络不稳定,要先离线记录再统一上传
  • 销往海外,需要多语言

如果你的设备后续计划加 4G,近场和远程两条链路怎么配合,可以参考 蓝牙+4G App开发怎么做。

常见问题

设备固件已经定型了,不能改协议怎么办?

只要能拿到现有协议文档或抓包数据,App 可以按现有协议适配。分包回读和断点续传需要设备支持按序号读取记录,如果不支持,要评估固件能否小改。

读取速度能做多快?

取决于蓝牙连接参数、单包数据量和设备处理能力。分包回读的重点不只是快,而是稳定和可续传,界面上让用户看到进度。

手机读过的数据,电脑还能再读吗?

可以。设备里的记录不会因为被读取而删除(除非你们的业务要求读后清除),云端按记录唯一标识去重即可。

只要手机 App,不要电脑端,可以吗?

可以,按实际使用场景选。可以把设备类型和使用场景 发给我们,我们按 蓝牙 App 开发服务 的方式帮你评估。

项目咨询

把项目情况发过来,先帮你理清下一步

发来设备类型、协议资料、样机状态和计划上线时间,我们会结合对应的服务和案例给出推进建议。

如果你暂时不方便填写完整信息,也可以直接前往 联系页面 获取电话、邮箱与微信方式。

提交项目需求

适用于 蓝牙设备的离线数据怎么同步到云端 场景,提交后默认进入业务咨询通道。

微信、电话、邮箱至少填写一项

点击发送即表示您同意我们的隐私政策和服务条款