1 //Create a class for color control
3 import Timer.SimulatedTimer
6 public class ColorControl {
10 private String displayName
12 private String currentColor
13 private String currentSwitch
15 private int currentLevel
17 private int currentHue
18 private int saturation
19 private int currentSaturation
20 private int colorTemperature
22 ColorControl(Closure sendEvent, String id, String label, String displayName, String color, int hue, int saturation, int level, String currentSwitch, int colorTemperature) {
25 this.displayName = displayName
27 this.currentColor = color
30 this.saturation = saturation
31 this.currentSaturation = saturation
33 this.currentLevel = level
34 this.currentSwitch = currentSwitch
35 this.colorTemperature = colorTemperature
36 this.sendEvent = sendEvent
40 def setValue(String value, String name) {
41 if ((name == "color") && (value != this.color)) {
43 this.currentColor = value
44 println("the color of the light is changed to $value!")
45 } else if ((name == "hue") && (value != this.hue)) {
46 this.hue = value.toInteger()
47 this.currentHue = value.toInteger()
48 println("The hue level of the light is changed to $value!")
49 } else if ((name == "saturation") && (value != this.saturation)) {
50 this.saturation = value.toInteger()
51 this.currentSaturation = value.toInteger()
52 println("The saturation level of the light is changed to $value!")
53 } else if ((name == "level") && (value != this.level)) {
54 this.currentLevel = value.toInteger()
55 this.level = value.toInteger()
56 println("The level of the light is changed to $value!")
57 } else if ((name == "currentSwitch") && (value != this.currentSwitch)) {
58 this.currentSwitch = value
59 println("The light is changed to $value!")
60 } else if ((name == "colorTemperature") && (value != this.colorTemperature)) {
61 this.colorTemperature = value.toInteger()
62 println("The color temperature level of the light is changed to $value!")
67 def setColor(LinkedHashMap metaData) {
68 def hexColor = metaData.hex
95 if (color != this.color) {
96 this.currentColor = color
98 println("The color of the light is changed to $color!")
99 sendEvent([name: "color", value: "$color", deviceId: this.id, descriptionText: "",
100 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
104 def setColor(String color) {
105 if (color != this.color) {
106 this.currentColor = color
108 println("The color of the light is changed to $color!")
109 sendEvent([name: "color", value: "$color", deviceId: this.id, descriptionText: "",
110 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
114 def setHue(int hue) {
115 if (hue != this.hue) {
117 this.currentHue = hue
118 println("The hue level of the light is changed to $hue!")
119 sendEvent([name: "hue", value: "$hue", deviceId: this.id, descriptionText: "",
120 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
124 def setSaturation(int saturation) {
125 if (saturation != this.saturation) {
126 this.currentSaturation = saturation
127 this.saturation = saturation
128 println("The saturation level of the light is changed to $saturation!")
129 sendEvent([name: "saturation", value: "$saturation", deviceId: this.id, descriptionText: "",
130 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
134 def setLevel(int level) {
135 if (level != this.level) {
136 this.currentLevel = level
138 println("The level of the light is changed to $level!")
139 sendEvent([name: "level", value: "$level", deviceId: this.id, descriptionText: "",
140 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
144 def setColorTemperature(int colorTemperature) {
145 if (colorTemperature != this.colorTemperature) {
146 this.colorTemperature = colorTemperature
147 println("The color temperature level of the light is changed to $colorTemperature!")
148 sendEvent([name: "colorTemperature", value: "$colorTemperature", deviceId: this.id, descriptionText: "",
149 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
154 if (this.currentSwitch != "on") {
155 this.currentSwitch = currentSwitch
156 println("The light is changed to on!")
157 sendEvent([name: "switch", value: "on", deviceId: this.id, descriptionText: "",
158 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
163 if (this.currentSwitch != "off") {
164 this.currentSwitch = currentSwitch
165 println("The light is changed to off!")
166 sendEvent([name: "switch", value: "off", deviceId: this.id, descriptionText: "",
167 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
171 def currentValue(String deviceFeature) {
172 if (deviceFeature == "color") {
174 } else if (deviceFeature == "saturation") {
176 } else if (deviceFeature == "hue") {
178 } else if (deviceFeature == "level") {
180 } else if (deviceFeature == "colorTemperature") {
181 return colorTemperature
182 } else if (deviceFeature == "switch") {
187 def latestValue(String deviceFeature) {
188 if (deviceFeature == "color") {
190 } else if (deviceFeature == "saturation") {
192 } else if (deviceFeature == "hue") {
194 } else if (deviceFeature == "level") {
196 } else if (deviceFeature == "colorTemperature") {
197 return colorTemperature
198 } else if (deviceFeature == "switch") {