3e6067abfc27e8f5ec09b4b2b0378ca16fc84f75
[smartthings-infrastructure.git] / Methods / subscribe.groovy
1 /////////////////////////////////////////////////////////////////////
2 ////subscribe(obj, func)
3 def subscribe(Object obj, Closure FunctionToCall) {
4         if (obj == app) {
5                 objectList.add(obj)
6                 eventList.add("Touched")
7                 functionList.add(FunctionToCall)
8         } else if (obj == location) {
9                 objectList.add(obj)
10                 eventList.add("Location")
11                 functionList.add(FunctionToCall)
12         }
13 }
14 ////subscribe(obj, event, func)
15 def subscribe(Object obj, String event, Closure FunctionToCall) {
16         if ((event == "alarm.both")||(event == "alarm.siren")||(event == "alarm.strobe")||(event == "alarm.off")||(event == "alarm")) {
17                 objectList.add(obj)
18                 eventList.add("alarm")
19                 functionList.add(FunctionToCall)
20         } else if ((event == "contact.open")||(event == "contact.closed")||(event == "contact")||(event == "tamper.tampered")) {
21                 objectList.add(obj)
22                 eventList.add("contact")
23                 functionList.add(FunctionToCall)
24         } else if ((event == "doorState.open")||(event == "doorState.closed")||(event == "doorState")) {
25                 objectList.add(obj)
26                 eventList.add("doorState")
27                 functionList.add(FunctionToCall)
28         } else if ((event == "mode")||(event == "mode.away")||(event == "mode.home")||(event == "mode.night")) {
29                 objectList.add(obj)
30                 eventList.add("Location")
31                 functionList.add(FunctionToCall)
32         } else if ((event == "lock.locked")||(event == "lock.unlocked")||(event == "lock")) {
33                 objectList.add(obj)
34                 eventList.add("lock")
35                 functionList.add(FunctionToCall)
36         } else if ((event == "motion.active")||(event == "motion.inactive")||(event == "motion")) {
37                 objectList.add(obj)
38                 eventList.add("motion")
39                 functionList.add(FunctionToCall)
40         } else if ((event == "status")||(event == "status.playing")||(event == "status.stopped")||(event == "status.paused")) {
41                 objectList.add(obj)
42                 eventList.add("status")
43                 functionList.add(FunctionToCall)
44         } else if ((event == "mute")||(event == "mute.muted")||(event == "mute.unmuted")) {
45                 objectList.add(obj)
46                 eventList.add("mute")
47                 functionList.add(FunctionToCall)
48         } else if ((event == "presence")||(event == "presence.present")||(event == "presence.not present")) {
49                 objectList.add(obj)
50                 eventList.add("presence")
51                 functionList.add(FunctionToCall)
52         } else if ((event == "smoke")||(event == "smoke.detected")||(event == "smoke.clear")||(event == "smoke.tested")) {
53                 objectList.add(obj)
54                 eventList.add("smoke")
55                 functionList.add(FunctionToCall)
56         } else if ((event == "carbonMonoxide")||(event == "carbonMonoxide.detected")||(event == "carbonMonoxide.clear")||(event == "carbonMonoxide.tested")) {
57                 objectList.add(obj)
58                 eventList.add("carbonMonoxide")
59                 functionList.add(FunctionToCall)
60         } else if ((event == "thermostatMode")||(event == "thermostatMode.cool")||(event == "thermostatMode.auto")||(event == "thermostatMode.emergencyHeat")||(event == "thermostatMode.heat")||(event == "thermostatMode.off")) {
61                 objectList.add(obj)
62                 eventList.add("thermostatMode")
63                 functionList.add(FunctionToCall)
64         } else if ((event == "thermostatFanMode")||(event == "thermostatFanMode.auto")||(event == "thermostatFanMode.fanCirculate")||(event == "thermostatFanMode.circulate")||(event == "thermostatFanMode.fanOn")||(event == "thermostatFanMode.on")
65                    ||(event == "fanMode")||(event == "fanMode.auto")||(event == "fanMode.fanCirculate")||(event == "fanMode.circulate")||(event == "fanMode.fanOn")||(event == "fanMode.on")) {
66                 objectList.add(obj)
67                 eventList.add("thermostatFanMode")
68                 functionList.add(FunctionToCall)
69         } else if ((event == "thermostatOperatingState")||(event == "thermostatOperatingState.cooling")||(event == "thermostatOperatingState.fan only")||(event == "thermostatOperatingState.heating")||(event == "thermostatOperatingState.idle")
70                    ||(event == "thermostatOperatingState.pending cool")||(event == "thermostatOperatingState.pending heat")||(event == "thermostatOperatingState.vent economizer")) {
71                 objectList.add(obj)
72                 eventList.add("thermostatOperatingState")
73                 functionList.add(FunctionToCall)
74         } else if ((event == "switch")||(event == "switch.on")||(event == "switch.off")) {
75                 objectList.add(obj)
76                 eventList.add("switch")
77                 functionList.add(FunctionToCall)
78         } else if ((event == "button")||(event == "button.pushed")||(event == "button.held")) {
79                 objectList.add(obj)
80                 eventList.add("button")
81                 functionList.add(FunctionToCall)
82         } else if ((event == "acceleration")||(event == "acceleration.active")||(event == "acceleration.inactive")) {
83                 objectList.add(obj)
84                 eventList.add("acceleration")
85                 functionList.add(FunctionToCall)
86         } else if ((event == "sleeping")||(event == "sleeping.sleeping")||(event == "sleeping.not sleeping")) {
87                 objectList.add(obj)
88                 eventList.add("sleeping")
89                 functionList.add(FunctionToCall)
90         } else if ((event == "water")||(event == "water.dry")||(event == "water.wet")) {
91                 objectList.add(obj)
92                 eventList.add("water")
93                 functionList.add(FunctionToCall)
94         } else {
95                 objectList.add(obj)
96                 eventList.add(event)
97                 functionList.add(FunctionToCall)
98         }
99 }
100 ////subscribe(obj, event, nameOfFunc)
101 def subscribe(Object obj, String event, String FunctionToCall) {
102         if ((event == "alarm.both")||(event == "alarm.siren")||(event == "alarm.strobe")||(event == "alarm.off")||(event == "alarm")) {
103                 objectList.add(obj)
104                 eventList.add("alarm")
105                 functionList.add(FunctionToCall)
106         } else if ((event == "contact.open")||(event == "contact.closed")||(event == "contact")||(event == "tamper.tampered")) {
107                 objectList.add(obj)
108                 eventList.add("contact")
109                 functionList.add(FunctionToCall)
110         } else if ((event == "doorState.open")||(event == "doorState.closed")||(event == "doorState")) {
111                 objectList.add(obj)
112                 eventList.add("doorState")
113                 functionList.add(FunctionToCall)
114         } else if ((event == "mode")||(event == "mode.away")||(event == "mode.home")||(event == "mode.night")) {
115                 objectList.add(obj)
116                 eventList.add("Location")
117                 functionList.add(FunctionToCall)
118         } else if ((event == "lock.locked")||(event == "lock.unlocked")||(event == "lock")) {
119                 objectList.add(obj)
120                 eventList.add("lock")
121                 functionList.add(FunctionToCall)
122         } else if ((event == "motion.active")||(event == "motion.inactive")||(event == "motion")) {
123                 objectList.add(obj)
124                 eventList.add("motion")
125                 functionList.add(FunctionToCall)
126         } else if ((event == "status")||(event == "status.playing")||(event == "status.stopped")||(event == "status.paused")) {
127                 objectList.add(obj)
128                 eventList.add("status")
129                 functionList.add(FunctionToCall)
130         } else if ((event == "mute")||(event == "mute.muted")||(event == "mute.unmuted")) {
131                 objectList.add(obj)
132                 eventList.add("mute")
133                 functionList.add(FunctionToCall)
134         } else if ((event == "presence")||(event == "presence.present")||(event == "presence.not present")) {
135                 objectList.add(obj)
136                 eventList.add("presence")
137                 functionList.add(FunctionToCall)
138         } else if ((event == "smoke")||(event == "smoke.detected")||(event == "smoke.clear")||(event == "smoke.tested")) {
139                 objectList.add(obj)
140                 eventList.add("smoke")
141                 functionList.add(FunctionToCall)
142         } else if ((event == "carbonMonoxide")||(event == "carbonMonoxide.detected")||(event == "carbonMonoxide.clear")||(event == "carbonMonoxide.tested")) {
143                 objectList.add(obj)
144                 eventList.add("carbonMonoxide")
145                 functionList.add(FunctionToCall)
146         } else if ((event == "thermostatMode")||(event == "thermostatMode.cool")||(event == "thermostatMode.auto")||(event == "thermostatMode.emergencyHeat")||(event == "thermostatMode.heat")||(event == "thermostatMode.off")) {
147                 objectList.add(obj)
148                 eventList.add("thermostatMode")
149                 functionList.add(FunctionToCall)
150         } else if ((event == "thermostatFanMode")||(event == "thermostatFanMode.auto")||(event == "thermostatFanMode.fanCirculate")||(event == "thermostatFanMode.circulate")||(event == "thermostatFanMode.fanOn")||(event == "thermostatFanMode.on")
151                    ||(event == "fanMode")||(event == "fanMode.auto")||(event == "fanMode.fanCirculate")||(event == "fanMode.circulate")||(event == "fanMode.fanOn")||(event == "fanMode.on")) {
152                 objectList.add(obj)
153                 eventList.add("thermostatFanMode")
154                 functionList.add(FunctionToCall)
155         } else if ((event == "thermostatOperatingState")||(event == "thermostatOperatingState.cooling")||(event == "thermostatOperatingState.fan only")||(event == "thermostatOperatingState.heating")||(event == "thermostatOperatingState.idle")
156                    ||(event == "thermostatOperatingState.pending cool")||(event == "thermostatOperatingState.pending heat")||(event == "thermostatOperatingState.vent economizer")) {
157                 objectList.add(obj)
158                 eventList.add("thermostatOperatingState")
159                 functionList.add(FunctionToCall)
160         } else if ((event == "switch")||(event == "switch.on")||(event == "switch.off")) {
161                 objectList.add(obj)
162                 eventList.add("switch")
163                 functionList.add(FunctionToCall)
164         } else if ((event == "button")||(event == "button.pushed")||(event == "button.held")) {
165                 objectList.add(obj)
166                 eventList.add("button")
167                 functionList.add(FunctionToCall)
168         } else if ((event == "acceleration")||(event == "acceleration.active")||(event == "acceleration.inactive")) {
169                 objectList.add(obj)
170                 eventList.add("acceleration")
171                 functionList.add(FunctionToCall)
172         } else if ((event == "sleeping")||(event == "sleeping.sleeping")||(event == "sleeping.not sleeping")) {
173                 objectList.add(obj)
174                 eventList.add("sleeping")
175                 functionList.add(FunctionToCall)
176         } else if ((event == "water")||(event == "water.dry")||(event == "water.wet")) {
177                 objectList.add(obj)
178                 eventList.add("water")
179                 functionList.add(FunctionToCall)
180         } else {
181                 objectList.add(obj)
182                 eventList.add(event)
183                 functionList.add(FunctionToCall)
184         }
185 }
186 ////subscribe(obj, event, func, data)
187 def subscribe(Object obj, String event, Closure FunctionToCall, LinkedHashMap metaData) {
188         subscribe(obj, event, FunctionToCall)
189 }