diff --git a/bundles/org.openhab.binding.lutron/README.md b/bundles/org.openhab.binding.lutron/README.md index 4b600f86e477d..23c232b836e2c 100644 --- a/bundles/org.openhab.binding.lutron/README.md +++ b/bundles/org.openhab.binding.lutron/README.md @@ -531,6 +531,8 @@ The following is a summary of channels for all RadioRA 2 binding things: | Thing | Channel | Item Type | Description | |---------------------|-------------------|---------------|--------------------------------------------- | | dimmer | lightlevel | Dimmer | Increase/decrease the light level | +| dimmer | enablefadetime | Switch | Override default fade in/out time | +| dimmer | fadetime | Number | Fade time when changing light level | | switch | switchstatus | Switch | On/off status of the switch | | occupancysensor | occupancystatus | Switch | Occupancy status | | cco | switchstatus | Switch | On/off status of the CCO | @@ -556,6 +558,8 @@ Appropriate channels will be created automatically by the keypad, ttkeypad, intl | Thing | Channel | Native Type | Accepts | |-----------|---------------|--------------|-------------------------------------------------------| |dimmer |lightlevel |PercentType |OnOffType, PercentType | +|dimmer |enablefadetime |OnOffType |OnOffType | +|dimmer |fadetime |DecimalType |DecimalType | |switch |switchstatus |OnOffType |OnOffType | |occ. sensor|occupancystatus|OnOffType |(*readonly*) | |cco |switchstatus |OnOffType |OnOffType, RefreshType | diff --git a/bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/LutronBindingConstants.java b/bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/LutronBindingConstants.java index f1b823b9ad65a..9b1b15e0c7332 100644 --- a/bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/LutronBindingConstants.java +++ b/bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/LutronBindingConstants.java @@ -65,6 +65,8 @@ public class LutronBindingConstants { public static final String CHANNEL_STEP = "step"; public static final String CHANNEL_BLINDLIFTLEVEL = "blindliftlevel"; public static final String CHANNEL_BLINDTILTLEVEL = "blindtiltlevel"; + public static final String CHANNEL_ENABLEFADETIME = "enablefadetime"; + public static final String CHANNEL_FADETIME = "fadetime"; // Bridge config properties (used by discovery service) public static final String HOST = "ipAddress"; diff --git a/bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/DimmerHandler.java b/bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/DimmerHandler.java index 37cfd3ead29f9..f648557f59fee 100644 --- a/bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/DimmerHandler.java +++ b/bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/handler/DimmerHandler.java @@ -12,10 +12,9 @@ */ package org.openhab.binding.lutron.internal.handler; -import static org.openhab.binding.lutron.internal.LutronBindingConstants.CHANNEL_LIGHTLEVEL; - import java.math.BigDecimal; +import org.eclipse.smarthome.core.library.types.DecimalType; import org.eclipse.smarthome.core.library.types.OnOffType; import org.eclipse.smarthome.core.library.types.PercentType; import org.eclipse.smarthome.core.thing.Bridge; @@ -29,6 +28,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.openhab.binding.lutron.internal.LutronBindingConstants.*; + /** * Handler responsible for communicating with a light dimmer. * @@ -41,6 +42,8 @@ public class DimmerHandler extends LutronHandler { private final Logger logger = LoggerFactory.getLogger(DimmerHandler.class); private DimmerConfig config; + private Boolean overrideDefaultFadeTime = false; + private BigDecimal customFadeTime = new BigDecimal(0); public DimmerHandler(Thing thing) { super(thing); @@ -95,11 +98,19 @@ public void handleCommand(ChannelUID channelUID, Command command) { if (command instanceof Number) { int level = ((Number) command).intValue(); - output(ACTION_ZONELEVEL, level, 0.25); + output(ACTION_ZONELEVEL, level, getFadeTime(new BigDecimal(.25))); } else if (command.equals(OnOffType.ON)) { - output(ACTION_ZONELEVEL, 100, this.config.fadeInTime); + output(ACTION_ZONELEVEL, 100, getFadeTime(this.config.fadeInTime)); } else if (command.equals(OnOffType.OFF)) { - output(ACTION_ZONELEVEL, 0, this.config.fadeOutTime); + output(ACTION_ZONELEVEL, 0, getFadeTime(this.config.fadeOutTime)); + } + } else if (channelUID.getId().equals(CHANNEL_ENABLEFADETIME)) { + if (command instanceof OnOffType) { + this.overrideDefaultFadeTime = command.equals(OnOffType.ON); + } + } else if (channelUID.getId().equals(CHANNEL_FADETIME)) { + if (command instanceof DecimalType) { + customFadeTime= ((DecimalType) command).toBigDecimal(); } } } @@ -114,5 +125,14 @@ public void handleUpdate(LutronCommandType type, String... parameters) { } updateState(CHANNEL_LIGHTLEVEL, new PercentType(level)); } + updateState(CHANNEL_ENABLEFADETIME, overrideDefaultFadeTime ? OnOffType.ON : OnOffType.OFF); + updateState(CHANNEL_FADETIME, new DecimalType(customFadeTime)); + } + + private BigDecimal getFadeTime(BigDecimal defaultFadeTime) { + if (overrideDefaultFadeTime && customFadeTime != null) { + return customFadeTime; + } + return defaultFadeTime; } } diff --git a/bundles/org.openhab.binding.lutron/src/main/resources/ESH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.lutron/src/main/resources/ESH-INF/thing/thing-types.xml index ab9778f8e6689..a881004a8463a 100644 --- a/bundles/org.openhab.binding.lutron/src/main/resources/ESH-INF/thing/thing-types.xml +++ b/bundles/org.openhab.binding.lutron/src/main/resources/ESH-INF/thing/thing-types.xml @@ -67,6 +67,8 @@ + + integrationId @@ -1100,6 +1102,20 @@ + + Switch + + Allows config fade in/out time to be overridden + + + + Number + + Sets time in seconds to increase/decrease light level + Number + + + Rollershutter