Close
0%
0%

Air Quality Sensor Stick & Bluetooth Proxy

ESP32-C6 USB stick for Home Assistant: Bluetooth Proxy + air quality sensor. Open source ESPHome firmware. Extends BLE to garden & basement.

Similar projects worth following
114 views
The ESPHome BLE Proxy & Environmental Monitor is a compact USB stick based on the ESP32-C6 that serves two purposes: extending the Bluetooth Low Energy (BLE) reach of Home Assistant, and monitoring local air quality. The Bluetooth proxy receives BLE advertisements from nearby devices — Gardena garden controllers, MiFlora plant sensors, SwitchBot, Govee/Inkbird thermometers — and forwards them to Home Assistant over WiFi. The ESP32-C6's separate WiFi and Bluetooth hardware means both radios run without competing for airtime. A Bosch BME688 sensor delivers temperature, humidity, pressure, and an IAQ score with VOC and CO₂ estimates via the BSEC2 library. Two NeoPixel LEDs show air quality at a glance and WiFi status. Power comes from any standard USB-A or USB-C charger. The device is auto-discovered by Home Assistant. All source code is on GitHub. Available on LECTRONZ: https://lectronz.com/campaigns/pre-order-esphome-air-quality-sensor-stick-bluetooth-proxy

If you want to buy one: LECTRONZ

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.

A Garden's Best Friend
Proxy and Environmental Sensing Working Together One of the most elegant aspects of this device is how its dual roles as a Bluetooth proxy and environmental sensor complement each other rather than compete, creating a genuinely symbiotic relationship for garden automation. By forwarding BLE advertisements from Gardena smart controllers, MiFlora plant sensors, and compatible soil moisture devices directly to Home Assistant, the proxy eliminates the need for a dedicated Bluetooth hub while keeping your garden's ecosystem fully connected. At the same time, the BME688's real-time readings of temperature, humidity, barometric pressure, and air quality give Home Assistant the environmental context it needs to make smarter watering decisions — for example, suppressing an irrigation schedule when the sensor detects a recent pressure drop signalling incoming rain, or when humidity already reads high. Together, the two functions turn a single compact device into an intelligent garden nerve centre, where local atmosphere data and remote plant sensor telemetry converge into automations that water your garden only when it truly needs it, saving both water and effort.

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, logging
  • wifi.yaml — WiFi component with captive portal fallback
  • bme688.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...

Read more »

BT-Prox_Env_housing_green_powered.jpg

JPEG Image - 759.47 kB - 05/11/2026 at 18:03

Preview

BT-Prox_Env_housing_red_powered.jpg

JPEG Image - 1004.07 kB - 05/11/2026 at 18:03

Preview

BT-Prox_Env_housing_red_green_powered.jpg

JPEG Image - 981.02 kB - 05/11/2026 at 18:03

Preview

BT-Prox_Env_housing_pcb.jpg

JPEG Image - 1.41 MB - 05/11/2026 at 18:03

Preview

USB_Env_Stick_endcap_USB_A.STL

Endcap for the enclosure on the USB-A side

Standard Tesselated Geometry - 198.90 kB - 05/11/2026 at 17:58

Download

View all 8 files

  • Self heating exploration

    D. E.05/11/2026 at 18:38 0 comments

    Milling an island around the BME688 environmental sensor helps prevent heat from flowing from the Wi-Fi module and voltage regulator to the right of it. However, it is not possible to totally avoid the PCB self-heating. Therefore, I added an offset slider for temperature and relative humidity measurements to the UI. This can also compensate for offsets due to mounting issues and the housing.

View project log

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates