1 ////////////////////////////////////////
3 import groovy.transform.Field
8 import ContactSensor.ContactSensor
9 import ContactSensor.ContactSensors
10 import DoorControl.DoorControl
11 import DoorControl.DoorControls
14 import Thermostat.Thermostat
15 import Thermostat.Thermostats
17 import Switch.Switches
18 import PresenceSensor.PresenceSensor
19 import PresenceSensor.PresenceSensors
21 import Location.LocationVar
22 import Location.Phrase
23 import appTouch.Touched
24 import NfcTouch.NfcTouch
25 import AeonKeyFob.AeonKeyFob
26 import AeonKeyFob.AeonKeyFobs
27 import MusicPlayer.MusicPlayer
28 import MusicPlayer.MusicPlayers
29 import MotionSensor.MotionSensor
30 import MotionSensor.MotionSensors
31 import ImageCapture.ImageCapture
32 import ImageCapture.ImageCaptures
33 import SmokeDetector.SmokeDetector
34 import SmokeDetector.SmokeDetectors
37 import SpeechSynthesis.SpeechSynthesis
38 import SpeechSynthesis.SpeechSynthesises
39 import AccelerationSensor.AccelerationSensor
40 import AccelerationSensor.AccelerationSensors
41 import Battery.Battery
42 import Battery.Batteries
43 import BeaconSensor.BeaconSensor
44 import BeaconSensor.BeaconSensors
45 import CarbonMonoxideDetector.CarbonMonoxideDetector
46 import CarbonMonoxideDetector.CarbonMonoxideDetectors
47 import ColorControl.ColorControl
48 import ColorControl.ColorControls
49 import EnergyMeter.EnergyMeter
50 import EnergyMeter.EnergyMeters
51 import IlluminanceMeasurement.IlluminanceMeasurement
52 import IlluminanceMeasurement.IlluminanceMeasurements
53 import PowerMeter.PowerMeter
54 import PowerMeter.PowerMeters
55 import RelativeHumidityMeasurement.RelativeHumidityMeasurement
56 import RelativeHumidityMeasurement.RelativeHumidityMeasurements
57 import RelaySwitch.RelaySwitch
58 import RelaySwitch.RelaySwitches
59 import SleepSensor.SleepSensor
60 import SleepSensor.SleepSensors
61 import StepSensor.StepSensor
62 import StepSensor.StepSensors
63 import SwitchLevel.SwitchLevel
64 import SwitchLevel.SwitchLevels
65 import TemperatureMeasurement.TemperatureMeasurement
66 import TemperatureMeasurement.TemperatureMeasurements
67 import WaterSensor.WaterSensor
68 import WaterSensor.WaterSensors
71 import MobilePresence.MobilePresence
72 import MobilePresence.MobilePresences
73 import Timer.SimulatedTimer
76 @Field def location = new LocationVar()
77 //Settings variable defined to settings on purpose
78 @Field def settings = [app: "app"]
79 //Global variable for state[mode]
80 @Field def state = [home:[],away:[],night:[]]
81 //Create a global logger object for methods
82 @Field def log = new Logger()
83 //Create a global variable for optional property
84 @Field def optional = false //by default for now
85 //Global Object for class AtomicState!
86 @Field def atomicState = [history: "15:00"]
89 //Global variables for files
90 @Field File globalObjects = new File("Extractor/globalObjects.groovy")
91 @Field File extractedObjectsApp1 = new File("Extractor/App1/extractedObjectsApp1.groovy")
92 @Field File extractedObjectsApp2 = new File("Extractor/App2/extractedObjectsApp2.groovy")
93 @Field File extractedObjectsConstructorApp1 = new File("Extractor/App1/extractedObjectsConstructorApp1.groovy")
94 @Field File extractedObjectsConstructorApp2 = new File("Extractor/App2/extractedObjectsConstructorApp2.groovy")
99 globalObjects.write("")
100 extractedObjectsApp1.write("")
101 extractedObjectsConstructorApp1.write("")
102 } else if (App == "App2") {
103 extractedObjectsApp2.write("")
104 extractedObjectsConstructorApp2.write("")
109 //Some of methods-May be needed even in install
110 /////////////////////////////////////////////////////////////////////
111 def timeToday(String time, Object timeZone) {
112 def timeOfDay = new Date()
113 def _inputTime = time.split(':')
114 def inputTime = Integer.parseInt(_inputTime[0])*3600+Integer.parseInt(_inputTime[1])*60+1564191100415
115 timeOfDay.time = inputTime
122 //Global Object for class Touch Sensor!
123 @Field touchSensorObjects = 0
124 @Field def touchSensorObject0
125 @Field def touchSensorObject1
126 @Field def touchSensorObject2
127 //Global Object for class switch!
128 @Field switchObjects = 0
129 @Field def switchObject0
130 @Field def switchObject1
131 @Field def switchObject2
132 //Global Object for class lock!
133 @Field lockObjects = 0
134 @Field def lockObject0
135 @Field def lockObject1
136 @Field def lockObject2
137 //Global Object for class door control!
138 @Field doorControlObjects = 0
139 @Field def doorControlObject0
140 @Field def doorControlObject1
141 @Field def doorControlObject2
142 //Global Object for class contact sensor!
143 @Field contactObjects = 0
144 @Field def contactObject0
145 @Field def contactObject1
146 @Field def contactObject2
147 //Global Object for class presence sensor!
148 @Field presenceSensorObjects = 0
149 @Field def presenceSensorObject0
150 @Field def presenceSensorObject1
151 @Field def presenceSensorObject2
152 //Global Object for class thermostat!
153 @Field thermostatObjects = 0
154 @Field def thermostatObject0
155 @Field def thermostatObject1
156 @Field def thermostatObject2
157 //Global Object for class music player!
158 @Field musicPlayerObjects = 0
159 @Field def musicPlayerObject0
160 @Field def musicPlayerObject1
161 @Field def musicPlayerObject2
162 //Global Object for class aeon key fob!
163 @Field aeonKeyFobObjects = 0
164 @Field def aeonKeyFobObject0
165 @Field def aeonKeyFobObject1
166 @Field def aeonKeyFobObject2
167 //Global Object for class motion sensor!
168 @Field motionSensorObjects = 0
169 @Field def motionSensorObject0
170 @Field def motionSensorObject1
171 @Field def motionSensorObject2
172 //Global Object for class image capture!
173 @Field imageCaptureObjects = 0
174 @Field def imageCaptureObject0
175 @Field def imageCaptureObject1
176 @Field def imageCaptureObject2
177 //Global Object for class smoke detector!
178 @Field smokeDetectorObjects = 0
179 @Field def smokeDetectorObject0
180 @Field def smokeDetectorObject1
181 @Field def smokeDetectorObject2
182 //Global Object for class alarm!
183 @Field alarmObjects = 0
184 @Field def alarmObject0
185 @Field def alarmObject1
186 @Field def alarmObject2
187 //Global Object for class speech synthesis!
188 @Field speechSynthesisObjects = 0
189 @Field def speechSynthesisObject0
190 @Field def speechSynthesisObject1
191 @Field def speechSynthesisObject2
192 //Global Object for class acceleration sensor!
193 @Field accelerationSensorObjects = 0
194 @Field def accelerationSensorObject0
195 @Field def accelerationSensorObject1
196 @Field def accelerationSensorObject2
197 //Global Object for class battery!
198 @Field batteryObjects = 0
199 @Field def batteryObject0
200 @Field def batteryObject1
201 @Field def batteryObject2
202 //Global Object for class beacon sensor!
203 @Field beaconSensorObjects = 0
204 @Field def beaconSensorObject0
205 @Field def beaconSensorObject1
206 @Field def beaconSensorObject2
207 //Global Object for class carbon monoxide detector!
208 @Field carbonMonoxideDetectorObjects = 0
209 @Field def carbonMonoxideDetectorObject0
210 @Field def carbonMonoxideDetectorObject1
211 @Field def carbonMonoxideDetectorObject2
212 //Global Object for class color control!
213 @Field colorControlObjects = 0
214 @Field def colorControlObject0
215 @Field def colorControlObject1
216 @Field def colorControlObject2
217 //Global Object for class energy meter!
218 @Field energyMeterObjects = 0
219 @Field def energyMeterObject0
220 @Field def energyMeterObject1
221 @Field def energyMeterObject2
222 //Global Object for class energy meter!
223 @Field illuminanceMeasurementObjects = 0
224 @Field def illuminanceMeasurementObject0
225 @Field def illuminanceMeasurementObject1
226 @Field def illuminanceMeasurementObject2
227 //Global Object for class power meter!
228 @Field powerMeterObjects = 0
229 @Field def powerMeterObject0
230 @Field def powerMeterObject1
231 @Field def powerMeterObject2
232 //Global Object for class power meter!
233 @Field humidityMeasurementObjects = 0
234 @Field def humidityMeasurementObject0
235 @Field def humidityMeasurementObject1
236 @Field def humidityMeasurementObject2
237 //Global Object for class relay switch!
238 @Field relaySwitchObjects = 0
239 @Field def relaySwitchObject0
240 @Field def relaySwitchObject1
241 @Field def relaySwitchObject2
242 //Global Object for class sleep sensor!
243 @Field sleepSensorObjects = 0
244 @Field def sleepSensorObject0
245 @Field def sleepSensorObject1
246 @Field def sleepSensorObject2
247 //Global Object for class sleep sensor!
248 @Field stepSensorObjects = 0
249 @Field def stepSensorObject0
250 @Field def stepSensorObject1
251 @Field def stepSensorObject2
252 //Global Object for class switch level!
253 @Field switchLevelObjects = 0
254 @Field def switchLevelObject0
255 @Field def switchLevelObject1
256 @Field def switchLevelObject2
257 //Global Object for class temperature measurement!
258 @Field temperatureMeasurementObjects = 0
259 @Field def temperatureMeasurementObject0
260 @Field def temperatureMeasurementObject1
261 @Field def temperatureMeasurementObject2
262 //Global Object for class temperature measurement!
263 @Field waterSensorObjects = 0
264 @Field def waterSensorObject0
265 @Field def waterSensorObject1
266 @Field def waterSensorObject2
267 //Global Object for class valve!
268 @Field valveObjects = 0
269 @Field def valveObject0
270 @Field def valveObject1
271 @Field def valveObject2
272 //Global Object for class valve!
273 @Field mobilePresenceObjects = 0
274 @Field def mobilePresenceObject0
275 @Field def mobilePresenceObject1
276 @Field def mobilePresenceObject2
282 @Field modeVariables = 0
290 @Field numberVariables = 0
298 @Field decimalVariables = 0
306 @Field timeVariables = 0
314 @Field enumVariables = 0
322 @Field phoneVariables = 0
330 @Field contactVariables = 0
338 @Field textVariables = 0
346 @Field boolVariables = 0
356 /////Input Methods/////
358 def input(String name, String type) {
359 LinkedHashMap metaData = []
360 metaData.put('name',name)
361 metaData.put('type',type)
365 //input "","",linkedHashMap
366 def input(LinkedHashMap metaData, String name, String type) {
367 metaData.put('name',name)
368 metaData.put('type',type)
372 //input "", "", linkedHashMap, Closure
373 def input(LinkedHashMap metaData, String name, String type, Closure Input) {
374 metaData.put('name',name)
375 metaData.put('type',type)
380 //input linkedHashMap
381 def input(LinkedHashMap metaData) {
382 if (metaData.containsKey('title')) {
383 println metaData['title']
385 if (metaData.containsKey('options')) {
386 println "Options: "+metaData['options']
389 switch(metaData['type']) {
390 case "capability.lock":
391 globalObjects.eachLine { line ->
392 if(line.contains('"lockObject"')){
398 globalObjects.append("@Field def lockObject = new Locks(sendEvent, 1)\n")
400 if (lockObjects == 0) {
401 lockObject0 = metaData['name']
402 this[lockObject0] = new Locks({}, 1)
403 } else if (lockObjects == 1) {
404 lockObject1 = metaData['name']
405 this[lockObject1] = new Locks({}, 1)
406 } else if (lockObjects == 2) {
407 lockObject2 = metaData['name']
408 this[lockObject2] = new Locks({}, 1)
411 lockObjects=lockObjects+1
413 settings.put(metaData['name'], new Locks({}, 1))
416 extractedObjectsApp1.append("//Object for class lock!\n")
417 extractedObjectsApp1.append("def "+metaData['name']+"\n")
418 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.lockObject\n")
420 extractedObjectsApp2.append("//Object for class lock!\n")
421 extractedObjectsApp2.append("def "+metaData['name']+"\n")
422 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.lockObject\n")
425 case "capability.alarm":
426 globalObjects.eachLine { line ->
427 if(line.contains('"alarmObject"')){
433 globalObjects.append("@Field def alarmObject = new Alarms(sendEvent, 1)\n")
435 if (alarmObjects == 0) {
436 alarmObject0 = metaData['name']
437 this[alarmObject0] = new Alarms({}, 1)
438 } else if (alarmObjects == 1) {
439 alarmObject1 = metaData['name']
440 this[alarmObject1] = new Alarms({}, 1)
441 } else if (alarmObjects == 2) {
442 alarmObject2 = metaData['name']
443 this[alarmObject2] = new Alarms({}, 1)
446 alarmObjects=alarmObjects+1
448 settings.put(metaData['name'], new Alarms({}, 1))
451 extractedObjectsApp1.append("//Object for class alarm!\n")
452 extractedObjectsApp1.append("def "+metaData['name']+"\n")
453 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.alarmObject\n")
455 extractedObjectsApp2.append("//Object for class alarm!\n")
456 extractedObjectsApp2.append("def "+metaData['name']+"\n")
457 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.alarmObject\n")
460 case "capability.battery":
461 globalObjects.eachLine { line ->
462 if(line.contains('"batteryObject"')){
468 globalObjects.append("@Field def batteryObject = new Batteries(sendEvent, 1)\n")
470 if (batteryObjects == 0) {
471 batteryObject0 = metaData['name']
472 this[batteryObject0] = new Batteries({}, 1)
473 } else if (batteryObjects == 1) {
474 batteryObject1 = metaData['name']
475 this[batteryObject1] = new Batteries({}, 1)
476 } else if (batteryObjects == 2) {
477 batteryObject2 = metaData['name']
478 this[batteryObject2] = new Batteries({}, 1)
481 batteryObjects=batteryObjects+1
483 settings.put(metaData['name'], new Batteries({}, 1))
486 extractedObjectsApp1.append("//Object for class Battery!\n")
487 extractedObjectsApp1.append("def "+metaData['name']+"\n")
488 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.batteryObject\n")
490 extractedObjectsApp2.append("//Object for class Battery!\n")
491 extractedObjectsApp2.append("def "+metaData['name']+"\n")
492 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.batteryObject\n")
495 case "capability.beacon":
496 globalObjects.eachLine { line ->
497 if(line.contains('"beaconSensorObject"')){
503 globalObjects.append("@Field def beaconSensorObject = new BeaconSensors(sendEvent, 1)\n")
505 if (beaconSensorObjects == 0) {
506 beaconSensorObject0 = metaData['name']
507 this[beaconSensorObject0] = new BeaconSensors({}, 1)
508 } else if (beaconSensorObjects == 1) {
509 beaconSensorObject1 = metaData['name']
510 this[beaconSensorObject1] = new BeaconSensors({}, 1)
511 } else if (beaconSensorObjects == 2) {
512 beaconSensorObject2 = metaData['name']
513 this[beaconSensorObject2] = new BeaconSensors({}, 1)
516 beaconSensorObjects=beaconSensorObjects+1
518 settings.put(metaData['name'], new BeaconSensors({}, 1))
521 extractedObjectsApp1.append("//Object for class beacon sensor!\n")
522 extractedObjectsApp1.append("def "+metaData['name']+"\n")
523 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.beaconSensorObject\n")
525 extractedObjectsApp2.append("//Object for class beacon sensor!\n")
526 extractedObjectsApp2.append("def "+metaData['name']+"\n")
527 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.beaconSensorObject\n")
530 case "capability.carbonMonoxideDetector":
531 globalObjects.eachLine { line ->
532 if(line.contains('"carbonMonoxideDetectorObject"')){
538 globalObjects.append("@Field def carbonMonoxideDetectorObject = new CarbonMonoxideDetectors(sendEvent, 1)\n")
540 if (carbonMonoxideDetectorObjects == 0) {
541 carbonMonoxideDetectorObject0 = metaData['name']
542 this[carbonMonoxideDetectorObject0] = new CarbonMonoxideDetectors({}, 1)
543 } else if (carbonMonoxideDetectorObjects == 1) {
544 carbonMonoxideDetectorObject1 = metaData['name']
545 this[carbonMonoxideDetectorObject1] = new CarbonMonoxideDetectors({}, 1)
546 } else if (carbonMonoxideDetectorObjects == 2) {
547 carbonMonoxideDetectorObject2 = metaData['name']
548 this[carbonMonoxideDetectorObject2] = new CarbonMonoxideDetectors({}, 1)
551 carbonMonoxideDetectorObjects=carbonMonoxideDetectorObjects+1
553 settings.put(metaData['name'], new CarbonMonoxideDetectors({}, 1))
556 extractedObjectsApp1.append("//Object for class carbon monoxide detector!\n")
557 extractedObjectsApp1.append("def "+metaData['name']+"\n")
558 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.carbonMonoxideDetectorObject\n")
560 extractedObjectsApp2.append("//Object for class carbon monoxide detector!\n")
561 extractedObjectsApp2.append("def "+metaData['name']+"\n")
562 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.carbonMonoxideDetectorObject\n")
565 case "capability.colorControl":
566 globalObjects.eachLine { line ->
567 if(line.contains('"colorControlObject"')){
573 globalObjects.append("@Field def colorControlObject = new ColorControls(sendEvent, 1)\n")
575 if (colorControlObjects == 0) {
576 colorControlObject0 = metaData['name']
577 this[colorControlObject0] = new ColorControls({}, 1)
578 } else if (colorControlObjects == 1) {
579 colorControlObject1 = metaData['name']
580 this[colorControlObject1] = new ColorControls({}, 1)
581 } else if (colorControlObjects == 2) {
582 colorControlObject2 = metaData['name']
583 this[colorControlObject2] = new ColorControls({}, 1)
586 colorControlObjects=colorControlObjects+1
588 settings.put(metaData['name'], new ColorControls({}, 1))
591 extractedObjectsApp1.append("//Object for class color control!\n")
592 extractedObjectsApp1.append("def "+metaData['name']+"\n")
593 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.colorControlObject\n")
595 extractedObjectsApp2.append("//Object for class color control!\n")
596 extractedObjectsApp2.append("def "+metaData['name']+"\n")
597 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.colorControlObject\n")
600 case "capability.contactSensor":
601 globalObjects.eachLine { line ->
602 if(line.contains('"contactObject"')){
608 globalObjects.append("@Field def contactObject = new ContactSensors(sendEvent, 1)\n")
610 if (contactObjects == 0) {
611 contactObject0 = metaData['name']
612 this[contactObject0] = new ContactSensors({}, 1)
613 } else if (contactObjects == 1) {
614 contactObject1 = metaData['name']
615 this[contactObject1] = new ContactSensors({}, 1)
616 } else if (contactObjects == 2) {
617 contactObject2 = metaData['name']
618 this[contactObject2] = new ContactSensors({}, 1)
621 contactObjects=contactObjects+1
623 settings.put(metaData['name'], new ContactSensors({}, 1))
626 extractedObjectsApp1.append("//Object for class contactSensor!\n")
627 extractedObjectsApp1.append("def "+metaData['name']+"\n")
628 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.contactObject\n")
630 extractedObjectsApp2.append("//Object for class contactSensor!\n")
631 extractedObjectsApp2.append("def "+metaData['name']+"\n")
632 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.contactObject\n")
635 case "capability.doorControl":
636 globalObjects.eachLine { line ->
637 if(line.contains('"doorControlObject"')){
643 globalObjects.append("@Field def doorControlObject = new DoorControls(sendEvent, 1)\n")
645 if (doorControlObjects == 0) {
646 doorControlObject0 = metaData['name']
647 this[doorControlObject0] = new DoorControls({}, 1)
648 } else if (doorControlObjects == 1) {
649 doorControlObject1 = metaData['name']
650 this[doorControlObject1] = new DoorControls({}, 1)
651 } else if (doorControlObjects == 2) {
652 doorControlObject2 = metaData['name']
653 this[doorControlObject2] = new DoorControls({}, 1)
656 doorControlObjects=doorControlObjects+1
658 settings.put(metaData['name'], new DoorControls({}, 1))
661 extractedObjectsApp1.append("//Object for class door control!\n")
662 extractedObjectsApp1.append("def "+metaData['name']+"\n")
663 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.doorControlObject\n")
665 extractedObjectsApp2.append("//Object for class door control!\n")
666 extractedObjectsApp2.append("def "+metaData['name']+"\n")
667 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.doorControlObject\n")
670 case "capability.energyMeter":
671 globalObjects.eachLine { line ->
672 if(line.contains('"energyMeterObject"')){
678 globalObjects.append("@Field def energyMeterObject = new EnergyMeters(sendEvent, 1)\n")
680 if (energyMeterObjects == 0) {
681 energyMeterObject0 = metaData['name']
682 this[energyMeterObject0] = new EnergyMeters({}, 1)
683 } else if (energyMeterObjects == 1) {
684 energyMeterObject1 = metaData['name']
685 this[energyMeterObject1] = new EnergyMeters({}, 1)
686 } else if (energyMeterObjects == 2) {
687 energyMeterObject2 = metaData['name']
688 this[energyMeterObject2] = new EnergyMeters({}, 1)
691 energyMeterObjects=energyMeterObjects+1
693 settings.put(metaData['name'], new EnergyMeters({}, 1))
696 extractedObjectsApp1.append("//Object for class energy meter!\n")
697 extractedObjectsApp1.append("def "+metaData['name']+"\n")
698 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.energyMeterObject\n")
700 extractedObjectsApp2.append("//Object for class energy meter!\n")
701 extractedObjectsApp2.append("def "+metaData['name']+"\n")
702 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.energyMeterObject\n")
705 case "capability.illuminanceMeasurement":
706 globalObjects.eachLine { line ->
707 if(line.contains('"illuminanceMeasurementObject"')){
713 globalObjects.append("@Field def illuminanceMeasurementObject = new IlluminanceMeasurements(sendEvent, 1)\n")
715 if (illuminanceMeasurementObjects == 0) {
716 illuminanceMeasurementObject0 = metaData['name']
717 this[illuminanceMeasurementObject0] = new IlluminanceMeasurements({}, 1)
718 } else if (illuminanceMeasurementObjects == 1) {
719 illuminanceMeasurementObject1 = metaData['name']
720 this[illuminanceMeasurementObject1] = new IlluminanceMeasurements({}, 1)
721 } else if (illuminanceMeasurementObjects == 2) {
722 illuminanceMeasurementObject2 = metaData['name']
723 this[illuminanceMeasurementObject2] = new IlluminanceMeasurements({}, 1)
726 illuminanceMeasurementObjects=illuminanceMeasurementObjects+1
728 settings.put(metaData['name'], new IlluminanceMeasurements({}, 1))
731 extractedObjectsApp1.append("//Object for class illuminance measurement!\n")
732 extractedObjectsApp1.append("def "+metaData['name']+"\n")
733 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.illuminanceMeasurementObject\n")
735 extractedObjectsApp2.append("//Object for class illuminance measurement!\n")
736 extractedObjectsApp2.append("def "+metaData['name']+"\n")
737 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.illuminanceMeasurementObject\n")
740 case "capability.accelerationSensor":
741 globalObjects.eachLine { line ->
742 if(line.contains('"accelerationSensorObject"')){
748 globalObjects.append("@Field def accelerationSensorObject = new AccelerationSensors(sendEvent, 1)\n")
750 if (accelerationSensorObjects == 0) {
751 accelerationSensorObject0 = metaData['name']
752 this[accelerationSensorObject0] = new AccelerationSensors({}, 1)
753 } else if (accelerationSensorObjects == 1) {
754 accelerationSensorObject1 = metaData['name']
755 this[accelerationSensorObject1] = new AccelerationSensors({}, 1)
756 } else if (accelerationSensorObjects == 2) {
757 accelerationSensorObject2 = metaData['name']
758 this[accelerationSensorObject2] = new AccelerationSensors({}, 1)
761 accelerationSensorObjects=accelerationSensorObjects+1
763 settings.put(metaData['name'], new AccelerationSensors({}, 1))
766 extractedObjectsApp1.append("//Object for class Acceleration Sensor!\n")
767 extractedObjectsApp1.append("def "+metaData['name']+"\n")
768 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.accelerationSensorObject\n")
770 extractedObjectsApp2.append("//Object for class Acceleration Sensor!\n")
771 extractedObjectsApp2.append("def "+metaData['name']+"\n")
772 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.accelerationSensorObject\n")
775 case "capability.motionSensor":
776 globalObjects.eachLine { line ->
777 if(line.contains('"motionSensorObject"')){
783 globalObjects.append("@Field def motionSensorObject = new MotionSensors(sendEvent, 1)\n")
785 if (motionSensorObjects == 0) {
786 motionSensorObject0 = metaData['name']
787 this[motionSensorObject0] = new MotionSensors({}, 1)
788 } else if (motionSensorObjects == 1) {
789 motionSensorObject1 = metaData['name']
790 this[motionSensorObject1] = new MotionSensors({}, 1)
791 } else if (motionSensorObjects == 2) {
792 motionSensorObject2 = metaData['name']
793 this[motionSensorObject2] = new MotionSensors({}, 1)
796 motionSensorObjects=motionSensorObjects+1
798 settings.put(metaData['name'], new MotionSensors({}, 1))
801 extractedObjectsApp1.append("//Object for class Motion Sensor!\n")
802 extractedObjectsApp1.append("def "+metaData['name']+"\n")
803 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.motionSensorObject\n")
805 extractedObjectsApp2.append("//Object for class Motion Sensor!\n")
806 extractedObjectsApp2.append("def "+metaData['name']+"\n")
807 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.motionSensorObject\n")
810 case "capability.musicPlayer":
811 globalObjects.eachLine { line ->
812 if(line.contains('"musicPlayerObject"')){
818 globalObjects.append("@Field def musicPlayerObject = new MusicPlayers(sendEvent, 1)\n")
820 if (musicPlayerObjects == 0) {
821 musicPlayerObject0 = metaData['name']
822 this[musicPlayerObject0] = new MusicPlayers({}, 1)
823 } else if (musicPlayerObjects == 1) {
824 musicPlayerObject1 = metaData['name']
825 this[musicPlayerObject1] = new MusicPlayers({}, 1)
826 } else if (musicPlayerObjects == 2) {
827 musicPlayerObject2 = metaData['name']
828 this[musicPlayerObject2] = new MusicPlayers({}, 1)
831 musicPlayerObjects=musicPlayerObjects+1
833 settings.put(metaData['name'], new MusicPlayers({}, 1))
836 extractedObjectsApp1.append("//Object for class music player!\n")
837 extractedObjectsApp1.append("def "+metaData['name']+"\n")
838 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.musicPlayerObject\n")
840 extractedObjectsApp2.append("//Object for class music player!\n")
841 extractedObjectsApp2.append("def "+metaData['name']+"\n")
842 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.musicPlayerObject\n")
845 case "capability.powerMeter":
846 globalObjects.eachLine { line ->
847 if(line.contains('"powerMeterObject"')){
853 globalObjects.append("@Field def powerMeterObject = new PowerMeters(sendEvent, 1)\n")
855 if (powerMeterObjects == 0) {
856 powerMeterObject0 = metaData['name']
857 this[powerMeterObject0] = new PowerMeters({}, 1)
858 } else if (powerMeterObjects == 1) {
859 powerMeterObject1 = metaData['name']
860 this[powerMeterObject1] = new PowerMeters({}, 1)
861 } else if (powerMeterObjects == 2) {
862 powerMeterObject2 = metaData['name']
863 this[powerMeterObject2] = new PowerMeters({}, 1)
866 powerMeterObjects=powerMeterObjects+1
868 settings.put(metaData['name'], new PowerMeters({}, 1))
871 extractedObjectsApp1.append("//Object for class power meter!\n")
872 extractedObjectsApp1.append("def "+metaData['name']+"\n")
873 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.powerMeterObject\n")
875 extractedObjectsApp2.append("//Object for class power meter!\n")
876 extractedObjectsApp2.append("def "+metaData['name']+"\n")
877 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.powerMeterObject\n")
880 case "capability.presenceSensor":
881 globalObjects.eachLine { line ->
882 if(line.contains('"presenceSensorObject"')){
888 globalObjects.append("@Field def presenceSensorObject = new PresenceSensors(sendEvent, 1)\n")
890 if (presenceSensorObjects == 0) {
891 presenceSensorObject0 = metaData['name']
892 this[presenceSensorObject0] = new PresenceSensors({}, 1)
893 } else if (presenceSensorObjects == 1) {
894 presenceSensorObject1 = metaData['name']
895 this[presenceSensorObject1] = new PresenceSensors({}, 1)
896 } else if (presenceSensorObjects == 2) {
897 presenceSensorObject2 = metaData['name']
898 this[presenceSensorObject2] = new PresenceSensors({}, 1)
901 presenceSensorObjects=presenceSensorObjects+1
903 settings.put(metaData['name'], new PresenceSensors({}, 1))
906 extractedObjectsApp1.append("//Object for class presence sensor!\n")
907 extractedObjectsApp1.append("def "+metaData['name']+"\n")
908 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.presenceSensorObject\n")
910 extractedObjectsApp2.append("//Object for class presence sensor!\n")
911 extractedObjectsApp2.append("def "+metaData['name']+"\n")
912 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.presenceSensorObject\n")
915 case "capability.relativeHumidityMeasurement":
916 globalObjects.eachLine { line ->
917 if(line.contains('"humidityMeasurementObject"')){
923 globalObjects.append("@Field def humidityMeasurementObject = new RelativeHumidityMeasurements(sendEvent, 1)\n")
925 if (humidityMeasurementObjects == 0) {
926 humidityMeasurementObject0 = metaData['name']
927 this[humidityMeasurementObject0] = new RelativeHumidityMeasurements({}, 1)
928 } else if (humidityMeasurementObjects == 1) {
929 humidityMeasurementObject1 = metaData['name']
930 this[humidityMeasurementObject1] = new RelativeHumidityMeasurements({}, 1)
931 } else if (humidityMeasurementObjects == 2) {
932 humidityMeasurementObject2 = metaData['name']
933 this[humidityMeasurementObject2] = new RelativeHumidityMeasurements({}, 1)
936 humidityMeasurementObjects=humidityMeasurementObjects+1
938 settings.put(metaData['name'], new RelativeHumidityMeasurements({}, 1))
941 extractedObjectsApp1.append("//Object for class humidity measurement!\n")
942 extractedObjectsApp1.append("def "+metaData['name']+"\n")
943 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.humidityMeasurementObject\n")
945 extractedObjectsApp2.append("//Object for class humidity measurement!\n")
946 extractedObjectsApp2.append("def "+metaData['name']+"\n")
947 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.humidityMeasurementObject\n")
950 case "capability.relaySwitch":
951 globalObjects.eachLine { line ->
952 if(line.contains('"relaySwitchObject"')){
958 globalObjects.append("@Field def relaySwitchObject = new RelaySwitches(sendEvent, 1)\n")
960 if (relaySwitchObjects == 0) {
961 relaySwitchObject0 = metaData['name']
962 this[relaySwitchObject0] = new RelaySwitches({}, 1)
963 } else if (relaySwitchObjects == 1) {
964 relaySwitchObject1 = metaData['name']
965 this[relaySwitchObject1] = new RelaySwitches({}, 1)
966 } else if (relaySwitchObjects == 2) {
967 relaySwitchObject2 = metaData['name']
968 this[relaySwitchObject2] = new RelaySwitches({}, 1)
971 relaySwitchObjects=relaySwitchObjects+1
973 settings.put(metaData['name'], new RelaySwitches({}, 1))
976 extractedObjectsApp1.append("//Object for class relay switch!\n")
977 extractedObjectsApp1.append("def "+metaData['name']+"\n")
978 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.relaySwitchObject\n")
980 extractedObjectsApp2.append("//Object for class relay switch!\n")
981 extractedObjectsApp2.append("def "+metaData['name']+"\n")
982 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.relaySwitchObject\n")
985 case "capability.sleepSensor":
986 globalObjects.eachLine { line ->
987 if(line.contains('"sleepSensorObject"')){
993 globalObjects.append("@Field def sleepSensorObject = new SleepSensors(sendEvent, 1)\n")
995 if (sleepSensorObjects == 0) {
996 sleepSensorObject0 = metaData['name']
997 this[sleepSensorObject0] = new SleepSensors({}, 1)
998 } else if (sleepSensorObjects == 1) {
999 sleepSensorObject1 = metaData['name']
1000 this[sleepSensorObject1] = new SleepSensors({}, 1)
1001 } else if (sleepSensorObjects == 2) {
1002 sleepSensorObject2 = metaData['name']
1003 this[sleepSensorObject2] = new SleepSensors({}, 1)
1006 sleepSensorObjects=sleepSensorObjects+1
1008 settings.put(metaData['name'], new SleepSensors({}, 1))
1010 if (App == "App1") {
1011 extractedObjectsApp1.append("//Object for class sleep sensor!\n")
1012 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1013 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.sleepSensorObject\n")
1015 extractedObjectsApp2.append("//Object for class sleep sensor!\n")
1016 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1017 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.sleepSensorObject\n")
1020 case "capability.smokeDetector":
1021 globalObjects.eachLine { line ->
1022 if(line.contains('"smokeDetectorObject"')){
1028 globalObjects.append("@Field def smokeDetectorObject = new SmokeDetectors(sendEvent, 1)\n")
1030 if (smokeDetectorObjects == 0) {
1031 smokeDetectorObject0 = metaData['name']
1032 this[smokeDetectorObject0] = new SmokeDetectors({}, 1)
1033 } else if (smokeDetectorObjects == 1) {
1034 smokeDetectorObject1 = metaData['name']
1035 this[smokeDetectorObject1] = new SmokeDetectors({}, 1)
1036 } else if (smokeDetectorObjects == 2) {
1037 smokeDetectorObject2 = metaData['name']
1038 this[smokeDetectorObject2] = new SmokeDetectors({}, 1)
1041 smokeDetectorObjects=smokeDetectorObjects+1
1043 settings.put(metaData['name'], new SmokeDetectors({}, 1))
1045 if (App == "App1") {
1046 extractedObjectsApp1.append("//Object for class smoke detector!\n")
1047 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1048 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.smokeDetectorObject\n")
1050 extractedObjectsApp2.append("//Object for class smoke detector!\n")
1051 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1052 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.smokeDetectorObject\n")
1055 case "capability.stepSensor":
1056 globalObjects.eachLine { line ->
1057 if(line.contains('"stepSensorObject"')){
1063 globalObjects.append("@Field def stepSensorObject = new StepSensors(sendEvent, 1)\n")
1065 if (stepSensorObjects == 0) {
1066 stepSensorObject0 = metaData['name']
1067 this[stepSensorObject0] = new StepSensors({}, 1)
1068 } else if (stepSensorObjects == 1) {
1069 stepSensorObject1 = metaData['name']
1070 this[stepSensorObject1] = new StepSensors({}, 1)
1071 } else if (stepSensorObjects == 2) {
1072 stepSensorObject2 = metaData['name']
1073 this[stepSensorObject2] = new StepSensors({}, 1)
1076 stepSensorObjects=stepSensorObjects+1
1078 settings.put(metaData['name'], new StepSensors({}, 1))
1080 if (App == "App1") {
1081 extractedObjectsApp1.append("//Object for class step sensor!\n")
1082 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1083 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.stepSensorObject\n")
1085 extractedObjectsApp2.append("//Object for class step sensor!\n")
1086 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1087 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.stepSensorObject\n")
1090 case "capability.switch":
1091 globalObjects.eachLine { line ->
1092 if(line.contains('"switchObject"')){
1098 globalObjects.append("@Field def switchObject = new Switches(sendEvent, 1)\n")
1100 if (switchObjects == 0) {
1101 switchObject0 = metaData['name']
1102 this[switchObject0] = new Switches({}, 1)
1103 } else if (switchObjects == 1) {
1104 switchObject1 = metaData['name']
1105 this[switchObject1] = new Switches({}, 1)
1106 } else if (switchObjects == 2) {
1107 switchObject2 = metaData['name']
1108 this[switchObject2] = new Switches({}, 1)
1111 switchObjects=switchObjects+1
1113 settings.put(metaData['name'], new Switches({}, 1))
1115 if (App == "App1") {
1116 extractedObjectsApp1.append("//Object for class switch!\n")
1117 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1118 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.switchObject\n")
1120 extractedObjectsApp2.append("//Object for class switch!\n")
1121 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1122 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.switchObject\n")
1125 case "capability.switchLevel":
1126 globalObjects.eachLine { line ->
1127 if(line.contains('"switchLevelObject"')){
1133 globalObjects.append("@Field def switchLevelObject = new SwitchLevels(sendEvent, 1)\n")
1135 if (switchLevelObjects == 0) {
1136 switchLevelObject0 = metaData['name']
1137 this[switchLevelObject0] = new SwitchLevels({}, 1)
1138 } else if (switchLevelObjects == 1) {
1139 switchLevelObject1 = metaData['name']
1140 this[switchLevelObject1] = new SwitchLevels({}, 1)
1141 } else if (switchLevelObjects == 2) {
1142 switchLevelObject2 = metaData['name']
1143 this[switchLevelObject2] = new SwitchLevels({}, 1)
1146 switchLevelObjects=switchLevelObjects+1
1148 settings.put(metaData['name'], new SwitchLevels({}, 1))
1150 if (App == "App1") {
1151 extractedObjectsApp1.append("//Object for class switch level!\n")
1152 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1153 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.switchLevelObject\n")
1155 extractedObjectsApp2.append("//Object for class switch level!\n")
1156 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1157 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.switchLevelObject\n")
1160 case "capability.temperatureMeasurement":
1161 globalObjects.eachLine { line ->
1162 if(line.contains('"temperatureMeasurementObject"')){
1168 globalObjects.append("@Field def temperatureMeasurementObject = new TemperatureMeasurements(sendEvent, 1)\n")
1170 if (temperatureMeasurementObjects == 0) {
1171 temperatureMeasurementObject0 = metaData['name']
1172 this[temperatureMeasurementObject0] = new TemperatureMeasurements({}, 1)
1173 } else if (temperatureMeasurementObjects == 1) {
1174 temperatureMeasurementObject1 = metaData['name']
1175 this[temperatureMeasurementObject1] = new TemperatureMeasurements({}, 1)
1176 } else if (temperatureMeasurementObjects == 2) {
1177 temperatureMeasurementObject2 = metaData['name']
1178 this[temperatureMeasurementObject2] = new TemperatureMeasurements({}, 1)
1181 temperatureMeasurementObjects=temperatureMeasurementObjects+1
1183 settings.put(metaData['name'], new TemperatureMeasurements({}, 1))
1185 if (App == "App1") {
1186 extractedObjectsApp1.append("//Object for class temperature measurement!\n")
1187 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1188 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.temperatureMeasurementObject\n")
1190 extractedObjectsApp2.append("//Object for class temperature measurement!\n")
1191 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1192 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.temperatureMeasurementObject\n")
1195 case "capability.thermostat":
1196 globalObjects.eachLine { line ->
1197 if(line.contains('thermostatObject')){
1203 globalObjects.append("@Field def thermostatObject = new Thermostats(sendEvent, 1)\n")
1205 if (thermostatObjects == 0) {
1206 thermostatObject0 = metaData['name']
1207 this[thermostatObject0] = new Thermostats({}, 1)
1208 } else if (thermostatObjects == 1) {
1209 thermostatObject1 = metaData['name']
1210 this[thermostatObject1] = new Thermostats({}, 1)
1211 } else if (thermostatObjects == 2) {
1212 thermostatObject2 = metaData['name']
1213 this[thermostatObject2] = new Thermostats({}, 1)
1216 thermostatObjects=thermostatObjects+1
1218 settings.put(metaData['name'], new Thermostats({}, 1))
1220 if (App == "App1") {
1221 extractedObjectsApp1.append("//Object for class thermostat!\n")
1222 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1223 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.thermostatObject\n")
1225 extractedObjectsApp2.append("//Object for class thermostat!\n")
1226 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1227 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.thermostatObject\n")
1230 case "capability.valve":
1231 globalObjects.eachLine { line ->
1232 if(line.contains('"valveObject"')){
1238 globalObjects.append("@Field def valveObject = new Valves(sendEvent, 1)\n")
1240 if (valveObjects == 0) {
1241 valveObject0 = metaData['name']
1242 this[valveObject0] = new Valves({}, 1)
1243 } else if (valveObjects == 1) {
1244 valveObject1 = metaData['name']
1245 this[valveObject1] = new Valves({}, 1)
1246 } else if (valveObjects == 2) {
1247 valveObject2 = metaData['name']
1248 this[valveObject2] = new Valves({}, 1)
1251 valveObjects=valveObjects+1
1253 settings.put(metaData['name'], new Valves({}, 1))
1255 if (App == "App1") {
1256 extractedObjectsApp1.append("//Object for class valve!\n")
1257 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1258 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.valveObject\n")
1260 extractedObjectsApp2.append("//Object for class valve!\n")
1261 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1262 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.valveObject\n")
1265 case "capability.speechSynthesis":
1266 globalObjects.eachLine { line ->
1267 if(line.contains('"speechSynthesisObject"')){
1273 globalObjects.append("@Field def speechSynthesisObject = new SpeechSynthesises(sendEvent, 1)\n")
1275 if (speechSynthesisObjects == 0) {
1276 speechSynthesisObject0 = metaData['name']
1277 this[speechSynthesisObject0] = new SpeechSynthesises({}, 1)
1278 } else if (speechSynthesisObjects == 1) {
1279 speechSynthesisObject1 = metaData['name']
1280 this[speechSynthesisObject1] = new SpeechSynthesises({}, 1)
1281 } else if (speechSynthesisObjects == 2) {
1282 speechSynthesisObject2 = metaData['name']
1283 this[speechSynthesisObject2] = new SpeechSynthesises({}, 1)
1286 speechSynthesisObjects=speechSynthesisObjects+1
1288 settings.put(metaData['name'], new SpeechSynthesises({}, 1))
1290 if (App == "App1") {
1291 extractedObjectsApp1.append("//Object for class speech synthesis!\n")
1292 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1293 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.speechSynthesisObject\n")
1295 extractedObjectsApp2.append("//Object for class speech synthesis!\n")
1296 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1297 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.speechSynthesisObject\n")
1300 case "capability.waterSensor":
1301 globalObjects.eachLine { line ->
1302 if(line.contains('"waterSensorObject"')){
1308 globalObjects.append("@Field def waterSensorObject = new WaterSensors(sendEvent, 1)\n")
1310 if (waterSensorObjects == 0) {
1311 waterSensorObject0 = metaData['name']
1312 this[waterSensorObject0] = new WaterSensors({}, 1)
1313 } else if (waterSensorObjects == 1) {
1314 waterSensorObject1 = metaData['name']
1315 this[waterSensorObject1] = new WaterSensors({}, 1)
1316 } else if (waterSensorObjects == 2) {
1317 waterSensorObject2 = metaData['name']
1318 this[waterSensorObject2] = new WaterSensors({}, 1)
1321 waterSensorObjects=waterSensorObjects+1
1323 settings.put(metaData['name'], new WaterSensors({}, 1))
1325 if (App == "App1") {
1326 extractedObjectsApp1.append("//Object for class water sensor!\n")
1327 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1328 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.waterSensorObject\n")
1330 extractedObjectsApp2.append("//Object for class water sensor!\n")
1331 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1332 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.waterSensorObject\n")
1335 case "capability.touchSensor":
1336 globalObjects.eachLine { line ->
1337 if(line.contains('"touchSensorObject"')){
1343 globalObjects.append("@Field def touchSensorObject = new NfcTouch(sendEvent, 1)\n")
1345 if (touchSensorObjects == 0) {
1346 touchSensorObject0 = metaData['name']
1347 this[touchSensorObject0] = new NfcTouch({}, 1)
1348 } else if (touchSensorObjects == 1) {
1349 touchSensorObject1 = metaData['name']
1350 this[touchSensorObject1] = new NfcTouch({}, 1)
1351 } else if (touchSensorObjects == 2) {
1352 touchSensorObject2 = metaData['name']
1353 this[touchSensorObject2] = new NfcTouch({}, 1)
1356 touchSensorObjects=touchSensorObjects+1
1358 settings.put(metaData['name'], new NfcTouch({}, 1))
1360 if (App == "App1") {
1361 extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
1362 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1363 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.touchSensorObject\n")
1365 extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
1366 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1367 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.touchSensorObject\n")
1370 case "capability.imageCapture":
1371 contains = globalObjects.eachLine { line ->
1372 if(line.contains('"imageCaptureObject"')){
1378 globalObjects.append("@Field def imageCaptureObject = new ImageCaptures(sendEvent, 1)\n")
1380 if (imageCaptureObjects == 0) {
1381 imageCaptureObject0 = metaData['name']
1382 this[imageCaptureObject0] = new ImageCaptures({}, 1)
1383 } else if (imageCaptureObjects == 1) {
1384 imageCaptureObject1 = metaData['name']
1385 this[imageCaptureObject1] = new ImageCaptures({}, 1)
1386 } else if (imageCaptureObjects == 2) {
1387 imageCaptureObject2 = metaData['name']
1388 this[imageCaptureObject2] = new ImageCaptures({}, 1)
1391 imageCaptureObjects=imageCaptureObjects+1
1393 settings.put(metaData['name'], new ImageCaptures({}, 1))
1395 if (App == "App1") {
1396 extractedObjectsApp1.append("//Object for class Image Capture!\n")
1397 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1398 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.imageCaptureObject\n")
1400 extractedObjectsApp2.append("//Object for class Image Capture!\n")
1401 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1402 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.imageCaptureObject\n")
1405 case "device.mobilePresence":
1406 contains = globalObjects.eachLine { line ->
1407 if(line.contains('"mobilePresenceObject"')){
1413 globalObjects.append("@Field def mobilePresenceObject = new MobilePresences(sendEvent, 1)\n")
1415 if (mobilePresenceObjects == 0) {
1416 mobilePresenceObject0 = metaData['name']
1417 this[mobilePresenceObject0] = new MobilePresences({}, 1)
1418 } else if (mobilePresenceObjects == 1) {
1419 mobilePresenceObject1 = metaData['name']
1420 this[mobilePresenceObject1] = new MobilePresences({}, 1)
1421 } else if (mobilePresenceObjects == 2) {
1422 mobilePresenceObject2 = metaData['name']
1423 this[mobilePresenceObject2] = new MobilePresences({}, 1)
1426 mobilePresenceObjects=mobilePresenceObjects+1
1428 settings.put(metaData['name'], new MobilePresences({}, 1))
1430 if (App == "App1") {
1431 extractedObjectsApp1.append("//Object for class mobile presence!\n")
1432 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1433 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.mobilePresenceObject\n")
1435 extractedObjectsApp2.append("//Object for class mobile presence!\n")
1436 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1437 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.mobilePresenceObject\n")
1440 case "device.aeonKeyFob":
1441 contains = globalObjects.eachLine { line ->
1442 if(line.contains('"aeonKeyFobObject"')){
1448 globalObjects.append("@Field def aeonKeyFobObject = new AeonKeyFobs(sendEvent, 1)\n")
1450 if (aeonKeyFobObjects == 0) {
1451 aeonKeyFobObject0 = metaData['name']
1452 this[aeonKeyFobObject0] = new AeonKeyFobs({}, 1)
1453 } else if (aeonKeyFobObjects == 1) {
1454 aeonKeyFobObject1 = metaData['name']
1455 this[aeonKeyFobObject1] = new AeonKeyFobs({}, 1)
1456 } else if (aeonKeyFobObjects == 2) {
1457 aeonKeyFobObject2 = metaData['name']
1458 this[aeonKeyFobObject2] = new AeonKeyFobs({}, 1)
1461 aeonKeyFobObjects=aeonKeyFobObjects+1
1463 settings.put(metaData['name'], new AeonKeyFobs({}, 1))
1465 if (App == "App1") {
1466 extractedObjectsApp1.append("//Object for class aeon key fob!\n")
1467 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1468 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.aeonKeyFobObject\n")
1470 extractedObjectsApp2.append("//Object for class aeon key fob!\n")
1471 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1472 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.aeonKeyFobObject\n")
1476 //def randomVariable = Math.abs(new Random().nextInt() % 3)
1477 def modes = ["away", "home", "night"]
1478 def userInput = modes[0]
1480 if (modeVariables == 0) {
1481 mode0 = metaData['name']
1482 this[mode0] = userInput
1483 } else if (modeVariables == 1) {
1484 mode1 = metaData['name']
1485 this[mode1] = userInput
1486 } else if (modeVariables == 2) {
1487 mode2 = metaData['name']
1488 this[mode2] = userInput
1489 } else if (modeVariables == 3) {
1490 mode3 = metaData['name']
1491 this[mode3] = userInput
1492 } else if (modeVariables == 4) {
1493 mode4 = metaData['name']
1494 this[mode4] = userInput
1495 } else if (modeVariables == 5) {
1496 mode5 = metaData['name']
1497 this[mode5] = userInput
1500 if (modeVariables != 5)
1501 modeVariables=modeVariables+1
1506 settings.put(metaData['name'], metaData['name'])
1508 if (App == "App1") {
1509 extractedObjectsApp1.append("//Global variable for mode!\n")
1510 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1512 extractedObjectsApp2.append("//Global variable for mode!\n")
1513 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1517 //def userInput = Math.abs(new Random().nextInt() % 60) + 40
1520 if (decimalVariables == 0) {
1521 decimal0 = metaData['name']
1522 this[decimal0] = userInput
1523 } else if (decimalVariables == 1) {
1524 decimal1 = metaData['name']
1525 this[decimal1] = userInput
1526 } else if (decimalVariables == 2) {
1527 decimal2 = metaData['name']
1528 this[decimal2] = userInput
1529 } else if (decimalVariables == 3) {
1530 decimal3 = metaData['name']
1531 this[decimal3] = userInput
1532 } else if (decimalVariables == 4) {
1533 decimal4 = metaData['name']
1534 this[decimal4] = userInput
1535 } else if (decimalVariables == 5) {
1536 decimal5 = metaData['name']
1537 this[decimal5] = userInput
1540 if (decimalVariables != 5)
1541 decimalVariables=decimalVariables+1
1545 settings.put(metaData['name'], metaData['name'])
1547 if (App == "App1") {
1548 extractedObjectsApp1.append("//Global variable for decimal number!\n")
1549 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1551 extractedObjectsApp2.append("//Global variable for decimal number!\n")
1552 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1556 def userInput = "This is just a text!"
1558 if (textVariables == 0) {
1559 text0 = metaData['name']
1560 this[text0] = userInput
1561 } else if (textVariables == 1) {
1562 text1 = metaData['name']
1563 this[text1] = userInput
1564 } else if (textVariables == 2) {
1565 text2 = metaData['name']
1566 this[text2] = userInput
1567 } else if (textVariables == 3) {
1568 text3 = metaData['name']
1569 this[text3] = userInput
1570 } else if (textVariables == 4) {
1571 text4 = metaData['name']
1572 this[text4] = userInput
1573 } else if (textVariables == 5) {
1574 text5 = metaData['name']
1575 this[text5] = userInput
1578 if (textVariables != 5)
1579 textVariables=textVariables+1
1584 settings.put(metaData['name'], metaData['name'])
1586 if (App == "App1") {
1587 extractedObjectsApp1.append("//Global variable for text!\n")
1588 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1590 extractedObjectsApp2.append("//Global variable for text!\n")
1591 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1595 //def userInput = Math.abs(new Random().nextInt() % 60) + 40
1598 if (numberVariables == 0) {
1599 number0 = metaData['name']
1600 this[number0] = userInput
1601 } else if (numberVariables == 1) {
1602 number1 = metaData['name']
1603 this[number1] = userInput
1604 } else if (numberVariables == 2) {
1605 number2 = metaData['name']
1606 this[number2] = userInput
1607 } else if (numberVariables == 3) {
1608 number3 = metaData['name']
1609 this[number3] = userInput
1610 } else if (numberVariables == 4) {
1611 number4 = metaData['name']
1612 this[number4] = userInput
1613 } else if (numberVariables == 5) {
1614 number5 = metaData['name']
1615 this[number5] = userInput
1619 if (numberVariables != 5)
1620 numberVariables=numberVariables+1
1625 settings.put(metaData['name'], metaData['name'])
1627 if (App == "App1") {
1628 extractedObjectsApp1.append("//Global variable for number!\n")
1629 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1631 extractedObjectsApp2.append("//Global variable for number!\n")
1632 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1636 def userInput = "15:00"
1638 if (timeVariables == 0) {
1639 time0 = metaData['name']
1640 this[time0] = userInput
1641 } else if (timeVariables == 1) {
1642 time1 = metaData['name']
1643 this[time1] = userInput
1644 } else if (timeVariables == 2) {
1645 time2 = metaData['name']
1646 this[time2] = userInput
1647 } else if (timeVariables == 3) {
1648 time3 = metaData['name']
1649 this[time3] = userInput
1650 } else if (timeVariables == 4) {
1651 time4 = metaData['name']
1652 this[time4] = userInput
1653 } else if (timeVariables == 5) {
1654 time5 = metaData['name']
1655 this[time5] = userInput
1658 if (timeVariables != 5)
1659 timeVariables=timeVariables+1
1663 settings.put(metaData['name'], metaData['name'])
1665 if (App == "App1") {
1666 extractedObjectsApp1.append("//Global variable for time!\n")
1667 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1669 extractedObjectsApp2.append("//Global variable for time!\n")
1670 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1674 if (metaData['options'] != null)
1675 modes = metaData['options']
1676 else if (metaData['metadata'] != null) { // If it is not named 'options' then it is captured as 'metadata'
1677 modes = metaData['metadata']
1678 modes = modes['values']
1680 def userInput = modes[0]
1682 if (enumVariables == 0) {
1683 enum0 = metaData['name']
1684 this[enum0] = userInput
1685 } else if (enumVariables == 1) {
1686 enum1 = metaData['name']
1687 this[enum1] = userInput
1688 } else if (enumVariables == 2) {
1689 enum2 = metaData['name']
1690 this[enum2] = userInput
1691 } else if (enumVariables == 3) {
1692 enum3 = metaData['name']
1693 this[enum3] = userInput
1694 } else if (enumVariables == 4) {
1695 enum4 = metaData['name']
1696 this[enum4] = userInput
1697 } else if (enumVariables == 5) {
1698 enum5 = metaData['name']
1699 this[enum5] = userInput
1702 if (enumVariables != 5)
1703 enumVariables=enumVariables+1
1708 settings.put(metaData['name'], metaData['name'])
1710 if (App == "App1") {
1711 extractedObjectsApp1.append("//Global variable for enum!\n")
1712 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1714 extractedObjectsApp2.append("//Global variable for enum!\n")
1715 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1719 //def userInput = Math.abs(new Random().nextInt() % 2)
1720 def userInput = true
1722 if (boolVariables == 0) {
1723 bool0 = metaData['name']
1724 this[bool0] = userInput
1725 } else if (boolVariables == 1) {
1726 bool1 = metaData['name']
1727 this[bool1] = userInput
1728 } else if (boolVariables == 2) {
1729 bool2 = metaData['name']
1730 this[bool2] = userInput
1731 } else if (boolVariables == 3) {
1732 bool3 = metaData['name']
1733 this[bool3] = userInput
1734 } else if (boolVariables == 4) {
1735 bool4 = metaData['name']
1736 this[bool4] = userInput
1737 } else if (boolVariables == 5) {
1738 bool5 = metaData['name']
1739 this[bool5] = userInput
1742 if (boolVariables != 5)
1743 boolVariables=boolVariables+1
1748 settings.put(metaData['name'], metaData['name'])
1750 if (App == "App1") {
1751 extractedObjectsApp1.append("//Global variable for boolean!\n")
1752 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1754 extractedObjectsApp2.append("//Global variable for boolean!\n")
1755 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1759 def userInput = 9495379373
1761 if (phoneVariables == 0) {
1762 phone0 = metaData['name']
1763 this[phone0] = userInput
1764 } else if (phoneVariables == 1) {
1765 phone1 = metaData['name']
1766 this[phone1] = userInput
1767 } else if (phoneVariables == 2) {
1768 phone2 = metaData['name']
1769 this[phone2] = userInput
1770 } else if (phoneVariables == 3) {
1771 phone3 = metaData['name']
1772 this[phone3] = userInput
1773 } else if (phoneVariables == 4) {
1774 phone4 = metaData['name']
1775 this[phone4] = userInput
1776 } else if (phoneVariables == 5) {
1777 phone5 = metaData['name']
1778 this[phone5] = userInput
1781 if (phoneVariables != 5)
1782 phoneVariables=phoneVariables+1
1786 settings.put(metaData['name'], metaData['name'])
1788 if (App == "App1") {
1789 extractedObjectsApp1.append("//Global variable for phone!\n")
1790 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1792 extractedObjectsApp2.append("//Global variable for phone!\n")
1793 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1797 def userInput = "AJ"
1799 if (contactVariables == 0) {
1800 contact0 = metaData['name']
1801 this[contact0] = userInput
1802 } else if (contactVariables == 1) {
1803 contact1 = metaData['name']
1804 this[contact1] = userInput
1805 } else if (contactVariables == 2) {
1806 contact2 = metaData['name']
1807 this[contact2] = userInput
1808 } else if (contactVariables == 3) {
1809 contact3 = metaData['name']
1810 this[contact3] = userInput
1811 } else if (contactVariables == 4) {
1812 contact4 = metaData['name']
1813 this[contact4] = userInput
1814 } else if (contactVariables == 5) {
1815 contact5 = metaData['name']
1816 this[contact5] = userInput
1819 if (contactVariables != 5)
1820 contactVariables=contactVariables+1
1824 settings.put(metaData['name'], metaData['name'])
1826 if (App == "App1") {
1827 extractedObjectsApp1.append("//Global variable for contact!\n")
1828 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1830 extractedObjectsApp2.append("//Global variable for contact!\n")
1831 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1839 def label(LinkedHashMap metaData) {
1840 if (metaData.containsKey('title')) {
1841 println metaData['title']
1843 if (metaData.containsKey('options')) {
1844 println "Options: "+metaData['options']
1847 println("//IGNORE--ForMobileUse//")
1850 def mode(LinkedHashMap metaData) {
1851 if (metaData.containsKey('title')) {
1852 println metaData['title']
1854 if (metaData.containsKey('options')) {
1855 println "Options: "+metaData['options']
1858 println("//IGNORE--ForMobileUse//")
1861 def href(LinkedHashMap metaData) {
1862 println("//IGNORE--some data//")
1865 def href(LinkedHashMap metaData, String name) {
1866 println("//IGNORE--some data//")
1868 /////Input Methods/////
1871 /////MethodsForExtraction/////
1872 def definition(LinkedHashMap metaData) {
1873 println("///Just some information///")
1876 def preferences(Closure inputData) {
1877 find(inputData) //Run the closure to extract pages/sections/inputMethods
1878 settings.put("END", "END")
1879 if (App == "App1") {
1880 extractedObjectsConstructorApp1.append("//Global variable for settings!\n")
1881 extractedObjectsConstructorApp1.append("settings = [")
1885 extractedObjectsConstructorApp1.append("$key: $key, ")
1887 extractedObjectsConstructorApp1.append("END: \"END\"]\n")
1890 extractedObjectsConstructorApp2.append("//Global variable for settings!\n")
1891 extractedObjectsConstructorApp2.append("settings = [")
1895 extractedObjectsConstructorApp2.append("$key: $key, ")
1897 extractedObjectsConstructorApp2.append("END: \"END\"]\n")
1900 File GlobalVariablesBothApps = new File("GlobalVariables/GlobalVariablesBothApps.groovy")
1901 GlobalVariablesBothApps.write("")
1902 GlobalVariablesBothApps.append("//Creating Global variables for both apps\n")
1903 GlobalVariablesBothApps.append("@Field def sendEvent = {eventDataMap -> eventHandler(eventDataMap)}\n")
1904 GlobalVariablesBothApps.append("@Field def locationObject = new LocationVar(sendEvent)\n")
1905 GlobalVariablesBothApps.append("@Field def appObject = new Touched(sendEvent, 0)\n")
1907 globalObjects.withReader { reader ->
1908 while ((line = reader.readLine()) != null) {
1909 GlobalVariablesBothApps.append(line)
1910 GlobalVariablesBothApps.append("\n")
1916 def page(LinkedHashMap metaData, Closure inputData) {
1917 if (metaData.containsKey('name'))
1918 println(metaData['name'])
1919 if (metaData.containsKey('title'))
1920 println(metaData['title'])
1922 find(inputData) //Run the closure to extract sections/inputMethods
1925 def page(LinkedHashMap metaData) {
1926 def nameOfFunction = metaData['name']
1927 "$nameOfFunction"() //Call the page
1930 def dynamicPage(LinkedHashMap metaData, Closure inputData) {
1931 if (metaData.containsKey('name'))
1932 println(metaData['name'])
1933 if (metaData.containsKey('title'))
1934 println(metaData['title'])
1936 find(inputData) //Run the closure to extract sections/inputMethods
1939 def paragraph(String paragraphText) {
1940 println(paragraphText)
1943 def section(String title, Closure inputData) {
1945 find(inputData) //Run the closure to extract inputMethods
1948 def section(Closure inputData) {
1949 find(inputData) //Run the closure to extract inputMethods
1952 def section(LinkedHashMap metaData, Closure inputData) {
1953 find(inputData) //Run the closure to extract inputMethods
1956 def section(LinkedHashMap metaData, String data, Closure inputData) {
1960 def mappings(Closure inputData) {
1961 println("//IGNORE--some data//")
1963 /////MethodsForExtraction/////