The controller bridge has the following channels:
-| Channel | Item Type | Description | Read Only |
-|---------------------|-----------|-----------------------------------------------------------------------------------------------------------|-----------|
-| color | Color | Color, power and brightness of all light panels | No |
-| colorTemperature | Dimmer | Color temperature (in percent) of all light panels | No |
-| colorTemperatureAbs | Number | Color temperature (in Kelvin, 1200 to 6500) of all light panels | No |
-| colorMode | String | Color mode of the light panels | Yes |
-| effect | String | Selected effect of the light panels | No |
-| layout | Image | Shows the layout of your panels with IDs. | Yes |
-| rhythmState | Switch | Connection state of the rhythm module | Yes |
-| rhythmActive | Switch | Activity state of the rhythm module | Yes |
-| rhythmMode | Number | Sound source for the rhythm module. 0=Microphone, 1=Aux cable | No |
-| state | Image | Shows the current state of your panels with colors. | Yes |
-| swipe | Trigger | [Canvas / Shapes Only] Detects Swipes over the panel.LEFT, RIGHT, UP, DOWN events are supported. | Yes |
+| Channel | Item Type | Description | Read Only |
+|---------------------|--------------------|-----------------------------------------------------------------------------------------------------------|-----------|
+| color | Color | Color, power and brightness of all light panels | No |
+| colorTemperature | Dimmer | Color temperature (in percent) of all light panels | No |
+| colorTemperatureAbs | Number:Temperature | Color temperature (in Kelvin, 1200 to 6500) of all light panels | No |
+| colorMode | String | Color mode of the light panels | Yes |
+| effect | String | Selected effect of the light panels | No |
+| layout | Image | Shows the layout of your panels with IDs. | Yes |
+| rhythmState | Switch | Connection state of the rhythm module | Yes |
+| rhythmActive | Switch | Activity state of the rhythm module | Yes |
+| rhythmMode | Number | Sound source for the rhythm module. 0=Microphone, 1=Aux cable | No |
+| state | Image | Shows the current state of your panels with colors. | Yes |
+| swipe | Trigger | [Canvas / Shapes Only] Detects Swipes over the panel.LEFT, RIGHT, UP, DOWN events are supported. | Yes |
A lightpanel thing has the following channels:
String NanoleafHue "Hue [%s]"
String NanoleafSaturation "Saturation [%s]"
Dimmer NanoleafColorTemp "Color temperature [%.0f]" { channel="nanoleaf:controller:MyLightPanels:colorTemperature" }
-Number NanoleafColorTempAbs "Color temperature [%.000f]" { channel="nanoleaf:controller:MyLightPanels:colorTemperatureAbs" }
+Number:Temperature NanoleafColorTempAbs "Color temperature [%d K]" { channel="nanoleaf:controller:MyLightPanels:colorTemperatureAbs" }
String NanoleafColorMode "Color mode [%s]" { channel="nanoleaf:controller:MyLightPanels:colorMode" }
String NanoleafEffect "Effect" { channel="nanoleaf:controller:MyLightPanels:effect" }
Switch NanoleafRhythmState "Rhythm connected [MAP(nanoleaf.map):%s]" { channel="nanoleaf:controller:MyLightPanels:rhythmState" }
import org.openhab.core.library.types.IncreaseDecreaseType;
import org.openhab.core.library.types.OnOffType;
import org.openhab.core.library.types.PercentType;
+import org.openhab.core.library.types.QuantityType;
import org.openhab.core.library.types.RawType;
import org.openhab.core.library.types.StringType;
+import org.openhab.core.library.unit.Units;
import org.openhab.core.thing.Bridge;
import org.openhab.core.thing.ChannelUID;
import org.openhab.core.thing.Thing;
int hue;
int saturation;
if (colorTemperature != null) {
- updateState(CHANNEL_COLOR_TEMPERATURE_ABS, new DecimalType(colorTemperature.getValue()));
+ updateState(CHANNEL_COLOR_TEMPERATURE_ABS, new QuantityType(colorTemperature.getValue(), Units.KELVIN));
Integer min = colorTemperature.getMin();
hue = min == null ? 0 : min;
Integer max = colorTemperature.getMax();
}
break;
case CHANNEL_COLOR_TEMPERATURE_ABS:
+ // Color temperature (absolute)
+ int colorTempKelvin;
+
+ IntegerState state = new Ct();
if (command instanceof DecimalType) {
- // Color temperature (absolute)
- IntegerState state = new Ct();
state.setValue(((DecimalType) command).intValue());
- stateObject.setState(state);
+ } else if (command instanceof QuantityType) {
+ QuantityType<?> tempKelvin = ((QuantityType) command).toInvertibleUnit(Units.KELVIN);
+ if (tempKelvin == null) {
+ logger.warn("Cannot convert color temperature {} to Kelvin.", command);
+ return;
+ }
+ state.setValue(tempKelvin.intValue());
} else {
logger.warn("Unhandled command type: {}", command.getClass().getName());
return;
}
+
+ stateObject.setState(state);
break;
default:
logger.warn("Unhandled command type: {}", command.getClass().getName());