Infrastructure that works for all the locks' group!
[smartthings-infrastructure.git] / PowerMeter / PowerMeters.groovy
diff --git a/PowerMeter/PowerMeters.groovy b/PowerMeter/PowerMeters.groovy
new file mode 100644 (file)
index 0000000..b452ec8
--- /dev/null
@@ -0,0 +1,61 @@
+//Create a class for power meter
+package PowerMeter
+import Timer.SimulatedTimer
+
+public class PowerMeters {
+       private int deviceNumbers
+       private List powerMeters
+       def sendEvent
+
+       //For one device(We cannot have obj.id)-> We should have obj[0].id
+       private String id = "powerMeterID0"
+       private String label = "powerMeter0"
+       private String displayName = "powerMeter0"
+       private int power = 50
+       private int currentPower = 50
+
+               
+       PowerMeters(Closure sendEvent, int deviceNumbers) {
+               this.sendEvent = sendEvent              
+               this.deviceNumbers = deviceNumbers
+               this.powerMeters = []
+
+               powerMeters.add(new PowerMeter(id, label, displayName, this.power))
+       }
+
+       //By Model Checker
+       def setValue(LinkedHashMap eventDataMap) {
+               if (eventDataMap["value"] != powerMeters[0].power) {
+                       powerMeters[0].setValue(eventDataMap["value"])
+                       this.power = powerMeters[0].power
+                       this.currentPower = powerMeters[0].currentPower
+                       sendEvent(eventDataMap)
+               }
+       }
+
+       //Methods for closures
+       def count(Closure Input) {
+               powerMeters.count(Input)
+       }
+       def size() {
+               powerMeters.size()
+       }
+       def each(Closure Input) {
+               powerMeters.each(Input)
+       }
+       def find(Closure Input) {
+               powerMeters.find(Input)
+       }
+       def collect(Closure Input) {
+               powerMeters.collect(Input)
+       }
+
+
+       def currentValue(String deviceFeature) {
+               powerMeters[0].currentValue(deviceFeature)//It is called if we have only one device
+       }
+
+       def getAt(int ix) {
+               powerMeters[ix]
+       }
+}