A Home Assistant custom integration for controlling smart adjustable beds via Bluetooth.
- Install via HACS: Search for "Adjustable Bed" and install
- Discover your bed automatically, or add manually via Settings → Integrations
- Control your bed from Home Assistant dashboards, automations, and voice assistants!
- Motor Control - Raise/lower head, back, legs, and feet
- Memory Presets - Jump to saved positions with one tap
- Under-bed Lights - Toggle lights on supported beds
- Massage Control - Adjust massage intensity and patterns
- Position Feedback - See current angles on supported beds
- Automations - "Flat when leaving", "TV mode at 8pm", etc.
| Guide | What's Inside |
|---|---|
| Troubleshooting | Connection issues, commands not working |
| Getting Help | Bug reports, support requests, diagnostics |
| Connection Guide | ESPHome proxy setup, finding your bed's address |
| Supported Actuators | Protocol details, bed brand lookup |
| 💬 Ask a Question | Get help from the community |
| 💡 Suggest an Idea | Feature requests and improvements |
| ❤️ Praise and Feedback | Share your experience or say thanks |
Quick troubleshooting
- Check range - Bluetooth adapter or proxy within ~10m of bed
- Disconnect other apps - Most beds allow only one BLE connection
- Reload integration - Settings → Devices & Services → Adjustable Bed → Reload
- Enable debug logs - Settings → Devices & Services → Adjustable Bed → ⋮ menu → Enable debug logging. Reproduce issue, then disable to download logs.
The names below refer to motor/actuator manufacturers. Your bed might use one of these internally - check the Supported Actuators guide to find your bed brand.
| Actuator | Example Brands |
|---|---|
| ✅ Linak | Tempur-Pedic, Bedre Nætter, Jensen |
| ✅ Keeson | Ergomotion, Tempur, Beautyrest, King Koil, Member's Mark, Purple, GhostBed, ErgoSportive |
| ✅ Richmat | Casper, MLILY, Sven & Son, Avocado, Luuna, Jerome's |
| ✅ MotoSleep | HHC, Power Bob |
| ✅ Octo | Octo |
| ✅ Solace | Solace, Sealy, Woosa Sleep |
| ✅ Leggett & Platt | Leggett & Platt |
| ✅ Reverie | Reverie |
| ✅ Okimat/Okin | Lucid, CVB, Smartbed |
| ✅ Jiecang | Glideaway, Dream Motion, LOGICDATA |
| ✅ Limoss | Limoss, Stawett |
| ✅ Jensen | Jensen (JMC400, LinON Entry) |
| ✅ Svane | Svane |
| ✅ DewertOkin | Rize, Simmons, Nectar, Resident, Symphony |
| ✅ Serta | Serta Motion Perfect |
| ✅ Mattress Firm 900 | Mattress Firm, iFlex |
| ✅ Nectar | Nectar |
| ✅ Malouf | Malouf, Structures |
| ✅ BedTech | BedTech |
| ✅ Sleepy's Elite | Sleepy's |
| ✅ Vibradorm | Vibradorm |
| ✅ SUTA Smart Home | SUTA |
| ✅ TiMOTION AHF | TiMOTION |
| ✅ Rondure | 1500 Tilt Base |
| ✅ Remacro | CheersSleep, Jeromes, Slumberland, The Brick |
| ✅ Cool Base | Cool Base (Keeson with fan) |
| ✅ Scott Living | Scott Living |
| ✅ SBI/Q-Plus | Q-Plus (Costco) |
Have one of these? Let us know how well it works!
Just try it! The integration auto-detects most beds. Install it and see if your bed shows up.
Didn't auto-detect? Check the Supported Actuators guide to find your bed's actuator brand, then add it manually.
Still stuck? Open an issue with your bed brand/model and we'll help!
Other beds: Eight Sleep and Sleep Number have their own integrations.
WiFi and cloud-based beds won't be supported — this is a Bluetooth-only integration for the reasons stated in the link.
- Open HACS in Home Assistant
- Search for "Adjustable Bed"
- Click Install
- Restart Home Assistant
Copy custom_components/adjustable_bed to your config/custom_components/ directory and restart.
Your bed should auto-discover via Bluetooth. If not:
- Go to Settings → Devices & Services → Add Integration
- Search for "Adjustable Bed"
- Enter your bed's Bluetooth address or select from discovered devices
To adjust settings after setup, click the gear icon on your device in Settings → Devices & Services.
Quick reference
| Setting | Description |
|---|---|
| Motor Count | 2 (back/legs), 3 (adds head), or 4 (adds feet) |
| Has Massage | Enable if your bed has massage |
| Protocol Variant | Usually auto-detected, override if needed |
| Motor Pulse Settings | Fine-tune movement timing |
| Disable Angle Sensing | Keep on to allow physical remote to work |
| Jensen PIN | 4-digit PIN for Jensen beds (default: 3060) |
| Octo PIN | 4-digit PIN for Octo beds that require authentication |
| Richmat Remote | Remote model code for Richmat beds |
See the Configuration Guide for all options.
Works with Home Assistant's native Bluetooth:
- Local adapter on your HA host
- ESPHome Bluetooth Proxy for extended range
See the Connection Guide for setup help.
We'd love your help! This integration is actively developed and we're especially looking for:
- Testers - Own a bed we haven't fully tested? Your feedback is invaluable
- Bug reports - Found something wrong? Open an issue
- Code contributions - PRs welcome!
Massive thanks to the smartbed-mqtt developers for their pioneering work reverse-engineering bed protocols!
Migrating from smartbed-mqtt?
This integration replaces smartbed-mqtt with several advantages:
- Uses Home Assistant's native Bluetooth (no ESPHome API issues)
- Works seamlessly with ESPHome Bluetooth proxies
- No MQTT broker required
- Native HA entities
To migrate: Install this integration, configure your bed, verify it works, then remove smartbed-mqtt.
MIT License - see LICENSE for details.
