//Create a class for switch level package SwitchLevel import SmartThing.SmartThing public class SwitchLevel extends SmartThing { // id, label, and display name of the device StringBuilder id = new StringBuilder() StringBuilder label = new StringBuilder() StringBuilder displayName = new StringBuilder() // Features with numberical values MutableInteger currentLevel = new MutableInteger() // Maps from features to values HashMap deviceIntValuesMap = new HashMap() SwitchLevel(Closure sendEvent, StringBuilder id, StringBuilder label, StringBuilder displayName, MutableInteger currentLevel) { deviceIntValuesMap = deviceIntValueSmartThing idSmartThing = id labelSmartThing = label displayNameSmartThing = displayName sendEventSmartThings = sendEvent // Initialization this.id = id this.label = label this.displayName = displayName this.currentLevel = currentLevel deviceIntValuesMap.put("level", currentLevel) } // Methods to set values def setLevel(String newValue) { setLevel(newValue.toInteger()) } def setLevel(long newValue) { setLevel((int) newValue) { } def setLevel(int newValue) { if (!currentLevel.getValue().equals(newValue)) { String tmpID = id.toString() variable.setValue(newValue) println("the switch with id:$tmpID is setted to level $level!") sendEvent([name: "level", value: newValue, deviceId: tmpID, descriptionText: "", displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']) } } // Methods to return values def getCurrentLevel() { return currentLevel.getValue() } }