From eac1095bbd1c5db40f4ed449c4d71b3ca3f4445b Mon Sep 17 00:00:00 2001 From: Johannes Date: Sat, 19 Mar 2022 20:56:15 +0100 Subject: [PATCH] set current rgb_color --- apps/nspanel-lovelace-ui/color.py | 14 +++++++++----- apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py | 8 ++++---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/apps/nspanel-lovelace-ui/color.py b/apps/nspanel-lovelace-ui/color.py index 50b7ac73..a4ff030a 100644 --- a/apps/nspanel-lovelace-ui/color.py +++ b/apps/nspanel-lovelace-ui/color.py @@ -1,9 +1,10 @@ import colorsys +import math -def hsv2rgb(self, h, s, v): +def hsv2rgb(h, s, v): hsv = colorsys.hsv_to_rgb(h,s,v) return tuple(round(i * 255) for i in hsv) -def pos_to_color(self, x, y): +def pos_to_color(x, y): r = 160/2 x = round((x - r) / r * 100) / 100 y = round((r - y) / r * 100) / 100 @@ -15,10 +16,13 @@ def pos_to_color(self, x, y): else: sat = r hsv = (math.degrees(math.atan2(y, x))%360/360, sat, 1) - rgb = self.hsv2rgb(hsv[0],hsv[1],hsv[2]) + rgb = hsv2rgb(hsv[0],hsv[1],hsv[2]) return rgb -def rgb_dec565(red, green, blue): +def rgb_dec565(rgb_color): + red = rgb_color[0] + green = rgb_color[1] + blue = rgb_color[2] # take in the red, green and blue values (0-255) as 8 bit values and then combine # and shift them to make them a 16 bit dec value in 565 format. - print ((int(red / 255 * 31) << 11) | (int(green / 255 * 63) << 5) | (int(blue / 255 * 31))) \ No newline at end of file + return ((int(red / 255 * 31) << 11) | (int(green / 255 * 63) << 5) | (int(blue / 255 * 31))) \ No newline at end of file diff --git a/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py b/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py index 4f177e18..6eb90f4c 100644 --- a/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py +++ b/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py @@ -1,8 +1,7 @@ import json import datetime import hassapi as hass -import math -from color import hsv2rgb,pos_to_color +from color import pos_to_color, rgb_dec565 # check Babel import importlib @@ -247,7 +246,7 @@ class NsPanelLovelaceUI: if(btype == "colorWheel"): self.api.log(optVal) optVal = optVal.split('|') - color = self.pos_to_color(int(optVal[0]), int(optVal[1])) + color = pos_to_color(int(optVal[0]), int(optVal[1])) self.api.log(color) self.api.get_entity(entity_id).call_service("turn_on", rgb_color=color) @@ -367,7 +366,8 @@ class NsPanelLovelaceUI: switch_val = 1 if entity.state == "on" else 0 icon_color = 17299 - + if "rgb_color" in entity.attributes: + icon_color = rgb_dec565(entity.attributes.rgb_color) return f",{item_type},{item},1,{icon_color},{name},{switch_val}"