X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=EnergyMeter%2FEnergyMeters.groovy;h=ba9188a0818ddbd85f94b050ca6110cb0410eb75;hb=d0b538d93e64c63d2673796db08570953b57f947;hp=5d8b74aa73146c8ee7106b8ce993639984354f09;hpb=2932def9bb947d617975235763f7338360f0e5a4;p=smartthings-infrastructure.git diff --git a/EnergyMeter/EnergyMeters.groovy b/EnergyMeter/EnergyMeters.groovy index 5d8b74a..ba9188a 100644 --- a/EnergyMeter/EnergyMeters.groovy +++ b/EnergyMeter/EnergyMeters.groovy @@ -1,89 +1,32 @@ //Create a class for energy meter package EnergyMeter -import Timer.SimulatedTimer +import SmartThing.SmartThings -public class EnergyMeters { - private int deviceNumbers - private List energyMeters - def sendEvent +public class EnergyMeters extends SmartThings { + List energyMeters = new ArrayList() - //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 - private int currentEnergy = 50 - private String status = "off" + EnergyMeters(Closure sendEvent, boolean init) { + // Only initialize one time since we only have one device for each capability + energyMeters = smartThings - - EnergyMeters(Closure sendEvent, int deviceNumbers, boolean init) { - this.sendEvent = sendEvent - this.deviceNumbers = deviceNumbers - this.energyMeters = [] + // Initialization + StringBuilder id = new StringBuilder("energyID0") + StringBuilder label = new StringBuilder("energy") + StringBuilder displayName = new StringBuilder("energy0") + MutableInteger energy = new MutableInteger() - 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"].toInteger() != energyMeters[0].energy) { - this.energy = eventDataMap["value"].toInteger() - this.currentEnergy = eventDataMap["value"].toInteger() - energyMeters[0].setValue(eventDataMap["value"]) - 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 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 - } + if (init) + energy.setValue(50) + else + energy.setValue(60) - def latestValue(String deviceFeature) { - energyMeters[0].latestValue(deviceFeature)//It is called if we have only one device + energyMeters.add(new EnergyMeter(sendEvent, id, label, displayName, energy)) } - def getAt(int ix) { - energyMeters[ix] + // Methods to return values + def getCurrentEnergy() { + List tmpValues = new ArrayList() + tmpValues.add(energyMeters[0].getCurrentEnergy()) + return tmpValues } }