X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=ColorControl%2FColorControl.groovy;h=53658dce6e3ddb542ee1f616f6a7fa4174fd195d;hb=d3802bd96ca8963ae52b9740443f9be6896f0e18;hp=1c2665c2a6357e04de5a0b8a4f38dd087ad84bc1;hpb=c3be64e00452e6b9789207f5746ab4089fcf1f0f;p=smartthings-infrastructure.git diff --git a/ColorControl/ColorControl.groovy b/ColorControl/ColorControl.groovy index 1c2665c..53658dc 100644 --- a/ColorControl/ColorControl.groovy +++ b/ColorControl/ColorControl.groovy @@ -8,52 +8,113 @@ public class ColorControl { 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) { + 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") { + if ((name == "color") && (value != this.color)) { this.color = value println("the color of the light is changed to $value!") - } else if (name == "hue") { + } else if ((name == "hue") && (value != this.hue)) { this.hue = value.toInteger() println("The hue level of the light is changed to $value!") - } else { + } 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) { - 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: [value: "$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) { - 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: [value: "$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) { - 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: [value: "$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) { @@ -63,6 +124,28 @@ public class ColorControl { 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 } } }