This project aims to enable remote control of adjustable smart beds from HomeAssistant.
NOTE: The following requires an ESPHome BLE Proxy
An MQTT broker is required. The Mosquitto official Add-On is recommended. Go to Add-ons and search for MQTT, then follow the provided instructions.
For BLE controlled beds a dedicated ESP32 running ESPHome's bluetooth proxy is required. Due to limitations in ESPHome, specifically since 2023.7 only one connection can use the bluetooth proxy of an ESP32 at a time, the BLE proxy will need to not be added (or disabled if already added) to HomeAssistant. Use the ESPHome Ready-Made Projects page to create an ESPHome bluetooth proxy and join it to your network.
To use this you must set at least one email and password as shown in the sample configuration.
It is possible to configure multiple users for one or more sleeptracker beds. Although it is possible to configure two users for the same bed, it is necessary if the represent a split bed.
The default bed type is tempur
, but can be adjusted by specifying beautyrest
or serta
using the optional type field on each user.
e.g.
- email: me@example.org
password: some strong password
type: tempur
sleeptrackerRefreshFrequency
is in minutes.
This uses the same api used by the iOS and Android apps, so it is possible that this will break if the apps are changed. I will attempt to maintain it where feasible, but also open to PRs.
This uses the Chinese cloud called xlink - there is no guarantees that this will work.
You must specify an ipAddress
(or DNS name), friendlyName
, and remoteStyle
This uses local connection via tcp - please ensure the add-on has access to network devices.
Initial prototyping was only possible due to assistance from Wozman on Discord.
You must specify at least one Logicdata controller with name
and friendlyName
, and optionally ipAddress
. If an ipAddress
is not specified UDP discovery will be used to get the ipAddress
.
This uses local connection via http and udp - please ensure the add-on has access to network devices.
Initial prototyping was only possible due to assistance from James on Discord.
You must specify at least one bleProxy as demonstrated in the config defaults. You also need to supply at least one Richmat controller with name
, friendlyName
, remoteCode
, and optionally stayConnected
.
Setting stayConnected
to true
will stop you from being able to use the app to control the bed if the bed only accepts one Bluetooth connection.
Support for this was only possible due to assistance from getrav on Discord. This was reverse engineered from a Sven & Son bed, so your mileage may vary.
You must specify at least one bleProxy as demonstrated in the config defaults. You also need to supply at least one Linak controller with name
, friendlyName
, and optionally hasMassage
This remains connected to the bed controller and due to the bed only accepting one connection it will stop you from using the app or remote to control the bed.
Initial prototyping was only possible due to assistance from jascdk on Discord.
You must specify at least one bleProxy as demonstrated in the config defaults. You also need to supply at least one Solace controller with name
and friendlyName
.
This remains connected to the bed controller and due to the bed only accepting one connection it will stop you from using the app to control the bed.
Initial prototyping was only possible due to assistance from Bonopaws on Discord.
You must specify at least one bleProxy as demonstrated in the config defaults. You also need to supply at least one MotoSleep controller with name
, friendlyName
, and optionally stayConnected
.
Setting stayConnected
to true
will stop you from being able to use the app to control the bed if the bed only accepts one Bluetooth connection.
Initial prototyping was only possible due to assistance from waynebowie99 on Discord.
You must specify at least one bleProxy as demonstrated in the config defaults. You also need to supply at least one Reverie controller with name
and friendlyName
.
This remains connected to the bed controller and due to the bed only accepting one connection it will stop you from using the app to control the bed.
Initial prototyping was only possible due to assistance from Vitaliy on Discord.
You must specify at least one bleProxy as demonstrated in the config defaults. You also need to supply at least one Leggett & Platt controller with name
and friendlyName
. This supports Gen2 (Richmat) and Okin variants that can be controlled by the LP Control app.
This remains connected to the bed controller and due to the bed only accepting one connection it will stop you from using the app to control the bed.
Initial prototyping was only possible due to assistance from MarcusW on Discord.
You must specify at least one bleProxy as demonstrated in the config defaults. You also need to supply at least one Okimat controller with name
, friendlyName
and remoteCode
.
Support for this was only possible due to assistance from david_nagy, corne & PT on Discord.
Keeson motor controllers are used by many bed manufacturers including (but not limited to) Member's Mark, Purple, ErgoMotion. The prototype was tested using the Member's Mark Premier Adjustable Base bed variant.
You must specify at least one bleProxy as demonstrated in the config defaults. You also need to supply at least one Keeson controller with name
and friendlyName
.
This remains connected to the bed controller and due to the bed only accepting one connection it will stop you from using the app to control the bed.
Initial prototyping was only possible due to assistance from @alanbixby on Discord.
For help with setup, or for sharing feedback please join the Discord server https://discord.gg/Hf3kpFjbZs