An unofficial Home Assistant custom integration for Free Sleep devices.
Note
This integration was only tested with an Eight Sleep Pod 4, and does not guarantee compatibility with other Eight Sleep devices. Some functionality like the Pod 5 base adjustments are not supported at this time.
Some functionality like vitals may not be accurate.
This integration allows you to control and monitor your Free Sleep device directly from Home Assistant. You can adjust bed settings, monitor sleep data, and view historical sleep information.
It creates three devices in Home Assistant:
- A device representing the pod itself, allowing control over the pod.
- Two devices representing each side of the bed, providing access to side-specific settings and data, such as temperature and sleep metrics.
- Control bed settings such as temperature and alarms.
- Monitor sleep data including heart rate, respiratory rate, and HRV.
- View historical sleep data through Home Assistant's UI.
- Enable or disable features like daily priming and away mode.
Installation can be done via HACS (Home Assistant Community Store). The easiest way is to click the button below:
Alternatively, you can follow these steps:
- Navigate to the HACS section in Home Assistant.
- Search for "Free Sleep" and click on it.
- Click "Download" to install the integration.
- Restart Home Assistant.
If you prefer to install the integration manually, follow these steps:
- Copy the contents of the
custom_components/free_sleepdirectory from the repository to your Home Assistant'scustom_components/free_sleepdirectory. - Restart Home Assistant.
After installation, you can configure the integration through the Home Assistant UI:
- Navigate to "Settings" > "Devices & Services".
- Click on "Add Integration" and search for "Free Sleep".
- Follow the prompt to enter the hostname or IP address of your Free Sleep device.
The integration provides the following services that can be called from automations or scripts:
Execute an arbitrary command on the Free Sleep device.
Caution
This is a low-level service that allows you to send arbitrary commands to the Free Sleep device. Use with caution, as incorrect commands may lead to unexpected behaviour.
The command to execute. This should be a valid command supported by the Free Sleep API. A list of commands can be found here.
The value to send with the command, if applicable.
To set the temperature of the bed to 75 degrees (Fahrenheit), you can use the following service call:
service: free_sleep.execute
data:
command: SET_TEMP
value: 75Note that the API expects temperature values in Fahrenheit.
Set the sleep schedule for a specific side of the bed, or both sides. This can be used to set the time to turn on the heating or cooling of the bed, or control alarms.
The side(s) of the bed to set the schedule for. This expects one or multiple device IDs representing the sides of the bed.
The day of the week to set the schedule for. If not provided, the schedule will be set for all days.
An object containing the schedule details. This can be an object containing the
temperatures, power, and/or alarm fields, following the structure defined
in the Free Sleep API.
Note
The temperatures can be specified in Celsisu, Fahrenheit, or Kelvin, depending on the unit system configured in Home Assistant. The integration will handle the conversion to Fahrenheit as required by the Free Sleep API.
To set a schedule for both sides of the bed to turn on heating at 21:00 with a temperature of 23°C, then change to 25°C at 22:00 and 21°C at 07:00, you can use the following service call (assuming Celsius is the configured unit system):
service: free_sleep.set_schedule
data:
side:
- device_id_side_1
- device_id_side_2
schedule:
power:
"on": "21:00"
onTemperature: 23
temperatures:
- time: "22:00"
temperature: 25
- time: "07:00"
temperature: 21To set an alarm for one side of the bed on Mondays and Tuesdays at 07:30 AM, you can use the following service call:
service: free_sleep.set_schedule
data:
side:
- device_id_side_1
day_of_week:
- monday
- tuesday
schedule:
alarm:
time: "07:30"
enabled: trueRefer to the Free Sleep API for more details on the schedule structure and available options.

