Skip to content

Latest commit

 

History

History
192 lines (158 loc) · 13 KB

File metadata and controls

192 lines (158 loc) · 13 KB

Supported Actuators

This document provides an overview of supported bed brands. Click on a brand name for detailed protocol information and command references.

Brand Status Key Features
Linak ✅ Supported Position feedback, 6 memory presets, massage, lights
Keeson ✅ Supported Position feedback (Ergomotion), 4 presets, massage, lights
Richmat ✅ Supported 1-5 memory presets, massage (discrete), RGB lights + timer, sync mode, motors 5-7
MotoSleep ✅ Supported 2 memory presets, massage, lights, Zero-G
Octo ✅ Supported Two protocol variants, optional PIN auth, RGBW lights
Solace ✅ Supported 5 memory presets, lift/tilt, Zero-G, massage (zones + timers), lights (11 levels)
Leggett & Platt ✅ Supported Gen2: motor control + RGB lighting; Okin: tilt/lumbar, massage
Reverie ✅ Supported Position control (0-100%), 4 presets, wave massage
Okimat/Okin ✅ Supported 4 memory presets, massage, lights (requires pairing)
Jiecang ✅ Supported Motor control, 3 memory slots, massage, split bed support
Kaidi 🧪 Needs Testing Mouselet-based beds, Flat/Zero-G/Anti-Snore, 4 memory slots
Jensen ✅ Supported Go-to-position, variable massage (0-10), dynamic feature detection
DewertOkin ✅ Supported 79 brands (many older Rize/Simmons models), multiple protocols
Serta ✅ Supported Massage intensity control, Zero-G/TV/Lounge
Mattress Firm 900 ✅ Supported Lumbar control, 3-level massage, built-in presets
Nectar ✅ Supported Lumbar control, massage, lights, Zero-G/Anti-Snore/Lounge
Malouf ✅ Supported 2 memory presets, lumbar, head tilt, massage, lights
BedTech ✅ Supported 5 presets, 4 massage modes, dual-base support
Sleep Number 🧪 Needs Testing Newer Fuzion: direct position, side selection, presence, climate. Older BAM/MCR: split firmness, foundation presets, under-bed lights
Sleepy's Elite ✅ Supported Lumbar (BOX15), Zero-G, Flat presets
Svane ✅ Supported LinonPI protocol, multi-service
Vibradorm ✅ Supported Position feedback, 4 memory presets, lights
SUTA Smart Home 🧪 Needs Testing AT command protocol, 4 memory slots, discrete lights
TiMOTION AHF 🧪 Needs Testing 5-motor bitmask protocol, toggle lights, AHF name detection
Limoss 🧪 Needs Testing TEA-encrypted packets, position feedback, dynamic capability query
Cool Base 🧪 Needs Testing Keeson BaseI5 with fan control
Scott Living 🧪 Needs Testing 9-byte protocol
SBI/Q-Plus 🧪 Needs Testing Position feedback via pulse lookup
Rondure 🧪 Needs Testing 4 motors, split-king, massage, lights
Remacro ✅ Supported 4 motors, 8 presets, RGB lights, heat
Logicdata 🧪 Needs Testing XXTEA encrypted, 2 memory slots, lights, massage
Okin CB35 🧪 Needs Testing 7-byte Nordic UART (Sealy Posturematic), 6 motors, massage, lights
Okin CST 🧪 Needs Testing 14-byte dual-field protocol (Rize MF900)

Configuration

For detailed configuration options including motor pulse settings, protocol variants, and bed-specific settings, see the Configuration Guide.


Okin Protocol Family

Several bed brands use Okin-based BLE controllers. While they share common roots, each uses a different command format or write method:

Bed Type Command Format Write Method Pairing Required Detection
Okimat 6-byte (32-bit cmd) UUID 62741525-... ✅ Yes Name patterns or fallback
Okin 64-bit 10-byte (64-bit cmd) Nordic UART or UUID ❌ No Manual selection
Leggett & Platt Okin 6-byte (32-bit cmd) UUID 62741525-... ✅ Yes Name patterns
Nectar 7-byte (32-bit cmd) UUID 62741525-... ❌ No Name contains "nectar"
DewertOkin 6-byte (32-bit cmd) Handle 0x0013 ❌ No Name patterns
Mattress Firm 900 7-byte (32-bit cmd) Nordic UART ❌ No Name starts with "iflex"
Malouf 8-byte (32-bit cmd) Nordic UART or FFE5 ❌ No Service UUID detection
Keeson/Ergomotion 8-byte (32-bit cmd) Nordic UART ❌ No Name patterns
Okin CB35 7-byte (1-byte cmd) Nordic UART ❌ No Name starts with "Star35"
Okin CST 14-byte (dual 32-bit) UUID 62741525-... ✅ Yes Name patterns

Key differences:

  • 6-byte vs 7-byte vs 8-byte vs 10-byte: Different command structures - not interchangeable
  • 32-bit vs 64-bit commands: Okin 64-bit uses 8-byte command values instead of 4-byte
  • UUID vs Handle: DewertOkin writes to a BLE handle instead of a characteristic UUID
  • Nordic UART: Many newer beds use the Nordic UART service

If auto-detection picks the wrong type: Go to Settings → Devices & Services → Adjustable Bed → Configure and change the bed type.

Detection priority (for beds with Okin service UUID):

  1. Name contains "nectar" → Nectar
  2. Name contains "leggett", "l&p", or "adjustable base" → Leggett & Platt Okin
  3. Name contains "okimat", "okin rf", or "okin ble" → Okimat
  4. Fallback → Okimat (with warning logged)

Not Supported

WiFi and Cloud-Based Beds

Won't be supported, read reasons here. This is a Bluetooth-only integration. WiFi and cloud beds require fundamentally different architecture and would be better served by a separate integration.

