gpt4 book ai didi

xcode - Mac 上的蓝牙 RSSI/查询扫描 - 无需连接即可检测到 iPhone 的接近度?

转载 作者:行者123 更新时间:2023-12-03 16:09:24 25 4
gpt4 key购买 nike

我必须经常离开电脑,并且当我的 iPhone 距离 iMac 足够近/足够远(在它旁边 vs. 2-3 米远/计算机的另一侧)时,我想触发一些命令运行墙)。几分钟的延迟就可以了。

<小时/>

部分解决方案:邻近

我已经下载了reduxcomputing-proximity它可以工作,但只有当设备进入/超出蓝牙范围时才会触发,但我想要的范围要小得多。

(邻近轮询 [IOBluetoothDevice -remoteNameRequest] 以查看设备是否在蓝牙范围内。)

增强:原始RSSI

我用过[IOBluetoothDevice -rawRSSI]当我连接到 iPhone 时获取 RSSI(断开连接时只会返回 +127),但为了节省 iPhone 的电池生命周期我宁愿避免建立完整的蓝牙连接。

我认为保持连接会比每隔几分钟轮询一次会消耗更多的电池生命周期,这种想法是否正确?

我在这里重写了 proximityisInRange 方法,为我提供了一个可行的解决方案,与之前的 remoteNameRequest 相比,该解决方案可能相对耗电: 方法:

- (BOOL)isInRange {
BluetoothHCIRSSIValue RSSI = 127; /* Valid Range: -127 to +20 */
if (device) {
if (![device isConnected]) {
[device openConnection];
}
if ([device isConnected]) {
RSSI = [device rawRSSI];
[device closeConnection];
}
}
return (RSSI >= -60 && RSSI <= 20);
}

(Proximity 使用同步调用 - 如果我适合我的需要,我会将其编辑为异步,但现在这并不重要。)

<小时/>

Linux 下:l2ping - 查询扫描?

This SO post引用文献在“查询扫描”期间获取 RSSI,这听起来像我想要的,但它讨论了使用 Linux Bluez 库,而我在 Mac 上 - 如果可能的话,我宁愿在不偏离太远的情况下完成它! (我考虑过使用具有 USB 直通功能的虚拟机来连接第二个蓝牙设备......但更简单的解决方案会更好!)

我看到有一个 IOBluetoothDeviceInquiry 类,但我不确定这对我是否有用。我不想为了这个简单的问题而学习蓝牙协议(protocol)!

<小时/>

命令

出于兴趣,并且与解决方案没有特别相关,这里是我当前触发的 Apple 脚本

范围内:

tell application "Skype"
send command "SET USERSTATUS ONLINE" script name "X"
do shell script "afplay '/System/Library/Sounds/Blow.aiff'"
end tell

超出范围:

tell application "Skype"
send command "SET USERSTATUS AWAY" script name "X"
do shell script "afplay '/System/Library/Sounds/Basso.aiff'"
end tell

尽管这些可能会变得更长!

最佳答案

您说得对,建立连接会消耗更多能量。但是,我不知道 mac OS 上是否有 API 可以让您从查询扫描数据包访问 RSSI。您可以使用 Mac OS PacketLogger 从 BT 适配器访问原始数据包。看这篇文章Bluetooth sniffer - preferably mac osx

您可以以编程方式每隔几分钟将设备置于发现状态,使用数据包记录器捕获查询扫描数据包,并解析出 RSSI。您可以使用 WireShark 来帮助您了解如何解码数据包并查找 RSSI。

最简单的选择可能是定期创建连接,测量 RSSI,然后断开连接。

关于xcode - Mac 上的蓝牙 RSSI/查询扫描 - 无需连接即可检测到 iPhone 的接近度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7998335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com