summaryrefslogtreecommitdiff
path: root/ledctl.py
blob: 8f04110c2033810b52804147b8d137c3dd5bb7d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/python

import argparse
import board
import neopixel
import time

# parse command line arguments

# TODO parse multiple LEDs e.g. ./ledctl --led 1 red --led 2 white 

parser = argparse.ArgumentParser(description='Set LED colors')

parser.add_argument('--led', type=int, help='LED number to control, starting at 1')
parser.add_argument('color', type=str, help='color or command')

args = parser.parse_args();

# initialize LED array
leds_max = 6
leds_num = 0
leds_array = neopixel.NeoPixel(board.D18, leds_max)

# TODO restore LED array from state file
statefile = '/tmp/ledctl.state'

# figure out if we want to control a single LED or all of them
if args.led:
    if (args.led < 1) or (args.led > leds_max):
        parser.error("led must be within range")
    else:
        leds_num = args.led;

# default color is white
leds_color = (255, 255, 255)

def rgbval(colorname):
    switch = {
            'on': (255, 255, 255),
            'off': (0, 0, 0),
            'white': (255, 255, 255),
            'black': (0, 0, 0),
            'red': (255, 0, 0),
            'green': (0, 255, 0),
            'blue': (0, 0, 255),
            'yellow': (255, 255, 0),
            }
    return switch.get(colorname, 'Valid colors are black, white, ired, green, blue, yellow, on, off')

if args.color:
    leds_color = rgbval(args.color);

if (leds_num > 0):
    leds_array[leds_num] = leds_color
else:
    leds_array.fill(leds_color)

# TODO write LED array to state file