import logging from colorsys import hsv_to_rgb LOG = logging.getLogger('DMX') class BaseDMXLight: def __init__(self, address): self.address = address self.intensity = 0 self.red = 0 self.green = 0 self.blue = 0 self.white = 0 def __str__(self): return f'{self.name} ({self.address})' def _dump(self): raise NotImplementedError def dump(self): ret = self._dump() LOG.debug(f'{str(self)} -> {ret[1]}') return ret def rainbow(self, idx, angle, number_of_lights, intensity, brightness): my_degrees_dec = ( (angle + (idx * (360 / number_of_lights))) % 360 / 360 ) r, g, b = hsv_to_rgb( my_degrees_dec, 1, intensity / 100, ) self.red = int(r * 255) self.green = int(g * 255) self.blue = int(b * 255) self.white = 0 self.intensity = brightness return self.dump()