//Create a class for illuminance measurement
package IlluminanceMeasurement
-import Timer.SimulatedTimer
+import SmartThing.SmartThings
-public class IlluminanceMeasurements {
- private int deviceNumbers
- private List illuminanceMeasurements
- def sendEvent
-
- //For one device(We cannot have obj.id)-> We should have obj[0].id
- private String id = "illuminanceMeasurementsID0"
- private String label = "illuminanceMeasurements0"
- private String displayName = "illuminanceMeasurements0"
- private int illuminance = 50000
- private int currentIlluminance = 50000
+//Importing mutable integer class
+import MutableInteger.MutableInteger
+public class IlluminanceMeasurements extends SmartThings {
+ List illuminanceMeasurements = new ArrayList()
- IlluminanceMeasurements(Closure sendEvent, int deviceNumbers) {
- this.sendEvent = sendEvent
- this.deviceNumbers = deviceNumbers
- this.illuminanceMeasurements = []
-
- illuminanceMeasurements.add(new IlluminanceMeasurement(id, label, displayName, this.illuminance))
- }
-
- //By Model Checker
- def setValue(LinkedHashMap eventDataMap) {
- if (eventDataMap["value"] != illuminanceMeasurements[0].illuminance) {
- illuminanceMeasurements[0].setValue(eventDataMap["value"])
- this.illuminance = illuminanceMeasurements[0].illuminance
- this.currentIlluminance = illuminanceMeasurements[0].illuminance
- sendEvent(eventDataMap)
- }
- }
+ IlluminanceMeasurements(Closure sendEvent, boolean init) {
+ // Only initialize one time since we only have one device for each capability
+ illuminanceMeasurements = smartThings
- //Methods for closures
- def count(Closure Input) {
- illuminanceMeasurements.count(Input)
- }
- def size() {
- illuminanceMeasurements.size()
- }
- def each(Closure Input) {
- illuminanceMeasurements.each(Input)
- }
- def find(Closure Input) {
- illuminanceMeasurements.find(Input)
- }
- def collect(Closure Input) {
- illuminanceMeasurements.collect(Input)
- }
+ // Initialization
+ StringBuilder id = new StringBuilder("illuminanceID0")
+ StringBuilder label = new StringBuilder("illuminance")
+ StringBuilder displayName = new StringBuilder("illuminance0")
+ MutableInteger illuminance = new MutableInteger()
+ if (init)
+ illuminance.setValue(20000)
+ else
+ illuminance.setValue(5)
- def currentValue(String deviceFeature) {
- illuminanceMeasurements[0].currentValue(deviceFeature)//It is called if we have only one device
+ illuminanceMeasurements.add(new IlluminanceMeasurement(sendEvent, id, label, displayName, illuminance))
}
- def getAt(int ix) {
- illuminanceMeasurements[ix]
+ // Methods to return values
+ def getCurrentIlluminance() {
+ List tmpValues = new ArrayList()
+ tmpValues.add(illuminanceMeasurements[0].getCurrentIlluminance())
+ return tmpValues
}
}