X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=EnergyMeter%2FEnergyMeters.groovy;fp=EnergyMeter%2FEnergyMeters.groovy;h=caec87591a4e041efd6f47cd1aa5f6bfdf155157;hb=c3be64e00452e6b9789207f5746ab4089fcf1f0f;hp=0000000000000000000000000000000000000000;hpb=16ebbcf5da0fa9989acb5b03129b9706331066c5;p=smartthings-infrastructure.git diff --git a/EnergyMeter/EnergyMeters.groovy b/EnergyMeter/EnergyMeters.groovy new file mode 100644 index 0000000..caec875 --- /dev/null +++ b/EnergyMeter/EnergyMeters.groovy @@ -0,0 +1,59 @@ +//Create a class for energy meter +package EnergyMeter +import Timer.SimulatedTimer + +public class EnergyMeters { + private int deviceNumbers + private List energyMeters + def sendEvent + + //For one device(We cannot have obj.id)-> We should have obj[0].id + private String id = "energyMeterID0" + private String label = "energyMeter0" + private String displayName = "energyMeter0" + private int energy = 50 + + + EnergyMeters(Closure sendEvent, int deviceNumbers) { + this.sendEvent = sendEvent + this.deviceNumbers = deviceNumbers + this.energyMeters = [] + + energyMeters.add(new EnergyMeter(id, label, displayName, this.energy)) + } + + //By Model Checker + def setValue(LinkedHashMap eventDataMap) { + if (eventDataMap["value"] != energyMeters[0].energy) { + energyMeters[0].setValue(eventDataMap["value"]) + this.energy = energyMeters[0].energy + sendEvent(eventDataMap) + } + } + + //Methods for closures + def count(Closure Input) { + energyMeters.count(Input) + } + def size() { + energyMeters.size() + } + def each(Closure Input) { + energyMeters.each(Input) + } + def find(Closure Input) { + energyMeters.find(Input) + } + def collect(Closure Input) { + energyMeters.collect(Input) + } + + + def currentValue(String deviceFeature) { + energyMeters[0].currentValue(deviceFeature)//It is called if we have only one device + } + + def getAt(int ix) { + energyMeters[ix] + } +}