From a506caeba94b4c035e0c47f29017f07773e3f318 Mon Sep 17 00:00:00 2001 From: amiraj Date: Tue, 6 Aug 2019 16:13:54 -0700 Subject: [PATCH 1/1] Fixing some bugs --- Event/Event.groovy | 4 ++ Methods/timeToday.groovy | 9 ++++ MotionSensor/MotionSensor.groovy | 50 +++++++++++++++---- MotionSensor/MotionSensors.groovy | 7 ++- .../RelativeHumidityMeasurement.groovy | 15 ++++++ .../RelativeHumidityMeasurements.groovy | 4 ++ Switch/Switch.groovy | 38 ++++++++++++++ Switch/Switches.groovy | 4 ++ ThreeAxis/ThreeAxis.groovy | 8 ++- ThreeAxis/ThreeAxises.groovy | 5 +- Variables and events for each device | 2 + 11 files changed, 130 insertions(+), 16 deletions(-) diff --git a/Event/Event.groovy b/Event/Event.groovy index eecbc7b..7e83434 100644 --- a/Event/Event.groovy +++ b/Event/Event.groovy @@ -18,6 +18,8 @@ public class Event { 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 @@ -35,5 +37,7 @@ public class Event { this.integerValue = value.toInteger() this.doubleValue = Double.parseDouble(value); } + this.physical = true + this.date = new Date() } } diff --git a/Methods/timeToday.groovy b/Methods/timeToday.groovy index 0d905b5..07894de 100644 --- a/Methods/timeToday.groovy +++ b/Methods/timeToday.groovy @@ -14,3 +14,12 @@ def timeToday(String time) { 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 +} diff --git a/MotionSensor/MotionSensor.groovy b/MotionSensor/MotionSensor.groovy index 79fbf9b..01f1363 100644 --- a/MotionSensor/MotionSensor.groovy +++ b/MotionSensor/MotionSensor.groovy @@ -9,8 +9,6 @@ public class MotionSensor { 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 @@ -26,18 +24,48 @@ public class MotionSensor { 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) } diff --git a/MotionSensor/MotionSensors.groovy b/MotionSensor/MotionSensors.groovy index 0ae021a..c799b0e 100644 --- a/MotionSensor/MotionSensors.groovy +++ b/MotionSensor/MotionSensors.groovy @@ -63,7 +63,10 @@ public class MotionSensors { 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 @@ -74,7 +77,7 @@ public class MotionSensors { } def statesSince(String info, Date dateObj) { - return motionSensors[0].statesSince(info, dateObj) + return motionSensors[0].statesSince() } def getAt(int ix) { diff --git a/RelativeHumidityMeasurement/RelativeHumidityMeasurement.groovy b/RelativeHumidityMeasurement/RelativeHumidityMeasurement.groovy index c9ad722..47da3b5 100644 --- a/RelativeHumidityMeasurement/RelativeHumidityMeasurement.groovy +++ b/RelativeHumidityMeasurement/RelativeHumidityMeasurement.groovy @@ -16,6 +16,21 @@ public class RelativeHumidityMeasurement { 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!") diff --git a/RelativeHumidityMeasurement/RelativeHumidityMeasurements.groovy b/RelativeHumidityMeasurement/RelativeHumidityMeasurements.groovy index a2cd5cd..4859ae0 100644 --- a/RelativeHumidityMeasurement/RelativeHumidityMeasurements.groovy +++ b/RelativeHumidityMeasurement/RelativeHumidityMeasurements.groovy @@ -40,6 +40,10 @@ public class RelativeHumidityMeasurements { } } + def eventsSince(Date dateObj) { + return humidityMeasurements[0].eventsSince() + } + //Methods for closures def count(Closure Input) { humidityMeasurements.count(Input) diff --git a/Switch/Switch.groovy b/Switch/Switch.groovy index 8bea530..e017b55 100644 --- a/Switch/Switch.groovy +++ b/Switch/Switch.groovy @@ -26,6 +26,44 @@ public class Switch { 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) { diff --git a/Switch/Switches.groovy b/Switch/Switches.groovy index e6ac864..a0e191c 100644 --- a/Switch/Switches.groovy +++ b/Switch/Switches.groovy @@ -58,6 +58,10 @@ public class Switches { } //By Apps + def eventsSince(Date dateObj, LinkedHashMap metaData) { + return switches[0].eventsSince() + } + def setLevel(int level) { currentLevel = level switches[0].setLevel(level) diff --git a/ThreeAxis/ThreeAxis.groovy b/ThreeAxis/ThreeAxis.groovy index 83c1a59..3e5e817 100644 --- a/ThreeAxis/ThreeAxis.groovy +++ b/ThreeAxis/ThreeAxis.groovy @@ -24,13 +24,17 @@ public class ThreeAxis { 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 } } diff --git a/ThreeAxis/ThreeAxises.groovy b/ThreeAxis/ThreeAxises.groovy index e9c027e..7077514 100644 --- a/ThreeAxis/ThreeAxises.groovy +++ b/ThreeAxis/ThreeAxises.groovy @@ -52,7 +52,10 @@ public class ThreeAxises { def collect(Closure Input) { threeAxises.collect(Input) } - + + def currentState(String deviceFeature) { + threeAxises[0].currentValue(deviceFeature) + } def currentValue(String deviceFeature) { threeAxises[0].currentValue(deviceFeature) diff --git a/Variables and events for each device b/Variables and events for each device index 6f6d6e3..cd0d297 100644 --- a/Variables and events for each device +++ b/Variables and events for each device @@ -490,6 +490,8 @@ LinkedHashMap threeAxis /*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*/ // -- 2.34.1