Skip to content

2024.3.18: v0.5.0! iBeacons! Faster Updates! Filtering!

Compare
Choose a tag to compare
@github-actions github-actions released this 18 Mar 09:36
· 184 commits to refs/heads/main since this release
c1021ad

This is a pretty major release with some nice, juicy features and fixes :-)

  • 📱 iBeacon support means that Android phones using the HA Companion app can now be tracked! Of course, any other iBeacon can also be tracked. Just look for the UUID in the configured devices drop-down (in the CONFIGURE dialog). Don't worry, iPhone users - IRK support is in the works.
  • ⏱️ Faster sensor updates - Bermuda now checks for new advertisements every second, meaning that responsiveness to entering an area etc should be much faster now. In order to do this without impacting system performance, I've implemented a sort of caching on sensor updates, which you can configure in the the options with the update_interval setting. This sets a maximum interval for sensor updates. Bermuda still checks every second, but if the update is boring (or unlikely to be accurate) the sensor won't update. This saves database space, browser memory and cpu cycles. However, if Bermuda notices that a device has come closer to an Area, it publishes the update immediately. You can change the update_interval without having to reload HA so it's easy to ramp it down to 1 second for some troubleshooting or wind it back up to reduce database impact.
  • 📈 Sensor smoothing/filtering. Bermuda now uses a custom filtering chain to try and clean up the very noisy data that is inherent to RSSI measurements. The main thrust of the work is:
    • MAX_VELOCITY setting allows us to ignore any measurement that implies a device has moved away from an area at an improbable speed. These readings are almost always noise-induced.
    • Moving-window average smooths out the noisy data, but always gives preference to "nearer" distance measurements, as they are less susceptible to noise (or more concisely, nearer measurements have less noise). You can configure how many samples this filter uses to have a rough control over the maximum slope angle of distance increases.

Thanks to @jaymunro for his help and ideas while testing these filtering options!

  • 📏 Unit conversion should now work - nobody filed a bug for it but it's fixed 🎉

  • 📊 More fun sensors! Bermuda now provides sensors for every combination of device and proxy - but they are disabled by default. This means you can enable any that are of interest, particuarly useful for troubleshooting filters or learning more about how it is behaving. Adding more sensors can have an impact on your database size and system load, so bear that in mind before you turn them all on! Usually enabling a few key sensors on one testing device is enough to get the insight you need.

Your filtering dollars at work:
image

  • 😐 The history card that pops up when you click a distance sensor now uses the default HA "5 minute averaged min/max/mean" graph instead of individual measurements mode. This results in no data showing until its been running for 5 minutes, but on the up-side it reduces the amount of data that needs to stay loaded in browsers so seems a reasonable compromise. The dedicated "History" tool is so much better these days, so I'd recommend using that any time you want to analyse the data.

Breaking Changes

  • 💣 For performance improvements, many (most?) of the sensor extra attributes have been moved out to their own sensors. So if you were running automations that relied on attributes they will likely need updating. For example, if you triggered an automation on an Area sensor, and checked the distance attribute of that sensor, you'll now have to trigger on the Area sensor, and add a separate step to check the separate Distance sensor.

Changes

  • wip: Get tests running again @agittins (#87)
  • chore: Update issue template for config screenshot @agittins (#88)
  • perf: Downgrade TX Power change log to debug @agittins (#89)
  • (feat) Per-proxy distance sensors @agittins (#107)
  • (chore) calmed some warnings down to debug. @agittins (#108)
  • fix: prevent non-scanner devices being saved to config @agittins (#109)
  • Chore: Replace reorder-imports with isort @agittins (#115)
  • feat: iBeacon Support! @agittins (#116)
  • Faster Polling (0.9seconds instead of 5), cleanups @agittins (#117)
  • Add mac_is_random, shorten update_interval, cleanups @agittins (#120)
  • Filtering of Distance sensors, startup and reload fixes, performance and db improvements @agittins (#127)
  • fix: Add timeout logic for distance measurements @agittins (#128)
  • feat: Ignore long distance readings that would require high velocity @agittins (#129)
  • Docs, Sensor Churn fixes, Unit conversions, Max_Velocity via ConfigFlow @agittins (#133)

📦 Dependencies