viri-leds-dmx-sacn/lights/common.py

44 lines
1,001 B
Python
Raw Normal View History

2023-08-07 11:39:15 +00:00
import logging
from colorsys import hsv_to_rgb
2023-08-07 11:39:15 +00:00
LOG = logging.getLogger('DMX')
2023-08-07 12:48:18 +00:00
2023-08-07 11:39:15 +00:00
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]}')
2023-08-07 11:39:15 +00:00
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()