import sys, struct, time, serial 'connects to a fnordlicht' """ http://github.com/fd0/fnordlicht/blob/master/doc/PROTOCOL """ class Fnordlicht: tty = '' verbose = False def __init__(self, tty, verbose = False, addr = 255): self.tty = tty self.addr = addr if verbose: self.verbose = True print 'using tty "%s", address "%s"' % (self.tty, self.addr) def __send(self, data): if self.verbose: print 'sending package:',data # pad data package with 0-characters for i in range(15 - len(data)): data.append(0) try: # open serial port at '19200,8N1', 1s timeout ser = serial.Serial(self.tty, 19200, timeout=1) for i in range(15): ser.write(chr(data[i])) ser.flush() ser.close() except: print 'unable to send string on %s: %s' % (self.tty, sys.exc_info()[0]) def sync(self): if self.verbose: print 'sync()' data = [] for i in range(14): data.append(0x1b) data.append(self.addr) self.__send(data) def fade_rgb(self, r, g, b, step, delay): if self.verbose: print 'fade_rgb(%d, %d, %d, %d, %d)' % (r, g, b, step, delay) data = [self.addr, 0x01] data.append(step) data.append(delay) data.append(r) data.append(g) data.append(b) self.__send(data) def fade_hsv(self, h, s, v, step, delay): if self.verbose: print 'fade_hsv(%d, %d, %d, %d, %d)' % (h, s, v, step, delay) data = [self.addr, 0x02] data.append(step) data.append(delay) data.append(ord(struct.pack('