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