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(String color) {
68 if (color != this.color) {
69 this.currentColor = color
71 println("The color of the light is changed to $color!")
72 sendEvent([name: "color", value: "$color", deviceId: this.id, descriptionText: "",
73 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
78 if (hue != this.hue) {
81 println("The hue level of the light is changed to $hue!")
82 sendEvent([name: "hue", value: "$hue", deviceId: this.id, descriptionText: "",
83 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
87 def setSaturation(int saturation) {
88 if (saturation != this.saturation) {
89 this.currentSaturation = saturation
90 this.saturation = saturation
91 println("The saturation level of the light is changed to $saturation!")
92 sendEvent([name: "saturation", value: "$saturation", deviceId: this.id, descriptionText: "",
93 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
97 def setLevel(int level) {
98 if (level != this.level) {
99 this.currentLevel = level
101 println("The level of the light is changed to $level!")
102 sendEvent([name: "level", value: "$level", deviceId: this.id, descriptionText: "",
103 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
107 def setColorTemperature(int colorTemperature) {
108 if (colorTemperature != this.colorTemperature) {
109 this.colorTemperature = colorTemperature
110 println("The color temperature level of the light is changed to $colorTemperature!")
111 sendEvent([name: "colorTemperature", value: "$colorTemperature", deviceId: this.id, descriptionText: "",
112 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
116 def on(String currentSwitch) {
117 if (currentSwitch != this.currentSwitch) {
118 this.currentSwitch = currentSwitch
119 println("The light is changed to $currentSwitch!")
120 sendEvent([name: "switch", value: "$currentSwitch", deviceId: this.id, descriptionText: "",
121 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
122 sendEvent([name: "switch.on", value: "$currentSwitch", deviceId: this.id, descriptionText: "",
123 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
127 def off(String currentSwitch) {
128 if (currentSwitch != this.currentSwitch) {
129 this.currentSwitch = currentSwitch
130 println("The light is changed to $currentSwitch!")
131 sendEvent([name: "switch", value: "$currentSwitch", deviceId: this.id, descriptionText: "",
132 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
133 sendEvent([name: "switch.off", value: "$currentSwitch", deviceId: this.id, descriptionText: "",
134 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
138 def currentValue(String deviceFeature) {
139 if (deviceFeature == "color") {
141 } else if (deviceFeature == "saturation") {
143 } else if (deviceFeature == "hue") {
145 } else if (deviceFeature == "level") {
147 } else if (deviceFeature == "colorTemperature") {
148 return colorTemperature
149 } else if (deviceFeature == "switch") {
154 def latestValue(String deviceFeature) {
155 if (deviceFeature == "color") {
157 } else if (deviceFeature == "saturation") {
159 } else if (deviceFeature == "hue") {
161 } else if (deviceFeature == "level") {
163 } else if (deviceFeature == "colorTemperature") {
164 return colorTemperature
165 } else if (deviceFeature == "switch") {