From b259cee0ce76f16f6289eb405296af3e5f7bac2a Mon Sep 17 00:00:00 2001 From: Christian Colglazier Date: Sat, 5 Aug 2023 19:13:02 -0400 Subject: [PATCH] Lights set from config --- aquadmx.py | 45 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/aquadmx.py b/aquadmx.py index 3de7f59..d9fc3d5 100644 --- a/aquadmx.py +++ b/aquadmx.py @@ -8,16 +8,35 @@ from stupidArtnet import StupidArtnetServer from homeassistant_api import Processing, Client from homeassistant_api.processing import process_json +# Globals +dataBuffer = [] + +def setLight(device, data): + start = device.getStartChannel() + print('{}'.format(device.getDeviceID())) + print(data[start], data[start+1], data[start+2], data[start+3]) + if device.getLightType() == LightType.DIMMER: + light.turn_on(entity_id=device.getDeviceID(), + brightness=data[start], + transition=0) + elif device.getLightType() == LightType.RGB: + light.turn_on(entity_id=device.getDeviceID(), + brightness=data[start], + transition=0, + rgb_color=[data[start+1], data[start+2], data[start+3]]) + # DMX callback for changes to the universe. def dmx_callback(data): - light.turn_on(entity_id='light.christian_s_bedroom_left_desk_lamp', - brightness=data[0], - transition=0, - rgb_color=[data[1], data[2], data[3]]) - light.turn_on(entity_id='light.christian_s_bedroom_lamp_right', - brightness=data[4], - transition=0, - rgb_color=[data[5], data[6], data[7]]) + global dataBuffer + if dataBuffer: + diffs = [i[0] for i in enumerate(data) if data[i[0]] != dataBuffer[i[0]]] + for d in u1.getDevices(): + setLight(d, data) + else: + # Set all lights on first + for d in u1.getDevices(): + setLight(d, data) + dataBuffer = data # def configList(config, key): @@ -47,8 +66,14 @@ class DMXDevice(object): return self.numChannels def setStartChannel(self, start): self.startChannel = start + def getStartChannel(self): + return self.startChannel def getNumChannels(self): return self.numChannels + def getLightType(self): + return self.lightType + def getDeviceID(self): + return self.deviceID class DMXUniverse(object): @@ -62,6 +87,8 @@ class DMXUniverse(object): self.channels += device.getNumChannels() def getChannels(self): return self.channels + def getDevices(self): + return self.devices # Configs config = configparser.ConfigParser() @@ -77,7 +104,7 @@ light = client.get_domain('light') # Lights u1 = DMXUniverse() -dimmers =configOptionalList(config['Lights'], 'dimmer') +dimmers = configOptionalList(config['Lights'], 'dimmer') for l in dimmers: u1.addDevice(DMXDevice(l, LightType.DIMMER)) rgbs = configOptionalList(config['Lights'], 'rgb')