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
96 if (newColor != this.color) {
97 this.currentColor = newColor
99 println("The color of the light is changed to $newColor!")
100 sendEvent([name: "color", value: "$newColor", deviceId: this.id, descriptionText: "",
101 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
105 def setColor(String color) {
106 if (color != this.color) {
107 this.currentColor = color
109 println("The color of the light is changed to $color!")
110 sendEvent([name: "color", value: "$color", deviceId: this.id, descriptionText: "",
111 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
115 def setHue(int hue) {
116 if (hue != this.hue) {
118 this.currentHue = hue
119 println("The hue level of the light is changed to $hue!")
120 sendEvent([name: "hue", value: "$hue", deviceId: this.id, descriptionText: "",
121 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
125 def setSaturation(int saturation) {
126 if (saturation != this.saturation) {
127 this.currentSaturation = saturation
128 this.saturation = saturation
129 println("The saturation level of the light is changed to $saturation!")
130 sendEvent([name: "saturation", value: "$saturation", deviceId: this.id, descriptionText: "",
131 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
135 def setLevel(int level) {
136 if (level != this.level) {
137 this.currentLevel = level
139 println("The level of the light is changed to $level!")
140 sendEvent([name: "level", value: "$level", deviceId: this.id, descriptionText: "",
141 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
145 def setLevel(long level) {
146 if (level != this.level) {
147 this.currentLevel = level
149 println("The level of the light is changed to $level!")
150 sendEvent([name: "level", value: "$level", deviceId: this.id, descriptionText: "",
151 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
155 def setColorTemperature(int colorTemperature) {
156 if (colorTemperature != this.colorTemperature) {
157 this.colorTemperature = colorTemperature
158 println("The color temperature level of the light is changed to $colorTemperature!")
159 sendEvent([name: "colorTemperature", value: "$colorTemperature", deviceId: this.id, descriptionText: "",
160 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
165 if (this.currentSwitch != "on") {
166 this.currentSwitch = currentSwitch
167 println("The light is changed to on!")
168 sendEvent([name: "switch", value: "on", deviceId: this.id, descriptionText: "",
169 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
174 if (this.currentSwitch != "off") {
175 this.currentSwitch = currentSwitch
176 println("The light is changed to off!")
177 sendEvent([name: "switch", value: "off", deviceId: this.id, descriptionText: "",
178 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
182 def currentValue(String deviceFeature) {
183 if (deviceFeature == "color") {
185 } else if (deviceFeature == "saturation") {
187 } else if (deviceFeature == "hue") {
189 } else if (deviceFeature == "level") {
191 } else if (deviceFeature == "colorTemperature") {
192 return colorTemperature
193 } else if (deviceFeature == "switch") {
198 def latestValue(String deviceFeature) {
199 if (deviceFeature == "color") {
201 } else if (deviceFeature == "saturation") {
203 } else if (deviceFeature == "hue") {
205 } else if (deviceFeature == "level") {
207 } else if (deviceFeature == "colorTemperature") {
208 return colorTemperature
209 } else if (deviceFeature == "switch") {