1 //Create a class for door control device
3 import Timer.SimulatedTimer
5 public class DoorControls {
11 //If we have only one device
12 private String id = "DoorControlID0"
13 private String label = "DoorControl0"
14 private String displayName = "DoorControl0"
15 private String doorState = "closed"
16 private String doorLatestValue = "closed"
18 DoorControls(Closure sendEvent, int deviceNumbers, boolean init) {
19 this.sendEvent = sendEvent
20 this.timers = new SimulatedTimer()
21 this.deviceNumbers = deviceNumbers
22 this.doorControls = []
25 this.doorState = "closed"
26 this.doorLatestValue = "closed"
28 this.doorState = "open"
29 this.doorLatestValue = "open"
31 doorControls.add(new DoorControl(sendEvent, id, label, displayName, this.doorState, this.doorLatestValue))
34 //Methods for closures
35 def count(Closure Input) {
36 doorControls.count(Input)
41 def each(Closure Input) {
42 doorControls.each(Input)
44 def find(Closure Input) {
45 doorControls.find(Input)
47 def sort(Closure Input) {
48 doorControls.sort(Input)
50 def collect(Closure Input) {
51 doorControls.collect(Input)
56 if (doorState != "open")
57 doorControls[0].open()
60 def open(LinkedHashMap metaData) {
61 if (doorState != "open") {
62 def task = timers.runAfter(metaData["delay"]) {
63 doorControls[0].open()
69 if (doorState != "closed")
70 doorControls[0].close()
73 def close(LinkedHashMap metaData) {
74 if (doorState != "closed") {
75 def task = timers.runAfter(metaData["delay"]) {
76 doorControls[0].close()
82 def setValue(LinkedHashMap eventDataMap) {
83 if (eventDataMap["value"] != doorControls[0].doorState) {
84 this.doorState = eventDataMap["value"]
85 this.doorLatestValue = eventDataMap["value"]
86 doorControls[0].setValue(eventDataMap["value"])
87 sendEvent(eventDataMap)
92 def currentValue(String deviceFeature) {
93 doorControls[0].currentValue(deviceFeature)
96 def latestValue(String deviceFeature) {
97 doorControls[0].latestValue(deviceFeature)