1 //Create a class for door control device
3 import Timer.SimulatedTimer
5 public class DoorControls {
11 //If we have only one device
13 private String label = "DoorControl"
14 private String displayName = "DoorControl"
15 private String doorState = "closed"
16 private String doorLatestValue = "closed"
18 DoorControls(Closure sendEvent, int deviceNumbers) {
19 this.sendEvent = sendEvent
20 this.timers = new SimulatedTimer()
21 this.deviceNumbers = deviceNumbers
22 this.doorControls = []
23 for (int i = 0;i < deviceNumbers;i++) {
24 doorControls.add(new DoorControl(sendEvent, i+60, label+i.toString(), displayName+i.toString(), this.doorState, this.doorLatestValue))
28 //Methods for closures
29 def count(Closure Input) {
30 doorControls.count(Input)
35 def each(Closure Input) {
36 doorControls.each(Input)
44 def open(LinkedHashMap metaData) {
45 def task = timers.runAfter(metaData["delay"]) {
54 def close(LinkedHashMap metaData) {
55 def task = timers.runAfter(metaData["delay"]) {
61 def setValue(LinkedHashMap eventDataMap) {
62 doorControls[eventDataMap["deviceId"]].setValue(eventDataMap["value"])
63 if (deviceNumbers == 1)
64 this.doorState = doorControls[eventDataMap["deviceId"]].doorState
65 sendEvent(eventDataMap)
69 def currentValue(String deviceFeature) {
70 if (deviceNumbers == 1)
71 doorControls[0].currentValue(deviceFeature)
73 doorControls*.currentValue(deviceFeature)
76 def latestValue(String deviceFeature) {
77 if (deviceNumbers == 1)
78 doorControls[0].latestValue(deviceFeature)
80 doorControls*.latestValue(deviceFeature)