%global _empty_manifest_terminate_build 0 Name: python-aioshelly Version: 5.3.1 Release: 1 Summary: Asynchronous library to control Shelly devices. License: Apache License 2.0 URL: https://github.com/home-assistant-libs/aioshelly Source0: https://mirrors.nju.edu.cn/pypi/web/packages/09/97/83984e757775b1222f058fd2aa9fab1aa7feed5a20d2dbe12fabeef6aa3c/aioshelly-5.3.1.tar.gz BuildArch: noarch Requires: python3-bluetooth-data-tools Requires: python3-aiohttp Requires: python3-orjson %description # Aioshelly Asynchronous library to control Shelly devices **This library is under development** ## Requirements - Python >= 3.9 - bluetooth-data-tools - aiohttp - orjson ## Install ```bash pip install aioshelly ``` ## Install from Source Run the following command inside this folder ```bash pip install --upgrade . ``` ## Examples ### Gen1 Device (Block/CoAP) example: ```python 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: ```python 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()) ``` ## Example script The repository includes example script to quickly try it out. ### Connect to a device and print its status whenever we receive a state change: ``` python3 example.py -ip [-u ] [-p = 3.9 - bluetooth-data-tools - aiohttp - orjson ## Install ```bash pip install aioshelly ``` ## Install from Source Run the following command inside this folder ```bash pip install --upgrade . ``` ## Examples ### Gen1 Device (Block/CoAP) example: ```python 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: ```python 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()) ``` ## Example script The repository includes example script to quickly try it out. ### Connect to a device and print its status whenever we receive a state change: ``` python3 example.py -ip [-u ] [-p = 3.9 - bluetooth-data-tools - aiohttp - orjson ## Install ```bash pip install aioshelly ``` ## Install from Source Run the following command inside this folder ```bash pip install --upgrade . ``` ## Examples ### Gen1 Device (Block/CoAP) example: ```python 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: ```python 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()) ``` ## Example script The repository includes example script to quickly try it out. ### Connect to a device and print its status whenever we receive a state change: ``` python3 example.py -ip [-u ] [-p > filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-aioshelly -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Wed Apr 12 2023 Python_Bot - 5.3.1-1 - Package Spec generated