A simple python API client to control Sengled smart devices
Project description
Sengled Python Client
A simple Python client to control Sengled light and plug accessories.
There are other accessories but this was only tested with these three devices:
- A19 element color plus (E11-N1EA)
- A19 element classic (E11-G13)
- Smart plug (E1C-NB6)
Installation
pip install sengled-client
Usage
Create the API client:
import sengled
api = sengled.api(
# The username/password that you used to create your mobile account in
# the Sengled Home app.
username="your-username@example.com",
password="your-secure-password",
# Optional path to persist the session across multiple process
# starts and reduce the number of logins.
session_path="/tmp/sengled.pickle",
# Prints details of the api request/responses when True, defaults to false.
debug=True
)
Alternatively, set SENGLED_*
environment variables that match the api arguments.
import sengled
api = sengled.api_from_env()
List all devices
devices = api.get_device_details()
List lamps that support colors
colored = api.filter_colored_lamps()
List lamps that support color temperature
temperature = api.filter_color_temperature_lamps()
The API can be used to modify a list of devices or single devices
api.set_on(devices)
api.set_brightness(devices, 100)
api.set_color(colored, [255, 0, 0])
api.set_color_temperature(temperature, 100)
api.set_off(devices[0])
api.set_on_off(devices, True)
You can search for single devices
api.find_by_id("B0CE18140000EB41") #=> SengledLampDevice
api.find_by_name("Office Bulb 1") #=> SengledLampDevice
And finally you can operate directly on SengledLampDevice
s
bulb = api.find_by_name("Office Bulb 1")
bulb.on()
bulb.set_brightness(50)
bulb.set_color_temperature(50)
bulb.toggle()
Or chain the actions:
api.find_by_name("Office Bulb 2") \
.on() \
.set_brightness(50) \
.set_color([0, 0, 255])
Note that all API calls will raise based on status_code via request's
raise_for_status()
method. Action methods will also raise a RuntimeError
if the success
field is returned with a value of False
.
How this came about?
This was reverse engineered from multiple different repositories found on GitHub as well as Charles.app and some guessing. See also:
- https://github.com/j796160836/homebridge-sengled/
- https://github.com/mpomery/sengled-element-postman/blob/master/Sengled%20Element%20API.postman_collection.json
- https://github.com/sroehl/sengled-python
- https://github.com/AHerridge/BetterSengled/blob/master/device.py
- https://github.com/NoxPhoenix/noxbot/blob/68281bac10aa6a939f617d1ba148944338566491/clients/sengledClient.js
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file sengled-client-0.0.2.tar.gz
.
File metadata
- Download URL: sengled-client-0.0.2.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6179ff662789c417396592ad622f8ea3e081ae0b6d90b53f5bf00fbde1c089a0 |
|
MD5 | 9ac51fa5fa62582845615a588d2ed13e |
|
BLAKE2b-256 | 04f1c25ae5974fb57e748e21ef606942c0fe98297768086cd2f6fe51c20e8f14 |
File details
Details for the file sengled_client-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: sengled_client-0.0.2-py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0cee111f7693e0fca92f19b6b50dbb0c8d39e03fdcbac03e2c541e1177b0125 |
|
MD5 | 6cb7fc917701e6ef6a30359588019657 |
|
BLAKE2b-256 | fb08d94e892d8e5f017fc4d76ec5deb439a6213eeb293224db4bb36403e3621b |