6cb9b397ae7290549c9b37f2984559486b777bcd
[smartthings-infrastructure.git] / ColorTemperature / ColorTemperature.groovy
1 //Create a class for color temperature
2 package ColorTemperature
3 import SmartThing.SmartThing
4
5 //Importing mutable integer class
6 import MutableInteger.MutableInteger
7
8 public class ColorTemperature 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 currentColorTemperature = new MutableInteger()
15         // Maps from features to values
16         HashMap<String, MutableInteger> deviceIntValuesMap = new HashMap<String, MutableInteger>()
17
18         ColorTemperature(Closure sendEvent, StringBuilder id, StringBuilder label, StringBuilder displayName, MutableInteger colorTemperature) {
19                 deviceIntValuesMap = deviceIntValueSmartThing
20                 idSmartThing = id
21                 labelSmartThing = label
22                 displayNameSmartThing = displayName
23                 sendEventSmartThings = sendEvent
24
25                 // Initialization
26                 this.id = id
27                 this.label = label
28                 this.displayName = displayName
29                 this.currentColorTemperature = currentColorTemperature
30
31                 deviceIntValuesMap.put("colorTemperature", currentColorTemperature)
32         }
33
34         // Methods to set values
35         def setColorTemperature(int newValue) {
36                 if (!currentColorTemperature.getValue().equals(newValue)) {
37                         String tmpID = id.toString()
38                         currentColorTemperature.setValue(newValue)
39                         println("The color temperature of the light with id $tmpID is changed to $newValue!")
40                         sendEvent([name: "colorTemperature", value: "$newValue", deviceId: tmpID, descriptionText: "",
41                                    displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
42                 }
43         }
44
45         // Methods to return values
46         def getCurrentColorTemperature() {
47                 return currentColorTemperature.getValue()
48         }
49 }