Skip to main content

Unofficial Python API for SmartRent devices

Project description

SmartRent API

PyPI version Supported Python versions PyPI downloads monthly GitHub License Documentation Status Code style: black

smartrent.py is a simple library for SmartRent devices

Uses websockets for communication and supports async functions

Feel free to ⭐️ this repo to get notified about the latest features!

📚 Read the docs! 📚

Supported Devices

This client supports:

  • 🔐 Door Locks
  • 🌡 Thermostats
  • 💧 Leak Sensors
  • 💡 Binary Switches

Usage

Installation

pip install smartrent.py

Getting an API Object

In order to get an api object to interact with, you must login with the async_login function. This starts and handles a web session with SmartRent.

import asyncio

from smartrent import async_login

async def main():
    api = await async_login('<EMAIL>', '<PASSWORD>')

asyncio.run(main())

Getting Devices

You can get lists of your devices from the api with the get_locks, get_thermostats, get_switches and get_leak_sensors functions. You can then interact with the devices with their getter and setter functions.

import asyncio

from smartrent import async_login

async def main():
    api = await async_login('<EMAIL>', '<PASSWORD>')

    lock = api.get_locks()[0]
    locked = lock.get_locked()

    if not locked:
        await lock.async_set_locked(True)

asyncio.run(main())

Automatic Updating

If you need to get live updates to your device object from SmartRent, you can do that by calling start_updater. You can stop getting updates by calling stop_updater.

You can also set a callback function via set_update_callback that will be called when an update is triggered.

For example, if you want to set your thermostat to Dad Mode you can trigger an event every time the cooling_setpoint is changed and just change it back to your own desired value.

import asyncio

from smartrent import async_login

async def main():
    api = await async_login('<EMAIL>', '<PASSWORD>')

    thermo = api.get_thermostats()[0]
    thermo.start_updater()

    CONSTANT_COOL = 80

    async def on_evt():
        if CONSTANT_COOL != thermo.get_cooling_setpoint():
            await thermo.async_set_cooling_setpoint(CONSTANT_COOL)

    thermo.set_update_callback(on_evt)

    while True:
        await asyncio.sleep(60)

asyncio.run(main())

Development

Setting up dev enviornment

pip install -r requirements_test.txt

Running the code formatter

Black is used for quick and easy code formatting

black smartrent

Special thanks

Much inspiration was taken from these projects:

AMcPherran/SmartRent-MQTT-Bridge

natanweinberger/smartrent-python

Burry/homebridge-smartrent

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

TODOs

  • Add support for Two Factor Auth

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

smartrent.py-0.3.0.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

smartrent.py-0.3.0-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file smartrent.py-0.3.0.tar.gz.

File metadata

  • Download URL: smartrent.py-0.3.0.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.9.9 Darwin/20.5.0

File hashes

Hashes for smartrent.py-0.3.0.tar.gz
Algorithm Hash digest
SHA256 fc3bbdc500e2cf3837fc0c5e07cc7b7a0d2808adc29cbbacc1a705b11463328d
MD5 6a4300d8ce32171bedec87b3c7792116
BLAKE2b-256 a28ccd0dbb35041de7943e4b63e01a83a58fa9e28e0e04b007604e85e4cc4b0d

See more details on using hashes here.

File details

Details for the file smartrent.py-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: smartrent.py-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.9.9 Darwin/20.5.0

File hashes

Hashes for smartrent.py-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1c2715d8ff9add8b001a676375b96a77a5d3f3f4b576a1d218e11ad76d044fd6
MD5 2588ba66764e6d7fed3b8a834ee53a7e
BLAKE2b-256 3fc44a876b68e8d86290f3d23fad0884748b7b00e3593a3f472f9f3fa0846924

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