Skip to content

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 version

Source Code

The project is open source and available on GitHub.