pySwitchbee
A Python module library to control SwitchBee smart home devices.
Example code usage:
from asyncio import get_event_loop
from aiohttp import ClientSession, ClientTimeout, TCPConnector
from switchbee.api import CentralUnitAPI
from switchbee.device import ApiStateCommand, DeviceType
async def main():
session = ClientSession(
connector=TCPConnector(ssl=False),
timeout=ClientTimeout(total=3),
)
cu = CentralUnitAPI("192.168.50.2", "user", "pass", session)
await cu.connect()
print(f"Central Unit Name: {cu.name}")
print(f"Central Unit MAC: {cu.mac}")
print(f"Central Unit Version: {cu.version}")
devices = await cu.devices
for device in devices:
# set the dimmer lights to 50% brightness
if device.type == DeviceType.Dimmer:
print(
"Discovered Dimmer device called {device.name}"
" current brightness is {device.brigt}"
)
await cu.set_state(device.id, 50)
# set the shutters position to 30% opened
if device.type == DeviceType.Shutter:
print(
"Discovered Shutter device called {device.name}"
" current position is {device.position}"
)
await cu.set_state(device.id, 30)
# turn off switches
if device.type == DeviceType.Switch:
print(
"Discovered Switch device called {device.name}"
" current state is {device.state}"
)
await cu.set_state(device.id, ApiStateCommand.OFF)
# set timer switch on for 10 minutes
if device.type == DeviceType.TimedPower:
print(
"Discovered Timed Power device called {device.name}"
" current state is {device.state} with {device.minutes_left} "
"minutes left until shutdown"
)
await cu.set_state(device.id, 10)
session.close()
if __name__ == "__main__":
get_event_loop().run_until_complete(main())
exit()
Using the CLI tool:
Alternatively, it is possible to control SwitchBee devices using the cli tool switchbee_cli.py as following:
To list devices that currently on:
python switchbee_cli.py -i 192.168.50.2 -u USERNAME -p PASSWORD get_states --only-on
'_state': 'ON',
'hardware': <HardwareType.Switch: 'DIMMABLE_SWITCH'>,
'id': 311,
'name': 'Ceiling',
'type': <DeviceType.Switch: 'SWITCH'>,
'zone': 'Outdoo Storage'}
{ '_state': 'ON',
'hardware': <HardwareType.Switch: 'DIMMABLE_SWITCH'>,
'id': 142,
'name': 'Spotlights',
'type': <DeviceType.Switch: 'SWITCH'>,
'zone': 'Porch'}
To set shutter with device id 392 position 50%:
python switchbee_cli.py -i 192.168.50.2 -u USERNAME -p PASSWORD set_state --device-id 392 --state 50
To turn on Power Timed Switch with device id 450 for 30 minutes:
python switchbee_cli.py -i 192.168.50.2 -u USERNAME -p PASSWORD set_state --device-id 450 --state 30
To turn off light with device id 122:
python switchbee_cli.py -i 192.168.50.2 -u USERNAME -p PASSWORD set_state --device-id 122 --state OFF
Metadata
Release files for pyswitchbee 1.8.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyswitchbee-1.8.3.tar.gz | 16.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyswitchbee-1.8.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.5 kB
Release files / pyswitchbee-1.8.3.tar.gz
| Download URL | pyswitchbee-1.8.3.tar.gz |
|---|---|
| Size | 16.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
62b4599b84f4b71f46369f9e7c57defb725812db99987d55eafde4efdc4df0ec
|
|
BLAKE2b-256 checksum How to use checksums |
fe2cd6434e4c6c173733a0976907925d44380b08d00d616afb59b7ded94f8719
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.10
|
Release files / pyswitchbee-1.8.3-py3-none-any.whl
| Download URL | pyswitchbee-1.8.3-py3-none-any.whl |
|---|---|
| Size | 19.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
668ac21d1f74b08cd8aafb86e7ba442b27fc90f2923ad32acb2999e3450e1b8f
|
|
BLAKE2b-256 checksum How to use checksums |
8c492948120ee1366434122439c738d81ab7fe791628d030d89e8887550bd0cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.10
|