//Create a class for color control package ColorControl import Timer.SimulatedTimer public class ColorControl { private String id private String label private String displayName private String color private String currentSwitch private int level private int hue private int saturation private int colorTemperature ColorControl(String id, String label, String displayName, String color, int hue, int saturation, int level, String currentSwitch, int colorTemperature) { this.id = id this.label = label this.displayName = displayName this.color = color this.hue = hue this.saturation = saturation this.level = level this.currentSwitch = currentSwitch this.colorTemperature = colorTemperature } //By model checker def setValue(String value, String name) { if ((name == "color") && (value != this.color)) { this.color = value println("the color of the light is changed to $value!") } else if ((name == "hue") && (value != this.hue)) { this.hue = value.toInteger() println("The hue level of the light is changed to $value!") } else if ((name == "saturation") && (value != this.saturation)) { this.saturation = value.toInteger() println("The saturation level of the light is changed to $value!") } else if ((name == "level") && (value != this.level)) { this.level = value.toInteger() println("The level of the light is changed to $value!") } else if ((name == "currentSwitch") && (value != this.currentSwitch)) { this.currentSwitch = value println("The light is changed to $value!") } else if ((name == "colorTemperature") && (value != this.colorTemperature)) { this.colorTemperature = value.toInteger() println("The color temperature level of the light is changed to $value!") } } //methods def setColor(String color) { if (color != this.color) { this.color = color println("The color of the light is changed to $color!") sendEvent([name: "color", value: "$color", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } } def setHue(int hue) { if (hue != this.hue) { this.hue = hue println("The hue level of the light is changed to $hue!") sendEvent([name: "hue", value: "$hue", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } } def setSaturation(int saturation) { if (saturation != this.saturation) { this.saturation = saturation println("The saturation level of the light is changed to $saturation!") sendEvent([name: "saturation", value: "$saturation", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } } def setLevel(int level) { if (level != this.level) { this.level = level println("The level of the light is changed to $level!") sendEvent([name: "level", value: "$level", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } } def setColorTemperature(int colorTemperature) { if (colorTemperature != this.colorTemperature) { this.colorTemperature = colorTemperature println("The color temperature level of the light is changed to $colorTemperature!") sendEvent([name: "colorTemperature", value: "$colorTemperature", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } } def on(String currentSwitch) { if (currentSwitch != this.currentSwitch) { this.currentSwitch = currentSwitch println("The light is changed to $currentSwitch!") sendEvent([name: "switch", value: "$currentSwitch", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) sendEvent([name: "switch.on", value: "$currentSwitch", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } } def off(String currentSwitch) { if (currentSwitch != this.currentSwitch) { this.currentSwitch = currentSwitch println("The light is changed to $currentSwitch!") sendEvent([name: "switch", value: "$currentSwitch", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) sendEvent([name: "switch.off", value: "$currentSwitch", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } } def currentValue(String deviceFeature) { if (deviceFeature == "color") { return color } else if (deviceFeature == "saturation") { return saturation } else if (deviceFeature == "hue") { return hue } else if (deviceFeature == "level") { return level } else if (deviceFeature == "colorTemperature") { return colorTemperature } else if (deviceFeature == "switch") { return currentSwitch } } def latestValue(String deviceFeature) { if (deviceFeature == "color") { return color } else if (deviceFeature == "saturation") { return saturation } else if (deviceFeature == "hue") { return hue } else if (deviceFeature == "level") { return level } else if (deviceFeature == "colorTemperature") { return colorTemperature } else if (deviceFeature == "switch") { return currentSwitch } } }