You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用iBKS 105 BLE信标:延迟调用beaconinfo.getforobserved无数据及TLM解密问题

问题分析与解决方案

针对你使用Accent Systems iBKS 105 BLE信标遇到的两个核心问题,我整理了具体的分析和解决步骤:

1. 延迟2-3天调用beaconinfo.getforobserved返回无数据

这个问题的核心原因是Eddystone-EID的轮换机制:
Eddystone-EID是动态生成的身份标识,会定期轮换(默认周期从15分钟到数小时不等,可在Google Proximity Beacon Dashboard配置)。如果观测到信标后延迟2-3天再调用API,此时原EID已经失效,系统无法将失效的EID关联到你注册的信标,因此返回无数据。

解决办法:

  • 在EID有效期内调用API:观测到信标广播后,务必在EID的轮换周期内发起beaconinfo.getforobserved请求。你可以在Google Dashboard的信标详情页查看当前配置的EID轮换周期,以此确定调用的时间窗口。
  • 离线数据预处理:如果需要离线处理观测数据,需在EID有效窗口内完成API调用,将解密后的TLM数据、附件信息与观测到的TimestampNanos、EID(或关联的信标ID)绑定存储,避免后续因EID失效无法获取数据。
  • 验证实时调用:先测试实时场景——观测到信标后立即调用API,确认能正常返回数据,排除接口参数错误、信标状态异常等其他问题。

2. EncryptedTLMData解密问题

加密TLM数据的解密依赖信标的EID加密密钥(注意:这和EID身份密钥是不同的密钥,需在Google Proximity Beacon Dashboard的信标详情页获取),具体解密流程和注意事项如下:

解密步骤:

  1. 从BLE广播数据包中提取三个核心字段:EncryptedTLMData(字节数组)、Salt(8字节数组)、IntegrityCheck(4字节数组)。
  2. 使用AES-CCM加密算法进行解密:
    • 密钥使用你在Google Dashboard中配置的EID加密密钥(通常是16字节的十六进制字符串,需转成字节数组)。
    • 附加数据(AAD)需要包含观测到的EID值(字节数组),因为加密TLM是和当前有效的EID绑定的。
  3. 解密后即可解析出TimestampNanos等原始TLM字段。

常见坑点排查:

  • 密钥混淆:不要把EID身份密钥用于TLM解密,两者是独立的,需确保使用的是专门的TLM加密密钥。
  • 数据格式错误:确保所有字段(EncryptedTLMData、Salt、密钥)都以正确的字节数组形式传入解密函数,避免字符串转字节时出现编码错误(比如Hex字符串转字节时遗漏前导零)。
  • 完整性校验失败:如果解密时提示IntegrityCheck不匹配,可能是Salt或EID值传入错误,或者数据包在传输中被篡改,需重新捕获广播数据包验证。

额外排查建议

  • 检查信标状态:在Google Proximity Beacon Dashboard确认信标处于活跃状态,未被注销或暂停。
  • 验证API参数:确保beaconinfo.getforobserved请求的observedBeacons参数中,advertisedId的type设置为EDDYSTONE_EID,id为观测到的EID字节数组的Base64编码(或Hex字符串,需匹配API要求的格式),timestampMs为观测时间的毫秒数(与信标的TimestampNanos对应)。

内容的提问来源于stack exchange,提问作者AMS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:36:33