【问题标题】:How to scan for bluetooth LE devices via dbus API?如何通过 dbus API 扫描蓝牙 LE 设备?
【发布时间】:2015-02-02 13:42:50
【问题描述】:

我正在尝试使用 bluez DBus API 扫描蓝牙 LE 设备。我已经使用

安装了 bluez-5.25
--enable-experimental 

配置选项。我可以在构建中看到已编译支持。 像 HeartBeat、ThermoMeter 等接口出现在 DBus 而不是

org.bluez.ProximityMonitor1 

界面。据我了解,对于带有距离信息的蓝牙 LE 设备的永久扫描,需要此接口。但我刚开始处理 bluez 所以我不确定。

DBus API 中是否提供了所有必要的东西?永久扫描 LE 设备需要什么?

【问题讨论】:

    标签: ubuntu bluetooth-lowenergy dbus bluez


    【解决方案1】:

    您需要注册 org.bluez.Device1 代理对象的 DBUS 创建。然后可以使用 org.bluez.Adapter1 接口来启动发现。这将扫描 Classic 和 LE 设备。当检测到设备时,将创建一个 Device1 对象并调用您注册的回调。

    【讨论】:

    • 我现在就是这样做的。看来我需要主动扫描才能看到设备。被动扫描不会发出 dbus 消息。我正在尝试跟踪 LE 设备。 InterfacesAdded 仅在第一次发现时发出。如果我想知道设备是否仍在我附近,该怎么做?我认为接近可以用于此,但它不存在。不知道是 bluez 不工作还是设备不支持配置文件。
    • Proximity Monitor 配置文件与扫描不同。您需要先进行扫描,然后才能使用该配置文件(或任何配置文件)。扫描 = 发现附近的设备(以获取其 BT 地址和服务)。 Proximity Monitor = 发现后,使用该服务(如果远程设备支持)来读取 rssi 值并可选地根据接近度发出警报。
    • 我不是很清楚。我扫描了设备,然后检查了每个找到的设备。我本来希望找到一个提供 ProximityMonitor 接口的设备。但我在任何地方都没有看到。我用--enable-experimental 编译了bluez,并用-E 启动了守护进程。但是我不确定是否只有当它宣布接口并且我的信标不支持它时才能看到接口。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多