Hello!
I’m trying to read RGB values from a string-item (which gets its data from a HTTP-request) and convert it to a Color-item, so that I can display it in a color-picker.
I already got it working the other way round, but can’t figure it out, how to create a new HSBType from RGB-values.
My rule file to convert HSB to RGB looks as follows:
import org.openhab.core.library.types.*
var HSBType hsb
rule "HSBtoRGB"
when
Item LEDcolor changed
then
hsb = LEDcolor.state as HSBType
val red = hsb.red
val green = hsb.green
val blue = hsb.blue
sendCommand(LEDcolor_RGB_String, red+","+green+","+blue)
end
The used items are:
Color LEDcolor "LED Strip" String LEDcolor_RGB_String "LED Strip (RGB Values)"
To convert a String-Item to a Color-Item I tried the following:
var String httpRGB
var String[] parts
var java.awt.Color color
var HSBType hsb
rule "RGBtoHSB"
when
Item LEDcolor_RGB_String changed
then
httpRGB = LEDcolor_RGB_String.state.toString()
parts = httpRGB.split(",")
val red = parts.get(0) as DecimalType
val green = parts.get(1) as DecimalType
val blue = parts.get(2) as DecimalType
logInfo("RGB", "R:" + red + " G:" + green + " B:" + blue)
color = new java.awt.Color(red,green,blue)
hsb = new HSBType(color) as HSBType
sendCommand(LEDcolor, hsb)
end
But I get an error: Error during the execution of rule ‘RGBtoHSB’: Cannot cast java.lang.String to org.openhab.core.library.types.DecimalType
Can anybody help me, creating a rule which is able to convert RGB to HSB?
Thanks in advance!
Niklas