1 //Create a class for lock device
3 import Timer.SimulatedTimer
11 //When we have only one device
13 private String label = "lock"
14 private String displayName = "lock"
15 private String lockState = "locked"
16 private String currentLock = "locked"
17 private String lockLatestValue = "locked"
19 Locks(Closure sendEvent, int deviceNumbers) {
20 this.sendEvent = sendEvent
21 this.timers = new SimulatedTimer()
22 this.deviceNumbers = deviceNumbers
24 for (int i = 0;i < deviceNumbers;i++) {
25 locks.add(new Lock(sendEvent, i+20, label+i.toString(), displayName+i.toString(), this.lockState, this.lockLatestValue))
34 def lock(LinkedHashMap metaData) {
35 def task = timers.runAfter(metaData["delay"]) {
45 def unlock(LinkedHashMap metaData) {
46 def task = timers.runAfter(metaData["delay"]) {
51 //Methods for closures
52 def count(Closure Input) {
58 def each(Closure Input) {
63 def setValue(LinkedHashMap eventDataMap) {
64 locks[eventDataMap["deviceId"]].setValue(eventDataMap["value"])
65 if (deviceNumbers == 1)
66 this.lockState = locks[eventDataMap["deviceId"]].lockState
67 this.currentLock = locks[eventDataMap["deviceId"]].lockState
68 this.lockLatestValue = locks[eventDataMap["deviceId"]].lockLatestValue
69 sendEvent(eventDataMap)
72 def currentValue(String deviceFeature) {
73 if (deviceNumbers == 1)
74 locks[0].currentValue(deviceFeature)
76 locks*.currentValue(deviceFeature)
79 def latestValue(String deviceFeature) {
80 if (deviceNumbers == 1)
81 locks[0].latestValue(deviceFeature)
83 locks*.latestValue(deviceFeature)