Skip to main content

ASync SleepIQ API

Project description

AsyncSleepIQ

AsyncSleepIQ is an library for accessing the SleepIQ API from Python. SleepIQ is an addon for SleepNumber beds.

Installation

pip install asyncsleepiq

Usage

The library is structured with classes SleepIQBed, SleepIQSleeper, and SleepIQFoundation that get updated with data fetched through the API.

After creating an intsance of AsyncSleepIQ() the login function should be called, followed by the init_beds() function to initialize the data structures and fetch the static data from the API. Following that, the fetch_bed_statuses() function can be called to get updated bed occupancy and sleep number values.

There are two authentication methods available: The older API with key parameter and the newer cookie-based Authentication header. As of Feb-2022 both work equally well.

The login() function should only be called once when the program is started, the fetch_bed_statuses() can be called more frequently to get the bed state. When implementing, do not poll the API by calling login each time, instead keep the same AsyncSleepIQ object and fetch data as needed. The library will re-authenticate automtically if the original authentication expires.

Here is a full example

import asyncio
from asyncsleepiq import AsyncSleepIQ, LOGIN_KEY, LOGIN_COOKIE

email = "user@example.com"
password = "passw0rd"

async def main():        
    api = AsyncSleepIQ(login_method=LOGIN_COOKIE)

    print(f"Logging in as {email}...")
    await api.login(email, password)

    print("Initializing bed data...")
    await api.init_beds()
    await api.fetch_bed_statuses()
    print("Beds:")
    for bed in api.beds.values(): 
        print(bed)

    bed = list(api.beds.values())[0]
    await bed.fetch_pause_mode()
    print (f"Pause mode: {bed.paused}")
    await bed.set_pause_mode(not bed.paused)   
    await bed.fetch_pause_mode()
    print (f"New Pause mode: {bed.paused}") 

    print("Calibrating...")
    await bed.calibrate()
    print("Stopping pump...")
    await bed.stop_pump()

asyncio.get_event_loop().run_until_complete(main())

Future Development

Without documentation for the API, development requires obvserving how other interfaces interact with it. Given the hardware dependencies are fairly high, any future development requires someone with the appropriate bed to be able to obvserve and test against.

Special Thanks

Thanks to all the other people that have tried to dig into this API, especially the projects:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asyncsleepiq-1.5.3.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

asyncsleepiq-1.5.3-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

File details

Details for the file asyncsleepiq-1.5.3.tar.gz.

File metadata

  • Download URL: asyncsleepiq-1.5.3.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for asyncsleepiq-1.5.3.tar.gz
Algorithm Hash digest
SHA256 4c31c528b89f36698056f0f90e34a8a445c56d1f8a3cc21d480fab2c02ab7e92
MD5 bfb058fca27c1f57210c2b349c864e02
BLAKE2b-256 3085ed91d3f8f5024adf45cda727e6a44a23d03c7a261598e84d5432a67de1bf

See more details on using hashes here.

File details

Details for the file asyncsleepiq-1.5.3-py3-none-any.whl.

File metadata

  • Download URL: asyncsleepiq-1.5.3-py3-none-any.whl
  • Upload date:
  • Size: 23.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for asyncsleepiq-1.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2c9db37255f09c1ca6d81241358f34563bdcd612687705c3ad1c66d88092da15
MD5 41f58e65de7bdb1691ab156d5d0452f0
BLAKE2b-256 7379b94e52c794cbb797eb1bc6aa888fbb35e2c06355a515f3442b199393e101

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page