Adjustable Bed
kristofferR/ha-adjustable-bed · vv4.2.4
Home Assistant integration for controlling smart adjustable beds via Bluetooth
In Apple Home through HomeKit Bridge
What HomeKit Bridge makes of each kind of entity this integration creates, read from its source code. A device only gets the ones that apply to it.
| Entity | Shows up as | Note |
|---|---|---|
light | Light | |
switch | Switch or outlet | |
cover | Blind, garage door, window or door | |
climate | Thermostat | |
binary_sensor | Sensor (motion, contact, leak, smoke…) | |
sensor | Sensor (temperature, humidity, air quality…) | |
button | Button (as a switch) | |
select | Mode picker (as switches) |
1 report below say how a device from this integration behaves in the Home app.
What people report
Bluetooth LE control of many adjustable beds (Okin, Keeson, Octo, Tempur and others) with frequent model fixes. WiFi or cloud beds are out of scope. HomeKit shows bed sections as blinds.
- Works6
- Partly works2
- Won’t be supported1
| Device | In Home Assistant | In Apple Home | What they said | Source |
|---|---|---|---|---|
| Ashley/Nectar M1X1232 | Works Local | Preset buttons fixed by resending frames at 100msSaved copyProblem (#372) On the Ashley/Nectar M1X1232 (detected as `sleepys_box25`, firmware 252201 / `25_22_01`), the preset buttons, Flat, Zero-G, Anti-Snore, Lounge, Memory 1–4, don't move the bed. The reporter found the preset only executes if, right after pressing it, they press Stop-All or hit BLE disconnect. The 3.0 attempt (drop the trailing STOP, send the preset fire-and-forget) didn't fix it, the reporter confirms presets still need a follow-up Stop press to execute. ## Root cause The single fire-and-forget write was the wrong model. This firmware latches the preset target on the first … Excerpt saved from GitHub on 2026-10-23. | PR #386 · 2026-06 | |
| Malouf Base and Lucid Base | Works Local | Opt-in app profiles addedSaved copyThe generic Malouf/Lucid controllers cannot represent the apps’ model-specific controls, custom OKIN transport, massage timer routes, or clock and alarm behavior. Add opt-in Malouf Base and Lucid Base profiles with explicit app, model, transport, and physical primary/secondary selection. Fresh model choices match each app’s picker, with existing stored models retained during options changes. Implement all reachable controls and state from the accepted cluster007 evidence while preserving existing entries. Validate complete GATT layouts, acknowledge writes, and retain protocol-specific … Excerpt saved from GitHub on 2026-10-23. | PR #634 · 2026-09 | |
| Mattress Firm 900-O (Okin CST) | Works Local | Lumbar, light and Flat controls fixedSaved copyMFirm 900-O users reported broken lumbar, light, and Flat controls. The CST profile used incorrect lumbar bits, an excessively long preset cadence, and unsupported motor and position assumptions. This aligns the controller with the frozen MFirm 900-O 1.1.2 clean-room analysis: exact Head, Feet, and Lumbar controls, the app command cadence and STOP cleanup, reachable light and massage actions, and removal of unsupported position entities. Validation: - `uv run pytest` (2,758 passed) - `uvx [email protected] check custom_components tests` - `uvx [email protected] custom_components tests` - clean local … Excerpt saved from GitHub on 2026-10-23. | PR #513 · 2026-08 | |
| MotoSleep and Power Bob beds | Works Local | Model routing for Power Bob roots and HHC panelsSaved copySummary - Replace the universal MotoSleep controller with advertised-name profiles for all 14 Power Bob roots, 21 current HHC panel profiles, and 10 binary MOTO bed pages recovered from Power Bob 2.0.3 and MotoSleep 5.1.5. - Fix #445 by routing `HHC0069815CDEF` to the A15 profile, where uppercase `$P/$Q` is lumbar. - Match each app's raw, wrapped, or binary framing, write response mode, movement cadence, model-specific STOP schedule, characteristic fallback, presets, memory, massage, RGB, sync, and swing controls. - Preserve app-proven controls with uncertain physical semantics as neutral … Excerpt saved from GitHub on 2026-10-23. | PR #446 · 2026-07 | |
| OCTO beds with TV lift | Works Local | Notification handling improved and TV lift support addedSaved copySummary - reassemble Standard OCTO protocol packets across fragmented BLE notifications and process multiple packets per callback - resynchronize after malformed data, bound retained fragments, and clear the stream buffer at notification lifecycle boundaries - add explicit one-motor Standard OCTO TV lift support for official `RTV` / Lift 1M controllers - default discovered `RTV` devices to one motor and expose a dedicated TV Lift cover plus Stop All - suppress bed-only presets, memory, lighting, and synchro entities on the lift layout - add `tv_lift` support to `adjustable_bed.timed_move` - … Excerpt saved from GitHub on 2026-10-23. | PR #444 · 2026-07 | |
| Tempur ProSmart Air (Sleeptracker-AI) | Works Local | Presets, climate and premium massage controls addedSaved copyTempur ProSmart Air was using an Adjustable Lite compatibility profile that omitted presets, climate and premium massage controls. Add the Tempur Sleeptracker-AI processor profile and make it the documented choice for ProSmart / ActiveBreeze. Remove PR671’s Adjustable Lite massage override and the local KSSF05C preset workaround, preserving the unrelated FurniMove fixes. The processor route exposes the app’s TV/PC, Anti-Snore and favorite presets, heat/cool levels with fixed timers, 28/40 Hz massage and the remaining proven local bed controls. It requires the verified processor endpoint, … Excerpt saved from GitHub on 2026-10-23. | PR #684 · 2026-10 | |
| Adjustable bed (cover entities in HomeKit) | Partly works Local | Partly in Home Shows as blinds with percent sliders; Siri uses open/close wording | Beds exposed to HomeKit as blinds; docs added a setupSaved copyThe reporter can control the bed in Home Assistant and export its cover entities to HomeKit, but HomeKit presents them as blinds with percentage sliders. Siri commands therefore use open/close wording, and the reporter describes using 50 percent to stop movement. Requested outcome: a clearer way to raise, lower, and stop each bed section from HomeKit/Siri. ## Implemented The recommended setup is now an importable section-control blueprint, added in 120634f5. Import into Home Assistant, select the bed section, choose Raise, Lower, or Stop, and save a named script. Create one script per action … Excerpt saved from GitHub on 2026-10-23. | Issue #610 · 2026-09 |
| Dynasty Bases DM9000 | Partly works Local | Actuators work; light and massage did not work in 1.9.8Saved copyBed Manufacturer/Brand Dynasty Bases ### Bed Model DM9000 ### Official Mobile App Dynasty Bases ios ### Remote Control Model Number JLDK ### Diagnostic Report config_entry-adjustable_bed-01KG64V2DT16Y77S8KQG8AYDJ7.json ### Photos ### Additional Information I have tried every combination of protocols. This DM9000 was bought in 2019 and I can use my phone to control it. The "CNTL box"(second pic) which adds the BLE feature plugs into the OKIN box's secondary port. I have spent several days trying to figure it out but have not kept up my programming skills and barely know anything in regards to … Excerpt saved from GitHub on 2026-10-23. | Issue #180 · 2026-01 | |
| WiFi/cloud adjustable beds | Won’t be supported Cloud | WiFi and cloud beds will not be supported; separate integration recommendedSaved copySummary This is a tracking issue for beds that use WiFi or cloud connectivity instead of Bluetooth. These require a fundamentally different architecture than the current BLE-based integration. ⚠️ Extremely low priority, implementation is very unlikely. ## Why This Probably Won't Happen Adding WiFi/cloud support to this integration would be a bad idea: 1. Architectural mismatch, This integration is built entirely around Home Assistant's Bluetooth stack (discovery, adapters, proxies, connection management). WiFi and cloud beds share none of that infrastructure. Adding WiFi/Cloud support to … Excerpt saved from GitHub on 2026-10-23. | Issue #167 · 2026-01 |
Gathered from GitHub issues, pull requests, discussions and docs, and from r/homeassistant. These are individual reports, so check the linked thread and the date before you buy.
How it connects
Local push
Talks to the device on your network, and the device tells Home Assistant the moment something changes.
Found automatically over
- Bluetooth
Details
| Installs (analytics) | 270 (0.04%) |
|---|---|
| GitHub stars | 66 |
| Latest version | v4.2.4 (2026-10-18) |
| Set up in the UI | Yes |
| Maintainers | @kristofferR |
| License | MIT |
In ReReHome
Whatever HomeKit Bridge shares reaches Apple Home as normal HomeKit accessories behind your Home Assistant bridge, so ReReHome shows and controls them like any other.
Bridges get their own settings page listing the accessories behind them.
Sources
- Documentation: https://github.com/kristofferR/ha-adjustable-bed
- Source code: https://github.com/kristofferR/ha-adjustable-bed
- Issues: https://github.com/kristofferR/ha-adjustable-bed/issues
- HACS: https://hacs.xyz