Bluetooth
本页介绍 MikroTik RouterOS 的 Bluetooth IoT 功能,涵盖 Bluetooth 信道结构、广播数据包格式,以及通过
/iot/bluetooth子菜单进行的配置。文中解释了 PDU 类型、天线选择,以及用于 Bluetooth 芯片管理的设备命名,并说明了 iot 软件包或 USB-Bluetooth 适配器的要求。
Bluetooth
本节介绍基于 Bluetooth 的 IoT 示例。可用于配置 Bluetooth 标签追踪,并将采集到的数据与 MQTT 和 ThingsBoard 集成。
Bluetooth 是一种短距离无线技术,允许在特定的 Bluetooth 信道上广播数据。
共有 40 个唯一的频段(信道),每个频段间隔 2 MHz。信道 37、38 和 39 用于主广播,信道 0-36 用于数据传输。
在广播过程中,会广播 BLE 广播数据包。该数据包包含 Preamble、Access Address、PDU 和 CRC 字段。
Preamble 和 Access Address 字段帮助接收方检测帧。CRC 字段用于检查错误。PDU 由 PDU Header 和 PDU Payload 组成。PDU 定义了数据包本身。
PDU Header 包含有关 PDU 类型的信息。根据类型的不同,负载字段可能有所差异。
例如,当 PDU 类型为 ADV_NOCONN_IND 时 → PDU Payload 由 "AdvA"(包含广播者地址信息的字段)和 "AdvData"(包含数据信息的字段)字段组成:
1 octet = 1 byte = 8 bits
| 名称 | 长度 |
|---|---|
| Preamble | 1 octet |
| Access-Address | 4 octets |
| PDU | PDU Header = 2 octetsPDU Payload = AdvA (6 octets)+AdvData (0...31 octets) |
| CRC | 3 octets |
PDU 类型有多种:
- ADV_IND(负载由 AdvA [6octets] + AdvData [0-31 octets] 组成,用于可连接、可扫描的非定向广播)。
- ADV_NOCONN_IND(负载由 AdvA [6octets] + AdvData [0-31 octets] 组成,用于不可连接、不可扫描的非定向广播)。
- ADV_SCAN_IND(负载由 AdvA [6octets] + AdvData [0-31 octets] 组成,用于可扫描的非定向广播)。
- SCAN_REQ(负载由 ScanA [6octets] + AdvA [6octets] 组成,其中 ScanA 字段包含扫描器地址,AdvA 包含广播者地址,用于请求 SCAN_RSP 响应)。
- SCAN_RSP(负载由 AdvA [6octets] + ScanRspData [0-31 octets] 组成,其中 ScanRspData 可以包含来自广播者主机的任意数据,用于响应 SCAN_REQ 请求)。
- ADV_DIRECT_IND(负载由 AdvA [6octets] + TargetA [6octets] 组成,其中 TargetA 是 PDU 所指向的设备地址字段,用于可连接的定向广播)。
- 等等。
你可以在此处(Bluetooth 规范)找到有关数据包结构的更多信息。
RouterOS 中 Bluetooth 接口的主要应用是监控由其他设备广播的 Bluetooth 广播数据包(scanner 功能,例如 Bluetooth 标签),或广播广告数据包(advertiser 功能)。
配置
子菜单: /iot/bluetooth
信息
对于带有内置 Bluetooth 芯片的设备(如 KNOT 或 KNOT Embedded LTE),需要 iot 软件包。
如果你的设备是 ARM、ARM64 架构且带有 USB 插槽,则 iot-bt-extra 软件包可通过 USB-Bluetooth 适配器启用 Bluetooth 功能。并非所有 Bluetooth 适配器都经过测试。适配器必须支持 LE 4.0+。目前尚无 "peripheral" 列表。
Iot 软件包可用于 RouterOS 6.48.3 版本。Iot-bt-extra 软件包可用于 RouterOS 7.18。你可以从我们的下载页面获取它们 - 位于 "Extra packages" 下。
设备
在此菜单中,你可以查看和设置常规的 Bluetooth 芯片参数:
/iot/bluetooth/print
Columns: NAME, PUBLIC-ADDRESS, RANDOM-STATIC-ADDRESS, ANTENNA
# NAM PUBLIC-ADDRESS RANDOM-STATIC-ADD ANTENNA
0 bt1 00:00:00:00:00:00 F4:4E:E8:04:77:3A internal
/iot/bluetooth/set
note: Public address 是 IEEE 注册的永久地址。此地址无法更改。在上面的 "print" 示例中,该设备未分配 public address(所有 octet 均设置为 0)。
可配置的设置如下所示:
| 属性 | 描述 |
|---|---|
| antenna (string; Default: internal) | 选择使用内部还是外部 Bluetooth 天线 |
| name (string; Default: ) | Bluetooth 芯片/接口的描述性名称 |
| random-static-address (MAC address; Default: ) | Bluetooth 芯片的用户可配置地址 |
你可以使用以下命令监控芯片统计信息:
/iot/bluetooth/print stats
Columns: NAME, RX-BYTES, TX-BYTES, RX-ERRORS, TX-ERRORS, RX-EVT, TX-CMD, RX-ACL, TX-ACL
# NAM RX-BYTE TX- R T RX-EV TX R T
0 bt1 1857835 235 0 0 46677 45 0 0
广播者
在此菜单中,可以将 Bluetooth 芯片设置为广播广告数据包。你可以使用以下命令查看和设置广播者设置:
/iot/bluetooth/advertisers/print
Flags: X - DISABLED
Columns: DEVICE, MIN-INTERVAL, MAX-INTERVAL, OWN-ADDRESS-TYPE, CHANNEL-MAP, AD-SIZE
# DEVICE MIN-INTERVAL MAX-INTERVAL OWN-ADDRESS-TYPE CHANNEL-MAP AD-SIZE
0 X bt1 1280ms 2560ms random-static 37 0
38
39
/iot/bluetooth/advertisers/set
可配置的设置如下所示:
| 属性 | 描述 |
|---|---|
| ad-structures (string; Default: ) | 为广告数据包选择预配置的结构。有关更多信息,请参阅 "AD structures" 部分。 |
| channel-map (37 | 38 | 39; Default: 37, 38, 39) | 用于广播的信道。 |
| disabled (yes | no; Default: yes) | 用于禁用或启用 Bluetooth 芯片广播广告数据包的选项。 |
| max-interval (integer:20..10240; Default: 2560 ms) | 广播广告数据包的最大间隔。 |
| min-interval (integer:20..10240; Default: 1280 ms) | 广播广告数据包的最小间隔。 |
| own-address-type (public | random-static | rpa-fallback-to-public | rpa-fallback-to-random; Default: random-static) | 将用于广告数据包负载中的 MAC 地址:public → 使用 IEEE 注册的永久地址。random-static → 使用用户可配置的地址(将在下次电源循环时更改)。rpa-fallback-to-public → 使用可解析随机私有地址(RPA),只有当接收方拥有我们的身份解析密钥(IRK)时才能解析。如果无法生成 RPA,则改用 public address。rpa-fallback-to-random → 与 "rpa-fallback-to-public" 相同,但如果无法生成 RPA,则改用 random-static 地址。 |
| phy (1M | 2M | CODED; default: 1M) | 设置设备在广播期间使用的 "physical layer":CODED → 最低速率 125 kbps = 更长距离;1M → 标准速率 1 Mbps = 平均距离;2M → 最高速率 2 Mbps = 短距离;重要: CODED 仅受 KNOT Embedded LTE 支持。 |
| legacy (yes | no) | 设置广播类型 → extended 或 legacy。使用 legacy=no 时,AD 结构长度扩展到最多 191 字节。使用 legacy=yes 时,AD 结构长度限制为 31 字节。Legacy 广播仅使用 "primary" Bluetooth 信道来广播负载。Extended 广播同时使用 "primary" 和 "secondary" 信道。 |
note: 广告数据包将在每个 min-interval <= X <= max-interval 毫秒之间广播。
AD structures
本节允许你定义将由 Bluetooth 芯片广播的广告数据包的负载。
目前仅支持 4 种类型:0x08 "Shortened Local Name";0x09 "Complete Local Name";0xFF "Manufacturer Specific Data";"Service Data"
你可以使用以下命令查看和设置 "AD structures" 设置:
/iot/bluetooth/advertisers/ad-structures/print
Columns: NAME, TYPE, DATA
# NAME TYPE DATA
0 test short-local-name TEST
/iot/bluetooth/advertisers/ad-structures/set
可配置的属性如下所示:
| 属性 | 描述 |
|---|---|
| data (string; Default: ) | 定义广告数据包负载的 AdvData 部分 |
| name(string; Default: ) | AD 结构的描述性名称 |
| type (complete-local-name | manufacturer-data | short-local-name | service-data; Default: ) | 用于设置 AD 结构类型的选项:0x08 "Shortened Local Name"("text" 格式)0x09 "Complete Local Name"("text" 格式)0xFF "Manufacturer Specific Data"("hex" 格式)0x20 "Service Data 32-bit"("hex" 格式) |
例如,如果选择 "Shortened Local Name" 类型,并将 "data" 字段配置为 "TEST" → 则负载的 AdvData 部分将如下所示:
05 08 54 45 53 54 (hexadecimal format)
其中第一个 octet(05)表示后续的字节数(5 字节),第二个 octet(08)表示类型(Shortened Local Name)。第 3、4、5 和 6(等)个 octet 是 "data" [54 (hex)=T (ASCII), 45 (hex)=E (ASCII), 53 (hex)=S (ASCII), 54 (hex)=T (ASCII)]。
这同样适用于 "Complete Local Name" 类型。仅 AdvData 负载中的第二个 octet 不同,将设置为 09。
对于 "Manufacturer Specific Data" 类型,你需要以十六进制格式配置 "data" 字段。此类型的第二个 octet 将设置为 FF。
连接
信息
从 v7.12beta9 开始可用。 目前仅支持
central角色。不支持Peripheral device角色、pairing和encryption选项。
可用部分包括:
| 部分 | 描述 |
|---|---|
| async-data | 用于查看订阅的数据。 |
| characteristics | 用于查看设备所有支持的 characteristics。 |
| connect | 用于连接到处于 connactable 状态的设备。 |
| disconnect | 用于断开与设备的连接。 |
| read | 用于读取 characteristics 值。 |
| write | 用于写入 characteristics 值。 |
| subscribe | 用于订阅某个 characteristic 值。 |
| unsubscribe | 用于取消订阅某个 characteristic 值。 |
要连接到处于 connectable 状态的 Bluetooth 设备,请使用以下命令(其中 pdev 是设备地址):
/iot/bluetooth/connections/connect pdev=DC:2C:6E:0F:C0:3D
信息
要连接到 TG-BT5-IN/OUT 标签,请确保通过将磁铁靠近磁性开关,使其进入
connectable状态。 查看已建立的连接:
/iot/bluetooth/connections/print
查看设备 characteristics:
/iot/bluetooth/connections/characteristics/print
Columns: PDEV, NAME, UUID
# PDEV NAME UUID
0 DC:2C:6E:0F:C0:3D Service Changed 2a05
1 DC:2C:6E:0F:C0:3D Database Hash 2b2a
2 DC:2C:6E:0F:C0:3D Client Supported Features 2b29
3 DC:2C:6E:0F:C0:3D Device Name 2a00
4 DC:2C:6E:0F:C0:3D Appearance 2a01
...
...
...
要读取特定的 characteristic,请指定 pdev 地址和 uuid:
/iot/bluetooth/connections/read pdev=DC:2C:6E:0F:C0:3D uuid=2a00
扫描器
在此菜单中,你可以设置 Bluetooth 芯片的扫描器设置。禁用时,设备将无法再接收广播报告。启用时,你可以在 "Advertising reports" 选项卡中监控广播报告(将在本指南后面说明)。你可以使用以下命令查看和设置扫描器设置:
/iot/bluetooth/scanners/print
Flags: X - DISABLED
Columns: DEVICE, TYPE, INTERVAL, WINDOW, OWN-ADDRESS-TYPE, FILTER-POLICY, FILTER-DUPL
ICATES
# DEVICE TYPE INTERVAL WINDOW OWN-ADDRESS-TYPE FILTER-POLICY FIL
0 X bt1 passive 10ms 10ms random-static default off
/iot/bluetooth/scanners/set
可配置的属性如下所示:
| 属性 | 描述 |
|---|---|
| disabled (yes | no; Default: no) | 用于禁用或启用 Bluetooth 芯片接收广播报告的选项。 |
| filter-duplicates (keep-newest | keep-oldest | keep-unique | off; Default: off) | 用于丢弃来自同一广播者的重复广告的选项:keep-newest → 保留最新的报告(丢弃最旧的)。每个单一 AdvA 仅保留最新的 PDU。keep-oldest → 保留最旧的报告(丢弃最新的)。每个单一 AdvA 仅保留最旧的 PDU。此类 PDU 过滤发生在控制器层面,因此是最高效(在能耗/带宽方面)的重复过滤方法。keep-unique → 仅显示具有唯一负载的广告。也就是说,如果发现 1 个或更多相同的负载(AdvData),则仅显示第一个负载,而 "克隆" 将被丢弃/忽略。off → 不丢弃重复项。所有具有相同 AdvA 的 PDU 都将被保留。重要: 重复的广告报告是指从同一设备地址发送的广告报告。实际数据(负载的 "AdvData" 部分)可能会变化/不同,在判断重复广告报告时并不被视为重要。也就是说,例如,如果 Bluetooth 接口从同一标签接收到 10 个负载(一个接一个的负载,间隔 1 秒):如果使用 "keep-oldest" 设置 → Bluetooth 接口将仅显示从该标签接收到的第一个负载(后续 9 个负载将被过滤掉)。如果使用 "keep-newest" 设置 → Bluetooth 接口将仅显示从该标签接收到的最后一个负载(每个后续负载都将重写前一个)。 |
| filter-policy (default | whitelist | no; Default: default) | 用于设置过滤策略(控制器级广告过滤)的选项:default → 启用此策略时,扫描器将仅接受 ADV_IND、ADV_NOCONN_IND、ADV_SCAN_IND、SCAN_RSP 和 ADV_DIRECT_IND(其中 TargetA 是扫描器自身的 Bluetooth 地址)PDU 类型。whitelist → 启用此策略时,扫描器将仅接受由地址配置在 "Whitelist" 部分中的广播者广播的 ADV_IND、ADV_NOCONN_IND、ADV_SCAN_IND、SCAN_RSP PDU 类型,以及 ADV_DIRECT_IND 类型 PDU(其中 TargetA 是扫描器自身的 Bluetooth 地址)。 |
| interval (integer:3..10240;** Default: 10 ms) | 扫描器开始扫描下一个广告信道之前的时间。 |
| own-address-type (public | random-static | rpa-fallback-to-public | rpa-fallback-to-random; Default: random-static) | 扫描请求中使用的地址类型(如果使用主动扫描类型):public → 使用 IEEE 注册的永久地址。random-static → 使用用户可配置的地址(将在下次电源循环时更改)。rpa-fallback-to-public → 使用可解析随机私有地址(RPA),只有使用我们的身份解析密钥(IRK)才能解析。如果无法生成 RPA,则改用 public address。rpa-fallback-to-random → 与 "rpa-fallback-to-public" 相同,但如果无法生成 RPA,则改用 random-static 地址。 |
| type (active | passive; Default: passive) | 定义扫描器的类型:active → 如果收到可扫描的广告,扫描器可以发送扫描请求。扫描器可以发送 SCAN_REQ 以获取 SCAN_RSP 响应。passive → 扫描器仅监听广告,不发送任何数据(例如扫描请求)。 |
| window (integer:3..10240; Default: 10 ms) | 扫描器扫描单个广告信道所花费的时间。 |
| phy (1M | 2M | CODED; default: 1M) | 设置设备在扫描期间使用的 "physical layer":CODED → 最低速率 125 kbps = 更长距离;1M → 标准速率 1 Mbps = 平均距离;2M → 最高速率 2 Mbps = 短距离;重要: CODED 仅受 KNOT Embedded LTE 支持。 |
例如,如果扫描器间隔设置为 20ms,这意味着只有在 20ms 之后,设备才会开始扫描队列中的下一个信道。如果扫描器窗口设置为 10ms,这意味着设备仅在该 10ms 窗口内扫描每个信道。这意味着它将扫描信道 37 持续 10ms(窗口时间),并在再过 10ms 后开始扫描下一个信道(20ms[interval]-10ms[window])。扫描信道 38 将耗时 10ms,再过 10ms 后,设备将开始扫描信道 39。
扫描器能够同时捕获 "extended" 和 "legacy" 两种广播类型。
广播报告
在本节中,可以监控 Bluetooth 广播报告(来自附近的广播者)。列表限制为 1024 个条目(如果列表已满 1024 个条目,则每收到一个新负载就将覆盖 "最旧" 的一个)。你可以使用以下命令监控广播报告:
/iot/bluetooth/scanners/advertisements/print
Columns: DEVICE, PDU-TYPE, TIME, ADDRESS-TYPE, ADDRESS, RSSI
# DEV PDU-TYPE TIME ADDRES ADDRESS RSSI
0 bt1 adv-noconn-ind 2021-07-28 09:30:56 public 2C:C8:1B:93:16:49 -24dBm
1 bt1 adv-noconn-ind 2021-07-28 09:30:56 random 0B:16:17:9E:7B:EF -60dBm
可以使用以下命令为报告设置过滤器:
/iot/bluetooth/scanners/advertisements/print where
例如,要打印由特定 Bluetooth 地址广播的报告,请使用以下命令:
/iot/bluetooth/scanners/advertisements/print where address=XX:XX:XX:XX:XX:XX
# DEVICE PDU-TYPE TIME ADD... ADDRESS RSSI LENGTH DATA
79 bt1 adv-noconn-ind 2021-07-28 09:46:38 public XX:XX:XX:XX:XX:XX -70dBm 30 02010...
80 bt1 adv-noconn-ind 2021-07-28 09:46:43 public XX:XX:XX:XX:XX:XX -67dBm 30 02010...
81 bt1 adv-noconn-ind 2021-07-28 09:46:44 public XX:XX:XX:XX:XX:XX -70dBm 28 1bff0...
82 bt1 adv-noconn-ind 2021-07-28 09:46:48 public XX:XX:XX:XX:XX:XX -75dBm 30 02010...
要仅显示 RSSI 强于 -30 dBm 的广播报告,请使用以下命令:
/iot/bluetooth/scanners/advertisements/print where rssi > -30
# DEVICE PDU-TYPE TIME ADDRESS-TYPE ADDRESS RSSI LENGTH DATA
307 bt1 adv-noconn-ind 2021-07-29 10:11:31 public 2C:C8:1B:93:16:49 -24dBm 22 15ff4f09.>
308 bt1 adv-noconn-ind 2021-07-29 10:11:31 public 2C:C8:1B:93:16:49 -26dBm 22 15ff4f09.>
可用的过滤器(你可以借助以下参数过滤广播报告列表):
| 过滤器 | 描述 |
|---|---|
| address | Bluetooth 广播者的地址 |
| address-type | 广播者的地址类型(例如 public 或 random) |
| data | 十六进制格式的广告数据(AdvData 负载) |
| device | Bluetooth 芯片/接口名称 |
| epoch | 自 Unix Epoch 以来的毫秒数 |
| filter-comment | 匹配的白名单过滤器的注释 |
| length | 广告数据长度 |
| pdu-type | 广告 PDU 类型 |
| rssi | 信号强度 |
| time | 广告数据包接收时间 |
白名单
在此选项卡中,可以配置将在 "Scanners" 部分的过滤策略中使用的白名单。换言之,它是一个用于指定将要扫描(显示在 "Advertising reports" 中)哪些 Bluetooth 地址的选项。
你可以使用以下命令查看白名单条目:
/iot/bluetooth/whitelist/print
Columns: DEVICE, ADDRESS-TYPE, ADDRESS
# DEVICE ADDRESS-TYPE ADDRESS
0 bt1 any *:*:*:*:*:*
你可以使用以下命令添加新的白名单条目:
/iot/bluetooth/whitelist/add
可配置属性
| 属性 | 描述 |
|---|---|
| address (MAC address; Default: ) | 广播者的地址 |
| address-type (any | public | random; Default:) | 广播者的地址类型 |
| comment(string; Default: ) | 白名单条目的简短描述 |
| copy-from | 用于复制条目的选项 - 有关更多信息,请查看控制台命令 |
| device (bt1; Default: ) | 选择 Bluetooth 接口/芯片名称 |
| disabled (yes | no; Default: ) | 用于禁用或启用该条目的选项 |
信息
在 7.14beta8 版本之前,只能添加 8 个白名单条目。
从 7.14beta8 版本开始,白名单不再限制为 8 个条目,且 address 字段支持星号通配符。 例如,如果你想将 MAC 地址以 "DC:2C:..." octet 开头的所有地址加入白名单,请使用通配星号字符添加一个条目:
/iot/bluetooth/whitelist/add address=DC:2C:*:*:*:*
通配星号不能用在特定 octet 之间,例如 AA:*:*:BB:*:*(这是无效条目)。
有效条目如下:
AA:BB:CC:DD:*:*AA:BB:CC:DD:EE:*AA:*:*:*:*:*
外围设备
本节显示已解码的 Eddystone TLM、Eddystone UID、iBeacon 和 MikroTik Bluetooth 负载。如果 "Peripheral Devices" 捕获到其他 beacon 类型,则不会对其进行解码。
你可以使用 print detail 命令查看已解码的列表:
/iot/bluetooth/peripheral-devices/print detail
0 address-type=public address=60:C0:BF:87:E2:1C name="60:C0:BF:87:E2:1C" persist=no
mtik-key="" rssi=-64
last-data="0201041BFFCD0960C0BF87E21C025B1F198B21AC62CDAE0045FAFEFE057D7B"
last-seen=2023-08-22 11:20:09 beacon-types=""
1 address-type=public address=DC:2C:6E:0F:C0:3D name="DC:2C:6E:0F:C0:3D" persist=no
mtik-key="" rssi=-47
last-data="0303AAFE1716AAFE00E5B2B98DE4C81C47C2B14E7500000000000000"
last-seen=2023-08-22 11:20:05 beacon-types=mikrotik,ibeacon,eddystone-uid
mtik-version=1 mtik-encrypted=no mtik-acc-x=-0.007G mtik-acc-y=-0.015G
mtik-acc-z=-0.007G mtik-temperature=23.808C mtik-battery=100%
mtik-uptime=14342160s mtik-flags=""
ibeacon-uuid="55555555-5555-5555-5555-222222222222" ibeacon-major=1280
ibeacon-minor=512 ibeacon-rssi-at-1m=-68dBm eddy-rssi-at-1m=-27dBm
eddy-namespace="b2b98de4c81c47c2b14e" eddy-instance="750000000000"
2 address-type=public address=DC:2C:6E:F6:54:7D name="DC:2C:6E:F6:54:7D" persist=no
mtik-key="" rssi=-74
last-data="0201060303AAFE1116AAFE20000B701549023532D802384F46"
last-seen=2023-08-22 11:20:13 beacon-types=eddystone-tlm eddy-version=0
eddy-battery-voltage=2.928V eddy-temperature=21.285C eddy-packet-count=37040856
eddy-uptime=3724474.2s
3 address-type=public address=DC:2C:6E:0F:C0:3E name="DC:2C:6E:0F:C0:3E" persist=no
mtik-key="" rssi=-72 last-data="15FF4F0901000214FFFF0200FDFF4F1774E00F000064"
last-seen=2023-08-22 11:20:06 beacon-types=mikrotik mtik-version=1
mtik-encrypted=no mtik-acc-x=-0.003G mtik-acc-y=0.007G mtik-acc-z=-0.011G
mtik-temperature=23.308C mtik-battery=100% mtik-uptime=1040500s mtik-flags=""
4 address-type=public address=60:C0:BF:20:9A:50 name="60:C0:BF:20:9A:50" persist=no
mtik-key="" rssi=-66
last-data="0201041BFF4160C0BF209A50FFA4CA8906E48C0377DCFDD2DF7AF02FFC6AC5"
last-seen=2023-08-22 11:20:11 beacon-types=""
你可以过滤列表,例如,根据设备的 "address"(已知标签的 MAC 地址):
/iot/bluetooth/peripheral-devices/print detail where address="DC:2C:6E:0F:C0:3E"
0 address-type=public address=DC:2C:6E:0F:C0:3E name="my_tag" persist=yes
mtik-key="" rssi=-60 last-data="15FF4F090100669DFCFF0600FCFF6117F1E50F000064"
last-seen=2023-08-22 11:43:31 beacon-types=mikrotik mtik-version=1
mtik-encrypted=no mtik-acc-x=-0.015G mtik-acc-y=0.023G mtik-acc-z=-0.015G
mtik-temperature=23.378C mtik-battery=100% mtik-uptime=1041905s mtik-flags=""
/iot/bluetooth/peripheral-devices/print value-list where address="DC:2C:6E:0F:C0:3E"
address-type: public
address: DC:2C:6E:0F:C0:3E
name: my_tag
persist: yes
mtik-key:
rssi: -71
last-data: 15FF4F0901002AC60400000004004F17D4E90F000064
last-seen: 2023-08-22 12:00:06
beacon-types: mikrotik
mtik-version: 1
mtik-encrypted: no
mtik-acc-x: 0.015G
mtik-acc-y: 0G
mtik-acc-z: 0.015G
mtik-temperature: 23.308C
mtik-battery: 100%
mtik-uptime: 1042900s
mtik-flags:
或者,例如,根据 beacon 类型过滤列表:
/iot/bluetooth/peripheral-devices/print detail where beacon-types=mikrotik
0 address-type=public address=DC:2C:6E:0F:C0:3E name="my_tag" persist=yes
mtik-key="" rssi=-69 last-data="15FF4F0901000747020002000100611778E60F000064"
last-seen=2023-08-22 11:45:46 beacon-types=mikrotik mtik-version=1
mtik-encrypted=no mtik-acc-x=0.007G mtik-acc-y=0.007G mtik-acc-z=0.003G
mtik-temperature=23.378C mtik-battery=100% mtik-uptime=1042040s mtik-flags=""
7 address-type=public address=2C:C8:1B:4B:BB:0A name="2C:C8:1B:4B:BB:0A" persist=no
mtik-key="" rssi=-44 last-data="15FF4F09010077090000FCFFFDFFD519BF9EFF00005B"
last-seen=2023-08-22 11:45:53 beacon-types=mikrotik mtik-version=1
mtik-encrypted=no mtik-acc-x=0G mtik-acc-y=-0.015G mtik-acc-z=-0.011G
mtik-temperature=25.832C mtik-battery=91% mtik-uptime=16752319s mtik-flags=""
此外,你可以设置 persist=yes,这将确保设备/标签永远保留在列表中(因为停止广播负载的设备将在一分钟后超时并从列表中移除,直到新的负载开始出现在空中):
/iot/bluetooth/peripheral-devices/set persist=yes address="DC:2C:6E:0F:C0:3E"
你还可以使用以下命令为设备设置名称,以便更轻松地在列表中找到它:
/iot/bluetooth/peripheral-devices/set name="my_tag" address="DC:2C:6E:0F:C0:3E"
Decode-ad
在此菜单中,你可以解码静态的 MikroTik、Eddystone TLM、Eddystone UID 和 iBeacon 负载。
要解码某个负载,只需将其输入到 "data" 字段:
/iot/bluetooth/decode-ad data=0201060303AAFE1116AAFE20000B6E158402353AF20238576B
type: eddystone-tlm
version: 0
battery-voltage: 2.926V
temperature: 21.515C
packet-count: 37042930
uptime: 3724682.7s
/iot/bluetooth/decode-ad data=15FF4F090100032E0100FFFF00004F17C1E80F000064
type: mikrotik
version: 1
encrypted: no
acc-x: 0.003G
acc-y: -0.003G
acc-z: 0G
temperature: 23.308C
uptime: 1042625s
flags:
battery: 100%