X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=PresenceSensor%2FPresenceSensors.groovy;fp=PresenceSensor%2FPresenceSensors.groovy;h=942894aa2f9d9624aea5a5e89dfa48574cf0858e;hb=d0b538d93e64c63d2673796db08570953b57f947;hp=782e25cca5df70640893d94d166df0a50c2e1889;hpb=2932def9bb947d617975235763f7338360f0e5a4;p=smartthings-infrastructure.git diff --git a/PresenceSensor/PresenceSensors.groovy b/PresenceSensor/PresenceSensors.groovy index 782e25c..942894a 100644 --- a/PresenceSensor/PresenceSensors.groovy +++ b/PresenceSensor/PresenceSensors.groovy @@ -1,90 +1,31 @@ -//Create a class for presence sensor +// Create a class for presence sensor package PresenceSensor -import Timer.SimulatedTimer +import SmartThing.SmartThings -public class PresenceSensors { - private int deviceNumbers - private List presenceSensors - def sendEvent +public class PresenceSensors extends SmartThings { + List presenceSensors = new ArrayList() - //For one device(We cannot have obj.id)-> We should have obj[0].id - private String id = "presenceSensorID0" - private String label = "presenceSensor0" - private String displayName = "presenceSensor0" - private String presence = "not present" - private String currentPresence = "not present" - private String presenceLatestValue = "not present" + PresenceSensors(Closure sendEvent, boolean init) { + presenceSensors = smartThings - - PresenceSensors(Closure sendEvent, int deviceNumbers, boolean init) { - this.sendEvent = sendEvent - this.deviceNumbers = deviceNumbers - this.presenceSensors = [] + // Initialization + StringBuilder id = new StringBuilder("presenceSensorID0") + StringBuilder label = new StringBuilder("presence") + StringBuilder displayName = new StringBuilder("presenceSensor0") + StringBuilder presence = new StringBuilder() - if (init) { - this.presence = "not present" - this.currentPresence = "not present" - this.presenceLatestValue = "not present" - } else { - this.presence = "present" - this.currentPresence = "present" - this.presenceLatestValue = "present" - } - presenceSensors.add(new PresenceSensor(id, label, displayName, this.presence, this.presenceLatestValue)) - } - - //By Model Checker - def setValue(LinkedHashMap eventDataMap) { - if (eventDataMap["value"] != presenceSensors[0].presence) { - this.presenceLatestValue = eventDataMap["value"] - this.presence = eventDataMap["value"] - this.currentPresence = eventDataMap["value"] - presenceSensors[0].setValue(eventDataMap["value"]) - sendEvent(eventDataMap) - } - } - - //Methods for closures - def count(Closure Input) { - presenceSensors.count(Input) - } - def size() { - presenceSensors.size() - } - def each(Closure Input) { - presenceSensors.each(Input) - } - def find(Closure Input) { - presenceSensors.find(Input) - } - def sort(Closure Input) { - presenceSensors.sort(Input) - } - def collect(Closure Input) { - presenceSensors.collect(Input) - } - - def currentState(String deviceFeature) { - presenceSensors[0].currentState(deviceFeature) - } - - def currentValue(String deviceFeature) { - presenceSensors[0].currentValue(deviceFeature)//It is called if we have only one device - } - - def latestValue(String deviceFeature) { - presenceSensors[0].latestValue(deviceFeature)//It is called if we have only one device - } - - def statesSince(String info, Date dateObj) { - return presenceSensors[0].statesSince() - } + if (init) + presence.append("not present") + else + presence.append("present") - def eventsSince(Date dateObj) { - return presenceSensors[0].statesSince() + presenceSensors.add(new PresenceSensor(sendEvent, id, label, displayName, presence)) } - def getAt(int ix) { - presenceSensors[ix] + // Methods to return values + def getCurrentPresence() { + List tmpValues = new ArrayList() + tmpValues.add(presenceSensors[0].getCurrentPresence()) + return tmpValues } }