X-Git-Url: http://plrg.eecs.uci.edu/git/?p=smartthings-infrastructure.git;a=blobdiff_plain;f=ColorControl%2FColorControls.groovy;h=0ff9cfdf1ae825fca522d4d303fb96319a262fe4;hp=6fc62aa14461788cf41218f7f2828ffaa9edd9b6;hb=752df0b3baa7349d6a0f5bdefb7d644a552bea2e;hpb=9ba86613e2bf63d553369c526274b040c116c5de diff --git a/ColorControl/ColorControls.groovy b/ColorControl/ColorControls.groovy index 6fc62aa..0ff9cfd 100644 --- a/ColorControl/ColorControls.groovy +++ b/ColorControl/ColorControls.groovy @@ -11,8 +11,8 @@ public class ColorControls { private String id = "colorControlID0" private String label = "colorControl0" private String displayName = "colorControl0" - private String color = "red" - private String currentColor = "red" + private String color = "Red" + private String currentColor = "Red" private String currentSwitch = "on" private int level = 50 private int currentLevel = 50 @@ -21,6 +21,7 @@ public class ColorControls { private int saturation = 50 private int currentSaturation = 50 private int colorTemperature = 15000 + private boolean colorChanged = false ColorControls(Closure sendEvent, int deviceNumbers, boolean init) { @@ -29,17 +30,26 @@ public class ColorControls { this.colorControls = [] if (init) { + this.level = 20 + this.currentLevel = 20 this.hue = 30 + this.currentHue = 30 this.saturation = 40 - this.color = "red" + this.currentSaturation = 40 + this.colorTemperature = 10000 + this.color = "Red" this.currentSwitch = "off" } else { + this.level = 50 + this.currentLevel = 50 this.hue = 50 + this.currentHue = 50 this.saturation = 50 - this.color = "blue" + this.currentSaturation = 50 + this.colorTemperature = 15000 + this.color = "Blue" this.currentSwitch = "on" } - colorControls.add(new ColorControl(sendEvent, id, label, displayName, this.color, this.hue, this.saturation, this.level, this.currentSwitch, this.colorTemperature)) } @@ -112,36 +122,54 @@ public class ColorControls { //methods def setColor(LinkedHashMap metaData) { def hexColor = metaData.hex + def newColor switch (hexColor) { case "#0000FF": - color = "Blue" + newColor = "Blue" break; case "#00FF00": - color = "Green" + newColor = "Green" break; case "#FFFF00": - color = "Yellow" + newColor = "Yellow" break; case "#FF6000": - color = "Orange" + newColor = "Orange" break; case "#BF7FBF": - color = "Purple" + newColor = "Purple" break; case "#FF5F5F": - color = "Pink" + newColor = "Pink" break; case "#FF0000": - color = "Red" + newColor = "Red" break; default: - color = "Blue" + newColor = "Blue" break; } - if (color != this.color) { - this.currentColor = color - this.color = color - colorControls[0].setColor(color) + if (newColor != this.color) { + this.currentColor = newColor + this.color = newColor + colorControls[0].setColor(newColor) + if (this.colorChanged) { + this.colorChanged = false + } else { + this.colorChanged = true + } + } + def newLevel = metaData.level + def newHue = metaData.hue + def newSaturation = metaData.saturation + if (newLevel != null) { + setLevel(newLevel) + } + if (newHue != null) { + setHue(newHue) + } + if (newSaturation != null) { + setSaturation(newSaturation) } }