//Create a class for color temperature package ColorTemperature import Timer.SimulatedTimer public class ColorTemperature { def sendEvent private String id private String label private String displayName private String currentSwitch private int level private int currentLevel private int colorTemperature ColorTemperature(Closure sendEvent, String id, String label, String displayName, int level, String currentSwitch, int colorTemperature) { this.id = id this.label = label this.displayName = displayName this.level = level this.currentLevel = level this.currentSwitch = currentSwitch this.colorTemperature = colorTemperature this.sendEvent = sendEvent } //By model checker def setValue(String value, String name) { if ((name == "level") && (value != this.level)) { this.currentLevel = value.toInteger() 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 setLevel(int level) { if (level != this.level) { this.currentLevel = 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 == "level") { return level } else if (deviceFeature == "colorTemperature") { return colorTemperature } else if (deviceFeature == "switch") { return currentSwitch } } def latestValue(String deviceFeature) { if (deviceFeature == "level") { return level } else if (deviceFeature == "colorTemperature") { return colorTemperature } else if (deviceFeature == "switch") { return currentSwitch } } }