3.0.1 - Built-in Bed Card ποΈ
A big release! The integration now ships its very own dashboard card - no more building a control panel by hand β plus a whole batch of bug fixes across Okin, Keeson, Sleep Number, Ashley/Nectar and more.
What's New
ποΈ Native Adjustable Bed dashboard card
The headline feature: a built-in Lovelace card, Adjustable Bed Card, that gives you a complete control panel for your bed β position controls, presets, memory, lighting, massage, climate and connection status β all in your Home Assistant theme.
- Loads automatically. Nothing to add as a HACS or Lovelace resource. Just edit a dashboard β Add Card β search Adjustable Bed β pick your bed and you're done.
- Adapts to your bed. It only shows the sections your bed actually has (massage and climate appear only if your bed supports them), so the same card works for everyone.
- Visual editor. Show/hide and reorder sections, and choose exactly which memory positions to display β no YAML required.
- Theme-aware bed-angle graphic and a one-tap Save⦠flow to store the bed's current position into a memory slot.
- Names and icons follow your entities. Rename Memory 1 to "Flat" and give it a bed icon, and the card updates to match β purely cosmetic and local to you.
β "Verify connection" step when adding a bed
Adding a bed now offers a quick, read-only connection check with a β /β checklist of what your bed supports β so you can confirm it's actually talking before you finish setup. It also warns you up front if the bed exposes no writable characteristic.
Bug Fixes
Sleep Number (MCR / BAM)
- These beds don't report motor angles, so they no longer create dead "unknown" angle sensors or position sliders β and any left over from an older version are cleaned up automatically when you upgrade. (#322)
Keeson
- Fixed a reconnect storm on BT40SA receivers. With Disconnect after command enabled, the integration no longer fights the bed's normal idle-disconnect β which could previously push the receiver into a state where it stopped responding until you power-cycled it. (#369)
Okin / DewertOkin
- Mattress Firm and similar Okin CST bases: corrected the preset / light / massage commands, added memory programming, and fixed the massage toggle β so those controls actually work now. (#365)
- Self-healing Bluetooth pairing. Beds that dropped with an "insufficient authentication" error now re-pair themselves automatically, with a one-click repair if they need a hand. (#336, #338, #344)
- "NORA_CON" Mattress Firm bases are now detected as the correct Okin 64-bit protocol instead of an incompatible one, so the controls work. (#370)
- Beds set up under the wrong Okin type now auto-correct to the right protocol on connect. (#368)
- Stray Bluetooth gadgets (like the "ABXM2" device) are no longer mistakenly detected as an Okin bed. (#366)
Ashley / Nectar (BOX25 / Star)
- Presets β Flat, Zero-G, Anti-snore, Lounge and memory recalls β now actually move the bed. A trailing STOP command was cancelling them before they ran. (#372)
Massage
- Timer-only massage controls now render correctly.
Thanks to everyone who filed issues andsent support bundles - this release leaned heavily on your reports. As always, let us know how your bed works! π
3.0.1
- Leggett & Platt LP Comfort Connect (Gen2 / 209-M001) β new support with live under-bed light state, per-model Gen2 capabilities, and all-intensity + mode-step massage (#389)
- Config-flow "Auto-detect" β added as the default in the manual bed-type list and the "Show all BLE devices" path, gated on detection confidence so it won't guess ambiguously (#388)
Bug Fixes
- Smartbed428 is now detected as Malouf New Okin, with detection kept unambiguous (#397)
- DewertOkin now uses the correct write characteristic (#396)
- CB25 / BOX25 presets now commit with a trailing STOP (arm-then-commit) and resend frames at 100 ms instead of firing once, so saved positions stick (#391)
- Repairs no longer nags about non-bed BLE devices (#392)
- Richmat / Nokia W5 UUID is now name-guarded to stop non-bed false positives (#383)
- Idle disconnects are quieter and correctly surfaced as "idle"; the connection no longer reports "idle" after a failed reconnect (#387)