diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-aiolifx.spec | 407 | ||||
| -rw-r--r-- | sources | 1 | 
3 files changed, 409 insertions, 0 deletions
@@ -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. + +[](https://pypi.python.org/pypi/aiolifx) +[](https://lbesson.mit-licen) +[](https://github.com/psf/black) +[](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. + +[](https://pypi.python.org/pypi/aiolifx) +[](https://lbesson.mit-licen) +[](https://github.com/psf/black) +[](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. + +[](https://pypi.python.org/pypi/aiolifx) +[](https://lbesson.mit-licen) +[](https://github.com/psf/black) +[](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 @@ -0,0 +1 @@ +1a06b2a77cd5eb5019e3e2fd0a453676  aiolifx-0.8.9.tar.gz  | 
