搜索以编程方式获取无线接入点信息的方法

Searching for a method to get Wireless Access Point information programmatically

我一直在研究跟踪建筑物中设备位置的方法,起初我打算使用 iBeacons。然而,我被告知必须通过监控接入点并查找该设备的 MAC 地址来完成。

我似乎找不到任何通用类型的库或 API 可以连接到接入点并提供详细信息。事实上,我什至不知道从哪里开始寻找,这让事情变得更加困难。

有没有人处理过这个问题并能指出正确的方向?任何编程语言都可以接受。

我已经从头开始编写软件来执行此操作,但据我所知,没有可用的框架。

基本步骤是:

  1. 获取一些小型低成本计算机(Raspberry Pis 工作得很好)作为传感器,以混杂模式进行 WiFi 扫描,收集独特的 macs 和检测时间。在Linux上,您可以使用C或Java软件来收集这些记录。

  2. 将来自传感器的信息写入服务器,包括传感器标识符,以便您知道检测到每个设备的位置。

  3. 编写大量代码来计算数字。

你应该意识到三个大问题:

  1. 移动设备并不总是可以在 WiFi 上检测到。如果他们睡着了,或者根本没有交流,你就不会发现他们。在 iOS 上,如果设备未锁定且未主动使用 WiFi,您最好每分钟左右进行一次检测。

  2. 在 iOS 8+ 上,mac 地址在某些条件下被打乱,通常无法跟踪唯一设备。

  3. 从头开始构建上述内容需要大量工作。即使是一个基本系统,也要花几个月的时间。

我知道您被要求以这种方式而不是使用信标来构建它,但是如果您可以确保每个设备上都有一个应用程序并且可以重新审视此设计约束,那么信标确实提供了一条更简单的前进道路。

我建议您使用 iBeacons 来完成此操作。

但是:

在 IOS 8 上,当您无论如何尝试从设备获取 mac 地址时,您将获得此值:02:00:00:00:00:00。

获取设备唯一标识符的最佳方法是使用 UIDevice 中的 identifierForVendor 方法。

像这样:

UIDevice *device = [[UIDevice alloc]init]; 
NSString *uniqueIdForDevice= [NSString stringWithFormat:@"%@", [device identifierForVendor]]; 
NSLog(@"%@",uniqueIdForDevice);

这会为您提供一个对于您公司的设备唯一的 ID。

希望对您有所帮助

我不确定您的特定设计有哪些限制,但现有系统可以让您获得我认为您正在寻找的那种监控。正如 davidgyoung 所写,OS 级别存在一些技术挑战,这些挑战将出现在任何可供选择的 wi-fi 解决方案中(例如 iOS MAC 地址轮换)。除此之外,您可能会从 Cisco 等 Wi-fi 硬件制造商的解决方案中获得一些价值:https://meraki.cisco.com/solutions/cmx。他们有一个用于访问者数据的预建平台(即向您显示电话在 buildings/spaces 中的位置)。我认为所有主要的 wi-fi 硬件制造商现在都有类似的东西,而思科很可能是高端的。根据记忆,阿鲁巴岛便宜得多(我要回去大约 10 个月)。

还有像 Euclid Analytics (http://euclidanalytics.com ) 这样的软件供应商构建在硬件之上,API 像思科这样的供应商提供我认为您想要的访问者信息。

这不是一个详尽的列表,因为我是凭记忆写的,但希望基于上述内容的一些谷歌搜索应该比自己动手更有成功的机会。

祝你好运, 詹姆斯

如果您想进行室内定位服务,那么我建议您查看 Cisco Connected Mobile Experience 软件。

您可以免费试用。

根据我的分析,这是最好的解决方案。我有偏见,因为我在那里工作。但是,我进行了竞争分析,但还没有找到我认为效果更好的方法。