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
354 /////Input Methods/////
356 def input(String name, String type) {
357 LinkedHashMap metaData = []
358 metaData.put('name',name)
359 metaData.put('type',type)
363 //input "","",linkedHashMap
364 def input(LinkedHashMap metaData, String name, String type) {
365 metaData.put('name',name)
366 metaData.put('type',type)
370 //input "", "", linkedHashMap, Closure
371 def input(LinkedHashMap metaData, String name, String type, Closure Input) {
372 metaData.put('name',name)
373 metaData.put('type',type)
378 //input linkedHashMap
379 def input(LinkedHashMap metaData) {
380 if (metaData.containsKey('title')) {
381 println metaData['title']
383 if (metaData.containsKey('options')) {
384 println "Options: "+metaData['options']
387 // Return if this capability has been instantiated
388 //if (metaData['type'].startsWith("device") || metaData['type'].startsWith("capability")) {
389 // if (capabilitySet.contains(metaData['type'])) {
392 // capabilitySet.add(metaData['type'])
395 switch(metaData['type']) {
396 case "capability.lock":
397 globalObjects.eachLine { line ->
398 if(line.contains("lockObject")){
404 globalObjects.append("@Field def lockObject = new Locks(sendEvent, 1)\n")
406 if (lockObjects == 0) {
407 lockObject0 = metaData['name']
408 this[lockObject0] = new Locks({}, 1)
409 } else if (lockObjects == 1) {
410 lockObject1 = metaData['name']
411 this[lockObject1] = new Locks({}, 1)
412 } else if (lockObjects == 2) {
413 lockObject2 = metaData['name']
414 this[lockObject2] = new Locks({}, 1)
417 lockObjects=lockObjects+1
419 settings.put(metaData['name'], new Locks({}, 1))
422 extractedObjectsApp1.append("//Object for class lock!\n")
423 extractedObjectsApp1.append("def "+metaData['name']+"\n")
424 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.lockObject\n")
426 extractedObjectsApp2.append("//Object for class lock!\n")
427 extractedObjectsApp2.append("def "+metaData['name']+"\n")
428 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.lockObject\n")
431 case "capability.alarm":
432 globalObjects.eachLine { line ->
433 if(line.contains("alarmObject")){
439 globalObjects.append("@Field def alarmObject = new Alarms(sendEvent, 1)\n")
441 if (alarmObjects == 0) {
442 alarmObject0 = metaData['name']
443 this[alarmObject0] = new Alarms({}, 1)
444 } else if (alarmObjects == 1) {
445 alarmObject1 = metaData['name']
446 this[alarmObject1] = new Alarms({}, 1)
447 } else if (alarmObjects == 2) {
448 alarmObject2 = metaData['name']
449 this[alarmObject2] = new Alarms({}, 1)
452 alarmObjects=alarmObjects+1
454 settings.put(metaData['name'], new Alarms({}, 1))
457 extractedObjectsApp1.append("//Object for class alarm!\n")
458 extractedObjectsApp1.append("def "+metaData['name']+"\n")
459 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.alarmObject\n")
461 extractedObjectsApp2.append("//Object for class alarm!\n")
462 extractedObjectsApp2.append("def "+metaData['name']+"\n")
463 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.alarmObject\n")
466 case "capability.battery":
467 globalObjects.eachLine { line ->
468 if(line.contains("batteryObject")){
474 globalObjects.append("@Field def batteryObject = new Batteries(sendEvent, 1)\n")
476 if (batteryObjects == 0) {
477 batteryObject0 = metaData['name']
478 this[batteryObject0] = new Batteries({}, 1)
479 } else if (batteryObjects == 1) {
480 batteryObject1 = metaData['name']
481 this[batteryObject1] = new Batteries({}, 1)
482 } else if (batteryObjects == 2) {
483 batteryObject2 = metaData['name']
484 this[batteryObject2] = new Batteries({}, 1)
487 batteryObjects=batteryObjects+1
489 settings.put(metaData['name'], new Batteries({}, 1))
492 extractedObjectsApp1.append("//Object for class Battery!\n")
493 extractedObjectsApp1.append("def "+metaData['name']+"\n")
494 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.batteryObject\n")
496 extractedObjectsApp2.append("//Object for class Battery!\n")
497 extractedObjectsApp2.append("def "+metaData['name']+"\n")
498 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.batteryObject\n")
501 case "capability.beacon":
502 globalObjects.eachLine { line ->
503 if(line.contains("beaconSensorObject")){
509 globalObjects.append("@Field def beaconSensorObject = new BeaconSensors(sendEvent, 1)\n")
511 if (beaconSensorObjects == 0) {
512 beaconSensorObject0 = metaData['name']
513 this[beaconSensorObject0] = new BeaconSensors({}, 1)
514 } else if (beaconSensorObjects == 1) {
515 beaconSensorObject1 = metaData['name']
516 this[beaconSensorObject1] = new BeaconSensors({}, 1)
517 } else if (beaconSensorObjects == 2) {
518 beaconSensorObject2 = metaData['name']
519 this[beaconSensorObject2] = new BeaconSensors({}, 1)
522 beaconSensorObjects=beaconSensorObjects+1
524 settings.put(metaData['name'], new BeaconSensors({}, 1))
527 extractedObjectsApp1.append("//Object for class beacon sensor!\n")
528 extractedObjectsApp1.append("def "+metaData['name']+"\n")
529 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.beaconSensorObject\n")
531 extractedObjectsApp2.append("//Object for class beacon sensor!\n")
532 extractedObjectsApp2.append("def "+metaData['name']+"\n")
533 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.beaconSensorObject\n")
536 case "capability.carbonMonoxideDetector":
537 globalObjects.eachLine { line ->
538 if(line.contains("carbonMonoxideDetectorObject")){
544 globalObjects.append("@Field def carbonMonoxideDetectorObject = new CarbonMonoxideDetectors(sendEvent, 1)\n")
546 if (carbonMonoxideDetectorObjects == 0) {
547 carbonMonoxideDetectorObject0 = metaData['name']
548 this[carbonMonoxideDetectorObject0] = new CarbonMonoxideDetectors({}, 1)
549 } else if (carbonMonoxideDetectorObjects == 1) {
550 carbonMonoxideDetectorObject1 = metaData['name']
551 this[carbonMonoxideDetectorObject1] = new CarbonMonoxideDetectors({}, 1)
552 } else if (carbonMonoxideDetectorObjects == 2) {
553 carbonMonoxideDetectorObject2 = metaData['name']
554 this[carbonMonoxideDetectorObject2] = new CarbonMonoxideDetectors({}, 1)
557 carbonMonoxideDetectorObjects=carbonMonoxideDetectorObjects+1
559 settings.put(metaData['name'], new CarbonMonoxideDetectors({}, 1))
562 extractedObjectsApp1.append("//Object for class carbon monoxide detector!\n")
563 extractedObjectsApp1.append("def "+metaData['name']+"\n")
564 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.carbonMonoxideDetectorObject\n")
566 extractedObjectsApp2.append("//Object for class carbon monoxide detector!\n")
567 extractedObjectsApp2.append("def "+metaData['name']+"\n")
568 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.carbonMonoxideDetectorObject\n")
571 case "capability.colorControl":
572 globalObjects.eachLine { line ->
573 if(line.contains("colorControlObject")){
579 globalObjects.append("@Field def colorControlObject = new ColorControls(sendEvent, 1)\n")
581 if (colorControlObjects == 0) {
582 colorControlObject0 = metaData['name']
583 this[colorControlObject0] = new ColorControls({}, 1)
584 } else if (colorControlObjects == 1) {
585 colorControlObject1 = metaData['name']
586 this[colorControlObject1] = new ColorControls({}, 1)
587 } else if (colorControlObjects == 2) {
588 colorControlObject2 = metaData['name']
589 this[colorControlObject2] = new ColorControls({}, 1)
592 colorControlObjects=colorControlObjects+1
594 settings.put(metaData['name'], new ColorControls({}, 1))
597 extractedObjectsApp1.append("//Object for class color control!\n")
598 extractedObjectsApp1.append("def "+metaData['name']+"\n")
599 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.colorControlObject\n")
601 extractedObjectsApp2.append("//Object for class color control!\n")
602 extractedObjectsApp2.append("def "+metaData['name']+"\n")
603 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.colorControlObject\n")
606 case "capability.contactSensor":
607 globalObjects.eachLine { line ->
608 if(line.contains("contactObject")){
614 globalObjects.append("@Field def contactObject = new ContactSensors(sendEvent, 1)\n")
616 if (contactObjects == 0) {
617 contactObject0 = metaData['name']
618 this[contactObject0] = new ContactSensors({}, 1)
619 } else if (contactObjects == 1) {
620 contactObject1 = metaData['name']
621 this[contactObject1] = new ContactSensors({}, 1)
622 } else if (contactObjects == 2) {
623 contactObject2 = metaData['name']
624 this[contactObject2] = new ContactSensors({}, 1)
627 contactObjects=contactObjects+1
629 settings.put(metaData['name'], new ContactSensors({}, 1))
632 extractedObjectsApp1.append("//Object for class contactSensor!\n")
633 extractedObjectsApp1.append("def "+metaData['name']+"\n")
634 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.contactObject\n")
636 extractedObjectsApp2.append("//Object for class contactSensor!\n")
637 extractedObjectsApp2.append("def "+metaData['name']+"\n")
638 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.contactObject\n")
641 case "capability.doorControl":
642 globalObjects.eachLine { line ->
643 if(line.contains("doorControlObject")){
649 globalObjects.append("@Field def doorControlObject = new DoorControls(sendEvent, 1)\n")
651 if (doorControlObjects == 0) {
652 doorControlObject0 = metaData['name']
653 this[doorControlObject0] = new DoorControls({}, 1)
654 } else if (doorControlObjects == 1) {
655 doorControlObject1 = metaData['name']
656 this[doorControlObject1] = new DoorControls({}, 1)
657 } else if (doorControlObjects == 2) {
658 doorControlObject2 = metaData['name']
659 this[doorControlObject2] = new DoorControls({}, 1)
662 doorControlObjects=doorControlObjects+1
664 settings.put(metaData['name'], new DoorControls({}, 1))
667 extractedObjectsApp1.append("//Object for class door control!\n")
668 extractedObjectsApp1.append("def "+metaData['name']+"\n")
669 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.doorControlObject\n")
671 extractedObjectsApp2.append("//Object for class door control!\n")
672 extractedObjectsApp2.append("def "+metaData['name']+"\n")
673 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.doorControlObject\n")
676 case "capability.energyMeter":
677 globalObjects.eachLine { line ->
678 if(line.contains("energyMeterObject")){
684 globalObjects.append("@Field def energyMeterObject = new EnergyMeters(sendEvent, 1)\n")
686 if (energyMeterObjects == 0) {
687 energyMeterObject0 = metaData['name']
688 this[energyMeterObject0] = new EnergyMeters({}, 1)
689 } else if (energyMeterObjects == 1) {
690 energyMeterObject1 = metaData['name']
691 this[energyMeterObject1] = new EnergyMeters({}, 1)
692 } else if (energyMeterObjects == 2) {
693 energyMeterObject2 = metaData['name']
694 this[energyMeterObject2] = new EnergyMeters({}, 1)
697 energyMeterObjects=energyMeterObjects+1
699 settings.put(metaData['name'], new EnergyMeters({}, 1))
702 extractedObjectsApp1.append("//Object for class energy meter!\n")
703 extractedObjectsApp1.append("def "+metaData['name']+"\n")
704 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.energyMeterObject\n")
706 extractedObjectsApp2.append("//Object for class energy meter!\n")
707 extractedObjectsApp2.append("def "+metaData['name']+"\n")
708 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.energyMeterObject\n")
711 case "capability.illuminanceMeasurement":
712 globalObjects.eachLine { line ->
713 if(line.contains("illuminanceMeasurementObject")){
719 globalObjects.append("@Field def illuminanceMeasurementObject = new IlluminanceMeasurements(sendEvent, 1)\n")
721 if (illuminanceMeasurementObjects == 0) {
722 illuminanceMeasurementObject0 = metaData['name']
723 this[illuminanceMeasurementObject0] = new IlluminanceMeasurements({}, 1)
724 } else if (illuminanceMeasurementObjects == 1) {
725 illuminanceMeasurementObject1 = metaData['name']
726 this[illuminanceMeasurementObject1] = new IlluminanceMeasurements({}, 1)
727 } else if (illuminanceMeasurementObjects == 2) {
728 illuminanceMeasurementObject2 = metaData['name']
729 this[illuminanceMeasurementObject2] = new IlluminanceMeasurements({}, 1)
732 illuminanceMeasurementObjects=illuminanceMeasurementObjects+1
734 settings.put(metaData['name'], new IlluminanceMeasurements({}, 1))
737 extractedObjectsApp1.append("//Object for class illuminance measurement!\n")
738 extractedObjectsApp1.append("def "+metaData['name']+"\n")
739 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.illuminanceMeasurementObject\n")
741 extractedObjectsApp2.append("//Object for class illuminance measurement!\n")
742 extractedObjectsApp2.append("def "+metaData['name']+"\n")
743 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.illuminanceMeasurementObject\n")
746 case "capability.accelerationSensor":
747 globalObjects.eachLine { line ->
748 if(line.contains("accelerationSensorObject")){
754 globalObjects.append("@Field def accelerationSensorObject = new AccelerationSensors(sendEvent, 1)\n")
756 if (accelerationSensorObjects == 0) {
757 accelerationSensorObject0 = metaData['name']
758 this[accelerationSensorObject0] = new AccelerationSensors({}, 1)
759 } else if (accelerationSensorObjects == 1) {
760 accelerationSensorObject1 = metaData['name']
761 this[accelerationSensorObject1] = new AccelerationSensors({}, 1)
762 } else if (accelerationSensorObjects == 2) {
763 accelerationSensorObject2 = metaData['name']
764 this[accelerationSensorObject2] = new AccelerationSensors({}, 1)
767 accelerationSensorObjects=accelerationSensorObjects+1
769 settings.put(metaData['name'], new AccelerationSensors({}, 1))
772 extractedObjectsApp1.append("//Object for class Acceleration Sensor!\n")
773 extractedObjectsApp1.append("def "+metaData['name']+"\n")
774 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.accelerationSensorObject\n")
776 extractedObjectsApp2.append("//Object for class Acceleration Sensor!\n")
777 extractedObjectsApp2.append("def "+metaData['name']+"\n")
778 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.accelerationSensorObject\n")
781 case "capability.motionSensor":
782 globalObjects.eachLine { line ->
783 if(line.contains("motionSensorObject")){
789 globalObjects.append("@Field def motionSensorObject = new MotionSensors(sendEvent, 1)\n")
791 if (motionSensorObjects == 0) {
792 motionSensorObject0 = metaData['name']
793 this[motionSensorObject0] = new MotionSensors({}, 1)
794 } else if (motionSensorObjects == 1) {
795 motionSensorObject1 = metaData['name']
796 this[motionSensorObject1] = new MotionSensors({}, 1)
797 } else if (motionSensorObjects == 2) {
798 motionSensorObject2 = metaData['name']
799 this[motionSensorObject2] = new MotionSensors({}, 1)
802 motionSensorObjects=motionSensorObjects+1
804 settings.put(metaData['name'], new MotionSensors({}, 1))
807 extractedObjectsApp1.append("//Object for class Motion Sensor!\n")
808 extractedObjectsApp1.append("def "+metaData['name']+"\n")
809 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.motionSensorObject\n")
811 extractedObjectsApp2.append("//Object for class Motion Sensor!\n")
812 extractedObjectsApp2.append("def "+metaData['name']+"\n")
813 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.motionSensorObject\n")
816 case "capability.musicPlayer":
817 globalObjects.eachLine { line ->
818 if(line.contains("musicPlayerObject")){
824 globalObjects.append("@Field def musicPlayerObject = new MusicPlayers(sendEvent, 1)\n")
826 if (musicPlayerObjects == 0) {
827 musicPlayerObject0 = metaData['name']
828 this[musicPlayerObject0] = new MusicPlayers({}, 1)
829 } else if (musicPlayerObjects == 1) {
830 musicPlayerObject1 = metaData['name']
831 this[musicPlayerObject1] = new MusicPlayers({}, 1)
832 } else if (musicPlayerObjects == 2) {
833 musicPlayerObject2 = metaData['name']
834 this[musicPlayerObject2] = new MusicPlayers({}, 1)
837 musicPlayerObjects=musicPlayerObjects+1
839 settings.put(metaData['name'], new MusicPlayers({}, 1))
842 extractedObjectsApp1.append("//Object for class music player!\n")
843 extractedObjectsApp1.append("def "+metaData['name']+"\n")
844 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.musicPlayerObject\n")
846 extractedObjectsApp2.append("//Object for class music player!\n")
847 extractedObjectsApp2.append("def "+metaData['name']+"\n")
848 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.musicPlayerObject\n")
851 case "capability.powerMeter":
852 globalObjects.eachLine { line ->
853 if(line.contains("powerMeterObject")){
859 globalObjects.append("@Field def powerMeterObject = new PowerMeters(sendEvent, 1)\n")
861 if (powerMeterObjects == 0) {
862 powerMeterObject0 = metaData['name']
863 this[powerMeterObject0] = new PowerMeters({}, 1)
864 } else if (powerMeterObjects == 1) {
865 powerMeterObject1 = metaData['name']
866 this[powerMeterObject1] = new PowerMeters({}, 1)
867 } else if (powerMeterObjects == 2) {
868 powerMeterObject2 = metaData['name']
869 this[powerMeterObject2] = new PowerMeters({}, 1)
872 powerMeterObjects=powerMeterObjects+1
874 settings.put(metaData['name'], new PowerMeters({}, 1))
877 extractedObjectsApp1.append("//Object for class power meter!\n")
878 extractedObjectsApp1.append("def "+metaData['name']+"\n")
879 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.powerMeterObject\n")
881 extractedObjectsApp2.append("//Object for class power meter!\n")
882 extractedObjectsApp2.append("def "+metaData['name']+"\n")
883 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.powerMeterObject\n")
886 case "capability.presenceSensor":
887 globalObjects.eachLine { line ->
888 if(line.contains("presenceSensorObject")){
894 globalObjects.append("@Field def presenceSensorObject = new PresenceSensors(sendEvent, 1)\n")
896 if (presenceSensorObjects == 0) {
897 presenceSensorObject0 = metaData['name']
898 this[presenceSensorObject0] = new PresenceSensors({}, 1)
899 } else if (presenceSensorObjects == 1) {
900 presenceSensorObject1 = metaData['name']
901 this[presenceSensorObject1] = new PresenceSensors({}, 1)
902 } else if (presenceSensorObjects == 2) {
903 presenceSensorObject2 = metaData['name']
904 this[presenceSensorObject2] = new PresenceSensors({}, 1)
907 presenceSensorObjects=presenceSensorObjects+1
909 settings.put(metaData['name'], new PresenceSensors({}, 1))
912 extractedObjectsApp1.append("//Object for class presence sensor!\n")
913 extractedObjectsApp1.append("def "+metaData['name']+"\n")
914 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.presenceSensorObject\n")
916 extractedObjectsApp2.append("//Object for class presence sensor!\n")
917 extractedObjectsApp2.append("def "+metaData['name']+"\n")
918 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.presenceSensorObject\n")
921 case "capability.relativeHumidityMeasurement":
922 globalObjects.eachLine { line ->
923 if(line.contains("humidityMeasurementObject")){
929 globalObjects.append("@Field def humidityMeasurementObject = new RelativeHumidityMeasurements(sendEvent, 1)\n")
931 if (humidityMeasurementObjects == 0) {
932 humidityMeasurementObject0 = metaData['name']
933 this[humidityMeasurementObject0] = new RelativeHumidityMeasurements({}, 1)
934 } else if (humidityMeasurementObjects == 1) {
935 humidityMeasurementObject1 = metaData['name']
936 this[humidityMeasurementObject1] = new RelativeHumidityMeasurements({}, 1)
937 } else if (humidityMeasurementObjects == 2) {
938 humidityMeasurementObject2 = metaData['name']
939 this[humidityMeasurementObject2] = new RelativeHumidityMeasurements({}, 1)
942 humidityMeasurementObjects=humidityMeasurementObjects+1
944 settings.put(metaData['name'], new RelativeHumidityMeasurements({}, 1))
947 extractedObjectsApp1.append("//Object for class humidity measurement!\n")
948 extractedObjectsApp1.append("def "+metaData['name']+"\n")
949 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.humidityMeasurementObject\n")
951 extractedObjectsApp2.append("//Object for class humidity measurement!\n")
952 extractedObjectsApp2.append("def "+metaData['name']+"\n")
953 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.humidityMeasurementObject\n")
956 case "capability.relaySwitch":
957 globalObjects.eachLine { line ->
958 if(line.contains("relaySwitchObject")){
964 globalObjects.append("@Field def relaySwitchObject = new RelaySwitches(sendEvent, 1)\n")
966 if (relaySwitchObjects == 0) {
967 relaySwitchObject0 = metaData['name']
968 this[relaySwitchObject0] = new RelaySwitches({}, 1)
969 } else if (relaySwitchObjects == 1) {
970 relaySwitchObject1 = metaData['name']
971 this[relaySwitchObject1] = new RelaySwitches({}, 1)
972 } else if (relaySwitchObjects == 2) {
973 relaySwitchObject2 = metaData['name']
974 this[relaySwitchObject2] = new RelaySwitches({}, 1)
977 relaySwitchObjects=relaySwitchObjects+1
979 settings.put(metaData['name'], new RelaySwitches({}, 1))
982 extractedObjectsApp1.append("//Object for class relay switch!\n")
983 extractedObjectsApp1.append("def "+metaData['name']+"\n")
984 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.relaySwitchObject\n")
986 extractedObjectsApp2.append("//Object for class relay switch!\n")
987 extractedObjectsApp2.append("def "+metaData['name']+"\n")
988 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.relaySwitchObject\n")
991 case "capability.sleepSensor":
992 globalObjects.eachLine { line ->
993 if(line.contains("sleepSensorObject")){
999 globalObjects.append("@Field def sleepSensorObject = new SleepSensors(sendEvent, 1)\n")
1001 if (sleepSensorObjects == 0) {
1002 sleepSensorObject0 = metaData['name']
1003 this[sleepSensorObject0] = new SleepSensors({}, 1)
1004 } else if (sleepSensorObjects == 1) {
1005 sleepSensorObject1 = metaData['name']
1006 this[sleepSensorObject1] = new SleepSensors({}, 1)
1007 } else if (sleepSensorObjects == 2) {
1008 sleepSensorObject2 = metaData['name']
1009 this[sleepSensorObject2] = new SleepSensors({}, 1)
1012 sleepSensorObjects=sleepSensorObjects+1
1014 settings.put(metaData['name'], new SleepSensors({}, 1))
1016 if (App == "App1") {
1017 extractedObjectsApp1.append("//Object for class sleep sensor!\n")
1018 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1019 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.sleepSensorObject\n")
1021 extractedObjectsApp2.append("//Object for class sleep sensor!\n")
1022 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1023 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.sleepSensorObject\n")
1026 case "capability.smokeDetector":
1027 globalObjects.eachLine { line ->
1028 if(line.contains("smokeDetectorObject")){
1034 globalObjects.append("@Field def smokeDetectorObject = new SmokeDetectors(sendEvent, 1)\n")
1036 if (smokeDetectorObjects == 0) {
1037 smokeDetectorObject0 = metaData['name']
1038 this[smokeDetectorObject0] = new SmokeDetectors({}, 1)
1039 } else if (smokeDetectorObjects == 1) {
1040 smokeDetectorObject1 = metaData['name']
1041 this[smokeDetectorObject1] = new SmokeDetectors({}, 1)
1042 } else if (smokeDetectorObjects == 2) {
1043 smokeDetectorObject2 = metaData['name']
1044 this[smokeDetectorObject2] = new SmokeDetectors({}, 1)
1047 smokeDetectorObjects=smokeDetectorObjects+1
1049 settings.put(metaData['name'], new SmokeDetectors({}, 1))
1051 if (App == "App1") {
1052 extractedObjectsApp1.append("//Object for class smoke detector!\n")
1053 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1054 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.smokeDetectorObject\n")
1056 extractedObjectsApp2.append("//Object for class smoke detector!\n")
1057 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1058 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.smokeDetectorObject\n")
1061 case "capability.stepSensor":
1062 globalObjects.eachLine { line ->
1063 if(line.contains("stepSensorObject")){
1069 globalObjects.append("@Field def stepSensorObject = new StepSensors(sendEvent, 1)\n")
1071 if (stepSensorObjects == 0) {
1072 stepSensorObject0 = metaData['name']
1073 this[stepSensorObject0] = new StepSensors({}, 1)
1074 } else if (stepSensorObjects == 1) {
1075 stepSensorObject1 = metaData['name']
1076 this[stepSensorObject1] = new StepSensors({}, 1)
1077 } else if (stepSensorObjects == 2) {
1078 stepSensorObject2 = metaData['name']
1079 this[stepSensorObject2] = new StepSensors({}, 1)
1082 stepSensorObjects=stepSensorObjects+1
1084 settings.put(metaData['name'], new StepSensors({}, 1))
1086 if (App == "App1") {
1087 extractedObjectsApp1.append("//Object for class step sensor!\n")
1088 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1089 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.stepSensorObject\n")
1091 extractedObjectsApp2.append("//Object for class step sensor!\n")
1092 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1093 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.stepSensorObject\n")
1096 case "capability.switch":
1097 globalObjects.eachLine { line ->
1098 if(line.contains("switchObject")){
1104 globalObjects.append("@Field def switchObject = new Switches(sendEvent, 1)\n")
1106 if (switchObjects == 0) {
1107 switchObject0 = metaData['name']
1108 this[switchObject0] = new Switches({}, 1)
1109 } else if (switchObjects == 1) {
1110 switchObject1 = metaData['name']
1111 this[switchObject1] = new Switches({}, 1)
1112 } else if (switchObjects == 2) {
1113 switchObject2 = metaData['name']
1114 this[switchObject2] = new Switches({}, 1)
1117 switchObjects=switchObjects+1
1119 settings.put(metaData['name'], new Switches({}, 1))
1121 if (App == "App1") {
1122 extractedObjectsApp1.append("//Object for class switch!\n")
1123 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1124 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.switchObject\n")
1126 extractedObjectsApp2.append("//Object for class switch!\n")
1127 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1128 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.switchObject\n")
1131 case "capability.switchLevel":
1132 globalObjects.eachLine { line ->
1133 if(line.contains("switchLevelObject")){
1139 globalObjects.append("@Field def switchLevelObject = new SwitchLevels(sendEvent, 1)\n")
1141 if (switchLevelObjects == 0) {
1142 switchLevelObject0 = metaData['name']
1143 this[switchLevelObject0] = new SwitchLevels({}, 1)
1144 } else if (switchLevelObjects == 1) {
1145 switchLevelObject1 = metaData['name']
1146 this[switchLevelObject1] = new SwitchLevels({}, 1)
1147 } else if (switchLevelObjects == 2) {
1148 switchLevelObject2 = metaData['name']
1149 this[switchLevelObject2] = new SwitchLevels({}, 1)
1152 switchLevelObjects=switchLevelObjects+1
1154 settings.put(metaData['name'], new SwitchLevels({}, 1))
1156 if (App == "App1") {
1157 extractedObjectsApp1.append("//Object for class switch level!\n")
1158 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1159 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.switchLevelObject\n")
1161 extractedObjectsApp2.append("//Object for class switch level!\n")
1162 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1163 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.switchLevelObject\n")
1166 case "capability.temperatureMeasurement":
1167 globalObjects.eachLine { line ->
1168 if(line.contains("temperatureMeasurementObject")){
1174 globalObjects.append("@Field def temperatureMeasurementObject = new TemperatureMeasurements(sendEvent, 1)\n")
1176 if (temperatureMeasurementObjects == 0) {
1177 temperatureMeasurementObject0 = metaData['name']
1178 this[temperatureMeasurementObject0] = new TemperatureMeasurements({}, 1)
1179 } else if (temperatureMeasurementObjects == 1) {
1180 temperatureMeasurementObject1 = metaData['name']
1181 this[temperatureMeasurementObject1] = new TemperatureMeasurements({}, 1)
1182 } else if (temperatureMeasurementObjects == 2) {
1183 temperatureMeasurementObject2 = metaData['name']
1184 this[temperatureMeasurementObject2] = new TemperatureMeasurements({}, 1)
1187 temperatureMeasurementObjects=temperatureMeasurementObjects+1
1189 settings.put(metaData['name'], new TemperatureMeasurements({}, 1))
1191 if (App == "App1") {
1192 extractedObjectsApp1.append("//Object for class temperature measurement!\n")
1193 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1194 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.temperatureMeasurementObject\n")
1196 extractedObjectsApp2.append("//Object for class temperature measurement!\n")
1197 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1198 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.temperatureMeasurementObject\n")
1201 case "capability.thermostat":
1202 globalObjects.eachLine { line ->
1203 if(line.contains("thermostatObject")){
1209 globalObjects.append("@Field def thermostatObject = new Thermostats(sendEvent, 1)\n")
1211 if (thermostatObjects == 0) {
1212 thermostatObject0 = metaData['name']
1213 this[thermostatObject0] = new Thermostats({}, 1)
1214 } else if (thermostatObjects == 1) {
1215 thermostatObject1 = metaData['name']
1216 this[thermostatObject1] = new Thermostats({}, 1)
1217 } else if (thermostatObjects == 2) {
1218 thermostatObject2 = metaData['name']
1219 this[thermostatObject2] = new Thermostats({}, 1)
1222 thermostatObjects=thermostatObjects+1
1224 settings.put(metaData['name'], new Thermostats({}, 1))
1226 if (App == "App1") {
1227 extractedObjectsApp1.append("//Object for class thermostat!\n")
1228 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1229 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.thermostatObject\n")
1231 extractedObjectsApp2.append("//Object for class thermostat!\n")
1232 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1233 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.thermostatObject\n")
1236 case "capability.valve":
1237 globalObjects.eachLine { line ->
1238 if(line.contains("valveObject")){
1244 globalObjects.append("@Field def valveObject = new Valves(sendEvent, 1)\n")
1246 if (valveObjects == 0) {
1247 valveObject0 = metaData['name']
1248 this[valveObject0] = new Valves({}, 1)
1249 } else if (valveObjects == 1) {
1250 valveObject1 = metaData['name']
1251 this[valveObject1] = new Valves({}, 1)
1252 } else if (valveObjects == 2) {
1253 valveObject2 = metaData['name']
1254 this[valveObject2] = new Valves({}, 1)
1257 valveObjects=valveObjects+1
1259 settings.put(metaData['name'], new Valves({}, 1))
1261 if (App == "App1") {
1262 extractedObjectsApp1.append("//Object for class valve!\n")
1263 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1264 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.valveObject\n")
1266 extractedObjectsApp2.append("//Object for class valve!\n")
1267 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1268 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.valveObject\n")
1271 case "capability.speechSynthesis":
1272 globalObjects.eachLine { line ->
1273 if(line.contains("speechSynthesisObject")){
1279 globalObjects.append("@Field def speechSynthesisObject = new SpeechSynthesises(sendEvent, 1)\n")
1281 if (speechSynthesisObjects == 0) {
1282 speechSynthesisObject0 = metaData['name']
1283 this[speechSynthesisObject0] = new SpeechSynthesises({}, 1)
1284 } else if (speechSynthesisObjects == 1) {
1285 speechSynthesisObject1 = metaData['name']
1286 this[speechSynthesisObject1] = new SpeechSynthesises({}, 1)
1287 } else if (speechSynthesisObjects == 2) {
1288 speechSynthesisObject2 = metaData['name']
1289 this[speechSynthesisObject2] = new SpeechSynthesises({}, 1)
1292 speechSynthesisObjects=speechSynthesisObjects+1
1294 settings.put(metaData['name'], new SpeechSynthesises({}, 1))
1296 if (App == "App1") {
1297 extractedObjectsApp1.append("//Object for class speech synthesis!\n")
1298 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1299 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.speechSynthesisObject\n")
1301 extractedObjectsApp2.append("//Object for class speech synthesis!\n")
1302 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1303 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.speechSynthesisObject\n")
1306 case "capability.waterSensor":
1307 globalObjects.eachLine { line ->
1308 if(line.contains("waterSensorObject")){
1314 globalObjects.append("@Field def waterSensorObject = new WaterSensors(sendEvent, 1)\n")
1316 if (waterSensorObjects == 0) {
1317 waterSensorObject0 = metaData['name']
1318 this[waterSensorObject0] = new WaterSensors({}, 1)
1319 } else if (waterSensorObjects == 1) {
1320 waterSensorObject1 = metaData['name']
1321 this[waterSensorObject1] = new WaterSensors({}, 1)
1322 } else if (waterSensorObjects == 2) {
1323 waterSensorObject2 = metaData['name']
1324 this[waterSensorObject2] = new WaterSensors({}, 1)
1327 waterSensorObjects=waterSensorObjects+1
1329 settings.put(metaData['name'], new WaterSensors({}, 1))
1331 if (App == "App1") {
1332 extractedObjectsApp1.append("//Object for class water sensor!\n")
1333 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1334 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.waterSensorObject\n")
1336 extractedObjectsApp2.append("//Object for class water sensor!\n")
1337 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1338 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.waterSensorObject\n")
1341 case "capability.touchSensor":
1342 globalObjects.eachLine { line ->
1343 if(line.contains("touchSensorObject")){
1349 globalObjects.append("@Field def touchSensorObject = new NfcTouch(sendEvent, 1)\n")
1351 if (touchSensorObjects == 0) {
1352 touchSensorObject0 = metaData['name']
1353 this[touchSensorObject0] = new NfcTouch({}, 1)
1354 } else if (touchSensorObjects == 1) {
1355 touchSensorObject1 = metaData['name']
1356 this[touchSensorObject1] = new NfcTouch({}, 1)
1357 } else if (touchSensorObjects == 2) {
1358 touchSensorObject2 = metaData['name']
1359 this[touchSensorObject2] = new NfcTouch({}, 1)
1362 touchSensorObjects=touchSensorObjects+1
1364 settings.put(metaData['name'], new NfcTouch({}, 1))
1366 if (App == "App1") {
1367 extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
1368 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1369 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.touchSensorObject\n")
1371 extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
1372 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1373 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.touchSensorObject\n")
1376 case "capability.imageCapture":
1377 contains = globalObjects.eachLine { line ->
1378 if(line.contains("imageCaptureObject")){
1384 globalObjects.append("@Field def imageCaptureObject = new ImageCaptures(sendEvent, 1)\n")
1386 if (imageCaptureObjects == 0) {
1387 imageCaptureObject0 = metaData['name']
1388 this[imageCaptureObject0] = new ImageCaptures({}, 1)
1389 } else if (imageCaptureObjects == 1) {
1390 imageCaptureObject1 = metaData['name']
1391 this[imageCaptureObject1] = new ImageCaptures({}, 1)
1392 } else if (imageCaptureObjects == 2) {
1393 imageCaptureObject2 = metaData['name']
1394 this[imageCaptureObject2] = new ImageCaptures({}, 1)
1397 imageCaptureObjects=imageCaptureObjects+1
1399 settings.put(metaData['name'], new ImageCaptures({}, 1))
1401 if (App == "App1") {
1402 extractedObjectsApp1.append("//Object for class Image Capture!\n")
1403 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1404 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.imageCaptureObject\n")
1406 extractedObjectsApp2.append("//Object for class Image Capture!\n")
1407 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1408 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.imageCaptureObject\n")
1411 case "device.mobilePresence":
1412 contains = globalObjects.eachLine { line ->
1413 if(line.contains("mobilePresenceObject")){
1419 globalObjects.append("@Field def mobilePresenceObject = new MobilePresences(sendEvent, 1)\n")
1421 if (mobilePresenceObjects == 0) {
1422 mobilePresenceObject0 = metaData['name']
1423 this[mobilePresenceObject0] = new MobilePresences({}, 1)
1424 } else if (mobilePresenceObjects == 1) {
1425 mobilePresenceObject1 = metaData['name']
1426 this[mobilePresenceObject1] = new MobilePresences({}, 1)
1427 } else if (mobilePresenceObjects == 2) {
1428 mobilePresenceObject2 = metaData['name']
1429 this[mobilePresenceObject2] = new MobilePresences({}, 1)
1432 mobilePresenceObjects=mobilePresenceObjects+1
1434 settings.put(metaData['name'], new MobilePresences({}, 1))
1436 if (App == "App1") {
1437 extractedObjectsApp1.append("//Object for class mobile presence!\n")
1438 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1439 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.mobilePresenceObject\n")
1441 extractedObjectsApp2.append("//Object for class mobile presence!\n")
1442 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1443 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.mobilePresenceObject\n")
1446 case "device.aeonKeyFob":
1447 contains = globalObjects.eachLine { line ->
1448 if(line.contains("aeonKeyFobObject")){
1454 globalObjects.append("@Field def aeonKeyFobObject = new AeonKeyFobs(sendEvent, 1)\n")
1456 if (aeonKeyFobObjects == 0) {
1457 aeonKeyFobObject0 = metaData['name']
1458 this[aeonKeyFobObject0] = new AeonKeyFobs({}, 1)
1459 } else if (aeonKeyFobObjects == 1) {
1460 aeonKeyFobObject1 = metaData['name']
1461 this[aeonKeyFobObject1] = new AeonKeyFobs({}, 1)
1462 } else if (aeonKeyFobObjects == 2) {
1463 aeonKeyFobObject2 = metaData['name']
1464 this[aeonKeyFobObject2] = new AeonKeyFobs({}, 1)
1467 aeonKeyFobObjects=aeonKeyFobObjects+1
1469 settings.put(metaData['name'], new AeonKeyFobs({}, 1))
1471 if (App == "App1") {
1472 extractedObjectsApp1.append("//Object for class aeon key fob!\n")
1473 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1474 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.aeonKeyFobObject\n")
1476 extractedObjectsApp2.append("//Object for class aeon key fob!\n")
1477 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1478 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.aeonKeyFobObject\n")
1482 //def randomVariable = Math.abs(new Random().nextInt() % 3)
1483 def modes = ["away", "home", "night"]
1484 def userInput = modes[0]
1486 if (modeVariables == 0) {
1487 mode0 = metaData['name']
1488 this[mode0] = userInput
1489 } else if (modeVariables == 1) {
1490 mode1 = metaData['name']
1491 this[mode1] = userInput
1492 } else if (modeVariables == 2) {
1493 mode2 = metaData['name']
1494 this[mode2] = userInput
1495 } else if (modeVariables == 3) {
1496 mode3 = metaData['name']
1497 this[mode3] = userInput
1498 } else if (modeVariables == 4) {
1499 mode4 = metaData['name']
1500 this[mode4] = userInput
1501 } else if (modeVariables == 5) {
1502 mode5 = metaData['name']
1503 this[mode5] = userInput
1506 if (modeVariables != 5)
1507 modeVariables=modeVariables+1
1512 settings.put(metaData['name'], metaData['name'])
1514 if (App == "App1") {
1515 extractedObjectsApp1.append("//Global variable for mode!\n")
1516 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1518 extractedObjectsApp2.append("//Global variable for mode!\n")
1519 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1523 //def userInput = Math.abs(new Random().nextInt() % 60) + 40
1526 if (decimalVariables == 0) {
1527 decimal0 = metaData['name']
1528 this[decimal0] = userInput
1529 } else if (decimalVariables == 1) {
1530 decimal1 = metaData['name']
1531 this[decimal1] = userInput
1532 } else if (decimalVariables == 2) {
1533 decimal2 = metaData['name']
1534 this[decimal2] = userInput
1535 } else if (decimalVariables == 3) {
1536 decimal3 = metaData['name']
1537 this[decimal3] = userInput
1538 } else if (decimalVariables == 4) {
1539 decimal4 = metaData['name']
1540 this[decimal4] = userInput
1541 } else if (decimalVariables == 5) {
1542 decimal5 = metaData['name']
1543 this[decimal5] = userInput
1546 if (decimalVariables != 5)
1547 decimalVariables=decimalVariables+1
1551 settings.put(metaData['name'], metaData['name'])
1553 if (App == "App1") {
1554 extractedObjectsApp1.append("//Global variable for decimal number!\n")
1555 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1557 extractedObjectsApp2.append("//Global variable for decimal number!\n")
1558 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1562 def userInput = "This is just a text!"
1564 if (textVariables == 0) {
1565 text0 = metaData['name']
1566 this[text0] = userInput
1567 } else if (textVariables == 1) {
1568 text1 = metaData['name']
1569 this[text1] = userInput
1570 } else if (textVariables == 2) {
1571 text2 = metaData['name']
1572 this[text2] = userInput
1573 } else if (textVariables == 3) {
1574 text3 = metaData['name']
1575 this[text3] = userInput
1576 } else if (textVariables == 4) {
1577 text4 = metaData['name']
1578 this[text4] = userInput
1579 } else if (textVariables == 5) {
1580 text5 = metaData['name']
1581 this[text5] = userInput
1584 if (textVariables != 5)
1585 textVariables=textVariables+1
1590 settings.put(metaData['name'], metaData['name'])
1592 if (App == "App1") {
1593 extractedObjectsApp1.append("//Global variable for text!\n")
1594 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1596 extractedObjectsApp2.append("//Global variable for text!\n")
1597 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1601 //def userInput = Math.abs(new Random().nextInt() % 60) + 40
1604 if (numberVariables == 0) {
1605 number0 = metaData['name']
1606 this[number0] = userInput
1607 } else if (numberVariables == 1) {
1608 number1 = metaData['name']
1609 this[number1] = userInput
1610 } else if (numberVariables == 2) {
1611 number2 = metaData['name']
1612 this[number2] = userInput
1613 } else if (numberVariables == 3) {
1614 number3 = metaData['name']
1615 this[number3] = userInput
1616 } else if (numberVariables == 4) {
1617 number4 = metaData['name']
1618 this[number4] = userInput
1619 } else if (numberVariables == 5) {
1620 number5 = metaData['name']
1621 this[number5] = userInput
1625 if (numberVariables != 5)
1626 numberVariables=numberVariables+1
1631 settings.put(metaData['name'], metaData['name'])
1633 if (App == "App1") {
1634 extractedObjectsApp1.append("//Global variable for number!\n")
1635 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1637 extractedObjectsApp2.append("//Global variable for number!\n")
1638 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1642 def userInput = "15:00"
1644 if (timeVariables == 0) {
1645 time0 = metaData['name']
1646 this[time0] = userInput
1647 } else if (timeVariables == 1) {
1648 time1 = metaData['name']
1649 this[time1] = userInput
1650 } else if (timeVariables == 2) {
1651 time2 = metaData['name']
1652 this[time2] = userInput
1653 } else if (timeVariables == 3) {
1654 time3 = metaData['name']
1655 this[time3] = userInput
1656 } else if (timeVariables == 4) {
1657 time4 = metaData['name']
1658 this[time4] = userInput
1659 } else if (timeVariables == 5) {
1660 time5 = metaData['name']
1661 this[time5] = userInput
1664 if (timeVariables != 5)
1665 timeVariables=timeVariables+1
1669 settings.put(metaData['name'], metaData['name'])
1671 if (App == "App1") {
1672 extractedObjectsApp1.append("//Global variable for time!\n")
1673 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1675 extractedObjectsApp2.append("//Global variable for time!\n")
1676 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1680 if (metaData['options'] != null)
1681 modes = metaData['options']
1682 else if (metaData['metadata'] != null) { // If it is not named 'options' then it is captured as 'metadata'
1683 modes = metaData['metadata']
1684 modes = modes['values']
1686 def userInput = modes[0]
1688 if (enumVariables == 0) {
1689 enum0 = metaData['name']
1690 this[enum0] = userInput
1691 } else if (enumVariables == 1) {
1692 enum1 = metaData['name']
1693 this[enum1] = userInput
1694 } else if (enumVariables == 2) {
1695 enum2 = metaData['name']
1696 this[enum2] = userInput
1697 } else if (enumVariables == 3) {
1698 enum3 = metaData['name']
1699 this[enum3] = userInput
1700 } else if (enumVariables == 4) {
1701 enum4 = metaData['name']
1702 this[enum4] = userInput
1703 } else if (enumVariables == 5) {
1704 enum5 = metaData['name']
1705 this[enum5] = userInput
1708 if (enumVariables != 5)
1709 enumVariables=enumVariables+1
1714 settings.put(metaData['name'], metaData['name'])
1716 if (App == "App1") {
1717 extractedObjectsApp1.append("//Global variable for enum!\n")
1718 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1720 extractedObjectsApp2.append("//Global variable for enum!\n")
1721 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1725 //def userInput = Math.abs(new Random().nextInt() % 2)
1726 def userInput = true
1728 if (boolVariables == 0) {
1729 bool0 = metaData['name']
1730 this[bool0] = userInput
1731 } else if (boolVariables == 1) {
1732 bool1 = metaData['name']
1733 this[bool1] = userInput
1734 } else if (boolVariables == 2) {
1735 bool2 = metaData['name']
1736 this[bool2] = userInput
1737 } else if (boolVariables == 3) {
1738 bool3 = metaData['name']
1739 this[bool3] = userInput
1740 } else if (boolVariables == 4) {
1741 bool4 = metaData['name']
1742 this[bool4] = userInput
1743 } else if (boolVariables == 5) {
1744 bool5 = metaData['name']
1745 this[bool5] = userInput
1748 if (boolVariables != 5)
1749 boolVariables=boolVariables+1
1754 settings.put(metaData['name'], metaData['name'])
1756 if (App == "App1") {
1757 extractedObjectsApp1.append("//Global variable for boolean!\n")
1758 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1760 extractedObjectsApp2.append("//Global variable for boolean!\n")
1761 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1765 def userInput = 9495379373
1767 if (phoneVariables == 0) {
1768 phone0 = metaData['name']
1769 this[phone0] = userInput
1770 } else if (phoneVariables == 1) {
1771 phone1 = metaData['name']
1772 this[phone1] = userInput
1773 } else if (phoneVariables == 2) {
1774 phone2 = metaData['name']
1775 this[phone2] = userInput
1776 } else if (phoneVariables == 3) {
1777 phone3 = metaData['name']
1778 this[phone3] = userInput
1779 } else if (phoneVariables == 4) {
1780 phone4 = metaData['name']
1781 this[phone4] = userInput
1782 } else if (phoneVariables == 5) {
1783 phone5 = metaData['name']
1784 this[phone5] = userInput
1787 if (phoneVariables != 5)
1788 phoneVariables=phoneVariables+1
1792 settings.put(metaData['name'], metaData['name'])
1794 if (App == "App1") {
1795 extractedObjectsApp1.append("//Global variable for phone!\n")
1796 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1798 extractedObjectsApp2.append("//Global variable for phone!\n")
1799 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1803 def userInput = "AJ"
1805 if (contactVariables == 0) {
1806 contact0 = metaData['name']
1807 this[contact0] = userInput
1808 } else if (contactVariables == 1) {
1809 contact1 = metaData['name']
1810 this[contact1] = userInput
1811 } else if (contactVariables == 2) {
1812 contact2 = metaData['name']
1813 this[contact2] = userInput
1814 } else if (contactVariables == 3) {
1815 contact3 = metaData['name']
1816 this[contact3] = userInput
1817 } else if (contactVariables == 4) {
1818 contact4 = metaData['name']
1819 this[contact4] = userInput
1820 } else if (contactVariables == 5) {
1821 contact5 = metaData['name']
1822 this[contact5] = userInput
1825 if (contactVariables != 5)
1826 contactVariables=contactVariables+1
1830 settings.put(metaData['name'], metaData['name'])
1832 if (App == "App1") {
1833 extractedObjectsApp1.append("//Global variable for contact!\n")
1834 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1836 extractedObjectsApp2.append("//Global variable for contact!\n")
1837 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1845 def label(LinkedHashMap metaData) {
1846 if (metaData.containsKey('title')) {
1847 println metaData['title']
1849 if (metaData.containsKey('options')) {
1850 println "Options: "+metaData['options']
1853 println("//IGNORE--ForMobileUse//")
1856 def mode(LinkedHashMap metaData) {
1857 if (metaData.containsKey('title')) {
1858 println metaData['title']
1860 if (metaData.containsKey('options')) {
1861 println "Options: "+metaData['options']
1864 println("//IGNORE--ForMobileUse//")
1867 def href(LinkedHashMap metaData) {
1868 println("//IGNORE--some data//")
1871 def href(LinkedHashMap metaData, String name) {
1872 println("//IGNORE--some data//")
1874 /////Input Methods/////
1877 /////MethodsForExtraction/////
1878 def definition(LinkedHashMap metaData) {
1879 println("///Just some information///")
1882 def preferences(Closure inputData) {
1883 find(inputData) //Run the closure to extract pages/sections/inputMethods
1884 settings.put("END", "END")
1885 if (App == "App1") {
1886 extractedObjectsConstructorApp1.append("//Global variable for settings!\n")
1887 extractedObjectsConstructorApp1.append("settings = [")
1891 extractedObjectsConstructorApp1.append("$key: $key, ")
1893 extractedObjectsConstructorApp1.append("END: \"END\"]\n")
1896 extractedObjectsConstructorApp2.append("//Global variable for settings!\n")
1897 extractedObjectsConstructorApp2.append("settings = [")
1901 extractedObjectsConstructorApp2.append("$key: $key, ")
1903 extractedObjectsConstructorApp2.append("END: \"END\"]\n")
1906 File GlobalVariablesBothApps = new File("GlobalVariables/GlobalVariablesBothApps.groovy")
1907 GlobalVariablesBothApps.write("")
1908 GlobalVariablesBothApps.append("//Creating Global variables for both apps\n")
1909 GlobalVariablesBothApps.append("@Field def sendEvent = {eventDataMap -> eventHandler(eventDataMap)}\n")
1910 GlobalVariablesBothApps.append("@Field def locationObject = new LocationVar(sendEvent)\n")
1911 GlobalVariablesBothApps.append("@Field def appObject = new Touched(sendEvent, 0)\n")
1913 globalObjects.withReader { reader ->
1914 while ((line = reader.readLine()) != null) {
1915 GlobalVariablesBothApps.append(line)
1916 GlobalVariablesBothApps.append("\n")
1922 def page(LinkedHashMap metaData, Closure inputData) {
1923 if (metaData.containsKey('name'))
1924 println(metaData['name'])
1925 if (metaData.containsKey('title'))
1926 println(metaData['title'])
1928 find(inputData) //Run the closure to extract sections/inputMethods
1931 def page(LinkedHashMap metaData) {
1932 def nameOfFunction = metaData['name']
1933 "$nameOfFunction"() //Call the page
1936 def dynamicPage(LinkedHashMap metaData, Closure inputData) {
1937 if (metaData.containsKey('name'))
1938 println(metaData['name'])
1939 if (metaData.containsKey('title'))
1940 println(metaData['title'])
1942 find(inputData) //Run the closure to extract sections/inputMethods
1945 def paragraph(String paragraphText) {
1946 println(paragraphText)
1949 def section(String title, Closure inputData) {
1951 find(inputData) //Run the closure to extract inputMethods
1954 def section(Closure inputData) {
1955 find(inputData) //Run the closure to extract inputMethods
1958 def section(LinkedHashMap metaData, Closure inputData) {
1959 find(inputData) //Run the closure to extract inputMethods
1962 def section(LinkedHashMap metaData, String data, Closure inputData) {
1966 def mappings(Closure inputData) {
1967 println("//IGNORE--some data//")
1969 /////MethodsForExtraction/////