1 //Create a class for switch level
3 import SmartThing.SmartThing
5 //Importing mutable integer class
6 import MutableInteger.MutableInteger
8 public class SwitchLevel extends SmartThing {
9 // id, label, and display name of the device
10 StringBuilder id = new StringBuilder()
11 StringBuilder label = new StringBuilder()
12 StringBuilder displayName = new StringBuilder()
13 // Features with numberical values
14 MutableInteger currentLevel = new MutableInteger()
15 // Maps from features to values
16 HashMap<String, MutableInteger> deviceIntValuesMap = new HashMap<String, MutableInteger>()
18 SwitchLevel(Closure sendEvent, StringBuilder id, StringBuilder label, StringBuilder displayName, MutableInteger currentLevel) {
19 deviceIntValuesMap = deviceIntValueSmartThing
21 labelSmartThing = label
22 displayNameSmartThing = displayName
23 sendEventSmartThings = sendEvent
28 this.displayName = displayName
29 this.currentLevel = currentLevel
31 deviceIntValuesMap.put("level", currentLevel)
34 // Methods to set values
35 def setLevel(String newValue) {
36 setLevel(newValue.toInteger())
39 def setLevel(long newValue) {
40 setLevel((int) newValue)
43 def setLevel(int newValue) {
44 if (!currentLevel.getValue().equals(newValue)) {
45 String tmpID = id.toString()
46 variable.setValue(newValue)
47 println("the switch with id:$tmpID is setted to level $level!")
48 sendEvent([name: "level", value: newValue, deviceId: tmpID, descriptionText: "",
49 displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
53 // Methods to return values
54 def getCurrentLevel() {
55 return currentLevel.getValue()