//Create a class for water sensor
package WaterSensor
-import Timer.SimulatedTimer
+import SmartThing.SmartThings
-//JPF's Verify API
-import gov.nasa.jpf.vm.Verify
+public class WaterSensors extends SmartThings {
+ List waterSensors = new ArrayList()
-public class WaterSensors {
- private int deviceNumbers
- private List waterSensors
- def sendEvent
+ WaterSensors(Closure sendEvent, boolean init) {
+ // Only initialize one time since we only have one device for each capability
+ waterSensors = smartThings
- //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"
+ // Initialization
+ String id = "waterSensorID0"
+ String label = "water"
+ String displayName = "waterSensor"
+ String water
-
- WaterSensors(Closure sendEvent, int deviceNumbers) {
- this.sendEvent = sendEvent
- this.deviceNumbers = deviceNumbers
- this.waterSensors = []
+ if (init)
+ water = "dry"
+ else
+ water = "wet"
- def init = Verify.getBoolean()
- if (init) {
- this.water = "dry"
- } else {
- this.water = "wet"
- }
- waterSensors.add(new WaterSensor(id, label, displayName, this.water))
- }
-
- //By Model Checker
- def setValue(LinkedHashMap eventDataMap) {
- if (eventDataMap["value"] != waterSensors[0].water) {
- waterSensors[0].setValue(eventDataMap["value"])
- this.water = waterSensors[0].water
- sendEvent(eventDataMap)
- }
- }
-
- //Methods for closures
- def count(Closure Input) {
- waterSensors.count(Input)
- }
- def size() {
- waterSensors.size()
- }
- def each(Closure Input) {
- waterSensors.each(Input)
- }
- def find(Closure Input) {
- waterSensors.find(Input)
- }
- def collect(Closure Input) {
- waterSensors.collect(Input)
- }
-
- def getAt(int ix) {
- waterSensors[ix]
+ waterSensors.add(new WaterSensor(sendEvent, id, label, displayName, water))
}
}