class PyGlowCPU(object): """Main PyGlowCPU app.""" def __init__(self, method=1): """Setup daemon stuff.""" self.stdin_path = '/dev/null' self.stdout_path = '/dev/tty' self.stderr_path = '/dev/tty' self.pidfile_path = '/var/run/pyglowcpu.pid' self.pidfile_timeout = 5 self.method = method def run(self): """Entry point for DaemonRunner.do_action().""" self.piglow = PyGlow() atexit.register(lambda: self.piglow.all(0)) mth = getattr(self, 'method%d' % (self.method)) mth() def method1(self): """CPU load increases ring usage every 20%.""" while True: cpu = psutil.cpu_percent() self.piglow.all(0) if 0 < cpu < 10: pass elif 10 < cpu < 20: self.piglow.red(20) elif cpu < 20: self.piglow.red(20) self.piglow.orange(20) elif cpu < 40: self.piglow.red(20) self.piglow.orange(20) self.piglow.yellow(20) elif cpu < 60: self.piglow.red(20) self.piglow.orange(20) self.piglow.yellow(20) self.piglow.green(20) elif cpu < 80: self.piglow.red(50) self.piglow.orange(50) self.piglow.yellow(50) self.piglow.green(50) self.piglow.blue(50) else: self.piglow.all(100) sleep(0.2) def method2(self): """Represent 20% on arm1.""" while True: cpu = psutil.cpu_percent() self.piglow.all(0) if 0 < cpu < 10: pass elif 10 < cpu < 20: self.piglow.led1(20) elif cpu < 20: self.piglow.led1(20) self.piglow.led2(20) elif cpu < 40: self.piglow.led1(20) self.piglow.led2(20) self.piglow.led3(20) elif cpu < 60: self.piglow.led1(30) self.piglow.led2(30) self.piglow.led3(30) self.piglow.led4(30) elif cpu < 80: self.piglow.led1(60) self.piglow.led2(60) self.piglow.led3(60) self.piglow.led4(60) self.piglow.led5(60) else: self.piglow.arm1(100) sleep(0.2) def method3(self): """Represent 20% on arm2.""" while True: cpu = psutil.cpu_percent() self.piglow.all(0) if 0 < cpu < 10: pass elif 10 < cpu < 20: self.piglow.led7(20) elif cpu < 20: self.piglow.led7(20) self.piglow.led8(20) elif cpu < 40: self.piglow.led7(20) self.piglow.led8(20) self.piglow.led9(20) elif cpu < 60: self.piglow.led7(30) self.piglow.led8(30) self.piglow.led9(30) self.piglow.led10(30) elif cpu < 80: self.piglow.led7(60) self.piglow.led8(60) self.piglow.led9(60) self.piglow.led10(60) self.piglow.led11(60) else: self.piglow.arm2(100) sleep(0.2) def method4(self): """Represent 20% on arm3.""" while True: cpu = psutil.cpu_percent() self.piglow.all(0) if 0 < cpu < 10: pass elif 10 < cpu < 20: self.piglow.led13(20) elif cpu < 20: self.piglow.led13(20) self.piglow.led14(20) elif cpu < 40: self.piglow.led13(20) self.piglow.led14(20) self.piglow.led15(20) elif cpu < 60: self.piglow.led13(30) self.piglow.led14(30) self.piglow.led15(30) self.piglow.led16(30) elif cpu < 80: self.piglow.led13(60) self.piglow.led14(60) self.piglow.led15(60) self.piglow.led16(60) self.piglow.led17(60) else: self.piglow.arm3(100) sleep(0.2) def method5(self): """Represent using gamma.""" while True: cpu = psutil.cpu_percent() self.piglow.all(int(cpu*2)) sleep(0.2) def method6(self): """Rotate the arms CW.""" armiter = cycle((1,2,3)) for target_arm in armiter: cpu = psutil.cpu_percent() self.piglow.all(0) target_arm -= 1 # 0-based indexing a = np.array([0,1,2,3,4,5]) p = np.floor(np.percentile(a, cpu)) for x in range(int(p)+1): f = getattr(self.piglow, 'led%d' % self.piglow.arm_led_list[target_arm][x]) f(20) sleep(0.2) def method7(self): """Rotate the arms CCW.""" armiter = cycle((3,2,1)) for target_arm in armiter: cpu = psutil.cpu_percent() self.piglow.all(0) target_arm -= 1 # 0-based indexing a = np.array([0,1,2,3,4,5]) p = np.floor(np.percentile(a, cpu)) for x in range(int(p)+1): f = getattr(self.piglow, 'led%d' % self.piglow.arm_led_list[target_arm][x]) f(20) sleep(0.2)