def find_lamp_address(interface, addresses): acabsl_interface.sendSetColor(0, 0, 0, 0, interface) red_addresses, green_addresses = half(addresses) blue_addresses = [] print 'Looking for the lamp\'s address. Press Q to abort.' abort = False while not abort: set_lamps(red_addresses, interface, 255, 0, 0) set_lamps(green_addresses, interface, 0, 255, 0) set_lamps(blue_addresses, interface, 0, 0, 0) result = raw_input("Which color does the lamp have? (r,g,b): ") if result == 'r' and len(red_addresses) == 1: return red_addresses[0] if result == 'r' and len(red_addresses) > 0: blue_addresses += green_addresses red_addresses, green_addresses = half(red_addresses) continue if result == 'g' and len(green_addresses) == 1: return green_addresses[0] if result == 'g' and len(green_addresses) > 0: blue_addresses += red_addresses red_addresses, green_addresses = half(green_addresses) continue if result != '' and result in 'rgb': print "There was an error: The lamp should not have this color" abort = True if result == 'Q': abort = True print "Aborting." return None
def find_lamp_address(interface, addresses): acabsl_interface.sendSetColor(0, 0, 0, 255, interface) red_addresses, green_addresses = half(addresses) blue_addresses = [] print 'Looking for the lamp\'s address. Press Q to abort' abort = False while not abort: set_lamps(red_addresses, interface, 255, 0, 0) set_lamps(green_addresses, interface, 0, 255, 0) set_lamps(blue_addresses, interface, 0, 0, 255) result = raw_input("Which color does the lamp have? (r,g,b): ") if result == 'r' and len(red_addresses) == 1: return red_addresses[0] if result == 'r' and len(red_addresses) > 0: blue_addresses += green_addresses red_addresses, green_addresses = half(red_addresses) continue if result == 'g' and len(green_addresses) == 1: return green_addresses[0] if result == 'g' and len(green_addresses) > 0: blue_addresses += red_addresses red_addresses, green_addresses = half(green_addresses) continue if result != '' and result in 'rgb': print "There was an error: The lamp ahould not have this color" abort = True if result == 'Q': abort = True print "Aborting." return None
def set_lamps(addresses, interface, r, g, b): for address in addresses: acabsl_interface.sendSetColor(address, r, g, b, interface)
def set_interfaces(interfaces, r, g, b): for interface in interfaces: acabsl_interface.sendSetColor(0, r, g, b, interface)
max_address = get_number("Please enter the smallest lamp address (in hexadecimal)[90]: ", 16, 0x90) print "Tested address range: %02X - %02X (%d addresses)"%(min_address, max_address, max_address-min_address+1) addresses = range(min_address, max_address+1) matrix = [[None for x in range(xsize)] for y in range(ysize)] def get_first_unknown_index(matrix): for x in range(len(matrix[0])): for y in range(len(matrix)): if matrix[y][x] == None: return (x,y) return None, None for interface in interfaces: acabsl_interface.sendSetColor(0, 0, 0, 0, interface) def half(l): return l[0:(len(l)+1)/2], l[(len(l)+1)/2:] def set_interfaces(interfaces, r, g, b): for interface in interfaces: acabsl_interface.sendSetColor(0, r, g, b, interface) def set_lamps(addresses, interface, r, g, b): for address in addresses: acabsl_interface.sendSetColor(address, r, g, b, interface) def find_interface(interfaces): set_interfaces(interfaces, 0, 0, 255) red_interfaces, green_interfaces = half(interfaces)
def set_all_lamps(r,g,b): global interfaces if verbose: print "(all)->(%d,%d,%d)"%(r,g,b) for interface in interfaces: acabsl_interface.sendSetColor(0, r, g, b, interface)
serials = os.listdir(path) if len(serials) == 0: print "Found no devices. Aborting." sys.exit(1) print "Found %d serials."%len(serials) serials = [path+'/'+serial for serial in serials] interfaces = range(len(serials)) matrix = [] acabsl_interface.init(serials, interfaces, matrix) def set_lamp((interface,address), r, g, b): acabsl_interface.sendSetColor(address, r, g, b, interface) if verbose: print "(%d,%d)->(%d,%d,%d)"%(interface,address,r,g,b) def set_all_lamps(r,g,b): global interfaces if verbose: print "(all)->(%d,%d,%d)"%(r,g,b) for interface in interfaces: acabsl_interface.sendSetColor(0, r, g, b, interface) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind((UDP_IP,UDP_PORT)) print "Listening on %s:%d..."%(UDP_IP,UDP_PORT)
def set_known_addresses(r, g, b): for x in range(len(matrix[0])): for y in range(len(matrix)): if matrix[y][x] != None and matrix[y][x] != (None, None): acabsl_interface.sendSetColor(matrix[y][x][0], r, g, b, matrix[y][x][1])
if matrix[y][x] != None: last_good = (x, y) if last_good == None: return 0, 0 next_bad = (last_good[0], last_good[1] + 1) if next_bad[1] == ysize: next_bad[0] += 1 next_bad[1] = 0 return next_bad for interface in interfaces: acabsl_interface.sendSetColor(0, 0, 0, 0, interface) def half(l): return l[0:(len(l) + 1) / 2], l[(len(l) + 1) / 2:] def set_interfaces(interfaces, r, g, b): for interface in interfaces: acabsl_interface.sendSetColor(0, r, g, b, interface) def set_lamps(addresses, interface, r, g, b): for address in addresses: acabsl_interface.sendSetColor(address, r, g, b, interface)
for y in range(len(matrix)): if matrix[y][x] != None: last_good = (x,y) if last_good == None: return 0, 0 next_bad = (last_good[0], last_good[1] + 1) if next_bad[1] == ysize: next_bad[0]+=1 next_bad[1]=0 return next_bad for interface in interfaces: acabsl_interface.sendSetColor(0, 0, 0, 0, interface) def half(l): return l[0:(len(l)+1)/2], l[(len(l)+1)/2:] def set_interfaces(interfaces, r, g, b): for interface in interfaces: acabsl_interface.sendSetColor(0, r, g, b, interface) def set_lamps(addresses, interface, r, g, b): for address in addresses: acabsl_interface.sendSetColor(address, r, g, b, interface) def set_known_addresses(r, g, b): for x in range(len(matrix[0])): for y in range(len(matrix)):