From 21afb3e1f0654f52d279db83d805057c3a93456f Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Wed, 12 Apr 2023 04:46:44 +0000 Subject: automatic import of python-aioshelly --- python-aioshelly.spec | 480 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 480 insertions(+) create mode 100644 python-aioshelly.spec (limited to 'python-aioshelly.spec') diff --git a/python-aioshelly.spec b/python-aioshelly.spec new file mode 100644 index 0000000..959fa02 --- /dev/null +++ b/python-aioshelly.spec @@ -0,0 +1,480 @@ +%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 -- cgit v1.2.3