You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对BLE客流量计数器(Paxcounter)过滤仅统计手机设备

仅统计手机MAC地址的Paxcounter改造方案

问题背景

  • 当前基于BLE/WiFi的Paxcounter统计精度不足,会将蓝牙鼠标、耳机、手机等所有带MAC地址的设备全部计入客流
  • 尝试过旧版本仓库的VENDORFILTER变量,但过滤效果不准确
  • 使用设备为LilyGO LoRa3,支持LoRaWAN

可行改造方案

1. 基于BLE广播包特征过滤手机

手机的BLE广播带有特定特征,可与外设区分:

  • 过滤**通用访问配置文件(GAP)**广播类型:手机多发送AD_TYPE_COMPLETE_LOCAL_NAME或AD_TYPE_SHORT_LOCAL_NAME,名称常包含品牌标识;蓝牙外设多发送服务UUID类广播(如耳机的音频服务UUID)
  • 解析设备类别(Device Class):手机的设备类别属于0x0200(电话类),扫描到BLE设备后解析该字段,仅保留符合类别的设备
  • 代码改造示例(在BLE扫描回调中添加逻辑):
void ble_scan_callback(esp_ble_gap_cb_event_t event, esp_ble_gap_cb_param_t *param) {
    if (event == ESP_GAP_BLE_SCAN_RESULT_EVT) {
        esp_ble_gap_cb_param_t *scan_result = (esp_ble_gap_cb_param_t *)param;
        uint8_t dev_class[3];
        // 提取广播中的设备类别字段
        if (esp_ble_resolve_adv_data(scan_result->scan_rst.adv_data, ESP_BLE_AD_TYPE_DEV_CLASS, dev_class, sizeof(dev_class)) == ESP_OK) {
            // 匹配手机设备类别(0x0200)
            if ((dev_class[1] == 0x02) && (dev_class[2] == 0x00)) {
                add_to_bucket(scan_result->scan_rst.bda);
            }
        }
    }
}

2. 结合WiFi探针的DHCP请求特征过滤

手机连接WiFi时会发送DHCP请求,其中主机名通常带有手机品牌标识,而鼠标、耳机等外设一般不会发起DHCP请求:

  • 在WiFi探针模式下,监听DHCP数据包的Hostname字段,仅保留包含手机品牌关键字(如"iPhone"、"Huawei"、"Xiaomi")的设备
  • 改造点:在WiFi数据包解析函数中添加主机名检查逻辑

3. 优化MAC地址厂商过滤(解决旧版本VENDORFILTER不准确问题)

旧版本厂商MAC前缀列表可能过时,可通过以下方式优化:

  • 更新vendor_array.h中的厂商前缀为最新手机品牌MAC前缀集合(从IEEE官方MAC数据库获取)
  • 添加LoRaWAN远程更新逻辑:允许远程推送最新厂商前缀,无需重烧固件
  • 前缀检查示例代码:
bool is_mobile_vendor(uint8_t *mac) {
    // 可扩展的手机厂商MAC前缀列表
    const uint8_t mobile_vendors[][3] = {
        {0x00, 0x1A, 0x79}, // Apple
        {0xDC, 0x2C, 0x26}, // Huawei
        {0x5C, 0xCF, 0x7F}  // Xiaomi
    };
    for (int i = 0; i < sizeof(mobile_vendors)/sizeof(mobile_vendors[0]); i++) {
        if (memcmp(mac, mobile_vendors[i], 3) == 0) {
            return true;
        }
    }
    return false;
}

// 在统计前添加过滤
if (is_mobile_vendor(device_mac)) {
    add_to_bucket(device_id);
}

4. 结合BLE连接尝试(低功耗场景慎用)

手机通常会响应BLE连接请求,而鼠标等外设一般不会:

  • 扫描到设备后发起短暂BLE连接请求,若设备响应则判定为手机并计入统计
  • 注意:此方法会增加设备功耗,需调整连接超时时间适配场景

注意事项

  • 所有改造需在PlatformIO环境下编译,确保ESP32 BLE/WiFi依赖库版本匹配
  • 可通过LoRaWAN远程下发过滤规则(如厂商前缀、关键字),提升灵活性
  • 需在实际场景中测试验证过滤效果,排除误判情况

内容的提问来源于stack exchange,提问作者Coiny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:37:01