private double doubleValue
private List integerValues = ["battery", "hue", "saturation", "energy", "level", "temperature",
"heatingSetpoint", "coolingSetpoint", "thermostatSetpoint", "illuminance"]
+ private boolean physical
+ private def date
Event(String value, String name, String deviceId, String descriptionText, boolean displayed, String linkText, String displayName, boolean isStateChange, String unit, String data) {
this.deviceId = deviceId
this.integerValue = value.toInteger()
this.doubleValue = Double.parseDouble(value);
}
+ this.physical = true
+ this.date = new Date()
}
}
timeOfDay.time = inputTime
return timeOfDay
}
+
+
+def timeTodayAfter(Date date, String time, Object timeZone) {
+ def timeOfDay = new Date()
+ def _inputTime = time.split(':')
+ def inputTime = Integer.parseInt(_inputTime[0])*3600+Integer.parseInt(_inputTime[1])*60+1564191100415
+ timeOfDay.time = inputTime
+ return timeOfDay
+}
private String motion
private String currentMotion
private String motionLatestValue
- private List states = []
- private List timeOfStates = []
MotionSensor(String id, String label, String displayName, String motion, String motionLatestValue) {
this.id = id
this.motionLatestValue = value
this.motion = value
this.currentMotion = value
- this.states.add(value)
- this.timeOfStates.add(System.currentTimeMillis())
}
- def statesSince(String info, Date dateObj) {
- def List happenedStates = []
- def sinceThen = dateObj.time
- for (int i = 0;i < timeOfStates.size();i++) {
- if (timeOfStates[i]>=sinceThen)
- happenedStates.add(states[i])
+ def statesSince() {
+ def evtActive = [[name: "motion", value: "active", deviceId: "motionSensorID0", descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
+ def evtInactive = [[name: "motion", value: "inactive", deviceId: "motionSensorID0", descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
+ def init = Verify.getInt(0,4)
+ def evtToSend = []
+ if (init == 0) {//return empty set
+ return evtToSend
+ } else if (init == 1) {//send one active event
+ evtActive.each{
+ evtToSend.add(it)
+ }
+ return evtToSend
+ } else if (init == 2) {//send two active events
+ evtActive.each{
+ evtToSend.add(it)
+ }
+ evtActive.each{
+ evtToSend.add(it)
+ }
+ return evtToSend
+ } else if (init == 3) {//send one inactive event
+ evtInactive.each{
+ evtToSend.add(it)
+ }
+ return evtToSend
+ } else if (init == 4) {//send two inactive events
+ evtInactive.each{
+ evtToSend.add(it)
+ }
+ evtInactive.each{
+ evtToSend.add(it)
+ }
+ return evtToSend
}
- return happenedStates
+ }
+
+ def currentState(String deviceFeature) {
+ currentValue(deviceFeature)
}
def collect(Closure Input) {
motionSensors.collect(Input)
}
-
+
+ def currentState(String deviceFeature) {
+ currentValue(deviceFeature)
+ }
def currentValue(String deviceFeature) {
motionSensors[0].currentValue(deviceFeature)//It is called if we have only one device
}
def statesSince(String info, Date dateObj) {
- return motionSensors[0].statesSince(info, dateObj)
+ return motionSensors[0].statesSince()
}
def getAt(int ix) {
this.humidity = humidity
}
+ def eventsSince() {
+ def evtHumidity = [[name: "humidity", value: this.humidity.toString(), deviceId: "humidityMeasurementID0", descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
+ def init = Verify.getInt(0,1)
+ def evtToSend = []
+ if (init == 0) {//return empty set
+ return evtToSend
+ } else if (init == 1) {//send one open event
+ evtHumidity.each{
+ evtToSend.add(it)
+ }
+ return evtToSend
+ }
+ }
+
//By Model Checker
def setValue(String value) {
println("the humidity is changed to $value!")
}
}
+ def eventsSince(Date dateObj) {
+ return humidityMeasurements[0].eventsSince()
+ }
+
//Methods for closures
def count(Closure Input) {
humidityMeasurements.count(Input)
this.switchLatestValue = switchLatestValue
}
+ def eventsSince() {
+ def evtOn = [[name: "switch", value: "on", deviceId: "switchID0", descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
+ def evtOff = [[name: "switch", value: "off", deviceId: "switchID0", descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
+ def init = Verify.getInt(0,4)
+ def evtToSend = []
+ if (init == 0) {//return empty set
+ return evtToSend
+ } else if (init == 1) {//send one open event
+ evtOn.each{
+ evtToSend.add(it)
+ }
+ return evtToSend
+ } else if (init == 2) {//send two open events
+ evtOn.each{
+ evtToSend.add(it)
+ }
+ evtOn.each{
+ evtToSend.add(it)
+ }
+ return evtToSend
+ } else if (init == 3) {//send one closed event
+ evtOff.each{
+ evtToSend.add(it)
+ }
+ return evtToSend
+ } else if (init == 4) {//send two closed events
+ evtOff.each{
+ evtToSend.add(it)
+ }
+ evtOff.each{
+ evtToSend.add(it)
+ }
+ return evtToSend
+ }
+ }
+
//By Apps
def setLevel(int level) {
if (this.currentLevel != level) {
}
//By Apps
+ def eventsSince(Date dateObj, LinkedHashMap metaData) {
+ return switches[0].eventsSince()
+ }
+
def setLevel(int level) {
currentLevel = level
switches[0].setLevel(level)
println("the three axis of cube is chagned to $threeAxis!")
}
+ def currentState(String deviceFeature) {
+ currentValue(deviceFeature)
+ }
+
def currentValue(String deviceFeature) {
- if (deviceFeature == "threeAxis")
+ if (deviceFeature == "threeAxis" || deviceFeature == "status")
return threeAxis
}
def latestValue(String deviceFeature) {
- if (deviceFeature == "threeAxis")
+ if (deviceFeature == "threeAxis" || deviceFeature == "status")
return threeAxis
}
}
def collect(Closure Input) {
threeAxises.collect(Input)
}
-
+
+ def currentState(String deviceFeature) {
+ threeAxises[0].currentValue(deviceFeature)
+ }
def currentValue(String deviceFeature) {
threeAxises[0].currentValue(deviceFeature)
/*events*/
threeAxisObject.setValue([name: "threeAxis", value: '{"x": 1, "y": 2, "z": 3}', deviceId: "threeAxisID0", descriptionText: "",
displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+threeAxisObject.setValue([name: "status", value: '{"x": 1, "y": 2, "z": 3}', deviceId: "threeAxisID0", descriptionText: "",
+displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
/////
/*events*/
//