1 //Create a class for switch level
3 import SmartThing.SmartThing
5 public class SwitchLevel extends SmartThing {
6 // id, label, and display name of the device
7 StringBuilder id = new StringBuilder()
8 StringBuilder label = new StringBuilder()
9 StringBuilder displayName = new StringBuilder()
10 // Features with numberical values
11 MutableInteger currentLevel = new MutableInteger()
12 // Maps from features to values
13 HashMap<String, MutableInteger> deviceIntValuesMap = new HashMap<String, MutableInteger>()
15 SwitchLevel(Closure sendEvent, StringBuilder id, StringBuilder label, StringBuilder displayName, MutableInteger currentLevel) {
16 deviceIntValuesMap = deviceIntValueSmartThing
18 labelSmartThing = label
19 displayNameSmartThing = displayName
20 sendEventSmartThings = sendEvent
25 this.displayName = displayName
26 this.currentLevel = currentLevel
28 deviceIntValuesMap.put("level", currentLevel)
31 // Methods to set values
32 def setLevel(String newValue) {
33 setLevel(newValue.toInteger())
36 def setLevel(long newValue) {
37 setLevel((int) newValue) {
40 def setLevel(int newValue) {
41 if (!currentLevel.getValue().equals(newValue)) {
42 String tmpID = id.toString()
43 variable.setValue(newValue)
44 println("the switch with id:$tmpID is setted to level $level!")
45 sendEvent([name: "level", value: newValue, deviceId: tmpID, descriptionText: "",
46 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
50 // Methods to return values
51 def getCurrentLevel() {
52 return currentLevel.getValue()