加速度ibeacon,例子中数据解码失败,能提供解码函数吗


const head = decodeURIComponent(data.match(/^7b\S+0d0a0d0a/)[0].replace(/(\w{2})/g, ‘%$1’));
这一句过不了,因为 data.match(/^7b\S+0d0a0d0a/) 为空

请问你使用的是4代网关来解析数据吗?看到你贴的代码是二代网关才能用的。

是的,但是V4的數據包中我們沒有發現mqtt的文件。此外,我現在使用node JS實現了ble-viewer的功能,想把數據儲存在服務器中,數據出來以後如何解碼得到加速度呢,有沒有相應的node JS源碼或者軟件呢?

如果你说的加速度ibeacon是我们的N01设备的话,可以参考这里的数据格式进行解析

是N01,我们已经实现数据下载到数据库,按照数据格式进行解析的过程中,有一些逻辑问题。能否提供示例数据对应的解析?


比如我图片中的数据,能否解释其中相应字段的含义,数据格式表感觉对不上。

这个数据似乎是BLE网关v4上传上来的,请参考这里的数据说明

  • 第一个字节03是广播类型
  • 紧随其后的6个字节是mac地址
  • 找到对应的广播包数据,你可以用mac地址来过滤,

N01并不是都广播sensor数据,你可以用广播长度(30个字节)来进行匹配

针对这个有几个疑问请您回答:

1.广播类型对比后,是否01时才是有用的广播数据,上图中03、00等都是无用数据
2.图中只连接了2个tag,紧随其后的应该不是Mac地址吧,后面虽然有相同重复的字节,FF-01,但是只有5个字节
3.广播长度来匹配是指当广播sensor数据时,该广播数据为30个字节,还是说每一条广播数据中,会有30字节是sensor数据
4.N01传感器的加速度数据是否需要公式进行换算才能得到实际值。

我没有明白,请指出具体的例子来说明

03 0B 7C A8 1D F7 A2 AA 1E FF 06 00 01 09 20 02 9A 08 D6 CE 5A EC 8F 8C 0A 33 3C A5 ED F3 B4 02 A1 FB 0C 23 EF 75 2E 
03 7D 69 75 BF 46 9B C2 1E FF 06 00 01 0F 20 02 40 40 EA E3 12 20 2E FC DB 50 F2 DB 3F AF 70 A3 FB D8 C3 74 0D 26 D8 
00 5D 45 77 6E D0 DF BF 02 01 1A 02 0A 0C 0A FF 4C 00 10 05 5F 1C CF 16 92
02 42 32 59 3C C8 48 AF 1E FF 4C 00 07 19 01 0E 20 20 F8 8F 01 00 04 8D 7B 9D 5A 50 73 59 CD 92 D9 03 86 2E C3 07 31

以上面这几行广播数据为例,00,02,03按照adv type来看,都不是 连接成功且有地址 的数据对吗?
因为这些数据是由两个传感器发出的,所以adv type往后6个字节应该不是Mac地址,因为都不相同。
02,03广播数据为39个字节,后面的30个字节是sensor数据?

以这行数据为例

  • 广播类型: 03
  • mac地址: 0B 7C A8 1D F7 A2
  • RSSI: AA
  • 广播数据: 1E FF 06 00 01 09 20 02 9A 08 D6 CE 5A EC 8F 8C 0A 33 3C A5 ED F3 B4 02 A1 FB 0C 23 EF 75 2E

广播数据最大为31个字节,是从这里的第九个字节开始算起

那么02 A1 FB即xyz轴加速度数据,真实加速度值是多少呢?

这根本不是sensor的数据,它的数据字段和之前我提供给你的广播包格式对不上。请查看sensor上的标签以确定它的mac地址

00 C6 42 55 A2 AC 12 BF 02 01 06 03 03 59 FE 17 16 59 FE AB 01 03 12 AC A2 55 42 C6 79 00 00 03 FC 40 00 04 64 00 00
00 C6 42 55 A2 AC 12 C4 02 01 06 03 03 59 FE 17 16 59 FE AB 01 03 12 AC A2 55 42 C6 79 00 00 02 FD 40 00 04 64 00 00
这个应该是sensor数据了,03 FC 40,加速度值应该是多少?
另外广播数据频率很高,但里面sensor数据很少,这正常吗?

  • x=03
  • y=0xFC=252
  • z=0x40=64

请问你指的是哪里的数据很少?如果说是网关上报的数据,它最快也就是一秒上传一次, 而N01默认一秒也就广播一次多点。