X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=SwitchLevel%2FSwitchLevel.groovy;h=ac7895733f874a70fe2af93a47784c10d2e39c68;hb=2932def9bb947d617975235763f7338360f0e5a4;hp=ff83a50e86a0c8c51b96499b252f2aa7b4c9943b;hpb=d3802bd96ca8963ae52b9740443f9be6896f0e18;p=smartthings-infrastructure.git diff --git a/SwitchLevel/SwitchLevel.groovy b/SwitchLevel/SwitchLevel.groovy index ff83a50..ac78957 100644 --- a/SwitchLevel/SwitchLevel.groovy +++ b/SwitchLevel/SwitchLevel.groovy @@ -9,31 +9,82 @@ public class SwitchLevel { private String switchState private String currentSwitch private int level + private int currentLevel private int rate + private int currentRate + private int hue + private int currentHue + private int saturation + private int currentSaturation private String switchLatestValue def sendEvent def timers - SwitchLevel(Closure sendEvent, String id, String label, String displayName, int level, String switchState, String switchLatestValue) { + SwitchLevel(Closure sendEvent, String id, String label, String displayName, int level, int hue, int saturation, String switchState, String switchLatestValue) { this.sendEvent = sendEvent this.timers = new SimulatedTimer() this.id = id this.label = label this.displayName = displayName this.level = level + this.currentLevel = level this.rate = level + this.currentRate = level + this.hue = hue + this.currentHue = hue + this.saturation = saturation + this.currentSaturation = saturation this.switchState = switchState this.currentSwitch = switchState this.switchLatestValue = switchLatestValue } //By Apps + def setColor(LinkedHashMap metaData) { + if ((this.level != metaData["level"]) || (this.hue != metaData["hue"]) || (this.saturation != metaData["saturation"])) { + this.level = metaData["level"] + this.currentLevel = metaData["level"] + this.rate = metaData["level"] + this.currentRate = metaData["level"] + this.hue = metaData["hue"] + this.currentHue = metaData["hue"] + this.saturation = metaData["saturation"] + this.currentSaturation = metaData["saturation"] + println("the switch with id:$id is setted to level $level and hue to $hue and saturation to $saturation!") + sendEvent([name: "level", value: "$level", deviceId: this.id, descriptionText: "", + displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) + sendEvent([name: "hue", value: "$hue", deviceId: this.id, descriptionText: "", + displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) + sendEvent([name: "saturation", value: "$saturation", deviceId: this.id, descriptionText: "", + displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) + } + } + + def setLevel(String level) { + def newLevel = level.toInteger() + setLevel(newLevel) + } + def setLevel(int level) { if (this.level != level) { println("the switch with id:$id is setted to level $level!") this.level = level + this.currentLevel = level this.rate = level + this.currentRate = level + sendEvent([name: "level", value: "$level", deviceId: this.id, descriptionText: "", + displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) + } + } + + def setLevel(long level) { + if (this.level != level) { + println("the switch with id:$id is setted to level $level!") + this.level = level + this.currentLevel = level + this.rate = level + this.currentRate = level sendEvent([name: "level", value: "$level", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } @@ -47,8 +98,6 @@ public class SwitchLevel { this.currentSwitch = "on" sendEvent([name: "switch", value: "on", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) - sendEvent([name: "switch.on", value: "on", deviceId: this.id, descriptionText: "", - displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } } @@ -61,8 +110,6 @@ public class SwitchLevel { this.currentSwitch = "on" sendEvent([name: "switch", value: "on", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) - sendEvent([name: "switch.on", value: "on", deviceId: this.id, descriptionText: "", - displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } } } @@ -75,8 +122,6 @@ public class SwitchLevel { this.currentSwitch = "off" sendEvent([name: "switch", value: "off", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) - sendEvent([name: "switch.off", value: "off", deviceId: this.id, descriptionText: "", - displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } } @@ -89,16 +134,40 @@ public class SwitchLevel { this.currentSwitch = "off" sendEvent([name: "switch", value: "off", deviceId: this.id, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) - sendEvent([name: "switch.off", value: "off", deviceId: this.id, descriptionText: "", - displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } } } //By Model Checker - def setValue(String value) { - println("the switch with id:$id is setted to level $value!") - this.level = value.toInteger() - this.rate = value.toInteger() + def setValue(String value, String name) { + if (name == "switch") { + println("the switch with id:$id is $value!") + this.switchLatestValue = value + this.switchState = value + this.currentSwitch = value + } else if (name == "level") { + println("the switch with id:$id is setted to level $value!") + this.level = value.toInteger() + this.currentLevel = value.toInteger() + this.rate = value.toInteger() + this.currentRate = value.toInteger() + } + } + + + def currentValue(String deviceFeature) { + if (deviceFeature == "level") { + return level + } else if (deviceFeature == "switch") { + return switchState + } + } + + def latestValue(String deviceFeature) { + if (deviceFeature == "level") { + return level + } else if (deviceFeature == "switch") { + return switchState + } } }