From ffc323a390dc84254fb79426ba9414bd8524e9ef Mon Sep 17 00:00:00 2001 From: ruth Date: Wed, 22 Jul 2020 14:12:39 +0100 Subject: [PATCH 01/21] Try forcing default value to be integer. --- custom_components/dmx/light.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index 741d4f7..8a20471 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -469,7 +469,7 @@ def __init__(self, host, universe, port, default_level, self._number_of_channels += 1 # Initialise the DMX channel array with the default values - self._channels = [self._default_level] * self._number_of_channels + self._channels = [int(self._default_level)] * self._number_of_channels # Initialise socket self._socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP @@ -502,7 +502,7 @@ def set_channels(self, channels, value, send_immediately=True): for x, channel in enumerate(channels): default_value = value_arr[min(x, len(value_arr) - 1)] - self._channels[channel-1] = default_value + self._channels[channel-1] = int(default_value) if send_immediately: self.send() From efad74305c174131e916038d5a5c19200e35afb1 Mon Sep 17 00:00:00 2001 From: ruth Date: Wed, 22 Jul 2020 15:12:29 +0100 Subject: [PATCH 02/21] For lights with dimmers, do not send RGB values if brightness is zero. --- custom_components/dmx/light.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index 8a20471..5f19b2b 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -323,16 +323,16 @@ def dmx_values(self): return color_rgb_to_rgbw(*scaled_rgb) elif self._type == CONF_LIGHT_TYPE_DRGB: drgb = [self._brightness] - drgb.extend(self._rgb) + drgbw.extend((self._rgb, [0, 0, 0])[self._brightness > 0]) return drgb elif self._type == CONF_LIGHT_TYPE_DRGBW: drgbw = [self._brightness] - drgbw.extend(self._rgb) + drgbw.extend((self._rgb, [0, 0, 0])[self._brightness > 0]) drgbw.append(self._white_value) return drgbw elif self._type == CONF_LIGHT_TYPE_RGBWD: rgbwd = list() - rgbwd.extend(self._rgb) + drgbw.extend((self._rgb, [0, 0, 0])[self._brightness > 0]) rgbwd.append(self._white_value) rgbwd.append(self._brightness) return rgbwd From f97fbaf2eeffc129af6538fe4c925f0361c9c089 Mon Sep 17 00:00:00 2001 From: ruth Date: Wed, 22 Jul 2020 15:19:37 +0100 Subject: [PATCH 03/21] Fix typos. --- custom_components/dmx/light.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index 5f19b2b..4ab6d37 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -323,7 +323,7 @@ def dmx_values(self): return color_rgb_to_rgbw(*scaled_rgb) elif self._type == CONF_LIGHT_TYPE_DRGB: drgb = [self._brightness] - drgbw.extend((self._rgb, [0, 0, 0])[self._brightness > 0]) + drgb.extend((self._rgb, [0, 0, 0])[self._brightness > 0]) return drgb elif self._type == CONF_LIGHT_TYPE_DRGBW: drgbw = [self._brightness] @@ -332,7 +332,7 @@ def dmx_values(self): return drgbw elif self._type == CONF_LIGHT_TYPE_RGBWD: rgbwd = list() - drgbw.extend((self._rgb, [0, 0, 0])[self._brightness > 0]) + rgbwd.extend((self._rgb, [0, 0, 0])[self._brightness > 0]) rgbwd.append(self._white_value) rgbwd.append(self._brightness) return rgbwd From 4f521ee1c4b94dd25774eb0ed951e4a3c59add64 Mon Sep 17 00:00:00 2001 From: ruth Date: Wed, 22 Jul 2020 15:27:58 +0100 Subject: [PATCH 04/21] Put values the other way round. --- custom_components/dmx/light.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index 4ab6d37..a78d33f 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -323,16 +323,16 @@ def dmx_values(self): return color_rgb_to_rgbw(*scaled_rgb) elif self._type == CONF_LIGHT_TYPE_DRGB: drgb = [self._brightness] - drgb.extend((self._rgb, [0, 0, 0])[self._brightness > 0]) + drgb.extend(([0, 0, 0], self._rgb)[self._brightness > 0]) return drgb elif self._type == CONF_LIGHT_TYPE_DRGBW: drgbw = [self._brightness] - drgbw.extend((self._rgb, [0, 0, 0])[self._brightness > 0]) + drgbw.extend(([0, 0, 0], self._rgb)[self._brightness > 0]) drgbw.append(self._white_value) return drgbw elif self._type == CONF_LIGHT_TYPE_RGBWD: rgbwd = list() - rgbwd.extend((self._rgb, [0, 0, 0])[self._brightness > 0]) + rgbwd.extend(([0, 0, 0], self._rgb)[self._brightness > 0]) rgbwd.append(self._white_value) rgbwd.append(self._brightness) return rgbwd From e5cbfcd42283079a4b261f0cc9d6db0c2c52b098 Mon Sep 17 00:00:00 2001 From: ruth Date: Wed, 22 Jul 2020 15:41:31 +0100 Subject: [PATCH 05/21] Tweak logic for determining if we need self._rgb or [0, 0, 0] --- custom_components/dmx/light.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index a78d33f..23168ee 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -323,16 +323,16 @@ def dmx_values(self): return color_rgb_to_rgbw(*scaled_rgb) elif self._type == CONF_LIGHT_TYPE_DRGB: drgb = [self._brightness] - drgb.extend(([0, 0, 0], self._rgb)[self._brightness > 0]) + drgb.extend(self._rgb if self.brightness > 0 else [0, 0, 0]) return drgb elif self._type == CONF_LIGHT_TYPE_DRGBW: drgbw = [self._brightness] - drgbw.extend(([0, 0, 0], self._rgb)[self._brightness > 0]) + drgbw.extend(self._rgb if self.brightness > 0 else [0, 0, 0]) drgbw.append(self._white_value) return drgbw elif self._type == CONF_LIGHT_TYPE_RGBWD: rgbwd = list() - rgbwd.extend(([0, 0, 0], self._rgb)[self._brightness > 0]) + rgbwd.extend(self._rgb if self.brightness > 0 else [0, 0, 0]) rgbwd.append(self._white_value) rgbwd.append(self._brightness) return rgbwd From 449dee46a84d44c97cd19597b19c994da5f5173b Mon Sep 17 00:00:00 2001 From: ruth Date: Wed, 22 Jul 2020 15:53:18 +0100 Subject: [PATCH 06/21] Log the packet. --- custom_components/dmx/light.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index 23168ee..f7ea372 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -492,7 +492,7 @@ def send(self): packet = self._base_packet[:] packet.extend(self._channels) self._socket.sendto(packet, (self._host, self._port)) - _LOGGER.debug("Sending Art-Net frame") + _LOGGER.debug("Sending Art-Net frame: " + ', '.join([str(x) for x in packet])); def set_channels(self, channels, value, send_immediately=True): # Single value for standard channels, RGB channels will have 3 or more From e007abe791a18cdee9ed32d65df1f648375c71bf Mon Sep 17 00:00:00 2001 From: ruth Date: Wed, 22 Jul 2020 16:00:49 +0100 Subject: [PATCH 07/21] Add extra logging. --- custom_components/dmx/light.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index f7ea372..867d5b0 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -324,17 +324,20 @@ def dmx_values(self): elif self._type == CONF_LIGHT_TYPE_DRGB: drgb = [self._brightness] drgb.extend(self._rgb if self.brightness > 0 else [0, 0, 0]) + _LOGGER.debug("drgb: " + ', '.join([str(x) for x in drgb])); return drgb elif self._type == CONF_LIGHT_TYPE_DRGBW: drgbw = [self._brightness] drgbw.extend(self._rgb if self.brightness > 0 else [0, 0, 0]) drgbw.append(self._white_value) + _LOGGER.debug("drgbw: " + ', '.join([str(x) for x in drgb])); return drgbw elif self._type == CONF_LIGHT_TYPE_RGBWD: rgbwd = list() rgbwd.extend(self._rgb if self.brightness > 0 else [0, 0, 0]) rgbwd.append(self._white_value) rgbwd.append(self._brightness) + _LOGGER.debug("rgbwd: " + ', '.join([str(x) for x in drgb])); return rgbwd elif self._type == CONF_LIGHT_TYPE_SWITCH: if self.is_on: From 38b6881a3514c24f3bb374f53eb122a6fd9e00fa Mon Sep 17 00:00:00 2001 From: ruth Date: Wed, 22 Jul 2020 16:06:28 +0100 Subject: [PATCH 08/21] Fix silly typos. --- custom_components/dmx/light.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index 867d5b0..86149ca 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -330,14 +330,14 @@ def dmx_values(self): drgbw = [self._brightness] drgbw.extend(self._rgb if self.brightness > 0 else [0, 0, 0]) drgbw.append(self._white_value) - _LOGGER.debug("drgbw: " + ', '.join([str(x) for x in drgb])); + _LOGGER.debug("drgbw: " + ', '.join([str(x) for x in drgbw])); return drgbw elif self._type == CONF_LIGHT_TYPE_RGBWD: rgbwd = list() rgbwd.extend(self._rgb if self.brightness > 0 else [0, 0, 0]) rgbwd.append(self._white_value) rgbwd.append(self._brightness) - _LOGGER.debug("rgbwd: " + ', '.join([str(x) for x in drgb])); + _LOGGER.debug("rgbwd: " + ', '.join([str(x) for x in rgbwd])); return rgbwd elif self._type == CONF_LIGHT_TYPE_SWITCH: if self.is_on: From 4257e97189c3a06924ec369116cb7142d34f51af Mon Sep 17 00:00:00 2001 From: ruth Date: Wed, 22 Jul 2020 16:27:37 +0100 Subject: [PATCH 09/21] Only send the white value if the brightness is > 0 --- custom_components/dmx/light.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index 86149ca..90bbe46 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -323,19 +323,19 @@ def dmx_values(self): return color_rgb_to_rgbw(*scaled_rgb) elif self._type == CONF_LIGHT_TYPE_DRGB: drgb = [self._brightness] - drgb.extend(self._rgb if self.brightness > 0 else [0, 0, 0]) + drgb.extend(self._rgb if self._brightness > 0 else [0, 0, 0]) _LOGGER.debug("drgb: " + ', '.join([str(x) for x in drgb])); return drgb elif self._type == CONF_LIGHT_TYPE_DRGBW: drgbw = [self._brightness] - drgbw.extend(self._rgb if self.brightness > 0 else [0, 0, 0]) - drgbw.append(self._white_value) + drgbw.extend(self._rgb if self._brightness > 0 else [0, 0, 0]) + drgbw.append(self._white_value if self.brightness > 0 else 0) _LOGGER.debug("drgbw: " + ', '.join([str(x) for x in drgbw])); return drgbw elif self._type == CONF_LIGHT_TYPE_RGBWD: rgbwd = list() - rgbwd.extend(self._rgb if self.brightness > 0 else [0, 0, 0]) - rgbwd.append(self._white_value) + rgbwd.extend(self._rgb if self._brightness > 0 else [0, 0, 0]) + rgbwd.append(self._white_value if self._brightness > 0 else 0) rgbwd.append(self._brightness) _LOGGER.debug("rgbwd: " + ', '.join([str(x) for x in rgbwd])); return rgbwd From e4cf31b0d83cc6782e817321f0edff4cbdea4ede Mon Sep 17 00:00:00 2001 From: ruth Date: Wed, 22 Jul 2020 16:28:55 +0100 Subject: [PATCH 10/21] Add .project and .pydevproject to .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a2bf2de --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.project +/.pydevproject From d2f7113c0449a89b18272275c2b2460bebd6b1cc Mon Sep 17 00:00:00 2001 From: ruth Date: Sun, 27 Sep 2020 20:19:41 +0100 Subject: [PATCH 11/21] Tweak logging. --- custom_components/dmx/light.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index 90bbe46..61e2a25 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -495,7 +495,7 @@ def send(self): packet = self._base_packet[:] packet.extend(self._channels) self._socket.sendto(packet, (self._host, self._port)) - _LOGGER.debug("Sending Art-Net frame: " + ', '.join([str(x) for x in packet])); + _LOGGER.debug("Sending Art-Net frame to " + self._host + ":" + self.port + " - " + ', '.join([str(x) for x in packet])); def set_channels(self, channels, value, send_immediately=True): # Single value for standard channels, RGB channels will have 3 or more From e9d9868ad83c4bd21da346a004119d726b8e4778 Mon Sep 17 00:00:00 2001 From: ruth Date: Sun, 27 Sep 2020 20:29:48 +0100 Subject: [PATCH 12/21] Fix typo. --- custom_components/dmx/light.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index 61e2a25..f940e6d 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -495,7 +495,7 @@ def send(self): packet = self._base_packet[:] packet.extend(self._channels) self._socket.sendto(packet, (self._host, self._port)) - _LOGGER.debug("Sending Art-Net frame to " + self._host + ":" + self.port + " - " + ', '.join([str(x) for x in packet])); + _LOGGER.debug("Sending Art-Net frame to " + self._host + ":" + self._port + " - " + ', '.join([str(x) for x in packet])); def set_channels(self, channels, value, send_immediately=True): # Single value for standard channels, RGB channels will have 3 or more From 9a1127bb30371383a8e24dd0f53ca1af5d4110b5 Mon Sep 17 00:00:00 2001 From: ruth Date: Sun, 27 Sep 2020 20:34:11 +0100 Subject: [PATCH 13/21] Cast int to string. --- custom_components/dmx/light.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index f940e6d..4fe6333 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -495,7 +495,7 @@ def send(self): packet = self._base_packet[:] packet.extend(self._channels) self._socket.sendto(packet, (self._host, self._port)) - _LOGGER.debug("Sending Art-Net frame to " + self._host + ":" + self._port + " - " + ', '.join([str(x) for x in packet])); + _LOGGER.debug("Sending Art-Net frame to " + self._host + ":" + str(self._port) + " - " + ', '.join([str(x) for x in packet])); def set_channels(self, channels, value, send_immediately=True): # Single value for standard channels, RGB channels will have 3 or more From 0f66a85f9a6de91d7b337565ff12ef4e277091f9 Mon Sep 17 00:00:00 2001 From: ruth Date: Sun, 30 May 2021 11:29:40 +0100 Subject: [PATCH 14/21] Version 0.1 --- hacs.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hacs.json b/hacs.json index f6e9426..930d774 100644 --- a/hacs.json +++ b/hacs.json @@ -1,5 +1,6 @@ { "name": "DMX and Art-net Lighting", "domains": ["light"], - "render_readme": true + "render_readme": true, + "version": "0.1" } From 2e4bc2e0f3ac19eb57d1c72890d809dbc3b13d46 Mon Sep 17 00:00:00 2001 From: ruth Date: Sun, 30 May 2021 12:01:17 +0100 Subject: [PATCH 15/21] Put version in manifest file. --- custom_components/dmx/manifest.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/custom_components/dmx/manifest.json b/custom_components/dmx/manifest.json index ab191c2..6f800db 100644 --- a/custom_components/dmx/manifest.json +++ b/custom_components/dmx/manifest.json @@ -4,5 +4,6 @@ "documentation": "https://github.com/jnimmo/hass-dmx/", "dependencies": [], "codeowners": [], - "requirements": [] + "requirements": [], + "version": "0.1" } From a1a277618d9b002bdaecc0cc862f0cd0d88bf4bd Mon Sep 17 00:00:00 2001 From: ruth Date: Sun, 30 May 2021 12:03:39 +0100 Subject: [PATCH 16/21] Remove version from hacs.json --- hacs.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hacs.json b/hacs.json index 930d774..f6e9426 100644 --- a/hacs.json +++ b/hacs.json @@ -1,6 +1,5 @@ { "name": "DMX and Art-net Lighting", "domains": ["light"], - "render_readme": true, - "version": "0.1" + "render_readme": true } From be2ada2a195ac5437d94f1484f1a3acde1354ead Mon Sep 17 00:00:00 2001 From: ruth Date: Wed, 7 Sep 2022 22:06:05 +0100 Subject: [PATCH 17/21] Ditch white value. --- custom_components/dmx/light.py | 38 ++++++++-------------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index 4fe6333..e3c0af2 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -16,26 +16,22 @@ from homeassistant.components.light import (ATTR_BRIGHTNESS, ATTR_HS_COLOR, ATTR_TRANSITION, - ATTR_WHITE_VALUE, ATTR_COLOR_TEMP, LightEntity, PLATFORM_SCHEMA, SUPPORT_BRIGHTNESS, SUPPORT_COLOR, - SUPPORT_WHITE_VALUE, SUPPORT_TRANSITION, SUPPORT_COLOR_TEMP) except ImportError: from homeassistant.components.light import (ATTR_BRIGHTNESS, ATTR_HS_COLOR, ATTR_TRANSITION, - ATTR_WHITE_VALUE, ATTR_COLOR_TEMP, Light as LightEntity, PLATFORM_SCHEMA, SUPPORT_BRIGHTNESS, SUPPORT_COLOR, - SUPPORT_WHITE_VALUE, SUPPORT_TRANSITION, SUPPORT_COLOR_TEMP) from homeassistant.util.color import color_rgb_to_rgbw @@ -102,17 +98,17 @@ FEATURE_MAP[CONF_LIGHT_TYPE_RGBA] = (SUPPORT_BRIGHTNESS | SUPPORT_TRANSITION | SUPPORT_COLOR) FEATURE_MAP[CONF_LIGHT_TYPE_RGBAW] = (SUPPORT_BRIGHTNESS | SUPPORT_TRANSITION | - SUPPORT_COLOR | SUPPORT_WHITE_VALUE) + SUPPORT_COLOR) FEATURE_MAP[CONF_LIGHT_TYPE_RGBW] = (SUPPORT_BRIGHTNESS | SUPPORT_TRANSITION | - SUPPORT_COLOR | SUPPORT_WHITE_VALUE) + SUPPORT_COLOR) FEATURE_MAP[CONF_LIGHT_TYPE_RGBW_AUTO] = (SUPPORT_BRIGHTNESS | SUPPORT_TRANSITION | SUPPORT_COLOR) FEATURE_MAP[CONF_LIGHT_TYPE_DRGB] = (SUPPORT_BRIGHTNESS | SUPPORT_TRANSITION | SUPPORT_COLOR) FEATURE_MAP[CONF_LIGHT_TYPE_DRGBW] = (SUPPORT_BRIGHTNESS | SUPPORT_TRANSITION | - SUPPORT_COLOR | SUPPORT_WHITE_VALUE) + SUPPORT_COLOR) FEATURE_MAP[CONF_LIGHT_TYPE_RGBWD] = (SUPPORT_BRIGHTNESS | SUPPORT_TRANSITION | - SUPPORT_COLOR | SUPPORT_WHITE_VALUE) + SUPPORT_COLOR) FEATURE_MAP[CONF_LIGHT_TYPE_SWITCH] = 0 FEATURE_MAP[CONF_LIGHT_TYPE_CUSTOM_WHITE] = (SUPPORT_BRIGHTNESS | SUPPORT_TRANSITION | SUPPORT_COLOR_TEMP) @@ -145,7 +141,6 @@ vol.Optional(CONF_NAME): cv.string, vol.Optional(CONF_TYPE): vol.In(CONF_LIGHT_TYPES), vol.Optional(CONF_DEFAULT_LEVEL): cv.byte, - vol.Optional(ATTR_WHITE_VALUE): cv.byte, vol.Optional(CONF_DEFAULT_COLOR): vol.All( vol.ExactSequence((cv.byte, cv.byte, cv.byte)), vol.Coerce(tuple)), @@ -198,7 +193,6 @@ def __init__(self, light, dmx_gateway, send_immediately, default_type): self._brightness = light.get(CONF_DEFAULT_LEVEL, dmx_gateway.default_level) self._rgb = light.get(CONF_DEFAULT_COLOR, COLOR_MAP.get(self._type)) - self._white_value = light.get(ATTR_WHITE_VALUE, 0) self._color_temp = int((self.min_mireds + self.max_mireds) / 2) self._channel_setup = light.get(CONF_CHANNEL_SETUP, '') @@ -218,7 +212,7 @@ def __init__(self, light, dmx_gateway, send_immediately, default_type): if self._rgb: self._brightness = max(self._rgb) * (self._brightness/255) - if self._brightness > 0 or self._white_value > 0: + if self._brightness > 0: self._state = STATE_ON else: self._state = STATE_OFF @@ -261,16 +255,6 @@ def hs_color(self): else: return None - @property - def white_value(self): - """Return the white value of this light between 0..255.""" - if ((self._type == CONF_LIGHT_TYPE_RGBW) or - (self._type == CONF_LIGHT_TYPE_RGBWD) or - (self._type == CONF_LIGHT_TYPE_DRGBW)): - return self._white_value - else: - return None - @property def min_mireds(self): """Return the coldest color_temp that this light supports.""" @@ -311,11 +295,11 @@ def dmx_values(self): values[0] = values[0] - amber values[1] = round(values[1] - amber/2) values.append(amber) - values.append(round(self._white_value * (self._brightness / 255))) + values.append(0) return values elif self._type == CONF_LIGHT_TYPE_RGBW: rgbw = scale_rgb_to_brightness(self._rgb, self._brightness) - rgbw.append(round(self._white_value * (self._brightness / 255))) + rgbw.append(0) return rgbw elif self._type == CONF_LIGHT_TYPE_RGBW_AUTO: # Split the white component out from the scaled RGB values @@ -329,13 +313,13 @@ def dmx_values(self): elif self._type == CONF_LIGHT_TYPE_DRGBW: drgbw = [self._brightness] drgbw.extend(self._rgb if self._brightness > 0 else [0, 0, 0]) - drgbw.append(self._white_value if self.brightness > 0 else 0) + drgbw.append(0) _LOGGER.debug("drgbw: " + ', '.join([str(x) for x in drgbw])); return drgbw elif self._type == CONF_LIGHT_TYPE_RGBWD: rgbwd = list() rgbwd.extend(self._rgb if self._brightness > 0 else [0, 0, 0]) - rgbwd.append(self._white_value if self._brightness > 0 else 0) + rgbwd.append(0) rgbwd.append(self._brightness) _LOGGER.debug("rgbwd: " + ', '.join([str(x) for x in rgbwd])); return rgbwd @@ -415,10 +399,6 @@ def async_turn_on(self, **kwargs): if ATTR_HS_COLOR in kwargs: self._rgb = color_util.color_hs_to_RGB(*kwargs[ATTR_HS_COLOR]) - # self._white_value = color_rgb_to_rgbw(*self._rgb)[3] - - if ATTR_WHITE_VALUE in kwargs: - self._white_value = kwargs[ATTR_WHITE_VALUE] if ATTR_COLOR_TEMP in kwargs: self._color_temp = kwargs[ATTR_COLOR_TEMP] From 6fc57374d8ee817ba943a383b5b6252ea1850287 Mon Sep 17 00:00:00 2001 From: ruth Date: Sun, 11 Jun 2023 14:49:46 +0100 Subject: [PATCH 18/21] Try fixing for Python 3.11 --- custom_components/dmx/light.py | 3 +-- custom_components/dmx/manifest.json | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index e3c0af2..8fbceef 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -155,8 +155,7 @@ }) -@asyncio.coroutine -def async_setup_platform(hass, config, async_add_devices, discovery_info=None): +async def async_setup_platform(hass, config, async_add_devices, discovery_info=None): host = config.get(CONF_HOST) universe = config.get(CONF_UNIVERSE) port = config.get(CONF_PORT) diff --git a/custom_components/dmx/manifest.json b/custom_components/dmx/manifest.json index 6f800db..5816acb 100644 --- a/custom_components/dmx/manifest.json +++ b/custom_components/dmx/manifest.json @@ -1,9 +1,9 @@ { "domain": "dmx", "name": "DMX Light", - "documentation": "https://github.com/jnimmo/hass-dmx/", + "documentation": "https://github.com/ruth-connect/hass-dmx/", "dependencies": [], "codeowners": [], "requirements": [], - "version": "0.1" + "version": "0.2" } From 4e6bdeeb965a5a2955b8660285d2380b8e6da6e3 Mon Sep 17 00:00:00 2001 From: ruth Date: Sun, 11 Jun 2023 15:07:14 +0100 Subject: [PATCH 19/21] Upgrade to Python 3.11 --- custom_components/dmx/light.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index 8fbceef..bd2d0c6 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -379,8 +379,7 @@ def fade_time(self): def fade_time(self, value): self._fade_time = value - @asyncio.coroutine - def async_turn_on(self, **kwargs): + async def async_turn_on(self, **kwargs): """Instruct the light to turn on. Move to using one method on the DMX class to set/fade either a single @@ -409,8 +408,7 @@ def async_turn_on(self, **kwargs): self._channels, self.dmx_values, transition=transition)) self.async_schedule_update_ha_state() - @asyncio.coroutine - def async_turn_off(self, **kwargs): + async def async_turn_off(self, **kwargs): """Instruct the light to turn off. If a transition time has been specified in @@ -489,8 +487,7 @@ def set_channels(self, channels, value, send_immediately=True): if send_immediately: self.send() - @asyncio.coroutine - def set_channels_async(self, channels, value, transition=0, fps=40, + async def set_channels_async(self, channels, value, transition=0, fps=40, send_immediately=True): original_values = self._channels[:] # Minimum of one frame for a snap transition From bb3117adccfb53f6c1d463414a993232c2603376 Mon Sep 17 00:00:00 2001 From: ruth Date: Sun, 11 Jun 2023 15:08:54 +0100 Subject: [PATCH 20/21] Update version to 0.3 --- custom_components/dmx/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/dmx/manifest.json b/custom_components/dmx/manifest.json index 5816acb..8e513a3 100644 --- a/custom_components/dmx/manifest.json +++ b/custom_components/dmx/manifest.json @@ -5,5 +5,5 @@ "dependencies": [], "codeowners": [], "requirements": [], - "version": "0.2" + "version": "0.3" } From ad4dfb633366e9fa94349d500b8c4014d7de9133 Mon Sep 17 00:00:00 2001 From: ruth Date: Sun, 11 Jun 2023 15:14:33 +0100 Subject: [PATCH 21/21] Try "await" instead of "yield from". --- custom_components/dmx/light.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/dmx/light.py b/custom_components/dmx/light.py index bd2d0c6..732b740 100644 --- a/custom_components/dmx/light.py +++ b/custom_components/dmx/light.py @@ -516,7 +516,7 @@ async def set_channels_async(self, channels, value, transition=0, fps=40, if values_changed and send_immediately: self.send() - yield from asyncio.sleep(1. / fps) + await asyncio.sleep(1. / fps) def get_channel_level(self, channel): """