Beds that won't be supported:

  • Sleeptracker AI — Tempur-Pedic Ergo, BeautyRest SmartMotion, Serta Motion (cloud-connected models)
  • Logicdata eLift / desk controllers — Uses local UDP/HTTP, not Bluetooth
  • ErgoWifi — Uses Xlink cloud platform

Note: LOGICDATA MOTIONrelax BLE beds are supported under Jiecang (Lierda protocol).

If you have one of these beds, consider running smartbed-mqtt as an add-on or make a separate integration for WiFi/Cloud adjustable beds.

Other Integrations

These beds have their own dedicated integrations:


Identifying Your Bed Type

  1. Check if auto-discovery finds your bed: Settings → Integrations → Add Integration → Adjustable Bed. If your bed appears in the list, the integration likely detected the correct type.

  2. Check the remote or controller for brand markings.

  3. Look at the device name (shown during manual setup or in diagnostics):

    • QMS-*, QMS2*, QMS3*, QMS4*, S3-*, S4-*, S5-*, S6-*, SealyMF* → Solace (Woosa Sleep, Sealy, QMS beds)
    • HHC* → MotoSleep
    • DPG* or Desk* → Linak
    • Mouselet* → Kaidi
    • Nectar* → Nectar
    • Okimat*, Okin RF*, Okin BLE* → Okimat
    • Leggett*, L&P*, Adjustable Base* → Leggett & Platt
    • Ergomotion* or Ergo* → Keeson/Ergomotion
    • KSBT03* or KSBT04* → Keeson KSBT (includes some Ergomotion Sync beds such as Rio 6.0)
    • Jiecang*, JC-*, or Glide* → Jiecang
    • Dewert*, A H Beard*, Hankook* → DewertOkin
    • Serta* or Motion Perfect* → Serta
    • Octo* → Octo (Standard variant)
    • iFlex* → Mattress Firm 900
    • Malouf*, Structures* → Malouf
    • Smart bed *Sleep Number (Climate 360 / FlexFit, Fuzion)
    • MAC-address-like name such as 64:DB:A0:07:DD:02 + service ffffd1fd-...Sleep Number (i8 / 360 FlexFit 2, BAM/MCR)
    • Sleepy* → Sleepy's Elite (try BOX24 first, BOX15 if lumbar needed)
    • VMAT* → Vibradorm
    • SUTA-* → SUTA Smart Home (bed-frame variants)
    • AHF* → TiMOTION AHF
    • Limoss*, Stawett* → Limoss
    • OKIN-BLE* → Keeson (Sino variant, BetterLiving/Dynasty/INNOVA)
    • CheersSleep*, Jeromes*, Slumberland*, The Brick* → Remacro
    • Rize* → Often DewertOkin, but Mouselet* devices are Kaidi
    • Simmons*, Glory*, Symphony* → See DewertOkin
    • Star35*Okin CB35 (Sealy Posturematic)
    • SILVERmotion* or Logicdata manufacturer ID → Logicdata
  4. Use the support bundle to find service UUIDs: If unsure, use Browse unsupported BLE devices to find the MAC address, then run adjustable_bed.generate_support_bundle with target_address. The output includes service UUIDs:

    • Service 62741523-... → Okin family (see Okin Protocol Family)
    • Service 45e25100-... → Leggett & Platt Gen2
    • Service 0000aa5c-... → Octo Star2 variant
    • Service 01000001-... → Malouf (New OKIN)
    • Service 0000ffe5-... → Malouf (Legacy OKIN) or Keeson OKIN variant
    • Service 0000fff0-... + name SUTA-* → SUTA Smart Home
    • Service 6e400001-... + name AHF* → TiMOTION AHF
    • Service 0000fee9-... → Richmat WiLinke or BedTech
    • Service 00001525-... → Vibradorm
    • Service 0000ffe0-... + name QMS-* or S3-* etc. → Solace (Woosa Sleep, Sealy, QMS)
    • Service 6e403587-... → Remacro
    • Service 09d23fae-...Sleep Number (Climate 360 / FlexFit, Fuzion)
    • Service ffffd1fd-...Sleep Number (i8 / 360 FlexFit 2, BAM/MCR)
    • Service 0000ffc0-... or 9e5d1e47-... + name Mouselet* → Kaidi
    • Service b9934c43-... → Logicdata SimplicityFrame
  5. Fallback: If the device isn't visible to Home Assistant at all, use nRF Connect on your phone to verify it exists and check the service UUIDs.

If your bed isn't auto-detected, use manual configuration and try different bed types.


Credits

This integration relies heavily on protocol research from the smartbed-mqtt project by Richard Hopton, which documented BLE protocols for many adjustable bed brands.

Community contributors who helped reverse-engineer specific protocols:

Protocol Contributors
Richmat Richard Hopton, getrav, kristofferR
Linak Richard Hopton, jascdk
Solace Richard Hopton, Bonopaws, kristofferR
MotoSleep Richard Hopton, waynebowie99
Reverie Richard Hopton, Vitaliy, kristofferR
Leggett & Platt Richard Hopton, MarcusW
Okimat Richard Hopton, david_nagy, corne, PT, kristofferR
Keeson/Ergomotion Richard Hopton, kristofferR
Octo Richard Hopton, _pm, goedh452, Murp, Brokkert, kristofferR
Jiecang kristofferR
Serta kristofferR
Malouf kristofferR
BedTech kristofferR
Okin 64-bit kristofferR
Sleepy's Elite kristofferR
Jensen kristofferR
Svane kristofferR
Vibradorm kristofferR
SUTA Smart Home kristofferR
TiMOTION AHF kristofferR
Mattress Firm 900 David Delahoz
Nectar MaximumWorf