github custom-components/ble_monitor 14.0.0
14.0.0 [BREAKING CHANGES] Keep passive scans continuous and support instant batched updates

4 hours ago

Breaking changes

  • Minimum required python version 3.14 [BREAKING CHANGE]
  • Minimum required home assistant version 2026.7.0 [BREAKING CHANGE]

What's else changed

  • Keep passive scans continuous and support instant batched updates by @rmounce in #1558
  • Change device class from HUMIDITY to MOISTURE for moisture sensors
  • Add support for MJWSD06MMC with different device_id
  • fix deprecated CONCENTRATION_* constants by @shomanjk

Summary

This PR contains the following changes that improve passive HCI scanning and low-latency measurement delivery:

  • decouple scanner lifetime from the measurement aggregation period
  • add a configurable per-adapter raw-HCI inactivity watchdog
  • add backward-compatible periodic/instant measurement update policies, including per-device overrides
  • parse every legacy or extended advertising report in batched HCI LE meta-events

Motivation and root cause

Restarting the HCI scanner after every aggregation period creates avoidable scan downtime. With period: 1, a TP-Link UB500 was repeatedly closing and reopening its HCI socket and losing advertisements.

After continuous scanning and instant updates were enabled, matched captures identified a second UB500-specific loss mechanism. The adapter commonly emits LE Extended Advertising Report events containing two to five reports. BleParser.parse_raw_data() assumed exactly one report and rejected the complete HCI event whenever its total length exceeded the first report's length.

Configuration example

ble_monitor:
  hci_inactivity_timeout: 60
  measurement_update: instant

New Contributors

Full Changelog: 3.16.0...14.0.0-beta

Don't miss a new ble_monitor release

NewReleases is sending notifications on new releases.