ble_monitor is a free, open source internet of things (iot) project written in Python and released under MIT. It has 2,247 GitHub stars, 290 forks and 119 open issues, and was last pushed 7 days ago. On this registry it ranks #33 of 73 tracked projects in Internet of Things (IoT), with 5 head-to-head comparisons available.

What is ble_monitor?

ble_monitor is a Python custom component for Home Assistant that passively reads data from a wide range of inexpensive Bluetooth Low Energy sensors so their readings appear in your Home Assistant dashboard.

What it is

BLE monitor is a custom component for Home Assistant, distributed as a Community Home Assistant Store (HACS) installable repository, that listens passively to Bluetooth Low Energy advertisements and turns them into entities inside Home Assistant. It covers dozens of brands — including Xiaomi MiBeacon and MiScale sensors, Qingping, ATC custom firmware, Govee, Inkbird, Ruuvitag, Kegtron, Thermobeacon, SensorPush, Switchbot, b-parasite, BTHome devices, Oral-B, Tilt, and scales from Senssun and Xiaogui — and it can also act as a device tracker for BLE devices identified by a static MAC address or a UUID.

The concrete problem it solves is that most battery-powered BLE sensors only broadcast their readings and never accept a connection, so a normal Bluetooth integration that connects to devices never sees them. BLE monitor performs passive scanning instead, parses each brand's advertisement format, and exposes temperature, humidity, pressure, weight, keg volume, and similar measurements as Home Assistant sensors without requiring a gateway device per brand.

Key capabilities

  • Passively parses advertisement packets from more than forty named brands and protocols, including MiBeacon, ATC, BTHome, Govee, Inkbird, Kegtron, Ruuvitag, Thermobeacon, SensorPush, and Tilt.
  • Works as a BLE device tracker for devices addressed by static MAC address or by UUID.
  • Accepts forwarded data parsed from other sources, as described in the project's "Forward data from ESPhome" documentation page.
  • Supports DIY sensors built on the BTHome format, with a dedicated DIY sensors documentation page.
  • Provides per-configuration-parameter settings documented under configuration_params, including an active scan option needed to run alongside Home Assistant's core Bluetooth integrations.
  • Ships developer documentation and a sensor request page so additional devices and parsing code can be contributed.
  • Ships a set of logos and sensor images in the repository under pictures/, such as pictures/sensors.jpg and pictures/sensors_2.png.

Who uses it and how

  • Home Assistant users with mixed-brand passive sensors who want a single integration to surface them all, as discussed on the linked Home Assistant community forum thread.
  • Users of ATC or BTHome custom firmware on Xiaomi and Qingping hardware who want the flashed readings parsed into Home Assistant.
  • Keggers and brewery hobbyists reading Kegtron keg-volume sensors, and homebrewers reading Tilt hydrometers, through Home Assistant.
  • People tracking BLE devices with fixed MAC addresses or UUIDs rather than sensor values.
  • Contributors migrating sensors from BLE monitor into Home Assistant core integrations, working alongside Home Assistant developers.

Getting started

Install it as a custom component through HACS on a Home Assistant instance (the topics include hacs, hassio, and custom-component), following the Installation instructions page on the project's documentation site.

How it compares

BLE monitor sits alongside Home Assistant's own core Bluetooth integrations, which since Home Assistant 2022.8 have grown native passive BLE support and now cover many of the same brands — BlueMaestro, Govee, Inkbird, Kegtron, Qingping, RuuviTag, SensorPush, Thermobeacon, Tilt, Xiaomi, and others are listed as available as official Home Assistant integrations. It also differs from ESPHome Bluetooth Proxy, which explicitly cannot forward data to BLE monitor, so the two are alternatives rather than complements.

When to use it — and when not to

You must operate a Bluetooth adapter reachable by your Home Assistant host, and be prepared to coexist carefully with core BLE integrations: the README warns they may not run well in parallel (core integrations can stop updating) unless you enable active scan in BLE Monitor. Note that the project's own announcement states BLE monitor will probably be deprecated once its sensors have moved into Home Assistant core, with 119 open issues at the time of listing, so new setups are better served by the core integrations where a brand is covered, and BLE monitor is best suited to sensors not yet migrated.

project readme (upstream, from github) — read inline

Passive BLE Monitor integration

BLE_sensors

This custom component for Home Assistant passively monitors many different BLE devices of several different brands. BLE Monitor can also be used as device tracker for BLE devices with a static MAC address or with the UUID.

More info

Supported sensor brands

BLE_sensors

  • Acconeer
  • Air Mentor
  • Amazfit
  • ATC (custom firmware for Xiaomi/Qingping sensors)
  • Beckett
  • BlueMaestro
  • Blustream (Taylor TaylorSense, D'Addario Humiditrak)
  • BTHome
  • b-parasite
  • Chef iQ
  • Ela
  • Govee
  • Grundfos
  • HolyIOT
  • Hörmann
  • HHCC
  • Inkbird
  • iNode
  • Jaalee
  • Jinou
  • Kegtron
  • KKM
  • Mikrotik
  • Moat
  • Oras
  • Oral-B
  • Qingping
  • Relsib
  • Ruuvitag
  • Sensirion
  • SensorPush
  • Senssun (Scale)
  • SmartDry
  • Switchbot
  • Teltonika
  • Thermobeacon (Thermoplus, Brifit, Oria)
  • Thermopro
  • Tilt
  • Xiaogui (Scale)
  • Xiaomi (MiBand)
  • Xiaomi (MiBeacon sensors)
  • Xiaomi (MiScale)

Why isn't ESPHome Bluetooth Proxy not working with BLE monitor?

Please note that ESPHome Bluetooth Proxies cannot forward data to BLE monitor. Check out this page for alternative solutions.

Important announcement about the future of BLE monitor

Home Assistant 2022.8 has (improved) support for passive BLE devices directly in Home Assistant. For each brand, a core BLE integration will be developed, such that maintenance can be divided over more people, using the latest Bluetooth packages (bleak). I'm working together with the Home Assistant devs to move sensors from BLE Monitor to Home Assistant core integrations. During the transition, BLE monitor will still be available, but it is possible that the core HA Bluetooth integrations will not work niceley parallel to BLE monitor. If it is not working together (common symptom is that core integrations stop updating after a while), try to enable active scan in the BLE Monitor. My advise, when all your sensors are available in Home Assistant, make the move. The aim is to have all sensors moved into Home Assistant as core integration. After the move, BLE monitor will probably be deprecated. If you want to help moving sensors from BLE monitor, feel free to help. Check out the links below.

Some interesting links

Available as official HA integration

The following integrations are available as official Home Assistant integration.

  • BlueMaestro
  • b-parasite (will be using BTHome with new firmware)
  • BTHome
  • Govee
  • HHCC
  • iBeacon
  • Inkbird
  • Kegtron
  • Moat
  • Oral-B
  • Qingping
  • RuuviTag
  • SensorPush
  • Sensirion (MyCO2 gadget)
  • Thermobeacon
  • Thermopro / Sensorpro
  • Thermobeacon (Thermoplus, Brifit, Oria)
  • Tilt
  • Xiaomi (part 1 and 2)
  • Device tracking based on MAC address (Bluetooth LE tracker integration)

Frequently asked questions

Is ble_monitor free to use?

ble_monitor is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does ble_monitor do?

BLE monitor for passive BLE sensors

What is ble_monitor written in?

ble_monitor is primarily written in Python. Its source is publicly available at https://github.com/custom-components/ble_monitor, and it has 2,247 GitHub stars.