Adding missing methods.
[smartthings-infrastructure.git] / PresenceSensor / PresenceSensor.groovy
1 //Create a class for presence sensor
2 package PresenceSensor
3 import Timer.SimulatedTimer
4
5 //JPF's Verify API
6 import gov.nasa.jpf.vm.Verify
7
8 public class PresenceSensor {
9         private String id
10         private String label
11         private String displayName
12         private String presence
13         private String currentPresence
14         private String presenceLatestValue
15
16         PresenceSensor(String id, String label, String displayName, String presence, String presenceLatestValue) {
17                 this.id = id
18                 this.label = label
19                 this.displayName = displayName
20                 this.presence = presence
21                 this.currentPresence = presence
22                 this.presenceLatestValue = presenceLatestValue
23         }
24
25         def setValue(String value) {
26                 println("the presence sensor with id:$id is triggered to $value!")
27                 this.presenceLatestValue = value
28                 this.presence = value
29                 this.currentPresence = value
30         }
31         
32         def statesSince() {
33                 eventsSince()
34         }
35         
36         def statesSince(String info, Date dateObj) {
37                 statesSince()
38         }
39         
40         def eventsSince(Date dateObj) {
41                 eventsSince()
42         }
43
44         def eventsSince() {
45                 def evtActive = [[name: "presence", value: "present", deviceId: "motionSensorID0", descriptionText: "",
46                                   displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
47                 def evtInactive = [[name: "presence", value: "not present", deviceId: "motionSensorID0", descriptionText: "",
48                                     displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}']]
49                 def init = Verify.getInt(0,4)
50                 def evtToSend = []
51                 if (init == 0) {//return empty set
52                         return evtToSend
53                 } else if (init == 1) {//send one active event
54                         evtActive.each{
55                                 evtToSend.add(it)
56                         }
57                         return evtToSend
58                 } else if (init == 2) {//send two active events
59                         evtActive.each{
60                                 evtToSend.add(it)
61                         }
62                         evtActive.each{
63                                 evtToSend.add(it)
64                         }
65                         return evtToSend
66                 } else if (init == 3) {//send one inactive event
67                         evtInactive.each{
68                                 evtToSend.add(it)
69                         }
70                         return evtToSend
71                 } else if (init == 4) {//send two inactive events
72                         evtInactive.each{
73                                 evtToSend.add(it)
74                         }
75                         evtInactive.each{
76                                 evtToSend.add(it)
77                         }
78                         return evtToSend
79                 }
80         }
81
82         def currentState(String deviceFeature) {
83                 return [rawDateCreated: [time: System.currentTimeMillis()]]
84         }
85         
86         def currentValue(String deviceFeature) {
87                 if (deviceFeature == "presence") {
88                         return presence
89                 }
90         }
91
92         def latestValue(String deviceFeature) {
93                 if (deviceFeature == "presence") {
94                         return presenceLatestValue
95                 }
96         }
97 }