----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
-- Description: RGBW-Control for KNX Multitouch Pro Mxx6215-5910/Mxx6215-0310
----------------------------------------------------------------------------------------------------
-- Skript needs to be create within \Scripting\Event-based\ which reacts on a tag 
-- You need to update the group addresses below according to the ones you use within the ETS
-- The Defaultcolour (Scene/DefSceneNbr) when switching ON
-- The Defaultbrightness (DefBright) when switching ON
-- You need to give some objects (marked below) the same tag as used by script creation
----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------
-- SECTION BELOW NEEDS TO BE ADAPTED! --------------------------------------------------------------
----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------
-- KNX MultiTouch Pro Objs ------------------------------------------------------------------------- 

Scene_Obj_GA = '3/2/0'
Switch_Obj_GA = '3/2/42'
SwitchFB_Obj_GA = '3/2/43'
Value_Obj_GA = '0/0/2'
ValueFB_Obj_GA = '0/0/3'

----------------------------------------------------------------------------------------------------
-- Dimming Objs (e.g. DALI GW/KNX-LED-Driver) ------------------------------------------------------

Red_Obj_GA = '3/2/11'
Green_Obj_GA = '3/2/21'
Blue_Obj_GA = '3/2/31'
White_Obj_GA = '3/2/41'

----------------------------------------------------------------------------------------------------
-- Called Scene by Switching -----------------------------------------------------------------------

DefSceneNbr = 8
DefBright = 85

----------------------------------------------------------------------------------------------------



----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
-- /!\ DONT CHANGE CODE BELOW  /!\ -----------------------------------------------------------------
----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------
-- Get actual data of object which triggert this event ---------------------------------------------

Trigger_GA = event.dst
Trigger_Val = event.getvalue()

----------------------------------------------------------------------------------------------------
-- SwitchValue changed
----------------------------------------------------------------------------------------------------

if Trigger_GA == Switch_Obj_GA then

  Trigger_GA = Value_Obj_GA									-- Trigger_GA with new Obj to run directly value section
	grp.write(SwitchFB_Obj_GA, Trigger_Val)		-- taking actual value to the SWFeedbackObj
 	if Trigger_Val == true then								-- if switched on 
    grp.write(Scene_Obj_GA, DefSceneNbr)		-- call default scene
    Trigger_Val = DefBright									-- Set default brightness
  else
    grp.write(Scene_Obj_GA, 9) 							-- switched off then call switchoffscene
    Trigger_Val = 0													-- switch off then no colour R/G/B/W == 0
	end
end

---------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------
-- Scene Trigger Obj has changed
---------------------------------------------------------------------------------------------------

if Trigger_GA == Scene_Obj_GA then

  Trigger_GA = Value_Obj_GA									-- Trigger_GA with new Obj to run directly value section
  if grp.getvalue(SwitchFB_Obj_GA) then			-- If already switched on
    Trigger_Val = grp.getvalue(ValueFB_Obj_GA)	-- take the existing brightness
  else																			-- Status switched off
    if grp.getvalue(Scene_Obj_GA) == 9 then	-- Check which scene "switchoff" is called
    	Trigger_Val = 0												-- so switch off
    else																		-- Status is off but someone selected a colour
      Trigger_Val = DefBright								-- so start with default brightness
      grp.write(SwitchFB_Obj_GA, true)			-- set SwitchFB accordingly
    end
  end
end

----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------
-- BrightnessValue changed
----------------------------------------------------------------------------------------------------

if Trigger_GA == Value_Obj_GA then

	grp.write(ValueFB_Obj_GA, Trigger_Val) 		-- Write actual value within the feedback obj

  Sce_Val = {}															-- Fill array with scene-values
 		Sce_Val[1], Sce_Val[2], Sce_Val[3], Sce_Val[4] = 255, 0, 255, 0  			-- Scene 0 > Purple
 		Sce_Val[5], Sce_Val[6], Sce_Val[7], Sce_Val[8] = 255, 0, 0, 0  				-- Scene 1 > Red
 		Sce_Val[9], Sce_Val[10], Sce_Val[11], Sce_Val[12] = 255, 127, 0, 0  	-- Scene 2 > Orange
 		Sce_Val[13], Sce_Val[14], Sce_Val[15], Sce_Val[16] = 255, 255, 0, 0  	-- Scene 3 > Yellow
 		Sce_Val[17], Sce_Val[18], Sce_Val[19], Sce_Val[20] = 127, 255, 0, 0  	-- Scene 4 > GreenYellow
 		Sce_Val[21], Sce_Val[22], Sce_Val[23], Sce_Val[24] = 0, 255, 0, 0  		-- Scene 5 > Green
 		Sce_Val[25], Sce_Val[26], Sce_Val[27], Sce_Val[28] = 0, 255, 255, 0  	-- Scene 6 > BlueGreen
 		Sce_Val[29], Sce_Val[30], Sce_Val[31], Sce_Val[32] = 0, 0, 255, 0  		-- Scene 7 > Blue
		Sce_Val[33], Sce_Val[34], Sce_Val[35], Sce_Val[36] = 0, 0, 0, 255  		-- Scene 8 > White
  	Sce_Val[37], Sce_Val[38], Sce_Val[39], Sce_Val[40] = 0, 0, 0, 0  			-- Scene 9 > All out

	-- Calculation of the new brightness value based on the selected colour 
  if grp.getvalue(Scene_Obj_GA) == 9 and Trigger_Val > 0 then
    Sce_Val_Num = (DefSceneNbr*4)+1
    grp.write(SwitchFB_Obj_GA, true)
  else
  	Sce_Val_Num = (grp.getvalue(Scene_Obj_GA)*4)+1
  end
	grp.write(Red_Obj_GA, (Sce_Val[Sce_Val_Num])*(Trigger_Val/100))
	Sce_Val_Num = Sce_Val_Num+1
	grp.write(Green_Obj_GA, (Sce_Val[Sce_Val_Num])*(Trigger_Val/100))
	Sce_Val_Num = Sce_Val_Num+1
	grp.write(Blue_Obj_GA, (Sce_Val[Sce_Val_Num])*(Trigger_Val/100))
	Sce_Val_Num = Sce_Val_Num+1
	grp.write(White_Obj_GA, (Sce_Val[Sce_Val_Num])*(Trigger_Val/100))
end
