X-Git-Url: http://plrg.eecs.uci.edu/git/?p=smartthings-infrastructure.git;a=blobdiff_plain;f=ColorControl%2FColorControls.groovy;h=5262e91b64b9c9fa69a0dcf87b3041d94f3ec9eb;hp=d96b978d774579c4f7efcb2519d86d8b4adb9985;hb=c1971948245fda1774c4c76451387ae8c0b7ebc0;hpb=86c861ff59c870277d034de77d6cef2a4c6f5aa4 diff --git a/ColorControl/ColorControls.groovy b/ColorControl/ColorControls.groovy index d96b978..5262e91 100644 --- a/ColorControl/ColorControls.groovy +++ b/ColorControl/ColorControls.groovy @@ -15,16 +15,19 @@ public class ColorControls { private String label = "colorControl0" private String displayName = "colorControl0" private String color = "red" + private String currentSwitch = "off" + private int level = 50 private int hue = 50 private int saturation = 50 + private int colorTemperature = 15000 - + ColorControls(Closure sendEvent, int deviceNumbers) { this.sendEvent = sendEvent this.deviceNumbers = deviceNumbers this.colorControls = [] - def initHue = Verify.getIntFromList(30, 50, 70) + /*def initHue = Verify.getIntFromList(30, 50, 70) this.hue = initHue def initSat = Verify.getIntFromList(40, 50, 60) this.saturation = initSat @@ -35,9 +38,9 @@ public class ColorControls { this.color = "green" } else { this.color = "blue" - } + }*/ - colorControls.add(new ColorControl(id, label, displayName, this.color, this.hue, this.saturation)) + colorControls.add(new ColorControl(sendEvent, id, label, displayName, this.color, this.hue, this.saturation, this.level, this.currentSwitch, this.colorTemperature)) } //Methods for closures @@ -53,6 +56,9 @@ public class ColorControls { def find(Closure Input) { colorControls.find(Input) } + def sort(Closure Input) { + colorControls.sort(Input) + } def collect(Closure Input) { colorControls.collect(Input) } @@ -61,20 +67,38 @@ public class ColorControls { def setValue(LinkedHashMap eventDataMap) { if (eventDataMap["name"] == "color") { if (eventDataMap["value"] != colorControls[0].color) { + this.color = eventDataMap["value"] colorControls[0].setValue(eventDataMap["value"], "color") - this.color = colorControls[0].color sendEvent(eventDataMap) } } else if (eventDataMap["name"] == "hue") { - if (eventDataMap["value"] != colorControls[0].hue) { + if (eventDataMap["value"].toInteger() != colorControls[0].hue) { + this.hue = eventDataMap["value"].toInteger() colorControls[0].setValue(eventDataMap["value"], "hue") - this.hue = colorControls[0].hue sendEvent(eventDataMap) } - } else { - if (eventDataMap["value"] != colorControls[0].saturation) { + } else if (eventDataMap["name"] == "saturation") { + if (eventDataMap["value"].toInteger() != colorControls[0].saturation) { + this.saturation = eventDataMap["value"].toInteger() colorControls[0].setValue(eventDataMap["value"], "saturation") - this.saturation = colorControls[0].saturation + sendEvent(eventDataMap) + } + } else if (eventDataMap["name"] == "switch") { + if (eventDataMap["value"] != colorControls[0].currentSwitch) { + this.currentSwitch = eventDataMap["value"] + colorControls[0].setValue(eventDataMap["value"], "switch") + sendEvent(eventDataMap) + } + } else if (eventDataMap["name"] == "colorTemperature") { + if (eventDataMap["value"].toInteger() != colorControls[0].colorTemperature) { + this.colorTemperature = eventDataMap["value"].toInteger() + colorControls[0].setValue(eventDataMap["value"], "colorTemperature") + sendEvent(eventDataMap) + } + } else if (eventDataMap["name"] == "level") { + if (eventDataMap["value"].toInteger() != colorControls[0].level) { + this.level = eventDataMap["value"].toInteger() + colorControls[0].setValue(eventDataMap["value"], "level") sendEvent(eventDataMap) } } @@ -84,29 +108,61 @@ public class ColorControls { //methods def setColor(String color) { if (color != this.color) { - colorControls[0].setColor(color) this.color = color + colorControls[0].setColor(color) } } def setHue(int hue) { - if (hue != this.hue) { + if (hue != this.hue) { + this.hue = hue colorControls[0].setHue(hue) - this.hue = hue } } def setSaturation(int saturation) { if (saturation != this.saturation) { - colorControls[0].setSaturation(saturation) this.saturation = saturation + colorControls[0].setSaturation(saturation) } } + def setLevel(int level) { + if (level != this.level) { + this.level = level + colorControls[0].setLevel(level) + } + } + + def setColorTemperature(String colorTemperature) { + if (colorTemperature != this.colorTemperature) { + this.colorTemperature = colorTemperature + colorControls[0].setColorTemperature(colorTemperature) + } + } + + def on(String currentSwitch) { + if (currentSwitch != this.currentSwitch) { + this.currentSwitch = currentSwitch + colorControls[0].on(currentSwitch) + } + } + + def off(String currentSwitch) { + if (currentSwitch != this.currentSwitch) { + this.currentSwitch = currentSwitch + colorControls[0].off(currentSwitch) + } + } + def currentValue(String deviceFeature) { colorControls[0].currentValue(deviceFeature) } + def latestValue(String deviceFeature) { + colorControls[0].latestValue(deviceFeature) + } + def getAt(int ix) { colorControls[ix] }