Its seems like after several reboots its now working… Below is my complete code, could maybe be written smaller and better, but I hope someone else might find it useful, Only thing not working is to have a dimmer to adjust red, green, blue value with the dimmer value, couldnt get it to work so left it out for now.
import org.eclipse.smarthome.core.library.types.HSBType
import org.eclipse.xtext.xbase.lib.*
var HSBType hsbValue
var HSBType hsbValueMasterBedRoom
var HSBType hsbValueBathRoom
val hsbOff = HSBType::fromRGB(0, 0, 0)
val hsbOn = HSBType::fromRGB(255, 255, 255)
var int redColor
var int greenColor
var int blueColor
var double dimmerValue =1.0
var int redValue
var int greenValue
var int blueValue
var String RGBvalues
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////// Switch the different areas where LED-Lights should be switched on/off ////////////////7////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
val Functions$Function3 rgbLights= [ GroupItem mainGroup,GroupItem subGroup, HSBType hsbValue |
val hsbOff = HSBType::fromRGB(0, 0, 0)
//So all non scene group lights in livingroom get switched off if they not already are off
//val nonSceneLights = Group_DMX_LivingRoom.members.filter[l | !l.members(s as Group)]
//nonSceneLights.members.filter[l|l.state.toString != hsbOff.toString].forEach[l| l.sendCommand(hsbOff as Command)]
mainGroup.members.filter[l|l.state.toString != hsbOff.toString].forEach[l| l.sendCommand(hsbOff) ]
subGroup.members.forEach[l|l.sendCommand(hsbValue)]
//s.members.filter[l|l.state.toString != hsbValue.toString].forEach[l| l.sendCommand(hsbValue) ]
]
rule "Activate Scene LivingRoom"
when
Item Scene_LivingRoom1 received command or Item Scene_LivingRoom2 received command or Item Scene_LivingRoom3 received command
then
if ((receivedCommand>0) && (receivedCommand<5)) {
Scene_LivingRoom2.postUpdate(0)
Scene_LivingRoom3.postUpdate(0)
logInfo("Debug","Received command is " + receivedCommand.toString() + " we deactivate 2 and 3" )
}
else if ((receivedCommand>4) && (receivedCommand<9)) {
Scene_LivingRoom1.postUpdate(0)
Scene_LivingRoom3.postUpdate(0)
logInfo("Debug","Received command is " + receivedCommand.toString()+ " we deactivate 1 and 3" )
}
else if ((receivedCommand>8) && (receivedCommand<13)) {
Scene_LivingRoom1.postUpdate(0)
Scene_LivingRoom2.postUpdate(0)
logInfo("Debug","Received command is " + receivedCommand.toString() + " we deactivate 1 and 2")
}
else{
Scene_LivingRoom1.postUpdate(0)
Scene_LivingRoom2.postUpdate(0)
Scene_LivingRoom3.postUpdate(0)
logInfo("Debug","Received command is " + receivedCommand.toString() + " SHOULD NEVER HAPPEN")
}
switch receivedCommand {
//Default
case 0: {
}
//OFF
case 1:{
Group_DMX_LivingRoom.members.filter[l|l.state.toString != hsbOff.toString].forEach[l| l.sendCommand(hsbOff) ]
logInfo("Debug","turning off lights" )
}
//ON
case 2:{
Group_DMX_LivingRoom.members.filter[l|l.state.toString != hsbValue.toString].forEach[l| l.sendCommand(hsbOn) ]
logInfo("Debug","turning on lights" )
}
//Dinner
case 3:{
hsbValue = HSBType::fromRGB(255, 255, 153)
rgbLights.apply(Group_DMX_LivingRoom,Group_DMX_Dinner,hsbValue)
}
//Reading
case 4:{
rgbLights.apply(Group_DMX_LivingRoom,Group_DMX_Reading,hsbValue)
}
//FirePlace
case 5:{
hsbValue = HSBType::fromRGB(60, 60, 100)
rgbLights.apply(Group_DMX_LivingRoom,Group_DMX_FirePlace,hsbValue)
}
//Bar
case 6:{
rgbLights.apply(Group_DMX_LivingRoom,Group_DMX_Bar,hsbValue)
}
case 7:{
}
//TV
case 8:{
rgbLights.apply(Group_DMX_LivingRoom,Group_DMX_TV,hsbValue)
}
//Cooking
case 9:{
rgbLights.apply(Group_DMX_LivingRoom,Group_DMX_Cooking,hsbValue)
}
//Wall
case 10:{
rgbLights.apply(Group_DMX_LivingRoom,Group_DMX_Wall,hsbValue)
}
//Kitchen
case 11:{
hsbValue = HSBType::fromRGB(255, 255, 255)
rgbLights.apply(Group_DMX_LivingRoom,Group_DMX_Kitchen,hsbValue)
}
//Lounge
case 12:{
hsbValue = HSBType::fromRGB(255, 204, 51)
rgbLights.apply(Group_DMX_LivingRoom,Group_DMX_Lounge,hsbValue)
}
}
end
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////// Change color freely ////////////////7////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
rule "Set RGB value Living Room"
when
Item Color_LivingRoom changed
then
logInfo("Info", "Set RGB value Living Room to : " +redColor.toString+ ":" +greenColor.toString+ ":" +blueColor.toString)
hsbValue = Color_LivingRoom.state as HSBType
//redValue = (redColor*dimmerValue).intValue
//greenValue = (greenColor*dimmerValue).intValue
//blueValue= (blueColor*dimmerValue).intValue
//hsbValue = HSBType::fromRGB(redValue, greenValue,blueValue)
//logInfo("Info", "Set RGB value Living Room to : " +redValue.toString+ ":" +greenValue.toString+ ":" +blueValue.toString)
Group_DMX_LivingRoom.members.filter[l|
logInfo("Debug","changing on lights: " + l.state.toString+ " " + l.name )
l.state.toString != hsbOff.toString
].forEach[l| l.sendCommand(hsbValue) ]
end
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////// Change the moodings of light, e.g. warm white, white, lounge and night ////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
rule "Change the color in Living Room"
when
Item MoodSelector_LivingRoom received command
then
//warm white
if (receivedCommand==1) {
redColor = 255
greenColor = 0
blueColor =0
}
//white
if (receivedCommand==2) {
redColor = 0
greenColor = 255
blueColor =0
}
//lounge
if (receivedCommand==3) {
redColor = 0
greenColor = 0
blueColor =255
}
//night
if (receivedCommand==4) {
//255, 244, 229
redColor = 255
greenColor = 244
blueColor =229
}
hsbValue = HSBType::fromRGB(redColor, greenColor,blueColor)
Color_LivingRoom.sendCommand(hsbValue)
end
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////// Change the moodings of light, e.g. warm white, white, lounge and night ////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
rule "Change dimming in Living Room"
when
Item Dimmer_LivingRoom changed
then
logInfo("Debug","Dimmer state: " )
dimmerValue = 0.2//Dimmer_LivingRoom.state as DecimalType
Color_LivingRoom.sendCommand(hsbValue)
end
*/
/***********************************************************************************************************
* ************************************** MASTER BEDROOM ***************************************************
* *********************************************************************************************************
*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////// Change color freely ////////////////7////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
rule "Set RGB value MasterBedRoom"
when
Item Color_MasterBedRoom changed
then
hsbValueMasterBedRoom = Color_MasterBedRoom.state as HSBType
//redValue = (redColor*dimmerValue).intValue
//greenValue = (greenColor*dimmerValue).intValue
//blueValue= (blueColor*dimmerValue).intValue
//hsbValue = HSBType::fromRGB(redValue, greenValue,blueValue)
//logInfo("Info", "Set RGB value Living Room to : " +redValue.toString+ ":" +greenValue.toString+ ":" +blueValue.toString)
Group_DMX_MasterBedRoom.members.filter[l|
l.state.toString != hsbOff.toString
].forEach[l| l.sendCommand(hsbValueMasterBedRoom) ]
end
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////// Change the scene of light, e.g. warm white, white, lounge and night ////////////////////////////
//
rule "Change the scene in Master Bedroom"
when
Item Scene_MasterBedRoom received command
then
//warm white
switch receivedCommand {
//OFF
case 1: {
hsbValueMasterBedRoom = HSBType::fromRGB(0, 0, 0)
Group_DMX_MasterBedRoom.members.forEach[l|l.sendCommand(hsbValueMasterBedRoom)]
logInfo("Info", "Set RGB value Master Room to :")
}
//ON
case 2:{
hsbValueMasterBedRoom = HSBType::fromRGB(255, 255, 255)
rgbLights.apply(Group_DMX_MasterBedRoom,Group_DMX_MasterBedRoom,hsbValueMasterBedRoom)
logInfo("Info", "Set RGB value Master Room to ON :")
}
//NIGHT
case 3:{
hsbValueMasterBedRoom = HSBType::fromRGB(50, 10, 10)
rgbLights.apply(Group_DMX_MasterBedRoom,Group_DMX_MasterBedRoom,hsbValueMasterBedRoom)
}
//READING
case 4:{
hsbValueMasterBedRoom = HSBType::fromRGB(200, 200, 100)
rgbLights.apply(Group_DMX_MasterBedRoom,Group_DMX_MasterBedRoom,hsbValueMasterBedRoom)
}
}
end
/****************************************************************************************************
* ***************************************** BATHROOM ***********************************************
************************************************************************************************* */
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////// Change color freely ////////////////7////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
rule "Set RGB value BathRoom"
when
Item Color_BathRoom changed
then
hsbValueBathRoom = Color_BathRoom.state as HSBType
//redValue = (redColor*dimmerValue).intValue
//greenValue = (greenColor*dimmerValue).intValue
//blueValue= (blueColor*dimmerValue).intValue
//hsbValue = HSBType::fromRGB(redValue, greenValue,blueValue)
//logInfo("Info", "Set RGB value Living Room to : " +redValue.toString+ ":" +greenValue.toString+ ":" +blueValue.toString)
Group_DMX_BathRoom.members.filter[l|
l.state.toString != hsbOff.toString
].forEach[l| l.sendCommand(hsbValueBathRoom) ]
end
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////// Change the scene of light, e.g. warm white, white, lounge and night ////////////////////////////
//
rule "Change the scene in Bathroom"
when
Item Scene_BathRoom received command
then
//warm white
switch receivedCommand {
//OFF
case 1: {
hsbValueBathRoom = HSBType::fromRGB(255, 0, 0)
Group_DMX_BathRoom.members.forEach[l|l.sendCommand(hsbValueBathRoom)]
}
//ON
case 2:{
hsbValueBathRoom = HSBType::fromRGB(255, 255, 255)
rgbLights.apply(Group_DMX_BathRoom,Group_DMX_BathRoom,hsbValueBathRoom)
}
//NIGHT
case 3:{
hsbValueBathRoom = HSBType::fromRGB(50, 10, 10)
rgbLights.apply(Group_DMX_BathRoom,Group_DMX_BathRoom,hsbValueBathRoom)
}
//SHOWER
case 4:{
hsbValueBathRoom = HSBType::fromRGB(200, 200, 100)
rgbLights.apply(Group_DMX_BathRoom,Group_DMX_BathRoom,hsbValueBathRoom)
}
}
end