Pyschlage
Pyschlage is a Python 3 library for interacting with Schlage Encode WiFi locks.
Basic usage
>>> from pyschlage import Auth, Schlage
>>> # Create a Schlage object and authenticate with your credentials.
>>> s = Schlage(Auth("username", "password"))
>>> # List the locks attached to your account.
>>> locks = s.locks()
>>> # Print the name of the first lock
>>> print(locks[0].name)
'My lock'
>>> # Lock the first lock.
>>> locks[0].lock()
Managing access codes
>>> from pyschlage.code import AccessCode
>>> lock = locks[0]
>>> # Add a new access code to a lock.
>>> guest_code = AccessCode(name="Guest", code="1234")
>>> lock.add_access_code(guest_code)
>>> # List the access codes currently on the lock.
>>> lock.refresh_access_codes()
>>> for access_code in lock.access_codes.values():
... print(access_code.name, access_code.code)
...
Guest 1234
>>> # Remove an access code from the lock.
>>> guest_code.delete()
Reading activity logs
>>> # Fetch the 10 most recent log entries, newest first.
>>> for log_entry in lock.logs(limit=10, sort_desc=True):
... print(log_entry.created_at, log_entry.message)
Handling errors
All requests to the Schlage cloud service can raise
exceptions.
>>> from pyschlage.exceptions import NotAuthorizedError, UnknownError
>>> try:
... locks = s.locks()
... except NotAuthorizedError:
... print("Invalid username or password.")
... except UnknownError as ex:
... print(f"Something went wrong: {ex}")
Installation
Pip
To install pyschlage, run this command in your terminal:
$ pip install pyschlage
Source code
Pyschlage is actively developed on Github, where the code is always available.
You can either clone the public repository:
$ git clone https://github.com/dknowles2/pyschlage
Or download the latest tarball:
$ curl -OL https://github.com/dknowles2/pyschlage/tarball/main
Once you have a copy of the source, you can embed it in your own Python package, or install it into your site-packages easily:
$ cd pyschlage
$ python -m pip install .