从WiFi信号到人数统计:OUI数据库如何让你的电脑变成"人数雷达"
1. 问题引入:WiFi信号里藏着多少秘密?
1.1 商场WiFi的人流统计魔法
当你走进大型商场时,商场管理者如何知道实时客流数据?为什么机场能提前预测安检排队时间?这些场景背后,都藏着一个利用WiFi信号进行人数统计的技术秘密。howmanypeoplearearound项目正是将这种技术平民化的工具,让普通电脑也能变身"人数雷达"。
1.2 看不见的设备"身份证"
每台智能手机、平板电脑等无线设备都有一个独特的MAC地址,就像设备的数字身份证。当这些设备搜索WiFi信号时,会主动发送包含MAC地址的探测请求。通过捕获这些信号,我们就能知道周围有多少活跃设备——进而估算出大致人数。
[!TIP] 技术冷知识:普通WiFi路由器就能接收到周围100米内的设备信号,即使设备未连接网络也会主动发送探测信号。
2. 核心原理:OUI数据库如何识别设备身份
2.1 OUI数据库(组织唯一标识符)是什么
OUI数据库就像一本"设备户籍册",记录了全球所有网络设备制造商的唯一编码。每个MAC地址的前6个字符(如"90:e7:c4")对应着特定的硬件制造商,这就是OUI标识符。
核心模块:[howmanypeoplearearound/oui.py]负责管理这个数据库,它会自动从IEEE官方网站下载最新数据,确保识别准确性。
2.2 MAC地址解析关键步骤
设备识别过程分为三个阶段:
- 信号捕获:通过tshark工具监听周围WiFi信号,收集MAC地址和信号强度
- 厂商匹配:提取MAC地址前8个字符(含分隔符)查询OUI数据库
- 设备筛选:判断该厂商是否属于常见手机制造商
# MAC地址解析核心代码
# 提取MAC地址前8个字符(如"90:e7:c4")查询厂商信息
oui_id = 'Not in OUI'
if mac[:8] in oui: # oui是加载的OUI数据库字典
oui_id = oui[mac[:8]] # 获取厂商名称
[!TIP] 实用技巧:MAC地址格式通常为"AA:BB:CC:DD:EE:FF",前6个字符(AA:BB:CC)就是OUI编码,代表设备制造商。
2.3 从设备数到人数的转换公式
由于不是所有设备都是手机,项目采用统计模型进行转换:
- 默认70%的设备为智能手机(可通过--nocorrection参数关闭修正)
- 人数 = 手机设备数 ÷ 0.7
核心模块:[howmanypeoplearearound/main.py]中的人数计算逻辑实现了这一转换。
3. 实践价值:WiFi人数统计的应用场景
3.1 家庭安全监控
独居老人家庭可通过该工具监测屋内活动情况。当长时间检测不到设备信号时,系统可自动发送提醒。
实施案例:
# 持续监控模式,每30秒扫描一次
python -m howmanypeoplearearound --loop -s 30 --out monitoring.log
通过分析日志文件,可了解家人日常活动规律,发现异常情况。
3.2 小型场所人流分析
咖啡馆老板可通过该工具统计不同时段客流量,优化人员排班和营业时间。
实施案例:
# 生成数据分析报告
python -m howmanypeoplearearound -o cafe_data.log
# 分析数据并生成可视化图表
python -m howmanypeoplearearound -z cafe_data.log
系统会自动生成包含人数变化趋势的网页报告,帮助经营者做出决策。
3.3 活动参与人数统计
组织户外集会时,可快速估算现场人数,无需人工计数。
实施案例:
# 仅显示人数数字,适合脚本集成
python -m howmanypeoplearearound --number -s 120
该命令会在2分钟扫描后输出估算人数,可集成到活动管理系统中。
[!TIP] 最佳实践:选择信号干扰少的5GHz频段适配器,可提高设备检测准确率约30%。
4. 操作指南:从零开始使用人数统计功能
4.1 环境准备与安装
# 克隆项目仓库
git clone https://gitcode.com/gh_mirrors/ho/howmanypeoplearearound
cd howmanypeoplearearound
# 安装依赖
pip install -r requirements.txt
# 安装必要系统工具
sudo apt-get install tshark # Debian/Ubuntu系统
# 或
brew install wireshark # macOS系统
4.2 基础扫描命令详解
| 参数 | 功能描述 | 示例 |
|---|---|---|
| -s | 扫描时长(秒) | -s 60 扫描1分钟 |
| -o | 输出数据到文件 | -o data.log 保存结果 |
| --number | 仅显示人数 | --number 简化输出 |
| --loop | 持续监控模式 | --loop 不断重复扫描 |
| -z | 分析数据文件 | -z data.log 生成报告 |
4.3 高级配置技巧
自定义制造商列表:
# 创建自定义制造商文件
echo "Apple, Inc." > my_manufacturers.txt
echo "Huawei Symantec Technologies Co.,Ltd." >> my_manufacturers.txt
# 使用自定义列表扫描
python -m howmanypeoplearearound -m my_manufacturers.txt
信号强度过滤:
# 只统计信号强度大于-70dBm的附近设备
python -m howmanypeoplearearound --nearby
[!TIP] 故障排除:若提示"找不到tshark",需将Wireshark安装目录添加到系统PATH环境变量。
5. 扩展思考:技术边界与未来发展
5.1 技术局限性
该工具依赖设备主动发送的WiFi信号,存在以下限制:
- 无法检测关闭WiFi的设备
- 密集环境下信号干扰可能导致计数不准
- 室内环境中墙体等障碍物会影响信号接收范围
- 无法区分同一设备的多次探测信号
5.2 延伸思考问题
- 如何结合蓝牙信号检测提高设备识别率?
- 能否通过机器学习模型优化人数估算算法?
- 如何保护用户隐私的同时实现人数统计功能?
5.3 合规使用提示
⚠️ 重要提醒:使用网络监控工具时,请确保:
- 仅在你有权管理的网络环境中使用
- 遵守当地数据保护法律法规
- 不收集或存储可识别个人身份的信息
- 明确告知相关人员可能进行的网络监控
技术本身是中性的,负责任的使用才能让技术真正造福社会。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0195- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
awesome-zig一个关于 Zig 优秀库及资源的协作列表。Makefile00