A python library for interacting with the SmartThings cloud API build with asyncio and aiohttp.
Project description
pysmartthings
A python library for interacting with the SmartThings cloud API build with asyncio and aiohttp.
Features
The package is still in beta, but the following features are available:
- Locations: List, Get
- Rooms: List, Get, Create, Update, Delete
- Devices: List, Get, Command, Status
- Apps: List, Get, Create, Update, Delete, Settings Get & Update, OAuth: Get, Update, & Generate
- InstalledApps: List, Get, Delete
- Subscriptions: List, Get, Create, Delete, Delete All
- Scenes: List, Execute
- OAuth: Generate refresh/access token pair
Installation
pip install pysmartthings
or
pip install --use-wheel pysmartthings
Usage
Initialization
The SmartThings class encapsulates the API operations and the constructor accepts the aiohttp WebSession and your personal access token.
import aiohttp
import pysmartthings
token = 'PERSONAL_ACCESS_TOKEN'
async with aiohttp.ClientSession() as session:
api = pysmartthings.SmartThings(session, token)
# ...
Locations
A list of locations in SmartThings can be retrieved by invoking the coroutine locations().
locations = await api.locations()
print(len(locations))
location = locations[0]
print(location.name)
print(location.location_id)
Outputs:
2
'Test Home'
'5c03e518-118a-44cb-85ad-7877d0b302e4'
Devices
A list of devices can be retrieved by invoking the coroutine devices(location_ids=None, capabilities=None, device_ids=None). The optional parameters allow filtering the returned list.
devices = await api.devices()
print(len(devices))
device = devices[0]
print(device.device_id)
print(device.name)
print(device.label)
print(device.capabilities)
Outputs:
19
'0d38d5ca-705f-44f7-89bd-36a8cf73678d'
'GE In-Wall Smart Dimmer'
'Back Patio Light'
['switch', 'switchLevel', 'refresh', 'indicator', 'button', 'sensor', 'actuator', 'healthCheck', 'light']
The current status of the device is populated when the coroutine status.refresh() is called. The DeviceStatus class represents the current values of the capabilities and provides several normalized property accessors.
await device.status.refresh()
print(device.status.values)
print(device.status.switch)
print(device.status.level)
Outputs:
{'button': 'pressed', 'numberOfButtons': None, 'supportedButtonValues': None, 'indicatorStatus': 'when off', 'switch': 'on', 'checkInterval': 1920, 'healthStatus': None, 'DeviceWatch-DeviceStatus': None, 'level': 100}
True
100
Device Commands
You can execute a command on a device by calling the coroutine command(capability, command, args=None) function. The capability parameter corresponds to one of the capabilities detected and command is one of the define commands. args is an array of parameters to pass to the command (optional). See the SmartThings Capability Reference for more information.
result = await device.command("switch", "on")
assert result == True
result = await device.command("switchLevel", "setLevel", [75, 2])
assert result == True
Devices with the switch capability have the following coroutines:
result = await device.switch_on()
assert result == True
result = await device.switch_off()
assert result == True
Devices with the switchLevel capability have the following function that sets the target brightness level and transitions using a specific duration (seconds).
result = await device.set_level(75, 2)
assert result == True
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pysmartthings-0.7.0.tar.gz.
File metadata
- Download URL: pysmartthings-0.7.0.tar.gz
- Upload date:
- Size: 37.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.5.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91890a1ec35c6dc418d115aa43ae3f66f98404ae6b5b30af391b13db6c4fe210
|
|
| MD5 |
a2be1f38e4e3e03cfc26be66a9ac3bce
|
|
| BLAKE2b-256 |
e1f9087f28a6b3de8ae374c67c6fa8e503664f4e40b800712fd3bacdd093fcbf
|
File details
Details for the file pysmartthings-0.7.0-py3-none-any.whl.
File metadata
- Download URL: pysmartthings-0.7.0-py3-none-any.whl
- Upload date:
- Size: 50.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.5.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b13a6b786fa58e195413373218af0e675998b0b95a64af20a8d4e7ebea1cf4d
|
|
| MD5 |
10baa29282682c96c0e9a35f7a538f98
|
|
| BLAKE2b-256 |
886011e50e2468c8f233327689bfe566fe84698b8beef664317ae4a22cd8b85f
|