The ESPHome BLE Proxy & Environmental Monitor is a custom-designed USB stick built around the ESP32-C6. It runs ESPHome firmware and combines an active Bluetooth proxy with a full environmental sensing stack in a single plug-in form factor.
Bluetooth Proxy
The device runs ESPHome's native BLE proxy stack, which captures Bluetooth Low Energy advertisements and forwards them to Home Assistant via the ESPHome API over WiFi. Active and passive BLE scanning are both supported. Advertisement bundling — introduced in ESPHome 2023.6 — reduces WiFi traffic between the proxy and Home Assistant by batching BLE packets, significantly lowering the time both radios compete for the 2.4 GHz band.
Compatible with any BLE device that Home Assistant supports: Gardena smart garden controllers, Xiaomi / MiFlora plant sensors, SwitchBot, Govee, Inkbird, Mopeka, and anything advertising standard BLE GATT profiles or proprietary manufacturer data that HA integrations can decode.
Environmental Sensing
The Bosch BME688 sensor is connected via I²C and driven by Bosch's BSEC2 library, integrated into ESPHome via the bme68x_bsec2 component. BSEC2 processes raw gas resistance readings through a trained neural network model to produce:
- IAQ (Indoor Air Quality index, 0–500)
- IAQ accuracy (0–3, with text states: Unreliable / Low / Medium / High)
- Static IAQ — IAQ without auto-baseline compensation, useful for fixed installations
- CO₂ equivalent (ppm)
- Breath VOC equivalent (ppm)
- Temperature, humidity, and barometric pressure
The BSEC2 state is periodically saved to flash so the calibration baseline survives reboots. A configurable temperature offset compensates for self-heating from the ESP32-C6, adjustable at runtime via a Home Assistant number entity without reflashing.
Two WS2812B NeoPixel RGB LEDs map the IAQ index to a colour scale (green → yellow → orange → red) and WiFi/API connection status indicator. The LED partition is managed in ESPHome's light platform with separate addressable partitions for IAQ and status functions.
Hardware
The ESP32-C6 mini module sits on a custom two-layer PCB designed by the me, in USB stick form factor. Power input is USB-A or USB-C, compatible with any standard 5V charger or powered USB port — no dedicated PSU required. The Firmware can be flashed via USB-A or USB-C. Once it is flashed also OTA updates are possible.
The ESPHome YAML is structured as a modular packages system:
base.yaml— shared configuration: NeoPixel, API, OTA, loggingwifi.yaml— WiFi component with captive portal fallbackbme688.yaml— BME688 component
This allows clean maintenance of multiple hardware variants from a single shared codebase. OTA updates work over WiFi. The device is fully adoptable in ESPHome — clone the repo, point ESPHome at your local copy, and customise freely.
All source is on GitHub including full YAML, pin mappings, and a bilingual EN/DE README covering hardware pinout, IAQ colour scale, BSEC2 accuracy levels, and Home Assistant integration.
Home Assistant Integration
Auto-discovered via the ESPHome integration. All entities — BLE proxy, IAQ metrics, environmental sensors, LED controls, temperature offset — appear immediately with no manual configuration. Ready for dashboards, automations, and template sensors out of the box.
Available on Tindie
