Infrastructure compatible with 2 types of switches.(Normal switches and otherVsGeneri...
[smartthings-infrastructure.git] / EnergyMeter / EnergyMeters.groovy
index 59670840b327d7dfd8d8a9f8e993d3d6abbe64e5..5d8b74aa73146c8ee7106b8ce993639984354f09 100644 (file)
@@ -12,24 +12,31 @@ public class EnergyMeters {
        private String label = "energyMeter0"
        private String displayName = "energyMeter0"
        private int energy = 50
+       private int currentEnergy = 50
+       private String status = "off"
 
                
-       EnergyMeters(Closure sendEvent, int deviceNumbers) {
+       EnergyMeters(Closure sendEvent, int deviceNumbers, boolean init) {
                this.sendEvent = sendEvent              
                this.deviceNumbers = deviceNumbers
                this.energyMeters = []
-               
-               def init = Verify.getIntFromList(30, 50, 70)
-               this.energy = init
-               
-               energyMeters.add(new EnergyMeter(id, label, displayName, this.energy))
+
+               if (init) {
+                       this.energy = 50
+                       this.currentEnergy = 50
+               } else {
+                       this.energy = 60
+                       this.currentEnergy = 60
+               }
+               energyMeters.add(new EnergyMeter(id, label, displayName, this.energy, this.status))
        }
 
        //By Model Checker
        def setValue(LinkedHashMap eventDataMap) {
-               if (eventDataMap["value"] != energyMeters[0].energy) {
-                       energyMeters[0].setValue(eventDataMap["value"])
-                       this.energy = energyMeters[0].energy
+               if (eventDataMap["value"].toInteger() != energyMeters[0].energy) {
+                       this.energy = eventDataMap["value"].toInteger()
+                       this.currentEnergy = eventDataMap["value"].toInteger()
+                       energyMeters[0].setValue(eventDataMap["value"]) 
                        sendEvent(eventDataMap)
                }
        }
@@ -47,15 +54,35 @@ public class EnergyMeters {
        def find(Closure Input) {
                energyMeters.find(Input)
        }
+       def sort(Closure Input) {
+               energyMeters.sort(Input)
+       }
        def collect(Closure Input) {
                energyMeters.collect(Input)
        }
 
+       def reset() {
+               if (status != "on") {
+                       status = "on"
+                       energyMeters[0].reset()
+               }
+       }
+       
+       def off() {
+               if (status != "off") {
+                       status = "off"
+                       energyMeters[0].off()
+               }
+       }
 
        def currentValue(String deviceFeature) {
                energyMeters[0].currentValue(deviceFeature)//It is called if we have only one device
        }
 
+       def latestValue(String deviceFeature) {
+               energyMeters[0].latestValue(deviceFeature)//It is called if we have only one device
+       }
+
        def getAt(int ix) {
                energyMeters[ix]
        }