summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-aiolifx.spec407
-rw-r--r--sources1
3 files changed, 409 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..3df6dca 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/aiolifx-0.8.9.tar.gz
diff --git a/python-aiolifx.spec b/python-aiolifx.spec
new file mode 100644
index 0000000..ab94d96
--- /dev/null
+++ b/python-aiolifx.spec
@@ -0,0 +1,407 @@
+%global _empty_manifest_terminate_build 0
+Name: python-aiolifx
+Version: 0.8.9
+Release: 1
+Summary: API for local communication with LIFX devices over a LAN with asyncio.
+License: MIT
+URL: http://github.com/frawau/aiolifx
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/2f/20/00800ec774732b03c94f07e25165db3bfe8b5c68e07bd1d686e55deebc6c/aiolifx-0.8.9.tar.gz
+BuildArch: noarch
+
+Requires: python3-bitstring
+Requires: python3-ifaddr
+
+%description
+# aiolifx
+
+aiolifx is a Python 3/asyncio library to control Lifx LED lightbulbs over your LAN.
+
+[![PyPI version fury.io](https://badge.fury.io/py/aiolifx.svg)](https://pypi.python.org/pypi/aiolifx)
+[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-licen)
+[![GITHUB-BADGE](https://github.com/frawau/aiolifx/workflows/black/badge.svg)](https://github.com/psf/black)
+[![Downloads](https://pepy.tech/badge/aiolifx/month)](https://pepy.tech/project/aiolifx)
+
+Most of it was taken from Meghan Clarkk lifxlan package (https://github.com/mclarkk)
+and adapted to Python 3 (and asyncio obviously)
+
+# Installation
+
+We are on PyPi so
+
+ pip3 install aiolifx
+or
+ python3 -m pip install aiolifx
+
+After installation, the utility
+
+ aiolifx
+
+can be used to test/control devices.
+
+NOTE: When installing with Python 3.4, the installation produce an error message
+ (syntax error). This can be safely ignored.
+
+
+# How to use
+
+Essentially, you create an object with at least 2 methods:
+
+ - register
+ - unregister
+
+You then start the LifxDiscovery task in asyncio. It will register any new light it finds.
+All the method communicating with the bulb can be passed a callback function to react to
+the bulb response. The callback should take 2 parameters:
+
+ - a light object
+ - the response message
+
+
+The easiest way is to look at the file in the examples directory. "Wifi" and "Uptime" use
+a callback to print the info when it is returned.
+
+
+In essence, the test program is this
+
+ class bulbs():
+ """ A simple class with a register and unregister methods
+ """
+ def __init__(self):
+ self.bulbs=[]
+
+ def register(self,bulb):
+ self.bulbs.append(bulb)
+
+ def unregister(self,bulb):
+ idx=0
+ for x in list([ y.mac_addr for y in self.bulbs]):
+ if x == bulb.mac_addr:
+ del(self.bulbs[idx])
+ break
+ idx+=1
+
+ def readin():
+ """Reading from stdin and displaying menu"""
+
+ selection = sys.stdin.readline().strip("\n")
+ DoSomething()
+
+ MyBulbs = bulbs()
+ loop = aio.get_event_loop()
+ discovery = alix.LifxDiscovery(loop, MyBulbs)
+ try:
+ loop.add_reader(sys.stdin, readin)
+ discovery.start()
+ loop.run_forever()
+ except:
+ pass
+ finally:
+ discovery.cleanup()
+ loop.remove_reader(sys.stdin)
+ loop.close()
+
+
+Other things worth noting:
+
+ - Whilst LifxDiscovery uses UDP broadcast, the bulbs are
+ connected with Unicast UDP
+
+ - The socket connecting to a bulb is not closed unless the bulb is deemed to have
+ gone the way of the Dodo. I've been using that for days with no problem
+
+ - You can select to used IPv6 connection to the bulbs by passing an
+ IPv6 prefix to LifxDiscovery. It's only been tried with /64 prefix.
+ If you want to use a /48 prefix, add ":" (colon) at the end of the
+ prefix and pray. (This means 2 colons at the end!)
+
+ - I only have Original 1000, so I could not test with other types
+ of bulbs
+
+ - Unlike in lifxlan, set_waveform takes a dictionary with the right
+ keys instead of all those parameters
+
+# Thanks
+
+Thanks to Anders Melchiorsen and Avi Miller for their essential contributions
+
+
+%package -n python3-aiolifx
+Summary: API for local communication with LIFX devices over a LAN with asyncio.
+Provides: python-aiolifx
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-aiolifx
+# aiolifx
+
+aiolifx is a Python 3/asyncio library to control Lifx LED lightbulbs over your LAN.
+
+[![PyPI version fury.io](https://badge.fury.io/py/aiolifx.svg)](https://pypi.python.org/pypi/aiolifx)
+[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-licen)
+[![GITHUB-BADGE](https://github.com/frawau/aiolifx/workflows/black/badge.svg)](https://github.com/psf/black)
+[![Downloads](https://pepy.tech/badge/aiolifx/month)](https://pepy.tech/project/aiolifx)
+
+Most of it was taken from Meghan Clarkk lifxlan package (https://github.com/mclarkk)
+and adapted to Python 3 (and asyncio obviously)
+
+# Installation
+
+We are on PyPi so
+
+ pip3 install aiolifx
+or
+ python3 -m pip install aiolifx
+
+After installation, the utility
+
+ aiolifx
+
+can be used to test/control devices.
+
+NOTE: When installing with Python 3.4, the installation produce an error message
+ (syntax error). This can be safely ignored.
+
+
+# How to use
+
+Essentially, you create an object with at least 2 methods:
+
+ - register
+ - unregister
+
+You then start the LifxDiscovery task in asyncio. It will register any new light it finds.
+All the method communicating with the bulb can be passed a callback function to react to
+the bulb response. The callback should take 2 parameters:
+
+ - a light object
+ - the response message
+
+
+The easiest way is to look at the file in the examples directory. "Wifi" and "Uptime" use
+a callback to print the info when it is returned.
+
+
+In essence, the test program is this
+
+ class bulbs():
+ """ A simple class with a register and unregister methods
+ """
+ def __init__(self):
+ self.bulbs=[]
+
+ def register(self,bulb):
+ self.bulbs.append(bulb)
+
+ def unregister(self,bulb):
+ idx=0
+ for x in list([ y.mac_addr for y in self.bulbs]):
+ if x == bulb.mac_addr:
+ del(self.bulbs[idx])
+ break
+ idx+=1
+
+ def readin():
+ """Reading from stdin and displaying menu"""
+
+ selection = sys.stdin.readline().strip("\n")
+ DoSomething()
+
+ MyBulbs = bulbs()
+ loop = aio.get_event_loop()
+ discovery = alix.LifxDiscovery(loop, MyBulbs)
+ try:
+ loop.add_reader(sys.stdin, readin)
+ discovery.start()
+ loop.run_forever()
+ except:
+ pass
+ finally:
+ discovery.cleanup()
+ loop.remove_reader(sys.stdin)
+ loop.close()
+
+
+Other things worth noting:
+
+ - Whilst LifxDiscovery uses UDP broadcast, the bulbs are
+ connected with Unicast UDP
+
+ - The socket connecting to a bulb is not closed unless the bulb is deemed to have
+ gone the way of the Dodo. I've been using that for days with no problem
+
+ - You can select to used IPv6 connection to the bulbs by passing an
+ IPv6 prefix to LifxDiscovery. It's only been tried with /64 prefix.
+ If you want to use a /48 prefix, add ":" (colon) at the end of the
+ prefix and pray. (This means 2 colons at the end!)
+
+ - I only have Original 1000, so I could not test with other types
+ of bulbs
+
+ - Unlike in lifxlan, set_waveform takes a dictionary with the right
+ keys instead of all those parameters
+
+# Thanks
+
+Thanks to Anders Melchiorsen and Avi Miller for their essential contributions
+
+
+%package help
+Summary: Development documents and examples for aiolifx
+Provides: python3-aiolifx-doc
+%description help
+# aiolifx
+
+aiolifx is a Python 3/asyncio library to control Lifx LED lightbulbs over your LAN.
+
+[![PyPI version fury.io](https://badge.fury.io/py/aiolifx.svg)](https://pypi.python.org/pypi/aiolifx)
+[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-licen)
+[![GITHUB-BADGE](https://github.com/frawau/aiolifx/workflows/black/badge.svg)](https://github.com/psf/black)
+[![Downloads](https://pepy.tech/badge/aiolifx/month)](https://pepy.tech/project/aiolifx)
+
+Most of it was taken from Meghan Clarkk lifxlan package (https://github.com/mclarkk)
+and adapted to Python 3 (and asyncio obviously)
+
+# Installation
+
+We are on PyPi so
+
+ pip3 install aiolifx
+or
+ python3 -m pip install aiolifx
+
+After installation, the utility
+
+ aiolifx
+
+can be used to test/control devices.
+
+NOTE: When installing with Python 3.4, the installation produce an error message
+ (syntax error). This can be safely ignored.
+
+
+# How to use
+
+Essentially, you create an object with at least 2 methods:
+
+ - register
+ - unregister
+
+You then start the LifxDiscovery task in asyncio. It will register any new light it finds.
+All the method communicating with the bulb can be passed a callback function to react to
+the bulb response. The callback should take 2 parameters:
+
+ - a light object
+ - the response message
+
+
+The easiest way is to look at the file in the examples directory. "Wifi" and "Uptime" use
+a callback to print the info when it is returned.
+
+
+In essence, the test program is this
+
+ class bulbs():
+ """ A simple class with a register and unregister methods
+ """
+ def __init__(self):
+ self.bulbs=[]
+
+ def register(self,bulb):
+ self.bulbs.append(bulb)
+
+ def unregister(self,bulb):
+ idx=0
+ for x in list([ y.mac_addr for y in self.bulbs]):
+ if x == bulb.mac_addr:
+ del(self.bulbs[idx])
+ break
+ idx+=1
+
+ def readin():
+ """Reading from stdin and displaying menu"""
+
+ selection = sys.stdin.readline().strip("\n")
+ DoSomething()
+
+ MyBulbs = bulbs()
+ loop = aio.get_event_loop()
+ discovery = alix.LifxDiscovery(loop, MyBulbs)
+ try:
+ loop.add_reader(sys.stdin, readin)
+ discovery.start()
+ loop.run_forever()
+ except:
+ pass
+ finally:
+ discovery.cleanup()
+ loop.remove_reader(sys.stdin)
+ loop.close()
+
+
+Other things worth noting:
+
+ - Whilst LifxDiscovery uses UDP broadcast, the bulbs are
+ connected with Unicast UDP
+
+ - The socket connecting to a bulb is not closed unless the bulb is deemed to have
+ gone the way of the Dodo. I've been using that for days with no problem
+
+ - You can select to used IPv6 connection to the bulbs by passing an
+ IPv6 prefix to LifxDiscovery. It's only been tried with /64 prefix.
+ If you want to use a /48 prefix, add ":" (colon) at the end of the
+ prefix and pray. (This means 2 colons at the end!)
+
+ - I only have Original 1000, so I could not test with other types
+ of bulbs
+
+ - Unlike in lifxlan, set_waveform takes a dictionary with the right
+ keys instead of all those parameters
+
+# Thanks
+
+Thanks to Anders Melchiorsen and Avi Miller for their essential contributions
+
+
+%prep
+%autosetup -n aiolifx-0.8.9
+
+%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-aiolifx -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Mar 07 2023 Python_Bot <Python_Bot@openeuler.org> - 0.8.9-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..70e2a6b
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+1a06b2a77cd5eb5019e3e2fd0a453676 aiolifx-0.8.9.tar.gz