summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-15 07:00:57 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-15 07:00:57 +0000
commit9e93dc8ad22d0ca5afab0811931296dfa879f8d9 (patch)
treedbbeb5471224fbda13815e864f10984e14e2cf4d
parent9d4c082a9c48d459901ff1887a726c7241cfc767 (diff)
automatic import of python-pyrecswitch
-rw-r--r--.gitignore1
-rw-r--r--python-pyrecswitch.spec442
-rw-r--r--sources1
3 files changed, 444 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..c5703eb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/pyrecswitch-1.0.2.tar.gz
diff --git a/python-pyrecswitch.spec b/python-pyrecswitch.spec
new file mode 100644
index 0000000..3ca688c
--- /dev/null
+++ b/python-pyrecswitch.spec
@@ -0,0 +1,442 @@
+%global _empty_manifest_terminate_build 0
+Name: python-pyrecswitch
+Version: 1.0.2
+Release: 1
+Summary: A pure-python interface for controlling Ankuoo RecSwitch MS6126
+License: AGPLv3+
+URL: https://github.com/marcolertora/pyrecswitch
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/38/86/951d3733cbab92f6a887c662a36e548a2764b0d62136dc839594bd381941/pyrecswitch-1.0.2.tar.gz
+BuildArch: noarch
+
+Requires: python3-pycryptodome
+
+%description
+# PyRecSwitch
+
+A pure-python interface for controlling **Ankuoo RecSwitch MS6126** without the use of mobile app or the cloud platform.
+
+List of similar devices that should work:
+
+* Ankuoo MS6126
+* Ankuoo REC 4800009
+* Lumitek CSW201 NEO WiFi
+
+## Overview
+
+This package provides a high-level interface for controlling the device. This interface has been developed
+using *asyncio*, however, if you prefer to use a different stack you can directly invoke the low-level methods
+to parse and compose the messages needed to communicate with the device.
+
+## How it works
+
+RecSwitch use two different protocols to communicate with the world. The first one is used to talk directly
+with the app mobile when it is in the same network of the device. Instead, the second one is used to talk with its own
+cloud platform to allow the app to control the device when it is in a foreign network.
+*PyRecSwitch* implements the first communication protocol.
+
+Some note about the protocol:
+
+* The communication transport is UDP and the port is 18530.
+* The device and the host listen and send message each other to that port.
+* The host send a request message to the device, the device receive the request and send back the response to the host.
+* The request and the response could be associated through an index reported in both messages.
+* Some messages are sent from the device to the broadcast address of its subnet always on the same port. For example,
+the relay status change is notified with a broadcast message.
+* Part of the messages are AES encrypted with a fixed key.
+
+## Installation
+
+```bash
+pip install pyrecswitch
+```
+
+## Usage
+
+First, instantiate the *RSNetwork*.
+```
+from pyrecswitch import RSNetwork
+
+net = RSNetwork()
+```
+
+Generate the datagram endpoint and ensure it a future with *asyncio*.
+```
+listener = net.create_datagram_endpoint()
+
+transport, protocol = loop.run_until_complete(listener)
+```
+
+Register any devices in your network using their own mac-address and ip-address.
+```
+device = net.register_device('F0:FE:6B:XX:XX:XX', '192.168.X.X')
+```
+
+Now, you can access to the device and communicate with it.
+```
+device = net.get_device('F0:FE:6B:XX:XX:XX')
+
+# get device info
+ret = await device.query_module_info()
+
+# get relay status
+ret = await device.get_gpio_status()
+
+# set relay on
+ret = await device.set_gpio_status(True)
+```
+
+That's it!
+
+### Examples
+
+I wrote two simple client examples to explain how the library can be used. Both the examples query the module
+information and toggle the relay status.
+
+* **doc/examples/client.py** high-level client interface
+* **doc/examples/udp_socket_client.py** low-level methods for generating and parsing messages
+
+## Contributing
+
+Contributions are welcome. Here some useful features that could be developed:
+
+* Device discover
+* Device WIFI setup
+* Other device commands
+
+## Authors
+
+* [**Marco Lertora**](https://github.com/marcolertora/) - <marco.lertora@gmail.com>
+
+## Contributors
+
+* [**Gianluigi Tiesi**](https://github.com/sherpya) - <sherpya@gmail.com>
+The one who can find the needle in the haystack, when the needle is an aes key and the haystack is an apk.
+
+## Disclaimer
+
+This project is the result of reverse engineering work, it has been developed without any relation with the device
+manufacturer. No warranty is provided either by the author or by the manufacturer.
+
+## License
+
+This project is licensed under the GNU Affero General Public License v3.0 License - see the [LICENSE](LICENSE.md) file for details
+
+## Links
+
+* Hi Flying Chipset HF-LPB100: http://www.hi-flying.com/index.php?route=product/product/show&product_id=113
+
+* Lumitek CSW201 Ankuoo RecSwitch: http://www.lumitek.cn/en/productsd.php?gid=0&pid=1093
+
+* Lumitek Firmware: https://github.com/mys812/hf
+
+* https://github.com/home-assistant/home-assistant/issues/831
+
+* https://github.com/Diagonactic/Ankuoo
+
+
+
+
+%package -n python3-pyrecswitch
+Summary: A pure-python interface for controlling Ankuoo RecSwitch MS6126
+Provides: python-pyrecswitch
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-pyrecswitch
+# PyRecSwitch
+
+A pure-python interface for controlling **Ankuoo RecSwitch MS6126** without the use of mobile app or the cloud platform.
+
+List of similar devices that should work:
+
+* Ankuoo MS6126
+* Ankuoo REC 4800009
+* Lumitek CSW201 NEO WiFi
+
+## Overview
+
+This package provides a high-level interface for controlling the device. This interface has been developed
+using *asyncio*, however, if you prefer to use a different stack you can directly invoke the low-level methods
+to parse and compose the messages needed to communicate with the device.
+
+## How it works
+
+RecSwitch use two different protocols to communicate with the world. The first one is used to talk directly
+with the app mobile when it is in the same network of the device. Instead, the second one is used to talk with its own
+cloud platform to allow the app to control the device when it is in a foreign network.
+*PyRecSwitch* implements the first communication protocol.
+
+Some note about the protocol:
+
+* The communication transport is UDP and the port is 18530.
+* The device and the host listen and send message each other to that port.
+* The host send a request message to the device, the device receive the request and send back the response to the host.
+* The request and the response could be associated through an index reported in both messages.
+* Some messages are sent from the device to the broadcast address of its subnet always on the same port. For example,
+the relay status change is notified with a broadcast message.
+* Part of the messages are AES encrypted with a fixed key.
+
+## Installation
+
+```bash
+pip install pyrecswitch
+```
+
+## Usage
+
+First, instantiate the *RSNetwork*.
+```
+from pyrecswitch import RSNetwork
+
+net = RSNetwork()
+```
+
+Generate the datagram endpoint and ensure it a future with *asyncio*.
+```
+listener = net.create_datagram_endpoint()
+
+transport, protocol = loop.run_until_complete(listener)
+```
+
+Register any devices in your network using their own mac-address and ip-address.
+```
+device = net.register_device('F0:FE:6B:XX:XX:XX', '192.168.X.X')
+```
+
+Now, you can access to the device and communicate with it.
+```
+device = net.get_device('F0:FE:6B:XX:XX:XX')
+
+# get device info
+ret = await device.query_module_info()
+
+# get relay status
+ret = await device.get_gpio_status()
+
+# set relay on
+ret = await device.set_gpio_status(True)
+```
+
+That's it!
+
+### Examples
+
+I wrote two simple client examples to explain how the library can be used. Both the examples query the module
+information and toggle the relay status.
+
+* **doc/examples/client.py** high-level client interface
+* **doc/examples/udp_socket_client.py** low-level methods for generating and parsing messages
+
+## Contributing
+
+Contributions are welcome. Here some useful features that could be developed:
+
+* Device discover
+* Device WIFI setup
+* Other device commands
+
+## Authors
+
+* [**Marco Lertora**](https://github.com/marcolertora/) - <marco.lertora@gmail.com>
+
+## Contributors
+
+* [**Gianluigi Tiesi**](https://github.com/sherpya) - <sherpya@gmail.com>
+The one who can find the needle in the haystack, when the needle is an aes key and the haystack is an apk.
+
+## Disclaimer
+
+This project is the result of reverse engineering work, it has been developed without any relation with the device
+manufacturer. No warranty is provided either by the author or by the manufacturer.
+
+## License
+
+This project is licensed under the GNU Affero General Public License v3.0 License - see the [LICENSE](LICENSE.md) file for details
+
+## Links
+
+* Hi Flying Chipset HF-LPB100: http://www.hi-flying.com/index.php?route=product/product/show&product_id=113
+
+* Lumitek CSW201 Ankuoo RecSwitch: http://www.lumitek.cn/en/productsd.php?gid=0&pid=1093
+
+* Lumitek Firmware: https://github.com/mys812/hf
+
+* https://github.com/home-assistant/home-assistant/issues/831
+
+* https://github.com/Diagonactic/Ankuoo
+
+
+
+
+%package help
+Summary: Development documents and examples for pyrecswitch
+Provides: python3-pyrecswitch-doc
+%description help
+# PyRecSwitch
+
+A pure-python interface for controlling **Ankuoo RecSwitch MS6126** without the use of mobile app or the cloud platform.
+
+List of similar devices that should work:
+
+* Ankuoo MS6126
+* Ankuoo REC 4800009
+* Lumitek CSW201 NEO WiFi
+
+## Overview
+
+This package provides a high-level interface for controlling the device. This interface has been developed
+using *asyncio*, however, if you prefer to use a different stack you can directly invoke the low-level methods
+to parse and compose the messages needed to communicate with the device.
+
+## How it works
+
+RecSwitch use two different protocols to communicate with the world. The first one is used to talk directly
+with the app mobile when it is in the same network of the device. Instead, the second one is used to talk with its own
+cloud platform to allow the app to control the device when it is in a foreign network.
+*PyRecSwitch* implements the first communication protocol.
+
+Some note about the protocol:
+
+* The communication transport is UDP and the port is 18530.
+* The device and the host listen and send message each other to that port.
+* The host send a request message to the device, the device receive the request and send back the response to the host.
+* The request and the response could be associated through an index reported in both messages.
+* Some messages are sent from the device to the broadcast address of its subnet always on the same port. For example,
+the relay status change is notified with a broadcast message.
+* Part of the messages are AES encrypted with a fixed key.
+
+## Installation
+
+```bash
+pip install pyrecswitch
+```
+
+## Usage
+
+First, instantiate the *RSNetwork*.
+```
+from pyrecswitch import RSNetwork
+
+net = RSNetwork()
+```
+
+Generate the datagram endpoint and ensure it a future with *asyncio*.
+```
+listener = net.create_datagram_endpoint()
+
+transport, protocol = loop.run_until_complete(listener)
+```
+
+Register any devices in your network using their own mac-address and ip-address.
+```
+device = net.register_device('F0:FE:6B:XX:XX:XX', '192.168.X.X')
+```
+
+Now, you can access to the device and communicate with it.
+```
+device = net.get_device('F0:FE:6B:XX:XX:XX')
+
+# get device info
+ret = await device.query_module_info()
+
+# get relay status
+ret = await device.get_gpio_status()
+
+# set relay on
+ret = await device.set_gpio_status(True)
+```
+
+That's it!
+
+### Examples
+
+I wrote two simple client examples to explain how the library can be used. Both the examples query the module
+information and toggle the relay status.
+
+* **doc/examples/client.py** high-level client interface
+* **doc/examples/udp_socket_client.py** low-level methods for generating and parsing messages
+
+## Contributing
+
+Contributions are welcome. Here some useful features that could be developed:
+
+* Device discover
+* Device WIFI setup
+* Other device commands
+
+## Authors
+
+* [**Marco Lertora**](https://github.com/marcolertora/) - <marco.lertora@gmail.com>
+
+## Contributors
+
+* [**Gianluigi Tiesi**](https://github.com/sherpya) - <sherpya@gmail.com>
+The one who can find the needle in the haystack, when the needle is an aes key and the haystack is an apk.
+
+## Disclaimer
+
+This project is the result of reverse engineering work, it has been developed without any relation with the device
+manufacturer. No warranty is provided either by the author or by the manufacturer.
+
+## License
+
+This project is licensed under the GNU Affero General Public License v3.0 License - see the [LICENSE](LICENSE.md) file for details
+
+## Links
+
+* Hi Flying Chipset HF-LPB100: http://www.hi-flying.com/index.php?route=product/product/show&product_id=113
+
+* Lumitek CSW201 Ankuoo RecSwitch: http://www.lumitek.cn/en/productsd.php?gid=0&pid=1093
+
+* Lumitek Firmware: https://github.com/mys812/hf
+
+* https://github.com/home-assistant/home-assistant/issues/831
+
+* https://github.com/Diagonactic/Ankuoo
+
+
+
+
+%prep
+%autosetup -n pyrecswitch-1.0.2
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> 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-pyrecswitch -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.2-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..10c9625
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+127f237346ec44b00a3757771adb1f41 pyrecswitch-1.0.2.tar.gz