aioshelly 5.1.0
pip install aioshelly==5.1.0
Released:
Asynchronous library to control Shelly devices.
Navigation
Unverified details
These details have not been verified by PyPIProject links
Meta
- License: Apache License 2.0
- Author: Paulus Schoutsen
- Requires: Python >=3.9
Classifiers
- Intended Audience
- Operating System
- Programming Language
- Topic
Project description
Aioshelly
Asynchronous library to control Shelly devices
This library is under development
Requires Python >= 3.9 and uses asyncio, aiohttp and socket.
Gen1 Device (Block/CoAP) example:
import asyncio
from pprint import pprint
import aiohttp
from aioshelly.block_device import COAP, BlockDevice
from aioshelly.common import ConnectionOptions
from aioshelly.exceptions import (
DeviceConnectionError,
FirmwareUnsupported,
InvalidAuthError,
)
async def test_block_device():
"""Test Gen1 Block (CoAP) based device."""
options = ConnectionOptions("192.168.1.165", "username", "password")
async with aiohttp.ClientSession() as aiohttp_session, COAP() as coap_context:
try:
device = await BlockDevice.create(aiohttp_session, coap_context, options)
except FirmwareUnsupported as err:
print(f"Device firmware not supported, error: {repr(err)}")
return
except InvalidAuthError as err:
print(f"Invalid or missing authorization, error: {repr(err)}")
return
except DeviceConnectionError as err:
print(f"Error connecting to {options.ip_address}, error: {repr(err)}")
return
for block in device.blocks:
print(block)
pprint(block.current_values())
print()
if __name__ == "__main__":
asyncio.run(test_block_device())
Gen2 (RPC/WebSocket) device example:
import asyncio
from pprint import pprint
import aiohttp
from aioshelly.common import ConnectionOptions
from aioshelly.exceptions import (
DeviceConnectionError,
FirmwareUnsupported,
InvalidAuthError,
)
from aioshelly.rpc_device import RpcDevice, WsServer
async def test_rpc_device():
"""Test Gen2 RPC (WebSocket) based device."""
options = ConnectionOptions("192.168.1.188", "username", "password")
ws_context = WsServer()
await ws_context.initialize(8123)
async with aiohttp.ClientSession() as aiohttp_session:
try:
device = await RpcDevice.create(aiohttp_session, ws_context, options)
except FirmwareUnsupported as err:
print(f"Device firmware not supported, error: {repr(err)}")
return
except InvalidAuthError as err:
print(f"Invalid or missing authorization, error: {repr(err)}")
return
except DeviceConnectionError as err:
print(f"Error connecting to {options.ip_address}, error: {repr(err)}")
return
pprint(device.status)
if __name__ == "__main__":
asyncio.run(test_rpc_device())
Included examples
The repository includes two examples to quickly try it out.
Connect to a device and print its status whenever we receive a state change:
python3 example.py -ip <ip> [-u <username>] [-p <password]
Connect to all the devices in devices.json
at once and print their status:
python3 example.py -d -i
Show usage help:
python3 example.py -h
Contribution guidelines
Object hierarchy and property/method names should match the Shelly API.
Project details
Unverified details
These details have not been verified by PyPIProject links
Meta
- License: Apache License 2.0
- Author: Paulus Schoutsen
- Requires: Python >=3.9
Classifiers
- Intended Audience
- Operating System
- Programming Language
- Topic
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 aioshelly-5.1.0.tar.gz
.
File metadata
- Download URL: aioshelly-5.1.0.tar.gz
- Upload date:
- Size: 22.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
8abc93c0dc8d3b772476188a54b146350ed9d07732d07e89e97818134dee3e49
|
|
MD5 |
856f19bcfc05f7d96c8d0fb2ff70d171
|
|
BLAKE2b-256 |
50fd466c28951555565b815bbb6c06777a62c7a7386cf36dccc676974090dfca
|
File details
Details for the file aioshelly-5.1.0-py3-none-any.whl
.
File metadata
- Download URL: aioshelly-5.1.0-py3-none-any.whl
- Upload date:
- Size: 25.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
f0ea7912c93616f6c7e599194f3591e5c33ebe07e10d55a85a5823a3101df96a
|
|
MD5 |
1d96d2b585b9b5ca8a59b46e29d3fe9c
|
|
BLAKE2b-256 |
bbfce504587743c76b5121c74c6f6f8b79758e4428a09e67bac535420671f184
|