1 //Create a class for valve
3 import Timer.SimulatedTimer
11 //If we have only one device
12 private String id = "ValveID0"
13 private String label = "Valve0"
14 private String displayName = "Valve0"
15 private String valve = "closed"
16 private String valveLatestValue = "closed"
18 Valves(Closure sendEvent, int deviceNumbers, boolean init) {
19 this.sendEvent = sendEvent
20 this.timers = new SimulatedTimer()
21 this.deviceNumbers = deviceNumbers
26 this.valveLatestValue = "closed"
29 this.valveLatestValue = "open"
31 valves.add(new Valve(sendEvent, id, label, displayName, this.valve, this.valveLatestValue))
34 //Methods for closures
35 def count(Closure Input) {
41 def each(Closure Input) {
44 def find(Closure Input) {
47 def sort(Closure Input) {
50 def collect(Closure Input) {
56 if (valve != "open") {
58 this.valveLatestValue = "open"
63 def open(LinkedHashMap metaData) {
64 if (valve != "open") {
65 def task = timers.runAfter(metaData["delay"]) {
67 this.valveLatestValue = "open"
74 if (valve != "closed") {
76 this.valveLatestValue = "closed"
81 def close(LinkedHashMap metaData) {
82 if (valve != "closed") {
83 def task = timers.runAfter(metaData["delay"]) {
85 this.valveLatestValue = "closed"
92 def setValue(LinkedHashMap eventDataMap) {
93 if (eventDataMap["value"] != valves[0].valve) {
94 this.valve = eventDataMap["value"]
95 valves[0].setValue(eventDataMap["value"])
100 def currentValue(String deviceFeature) {
101 valves[0].currentValue(deviceFeature)
104 def latestValue(String deviceFeature) {
105 valves[0].latestValue(deviceFeature)