From d6fe0e132821f83638e2c574f6f120eb82542460 Mon Sep 17 00:00:00 2001 From: Sebastian Garske Date: Thu, 4 Feb 2021 07:08:21 +0100 Subject: [PATCH] [WLED] Fix brightness handling for HSBType (Fixes #9836) (#9863) * Fix brightness * Revert to old beahaviour if segments are used * Fix formatting * Remove unused Var Signed-off-by: Sebastian Garske --- .../binding/wled/internal/WLedBindingConstants.java | 1 + .../openhab/binding/wled/internal/WLedHandler.java | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/bundles/org.openhab.binding.wled/src/main/java/org/openhab/binding/wled/internal/WLedBindingConstants.java b/bundles/org.openhab.binding.wled/src/main/java/org/openhab/binding/wled/internal/WLedBindingConstants.java index 6a4f44c812..72106cea56 100644 --- a/bundles/org.openhab.binding.wled/src/main/java/org/openhab/binding/wled/internal/WLedBindingConstants.java +++ b/bundles/org.openhab.binding.wled/src/main/java/org/openhab/binding/wled/internal/WLedBindingConstants.java @@ -29,6 +29,7 @@ public class WLedBindingConstants { public static final String BINDING_ID = "wled"; public static final BigDecimal BIG_DECIMAL_2_55 = new BigDecimal(2.55); + public static final BigDecimal BIG_DECIMAL_182_04 = new BigDecimal(182.04); // List of all Thing Type UIDs public static final ThingTypeUID THING_TYPE_WLED = new ThingTypeUID(BINDING_ID, "wled"); diff --git a/bundles/org.openhab.binding.wled/src/main/java/org/openhab/binding/wled/internal/WLedHandler.java b/bundles/org.openhab.binding.wled/src/main/java/org/openhab/binding/wled/internal/WLedHandler.java index 75c8afad5a..a3991d3649 100644 --- a/bundles/org.openhab.binding.wled/src/main/java/org/openhab/binding/wled/internal/WLedHandler.java +++ b/bundles/org.openhab.binding.wled/src/main/java/org/openhab/binding/wled/internal/WLedHandler.java @@ -66,6 +66,8 @@ public class WLedHandler extends BaseThingHandler { private final HttpClient httpClient; private final WledDynamicStateDescriptionProvider stateDescriptionProvider; private @Nullable ScheduledFuture pollingFuture = null; + private BigDecimal hue65535 = BigDecimal.ZERO; + private BigDecimal saturation255 = BigDecimal.ZERO; private BigDecimal masterBrightness255 = BigDecimal.ZERO; private HSBType primaryColor = new HSBType(); private BigDecimal primaryWhite = BigDecimal.ZERO; @@ -320,6 +322,8 @@ public class WLedHandler extends BaseThingHandler { sendGetRequest("/win&TT=500&T=0"); } primaryColor = (HSBType) command; + hue65535 = primaryColor.getHue().toBigDecimal().multiply(BIG_DECIMAL_182_04); + saturation255 = primaryColor.getSaturation().toBigDecimal().multiply(BIG_DECIMAL_2_55); masterBrightness255 = primaryColor.getBrightness().toBigDecimal().multiply(BIG_DECIMAL_2_55); if (primaryColor.getSaturation().intValue() < config.saturationThreshold) { sendWhite(); @@ -328,8 +332,13 @@ public class WLedHandler extends BaseThingHandler { // Google sends this when it wants white sendWhite(); } else { - sendGetRequest("/win&TT=1000&FX=0&CY=0&CL=" + createColorHex(primaryColor) + "&A=" - + masterBrightness255); + if (config.segmentIndex == -1) { + sendGetRequest("/win&TT=1000&FX=0&CY=0&HU=" + hue65535 + "&SA=" + saturation255 + "&A=" + + masterBrightness255); + } else { + sendGetRequest("/win&TT=1000&FX=0&CY=0&CL=" + createColorHex(primaryColor) + "&A=" + + masterBrightness255); + } } } else if (command instanceof PercentType) { masterBrightness255 = ((PercentType) command).toBigDecimal().multiply(BIG_DECIMAL_2_55); -- 2.47.3