我正在设计自定义 BLE 设备协议(protocol)。我的设备将是以下设备之一 - 体重秤、血压计、健身手环。
协议(protocol) 定义了我的 Android/iOS 应用程序 (Collector) 将用于从这些设备之一收集传感器数据的收集过程。
我们可以假设 Collector 在 50% 的时间内都存在,并且正在扫描空气中的广播设备以连接并从中收集数据
我的问题是: 在考虑电池电量的情况下,使设备可连接的有效方法是什么?
我目前的做法:
设备是可连接的,如果
- (A) 它有一些用户未发送的测量值,
- (B) 用户打开它(通过踩秤、按按钮或其他方式)
如果 (B) 设备广播自身,例如每 1 秒一次,可连接到 Collector
如果 (A) 设备广播自身,例如每 5 秒一次,可以连接到 Collector
只要条件 (A)/(B) 不适用,设备就会进入休眠模式 - 不广播任何内容。
这种通过能源消耗的方法是否有效?或者是否有更好的做法来实现“设备可见性”?
附言找不到更好的资源来提问,但这个问题可以被认为是一个编程问题,因为它与固件编程有关
最佳答案
查看我的 decision tree为此。
如果您将 sleep /关闭和启动框链接在一起,代码将运行一个非常高效的无限循环,如果您打开设备或有数据要共享,它会打开设备。
开始-----
B) 用户让我兴奋了吗?
- 否:继续 A)
- 是:继续回答问题 1. 和 2。
A) 我有数据要发送吗?
- 否:如果没有“用户开启”命令并且不需要发送数据,则:继续进入休眠/关闭状态(这可能会导致启动框并开始循环再来一遍)
是:设备未被用户打开,但有数据要发送;然后:
- if connection=true --> 发送数据。
- if connection =/= true --> 启动计时器并在接下来的 2-5 分钟内以 1 或 5 秒的固定间隔开始连接循环。
当计时器=2-5 分钟或连接=true 时,连接循环结束。 当计时器用完时,进入关闭/ sleep 状态。
注意:您可能希望也可能不希望添加错误处理程序以使代码中断到 A) 以防万一。
关于android - 能源经济 : BLE device - when to make connectable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36055657/