diff options
Diffstat (limited to 'ledctl.py')
| -rw-r--r-- | ledctl.py | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/ledctl.py b/ledctl.py deleted file mode 100644 index da42efa..0000000 --- a/ledctl.py +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/python - -import argparse -import board -import neopixel -import time - -from os.path import exists - -# 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 = 1 -leds_num = 0 -leds_array = neopixel.NeoPixel(board.D18, leds_max) - -# restore LED array from state file -statefile = '/tmp/ledctl.state' - -if exists(statefile): - #print('reading ' + statefile) - - with open(statefile, 'r') as f: - lines = f.readlines() - i = 0; - for line in lines: - values = [ int(number) for number in line.rstrip().split(' ')] - if (i < leds_max): - leds_array[i] = (values[0], values[1], values[2]); - i = i + 1 - f.close() - -# 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), - 'cyan': (0, 255, 255), - 'pink': (255, 0, 255), - 'boot': (63, 15, 0), - 'reboot' : (63, 15, 0), - 'ready': (0, 15, 0), - 'halt' : (0, 0, 0), - 'poweroff' : (0, 0, 0), - 'kexec' : (63, 0, 63), - } - return switch.get(colorname, (255, 255, 255)) - -def hexval(letter): - switch = { - '0': 0, - '1': 1, - '2': 2, - '3': 3, - '4': 4, - '5': 5, - '6': 6, - '7': 7, - '8': 8, - '9': 9, - 'A': 10, - 'a': 10, - 'B': 11, - 'b': 11, - 'C': 12, - 'c': 12, - 'D': 13, - 'd': 13, - 'E': 14, - 'e': 14, - 'F': 15, - 'f': 15, - } - return switch.get(letter, 0) - -if args.color: - #print('color ' + args.color) - if args.color[:1] == '#': - red = 16 * hexval(args.color[1:2]) + hexval(args.color[2:3]); - green = 16 * hexval(args.color[3:4]) + hexval(args.color[4:5]); - blue = 16 * hexval(args.color[5:6]) + hexval(args.color[6:7]); - leds_color = (red, green, blue); - #print ('color %d %d %d' % leds_color) - - else: - leds_color = rgbval(args.color); - -if (leds_num > 0): - #print('setting LED %d' % leds_num) - - leds_array[leds_num - 1] = leds_color -else: - #print('setting all LEDs') - - leds_array.fill(leds_color) - -# write LED array to state file - -#print('writing ' + statefile) - -with open(statefile, 'w') as f: - for i in range(leds_max): - for c in range(3): - f.write ('%d ' % leds_array[i][c]) - f.write('\n'); - - f.close() - |
