//Create a class for water sensor
package WaterSensor
-import Timer.SimulatedTimer
-
-public class WaterSensors {
- private int deviceNumbers
- private List waterSensors
- def sendEvent
-
- //For one device(We cannot have obj.id)-> We should have obj[0].id
- private String id = "waterSensorID0"
- private String label = "waterSensor0"
- private String displayName = "waterSensor0"
- private String water = "dry"
+import SmartThing.SmartThings
+public class WaterSensors extends SmartThings {
+ List waterSensors = new ArrayList()
- WaterSensors(Closure sendEvent, int deviceNumbers) {
- this.sendEvent = sendEvent
- this.deviceNumbers = deviceNumbers
- this.waterSensors = []
+ WaterSensors(Closure sendEvent, boolean init) {
+ // Only initialize one time since we only have one device for each capability
+ waterSensors = smartThings
- waterSensors.add(new WaterSensor(id, label, displayName, this.water))
- }
+ // Initialization
+ StringBuilder id = new StringBuilder("waterSensorID0")
+ StringBuilder label = new StringBuilder("waterSensor")
+ StringBuilder displayName = new StringBuilder("waterSensor0")
+ StringBuilder water = new StringBuilder()
- //By Model Checker
- def setValue(LinkedHashMap eventDataMap) {
- if (eventDataMap["value"] != waterSensors[0].water) {
- this.water = eventDataMap["value"]
- waterSensors[0].setValue(eventDataMap["value"])
- sendEvent(eventDataMap)
- }
- }
+ if (init)
+ water.append("dry")
+ else
+ water.append("wet")
- //Methods for closures
- def count(Closure Input) {
- waterSensors.count(Input)
- }
- def size() {
- waterSensors.size()
- }
- def each(Closure Input) {
- waterSensors.each(Input)
+ waterSensors.add(new WaterSensor(sendEvent, id, label, displayName, water))
}
- def find(Closure Input) {
- waterSensors.find(Input)
- }
- def sort(Closure Input) {
- waterSensors.sort(Input)
- }
- def collect(Closure Input) {
- waterSensors.collect(Input)
- }
-
- def getAt(int ix) {
- waterSensors[ix]
+
+ // Methods to return values
+ def getCurrentWater() {
+ List tmpValues = new ArrayList()
+ tmpValues.add(waterSensors[0].getCurrentWater())
+ return tmpValues
}
}