finds.dev← search

// the find

cyberman54/ESP32-Paxcounter

★ 2,029 · C++ · NOASSERTION · updated Jun 2026

Wifi & BLE driven passenger flow metering with cheap ESP32 boards

Firmware for ESP32-based people counters that sniff WiFi probe requests and BLE advertisements to estimate crowd density, then ship the counts over LoRaWAN (TTN/Helium), MQTT, or SD card. Privacy-conscious by design — it counts MAC addresses without storing them. Aimed at transport planners, event organizers, and IoT hobbyists who want physical-world occupancy data without deploying cameras.

HAL abstraction covers 30+ ESP32 board variants (TTGO T-Beam, Heltec, LilyGO, M5Stack, etc.) via per-board header files, so porting to new hardware is a header swap rather than a code rewrite. LoRaWAN integration is production-grade: ABP and OTAA, proper payload codecs checked into the repo for TTN v2/v3 and the LoRaWAN devices registry, and a Node-RED flow for the server side. Battery life is taken seriously — deep sleep is wired in from the start rather than bolted on, and there's documented power curve data. CI builds the firmware matrix on every push, so you'll know immediately if a board variant breaks.

The MAC address randomization problem is acknowledged but not solved: modern iPhones and Android phones randomize probe request MACs aggressively, so the pax count increasingly undercounts or fluctuates in unpredictable ways depending on OS versions in the crowd — the docs mention this but don't quantify the error. The BintrayClient lib in the tree is dead weight; Bintray shut down in 2021 and the OTA update path that used it is broken unless you've wired up your own binary host. Config management via a flat `.conf` file compiled into the firmware means changing scan intervals or channel dwell times requires a reflash — there's a downlink remote-control mechanism, but it's limited and the docs for it are sparse. No unit tests anywhere in the codebase; correctness is verified by flashing hardware.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →