BLE Turbo Scanner
An open-source project by iconnek.io
BLE Turbo Scanner is a high-performance Bluetooth Low Energy (BLE) scanner designed for scanning BLE sensors (like ELA Innovation) and publishing data to HTTP endpoints or MQTT brokers. Built with Python, it supports Linux, Windows, and macOS.
Features
- 🔍 BLE Scanning — Continuous or periodic scanning of BLE devices
- 📡 Multiple Outputs — WebSocket server, HTTP endpoint, and MQTT broker support
- 🎯 Smart Filtering — Filter by MAC address, RSSI strength, or manufacturer
- 🏭 Manufacturer Decoding — Built-in recipes for decoding manufacturer-specific data (e.g., ELA Innovation)
- ⏱️ Flexible Scanning — Continuous or periodic scan modes with automatic deduplication
- 🐳 Docker Ready — Cross-platform Docker support (amd64 + arm64)
- ⚙️ Environment-based Configuration — Easy configuration via environment variables
Prerequisites
- Python 3.11+
- Bluetooth adapter (built-in or USB)
- Docker (optional, for containerized deployment)
Project Structure
ble-turbo-scanner/
├── decoder/ # Data decoding and formatting
│ ├── broadcaster.py # Output handlers (WS, HTTP, MQTT)
│ ├── config.py # Configuration management
│ ├── decoder.py # BLE data decoder
│ ├── raddec.py # Data format specification
│ └── recipes/ # Manufacturer-specific decoders
│ └── ela_innovation.py
├── scanner/ # BLE scanning logic
│ ├── ble_scanner.py # Main scanner implementation
│ ├── parser.py # Advertisement data parser
│ ├── logger.py # Logging utilities
│ ├── manufacturers.py # Manufacturer ID lookup table
│ └── config_manager.py # Config loader
├── main.py # Application entry point
├── requirements.txt # Python dependencies
├── Dockerfile # Docker build configuration
├── .env.example # Configuration template
└── VERSION # Current versionSource Code
The project is open source and available on GitHub.
