pyluxafor/README.md

102 lines
2.1 KiB
Markdown

# pyluxafor
Helper interface and CLI to interact with [luxafor](https://luxafor.com) products.
## Install
```
git clone git@github.com:fmartingr/pyluxafor.git
cd pyluxafor
python3 setup.py install
```
## Ensure that USB device gets proper permissions
Create UDEV rule in /etc/udev/rules.d/60-luxafor.rules with the following content
```
# add Luxafor LED flag
SUBSYSTEMS=="usb", ATTR{idVendor}=="04d8", ATTR{idProduct}=="f372", MODE:="0666"
```
Reload udev configuration files
```shell
sudo udevadm control --reload && sudo udevadm trigger
```
Reinsert the Luxafor LED light.
## Using the CLI
Pyluxafor provides the `luxa` command to interact with the USB led in the same way as the library
does, with some helper commands to convert colors between RGB/Hex.
```
# Converts between hexadecimal to decimal color notations
luxa hex2dec 00ff00
luxa dec2hex 255 255 0
# Set a flag with a fixed color
luxa set --led=all #ff0000
# Fade
luxa fade --led=all --speed=10 #00ff00
# Strobe
luxa strobe --led=front --speed=100 --repeat=10 #0000ff
# Wave
luxa wave --wave 3 --duration=100 --repeat=200 #ff0000
# Pattern
luxa pattern --repeat=2 2
# Turns off the luxafor
luxa off
# Using the conversion helpers in one command
luxa set $(luxa dec2hex 255 0 0)
```
## Using as a library
``` python
from luxafor import luxafor
lux = luxafor.Luxafor()
# Led types
luxafor.Leds.ALL
luxafor.Leds.FRONT
luxafor.Leds.BACK
luxafor.Leds.LEDn # Where n is a number from 1 to 6, refer to the class
# Set a basic color
# From: off, yellow, green, blue, magenta, cyan, red, white
lux.set_basic_color('green')
# Set a static color
lux.set_color(<red>, <green>, <blue>, <led>)
# Fade to a color
lux.fade(<red>, <green>, <blue>, <led>, <speed>)
# Strobe
lux.strobe(<red>, <green>, <blue>, <led>, <speed>, <repeat times>)
# Wave
# Wave types:
# 1: Short wave
# 2: Long wave
# 3: Overlapping short wave
# 4: Overlapping long wave
lux.wave(<red>, <green>, <blue>, <led>, <wave type>, <duration>, <repeat times>)
# Enable predefined pattern
# Patterns from 1 to 8
lux.pattern(<pattern number>, <repeat>)
# Turn off the luxafor
lux.turn_off()
```