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 ColorTemperature.ColorTemperature
74 import ColorTemperature.ColorTemperatures
77 import Timer.SimulatedTimer
80 @Field def location = new LocationVar()
81 //Settings variable defined to settings on purpose
82 @Field def settings = [app: "app"]
83 //Global variable for state[mode]
84 @Field def state = [home:[],away:[],night:[]]
85 //Create a global logger object for methods
86 @Field def log = new Logger()
87 //Create a global variable for optional property
88 @Field def optional = false //by default for now
89 //Global Object for class AtomicState!
90 @Field def atomicState = [history: "15:00"]
93 //Global variables for files
94 @Field File globalObjects = new File("Extractor/globalObjects.groovy")
95 @Field File extractedObjectsApp1 = new File("Extractor/App1/extractedObjectsApp1.groovy")
96 @Field File extractedObjectsApp2 = new File("Extractor/App2/extractedObjectsApp2.groovy")
97 @Field File extractedObjectsConstructorApp1 = new File("Extractor/App1/extractedObjectsConstructorApp1.groovy")
98 @Field File extractedObjectsConstructorApp2 = new File("Extractor/App2/extractedObjectsConstructorApp2.groovy")
103 globalObjects.write("")
104 extractedObjectsApp1.write("")
105 extractedObjectsConstructorApp1.write("")
106 } else if (App == "App2") {
107 extractedObjectsApp2.write("")
108 extractedObjectsConstructorApp2.write("")
113 //Some of methods-May be needed even in install
114 /////////////////////////////////////////////////////////////////////
115 def timeToday(String time, Object timeZone) {
116 def timeOfDay = new Date()
117 def _inputTime = time.split(':')
118 def inputTime = Integer.parseInt(_inputTime[0])*3600+Integer.parseInt(_inputTime[1])*60+1564191100415
119 timeOfDay.time = inputTime
126 //Global Object for class Touch Sensor!
127 @Field touchSensorObjects = 0
128 @Field def touchSensorObject0
129 @Field def touchSensorObject1
130 @Field def touchSensorObject2
131 //Global Object for class switch!
132 @Field switchObjects = 0
133 @Field def switchObject0
134 @Field def switchObject1
135 @Field def switchObject2
136 //Global Object for class lock!
137 @Field lockObjects = 0
138 @Field def lockObject0
139 @Field def lockObject1
140 @Field def lockObject2
141 //Global Object for class door control!
142 @Field doorControlObjects = 0
143 @Field def doorControlObject0
144 @Field def doorControlObject1
145 @Field def doorControlObject2
146 //Global Object for class contact sensor!
147 @Field contactObjects = 0
148 @Field def contactObject0
149 @Field def contactObject1
150 @Field def contactObject2
151 //Global Object for class presence sensor!
152 @Field presenceSensorObjects = 0
153 @Field def presenceSensorObject0
154 @Field def presenceSensorObject1
155 @Field def presenceSensorObject2
156 //Global Object for class thermostat!
157 @Field thermostatObjects = 0
158 @Field def thermostatObject0
159 @Field def thermostatObject1
160 @Field def thermostatObject2
161 //Global Object for class music player!
162 @Field musicPlayerObjects = 0
163 @Field def musicPlayerObject0
164 @Field def musicPlayerObject1
165 @Field def musicPlayerObject2
166 //Global Object for class aeon key fob!
167 @Field aeonKeyFobObjects = 0
168 @Field def aeonKeyFobObject0
169 @Field def aeonKeyFobObject1
170 @Field def aeonKeyFobObject2
171 //Global Object for class motion sensor!
172 @Field motionSensorObjects = 0
173 @Field def motionSensorObject0
174 @Field def motionSensorObject1
175 @Field def motionSensorObject2
176 //Global Object for class image capture!
177 @Field imageCaptureObjects = 0
178 @Field def imageCaptureObject0
179 @Field def imageCaptureObject1
180 @Field def imageCaptureObject2
181 //Global Object for class smoke detector!
182 @Field smokeDetectorObjects = 0
183 @Field def smokeDetectorObject0
184 @Field def smokeDetectorObject1
185 @Field def smokeDetectorObject2
186 //Global Object for class alarm!
187 @Field alarmObjects = 0
188 @Field def alarmObject0
189 @Field def alarmObject1
190 @Field def alarmObject2
191 //Global Object for class speech synthesis!
192 @Field speechSynthesisObjects = 0
193 @Field def speechSynthesisObject0
194 @Field def speechSynthesisObject1
195 @Field def speechSynthesisObject2
196 //Global Object for class acceleration sensor!
197 @Field accelerationSensorObjects = 0
198 @Field def accelerationSensorObject0
199 @Field def accelerationSensorObject1
200 @Field def accelerationSensorObject2
201 //Global Object for class battery!
202 @Field batteryObjects = 0
203 @Field def batteryObject0
204 @Field def batteryObject1
205 @Field def batteryObject2
206 //Global Object for class beacon sensor!
207 @Field beaconSensorObjects = 0
208 @Field def beaconSensorObject0
209 @Field def beaconSensorObject1
210 @Field def beaconSensorObject2
211 //Global Object for class carbon monoxide detector!
212 @Field carbonMonoxideDetectorObjects = 0
213 @Field def carbonMonoxideDetectorObject0
214 @Field def carbonMonoxideDetectorObject1
215 @Field def carbonMonoxideDetectorObject2
216 //Global Object for class color control!
217 @Field colorControlObjects = 0
218 @Field def colorControlObject0
219 @Field def colorControlObject1
220 @Field def colorControlObject2
221 //Global Object for class energy meter!
222 @Field energyMeterObjects = 0
223 @Field def energyMeterObject0
224 @Field def energyMeterObject1
225 @Field def energyMeterObject2
226 //Global Object for class energy meter!
227 @Field illuminanceMeasurementObjects = 0
228 @Field def illuminanceMeasurementObject0
229 @Field def illuminanceMeasurementObject1
230 @Field def illuminanceMeasurementObject2
231 //Global Object for class power meter!
232 @Field powerMeterObjects = 0
233 @Field def powerMeterObject0
234 @Field def powerMeterObject1
235 @Field def powerMeterObject2
236 //Global Object for class power meter!
237 @Field humidityMeasurementObjects = 0
238 @Field def humidityMeasurementObject0
239 @Field def humidityMeasurementObject1
240 @Field def humidityMeasurementObject2
241 //Global Object for class relay switch!
242 @Field relaySwitchObjects = 0
243 @Field def relaySwitchObject0
244 @Field def relaySwitchObject1
245 @Field def relaySwitchObject2
246 //Global Object for class sleep sensor!
247 @Field sleepSensorObjects = 0
248 @Field def sleepSensorObject0
249 @Field def sleepSensorObject1
250 @Field def sleepSensorObject2
251 //Global Object for class step sensor!
252 @Field stepSensorObjects = 0
253 @Field def stepSensorObject0
254 @Field def stepSensorObject1
255 @Field def stepSensorObject2
256 //Global Object for class switch level!
257 @Field switchLevelObjects = 0
258 @Field def switchLevelObject0
259 @Field def switchLevelObject1
260 @Field def switchLevelObject2
261 //Global Object for class temperature measurement!
262 @Field temperatureMeasurementObjects = 0
263 @Field def temperatureMeasurementObject0
264 @Field def temperatureMeasurementObject1
265 @Field def temperatureMeasurementObject2
266 //Global Object for class water sensor!
267 @Field waterSensorObjects = 0
268 @Field def waterSensorObject0
269 @Field def waterSensorObject1
270 @Field def waterSensorObject2
271 //Global Object for class valve!
272 @Field valveObjects = 0
273 @Field def valveObject0
274 @Field def valveObject1
275 @Field def valveObject2
276 //Global Object for class mobile presence!
277 @Field mobilePresenceObjects = 0
278 @Field def mobilePresenceObject0
279 @Field def mobilePresenceObject1
280 @Field def mobilePresenceObject2
281 //Global Object for class color temperature!
282 @Field colorTemperatureObjects = 0
283 @Field def colorTemperatureObject0
284 @Field def colorTemperatureObject1
285 @Field def colorTemperatureObject2
286 //Global Object for class button!
287 @Field buttonObjects = 0
288 @Field def buttonObject0
289 @Field def buttonObject1
290 @Field def buttonObject2
295 @Field modeVariables = 0
303 @Field numberVariables = 0
311 @Field decimalVariables = 0
319 @Field timeVariables = 0
327 @Field enumVariables = 0
335 @Field phoneVariables = 0
343 @Field contactVariables = 0
351 @Field textVariables = 0
359 @Field boolVariables = 0
367 /////Input Methods/////
369 def input(String name, String type) {
370 LinkedHashMap metaData = []
371 metaData.put('name',name)
372 metaData.put('type',type)
376 //input "","",linkedHashMap
377 def input(LinkedHashMap metaData, String name, String type) {
378 metaData.put('name',name)
379 metaData.put('type',type)
383 //input "", "", linkedHashMap, Closure
384 def input(LinkedHashMap metaData, String name, String type, Closure Input) {
385 metaData.put('name',name)
386 metaData.put('type',type)
391 //input linkedHashMap
392 def input(LinkedHashMap metaData) {
393 if (metaData.containsKey('title')) {
394 println metaData['title']
396 if (metaData.containsKey('options')) {
397 println "Options: "+metaData['options']
400 switch(metaData['type']) {
401 case "capability.lock":
402 globalObjects.eachLine { line ->
403 if(line.contains("lockObject")){
409 globalObjects.append("@Field def lockObject = new Locks(sendEvent, 1)\n")
411 if (lockObjects == 0) {
412 lockObject0 = metaData['name']
413 this[lockObject0] = new Locks({}, 1)
414 } else if (lockObjects == 1) {
415 lockObject1 = metaData['name']
416 this[lockObject1] = new Locks({}, 1)
417 } else if (lockObjects == 2) {
418 lockObject2 = metaData['name']
419 this[lockObject2] = new Locks({}, 1)
422 lockObjects=lockObjects+1
424 settings.put(metaData['name'], new Locks({}, 1))
427 extractedObjectsApp1.append("//Object for class lock!\n")
428 extractedObjectsApp1.append("def "+metaData['name']+"\n")
429 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.lockObject\n")
431 extractedObjectsApp2.append("//Object for class lock!\n")
432 extractedObjectsApp2.append("def "+metaData['name']+"\n")
433 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.lockObject\n")
436 case "capability.alarm":
437 globalObjects.eachLine { line ->
438 if(line.contains("alarmObject")){
444 globalObjects.append("@Field def alarmObject = new Alarms(sendEvent, 1)\n")
446 if (alarmObjects == 0) {
447 alarmObject0 = metaData['name']
448 this[alarmObject0] = new Alarms({}, 1)
449 } else if (alarmObjects == 1) {
450 alarmObject1 = metaData['name']
451 this[alarmObject1] = new Alarms({}, 1)
452 } else if (alarmObjects == 2) {
453 alarmObject2 = metaData['name']
454 this[alarmObject2] = new Alarms({}, 1)
457 alarmObjects=alarmObjects+1
459 settings.put(metaData['name'], new Alarms({}, 1))
462 extractedObjectsApp1.append("//Object for class alarm!\n")
463 extractedObjectsApp1.append("def "+metaData['name']+"\n")
464 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.alarmObject\n")
466 extractedObjectsApp2.append("//Object for class alarm!\n")
467 extractedObjectsApp2.append("def "+metaData['name']+"\n")
468 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.alarmObject\n")
471 case "capability.button":
472 globalObjects.eachLine { line ->
473 if(line.contains("buttonObject")){
479 globalObjects.append("@Field def buttonObject = new Buttons(sendEvent, 1)\n")
481 if (buttonObjects == 0) {
482 buttonObject0 = metaData['name']
483 this[buttonObject0] = new Buttons({}, 1)
484 } else if (buttonObjects == 1) {
485 buttonObject1 = metaData['name']
486 this[buttonObject1] = new Buttons({}, 1)
487 } else if (buttonObjects == 2) {
488 buttonObject2 = metaData['name']
489 this[buttonObject2] = new Buttons({}, 1)
492 buttonObjects=buttonObjects+1
494 settings.put(metaData['name'], new Buttons({}, 1))
497 extractedObjectsApp1.append("//Object for class Button!\n")
498 extractedObjectsApp1.append("def "+metaData['name']+"\n")
499 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.buttonObject\n")
501 extractedObjectsApp2.append("//Object for class Button!\n")
502 extractedObjectsApp2.append("def "+metaData['name']+"\n")
503 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.buttonObject\n")
506 case "capability.battery":
507 globalObjects.eachLine { line ->
508 if(line.contains("batteryObject")){
514 globalObjects.append("@Field def batteryObject = new Batteries(sendEvent, 1)\n")
516 if (batteryObjects == 0) {
517 batteryObject0 = metaData['name']
518 this[batteryObject0] = new Batteries({}, 1)
519 } else if (batteryObjects == 1) {
520 batteryObject1 = metaData['name']
521 this[batteryObject1] = new Batteries({}, 1)
522 } else if (batteryObjects == 2) {
523 batteryObject2 = metaData['name']
524 this[batteryObject2] = new Batteries({}, 1)
527 batteryObjects=batteryObjects+1
529 settings.put(metaData['name'], new Batteries({}, 1))
532 extractedObjectsApp1.append("//Object for class Battery!\n")
533 extractedObjectsApp1.append("def "+metaData['name']+"\n")
534 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.batteryObject\n")
536 extractedObjectsApp2.append("//Object for class Battery!\n")
537 extractedObjectsApp2.append("def "+metaData['name']+"\n")
538 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.batteryObject\n")
541 case "capability.beacon":
542 globalObjects.eachLine { line ->
543 if(line.contains("beaconSensorObject")){
549 globalObjects.append("@Field def beaconSensorObject = new BeaconSensors(sendEvent, 1)\n")
551 if (beaconSensorObjects == 0) {
552 beaconSensorObject0 = metaData['name']
553 this[beaconSensorObject0] = new BeaconSensors({}, 1)
554 } else if (beaconSensorObjects == 1) {
555 beaconSensorObject1 = metaData['name']
556 this[beaconSensorObject1] = new BeaconSensors({}, 1)
557 } else if (beaconSensorObjects == 2) {
558 beaconSensorObject2 = metaData['name']
559 this[beaconSensorObject2] = new BeaconSensors({}, 1)
562 beaconSensorObjects=beaconSensorObjects+1
564 settings.put(metaData['name'], new BeaconSensors({}, 1))
567 extractedObjectsApp1.append("//Object for class beacon sensor!\n")
568 extractedObjectsApp1.append("def "+metaData['name']+"\n")
569 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.beaconSensorObject\n")
571 extractedObjectsApp2.append("//Object for class beacon sensor!\n")
572 extractedObjectsApp2.append("def "+metaData['name']+"\n")
573 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.beaconSensorObject\n")
576 case "capability.carbonMonoxideDetector":
577 globalObjects.eachLine { line ->
578 if(line.contains("carbonMonoxideDetectorObject")){
584 globalObjects.append("@Field def carbonMonoxideDetectorObject = new CarbonMonoxideDetectors(sendEvent, 1)\n")
586 if (carbonMonoxideDetectorObjects == 0) {
587 carbonMonoxideDetectorObject0 = metaData['name']
588 this[carbonMonoxideDetectorObject0] = new CarbonMonoxideDetectors({}, 1)
589 } else if (carbonMonoxideDetectorObjects == 1) {
590 carbonMonoxideDetectorObject1 = metaData['name']
591 this[carbonMonoxideDetectorObject1] = new CarbonMonoxideDetectors({}, 1)
592 } else if (carbonMonoxideDetectorObjects == 2) {
593 carbonMonoxideDetectorObject2 = metaData['name']
594 this[carbonMonoxideDetectorObject2] = new CarbonMonoxideDetectors({}, 1)
597 carbonMonoxideDetectorObjects=carbonMonoxideDetectorObjects+1
599 settings.put(metaData['name'], new CarbonMonoxideDetectors({}, 1))
602 extractedObjectsApp1.append("//Object for class carbon monoxide detector!\n")
603 extractedObjectsApp1.append("def "+metaData['name']+"\n")
604 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.carbonMonoxideDetectorObject\n")
606 extractedObjectsApp2.append("//Object for class carbon monoxide detector!\n")
607 extractedObjectsApp2.append("def "+metaData['name']+"\n")
608 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.carbonMonoxideDetectorObject\n")
611 case "capability.colorTemperature":
612 globalObjects.eachLine { line ->
613 if(line.contains("colorTemperatureObject")){
619 globalObjects.append("@Field def colorTemperatureObject = new ColorTemperatures(sendEvent, 1)\n")
621 if (colorTemperatureObjects == 0) {
622 colorTemperatureObject0 = metaData['name']
623 this[colorTemperatureObject0] = new ColorTemperatures({}, 1)
624 } else if (colorTemperatureObjects == 1) {
625 colorTemperatureObject1 = metaData['name']
626 this[colorTemperatureObject1] = new ColorTemperatures({}, 1)
627 } else if (colorTemperatureObjects == 2) {
628 colorTemperatureObject2 = metaData['name']
629 this[colorTemperatureObject2] = new ColorTemperatures({}, 1)
632 colorTemperatureObjects=colorTemperatureObjects+1
634 settings.put(metaData['name'], new ColorTemperatures({}, 1))
637 extractedObjectsApp1.append("//Object for class color temperature!\n")
638 extractedObjectsApp1.append("def "+metaData['name']+"\n")
639 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.colorTemperatureObject\n")
641 extractedObjectsApp2.append("//Object for class color control!\n")
642 extractedObjectsApp2.append("def "+metaData['name']+"\n")
643 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.colorTemperatureObject\n")
646 case "capability.colorControl":
647 globalObjects.eachLine { line ->
648 if(line.contains("colorControlObject")){
654 globalObjects.append("@Field def colorControlObject = new ColorControls(sendEvent, 1)\n")
656 if (colorControlObjects == 0) {
657 colorControlObject0 = metaData['name']
658 this[colorControlObject0] = new ColorControls({}, 1)
659 } else if (colorControlObjects == 1) {
660 colorControlObject1 = metaData['name']
661 this[colorControlObject1] = new ColorControls({}, 1)
662 } else if (colorControlObjects == 2) {
663 colorControlObject2 = metaData['name']
664 this[colorControlObject2] = new ColorControls({}, 1)
667 colorControlObjects=colorControlObjects+1
669 settings.put(metaData['name'], new ColorControls({}, 1))
672 extractedObjectsApp1.append("//Object for class color control!\n")
673 extractedObjectsApp1.append("def "+metaData['name']+"\n")
674 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.colorControlObject\n")
676 extractedObjectsApp2.append("//Object for class color control!\n")
677 extractedObjectsApp2.append("def "+metaData['name']+"\n")
678 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.colorControlObject\n")
681 case "capability.contactSensor":
682 globalObjects.eachLine { line ->
683 if(line.contains("contactObject")){
689 globalObjects.append("@Field def contactObject = new ContactSensors(sendEvent, 1)\n")
691 if (contactObjects == 0) {
692 contactObject0 = metaData['name']
693 this[contactObject0] = new ContactSensors({}, 1)
694 } else if (contactObjects == 1) {
695 contactObject1 = metaData['name']
696 this[contactObject1] = new ContactSensors({}, 1)
697 } else if (contactObjects == 2) {
698 contactObject2 = metaData['name']
699 this[contactObject2] = new ContactSensors({}, 1)
702 contactObjects=contactObjects+1
704 settings.put(metaData['name'], new ContactSensors({}, 1))
707 extractedObjectsApp1.append("//Object for class contactSensor!\n")
708 extractedObjectsApp1.append("def "+metaData['name']+"\n")
709 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.contactObject\n")
711 extractedObjectsApp2.append("//Object for class contactSensor!\n")
712 extractedObjectsApp2.append("def "+metaData['name']+"\n")
713 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.contactObject\n")
716 case "capability.doorControl":
717 globalObjects.eachLine { line ->
718 if(line.contains("doorControlObject")){
724 globalObjects.append("@Field def doorControlObject = new DoorControls(sendEvent, 1)\n")
726 if (doorControlObjects == 0) {
727 doorControlObject0 = metaData['name']
728 this[doorControlObject0] = new DoorControls({}, 1)
729 } else if (doorControlObjects == 1) {
730 doorControlObject1 = metaData['name']
731 this[doorControlObject1] = new DoorControls({}, 1)
732 } else if (doorControlObjects == 2) {
733 doorControlObject2 = metaData['name']
734 this[doorControlObject2] = new DoorControls({}, 1)
737 doorControlObjects=doorControlObjects+1
739 settings.put(metaData['name'], new DoorControls({}, 1))
742 extractedObjectsApp1.append("//Object for class door control!\n")
743 extractedObjectsApp1.append("def "+metaData['name']+"\n")
744 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.doorControlObject\n")
746 extractedObjectsApp2.append("//Object for class door control!\n")
747 extractedObjectsApp2.append("def "+metaData['name']+"\n")
748 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.doorControlObject\n")
751 case "capability.energyMeter":
752 globalObjects.eachLine { line ->
753 if(line.contains("energyMeterObject")){
759 globalObjects.append("@Field def energyMeterObject = new EnergyMeters(sendEvent, 1)\n")
761 if (energyMeterObjects == 0) {
762 energyMeterObject0 = metaData['name']
763 this[energyMeterObject0] = new EnergyMeters({}, 1)
764 } else if (energyMeterObjects == 1) {
765 energyMeterObject1 = metaData['name']
766 this[energyMeterObject1] = new EnergyMeters({}, 1)
767 } else if (energyMeterObjects == 2) {
768 energyMeterObject2 = metaData['name']
769 this[energyMeterObject2] = new EnergyMeters({}, 1)
772 energyMeterObjects=energyMeterObjects+1
774 settings.put(metaData['name'], new EnergyMeters({}, 1))
777 extractedObjectsApp1.append("//Object for class energy meter!\n")
778 extractedObjectsApp1.append("def "+metaData['name']+"\n")
779 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.energyMeterObject\n")
781 extractedObjectsApp2.append("//Object for class energy meter!\n")
782 extractedObjectsApp2.append("def "+metaData['name']+"\n")
783 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.energyMeterObject\n")
786 case "capability.illuminanceMeasurement":
787 globalObjects.eachLine { line ->
788 if(line.contains("illuminanceMeasurementObject")){
794 globalObjects.append("@Field def illuminanceMeasurementObject = new IlluminanceMeasurements(sendEvent, 1)\n")
796 if (illuminanceMeasurementObjects == 0) {
797 illuminanceMeasurementObject0 = metaData['name']
798 this[illuminanceMeasurementObject0] = new IlluminanceMeasurements({}, 1)
799 } else if (illuminanceMeasurementObjects == 1) {
800 illuminanceMeasurementObject1 = metaData['name']
801 this[illuminanceMeasurementObject1] = new IlluminanceMeasurements({}, 1)
802 } else if (illuminanceMeasurementObjects == 2) {
803 illuminanceMeasurementObject2 = metaData['name']
804 this[illuminanceMeasurementObject2] = new IlluminanceMeasurements({}, 1)
807 illuminanceMeasurementObjects=illuminanceMeasurementObjects+1
809 settings.put(metaData['name'], new IlluminanceMeasurements({}, 1))
812 extractedObjectsApp1.append("//Object for class illuminance measurement!\n")
813 extractedObjectsApp1.append("def "+metaData['name']+"\n")
814 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.illuminanceMeasurementObject\n")
816 extractedObjectsApp2.append("//Object for class illuminance measurement!\n")
817 extractedObjectsApp2.append("def "+metaData['name']+"\n")
818 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.illuminanceMeasurementObject\n")
821 case "capability.accelerationSensor":
822 globalObjects.eachLine { line ->
823 if(line.contains("accelerationSensorObject")){
829 globalObjects.append("@Field def accelerationSensorObject = new AccelerationSensors(sendEvent, 1)\n")
831 if (accelerationSensorObjects == 0) {
832 accelerationSensorObject0 = metaData['name']
833 this[accelerationSensorObject0] = new AccelerationSensors({}, 1)
834 } else if (accelerationSensorObjects == 1) {
835 accelerationSensorObject1 = metaData['name']
836 this[accelerationSensorObject1] = new AccelerationSensors({}, 1)
837 } else if (accelerationSensorObjects == 2) {
838 accelerationSensorObject2 = metaData['name']
839 this[accelerationSensorObject2] = new AccelerationSensors({}, 1)
842 accelerationSensorObjects=accelerationSensorObjects+1
844 settings.put(metaData['name'], new AccelerationSensors({}, 1))
847 extractedObjectsApp1.append("//Object for class Acceleration Sensor!\n")
848 extractedObjectsApp1.append("def "+metaData['name']+"\n")
849 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.accelerationSensorObject\n")
851 extractedObjectsApp2.append("//Object for class Acceleration Sensor!\n")
852 extractedObjectsApp2.append("def "+metaData['name']+"\n")
853 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.accelerationSensorObject\n")
856 case "capability.motionSensor":
857 globalObjects.eachLine { line ->
858 if(line.contains("motionSensorObject")){
864 globalObjects.append("@Field def motionSensorObject = new MotionSensors(sendEvent, 1)\n")
866 if (motionSensorObjects == 0) {
867 motionSensorObject0 = metaData['name']
868 this[motionSensorObject0] = new MotionSensors({}, 1)
869 } else if (motionSensorObjects == 1) {
870 motionSensorObject1 = metaData['name']
871 this[motionSensorObject1] = new MotionSensors({}, 1)
872 } else if (motionSensorObjects == 2) {
873 motionSensorObject2 = metaData['name']
874 this[motionSensorObject2] = new MotionSensors({}, 1)
877 motionSensorObjects=motionSensorObjects+1
879 settings.put(metaData['name'], new MotionSensors({}, 1))
882 extractedObjectsApp1.append("//Object for class Motion Sensor!\n")
883 extractedObjectsApp1.append("def "+metaData['name']+"\n")
884 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.motionSensorObject\n")
886 extractedObjectsApp2.append("//Object for class Motion Sensor!\n")
887 extractedObjectsApp2.append("def "+metaData['name']+"\n")
888 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.motionSensorObject\n")
891 case "capability.musicPlayer":
892 globalObjects.eachLine { line ->
893 if(line.contains("musicPlayerObject")){
899 globalObjects.append("@Field def musicPlayerObject = new MusicPlayers(sendEvent, 1)\n")
901 if (musicPlayerObjects == 0) {
902 musicPlayerObject0 = metaData['name']
903 this[musicPlayerObject0] = new MusicPlayers({}, 1)
904 } else if (musicPlayerObjects == 1) {
905 musicPlayerObject1 = metaData['name']
906 this[musicPlayerObject1] = new MusicPlayers({}, 1)
907 } else if (musicPlayerObjects == 2) {
908 musicPlayerObject2 = metaData['name']
909 this[musicPlayerObject2] = new MusicPlayers({}, 1)
912 musicPlayerObjects=musicPlayerObjects+1
914 settings.put(metaData['name'], new MusicPlayers({}, 1))
917 extractedObjectsApp1.append("//Object for class music player!\n")
918 extractedObjectsApp1.append("def "+metaData['name']+"\n")
919 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.musicPlayerObject\n")
921 extractedObjectsApp2.append("//Object for class music player!\n")
922 extractedObjectsApp2.append("def "+metaData['name']+"\n")
923 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.musicPlayerObject\n")
926 case "capability.powerMeter":
927 globalObjects.eachLine { line ->
928 if(line.contains("powerMeterObject")){
934 globalObjects.append("@Field def powerMeterObject = new PowerMeters(sendEvent, 1)\n")
936 if (powerMeterObjects == 0) {
937 powerMeterObject0 = metaData['name']
938 this[powerMeterObject0] = new PowerMeters({}, 1)
939 } else if (powerMeterObjects == 1) {
940 powerMeterObject1 = metaData['name']
941 this[powerMeterObject1] = new PowerMeters({}, 1)
942 } else if (powerMeterObjects == 2) {
943 powerMeterObject2 = metaData['name']
944 this[powerMeterObject2] = new PowerMeters({}, 1)
947 powerMeterObjects=powerMeterObjects+1
949 settings.put(metaData['name'], new PowerMeters({}, 1))
952 extractedObjectsApp1.append("//Object for class power meter!\n")
953 extractedObjectsApp1.append("def "+metaData['name']+"\n")
954 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.powerMeterObject\n")
956 extractedObjectsApp2.append("//Object for class power meter!\n")
957 extractedObjectsApp2.append("def "+metaData['name']+"\n")
958 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.powerMeterObject\n")
961 case "capability.presenceSensor":
962 globalObjects.eachLine { line ->
963 if(line.contains("presenceSensorObject")){
969 globalObjects.append("@Field def presenceSensorObject = new PresenceSensors(sendEvent, 1)\n")
971 if (presenceSensorObjects == 0) {
972 presenceSensorObject0 = metaData['name']
973 this[presenceSensorObject0] = new PresenceSensors({}, 1)
974 } else if (presenceSensorObjects == 1) {
975 presenceSensorObject1 = metaData['name']
976 this[presenceSensorObject1] = new PresenceSensors({}, 1)
977 } else if (presenceSensorObjects == 2) {
978 presenceSensorObject2 = metaData['name']
979 this[presenceSensorObject2] = new PresenceSensors({}, 1)
982 presenceSensorObjects=presenceSensorObjects+1
984 settings.put(metaData['name'], new PresenceSensors({}, 1))
987 extractedObjectsApp1.append("//Object for class presence sensor!\n")
988 extractedObjectsApp1.append("def "+metaData['name']+"\n")
989 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.presenceSensorObject\n")
991 extractedObjectsApp2.append("//Object for class presence sensor!\n")
992 extractedObjectsApp2.append("def "+metaData['name']+"\n")
993 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.presenceSensorObject\n")
996 case "capability.relativeHumidityMeasurement":
997 globalObjects.eachLine { line ->
998 if(line.contains("humidityMeasurementObject")){
1004 globalObjects.append("@Field def humidityMeasurementObject = new RelativeHumidityMeasurements(sendEvent, 1)\n")
1006 if (humidityMeasurementObjects == 0) {
1007 humidityMeasurementObject0 = metaData['name']
1008 this[humidityMeasurementObject0] = new RelativeHumidityMeasurements({}, 1)
1009 } else if (humidityMeasurementObjects == 1) {
1010 humidityMeasurementObject1 = metaData['name']
1011 this[humidityMeasurementObject1] = new RelativeHumidityMeasurements({}, 1)
1012 } else if (humidityMeasurementObjects == 2) {
1013 humidityMeasurementObject2 = metaData['name']
1014 this[humidityMeasurementObject2] = new RelativeHumidityMeasurements({}, 1)
1017 humidityMeasurementObjects=humidityMeasurementObjects+1
1019 settings.put(metaData['name'], new RelativeHumidityMeasurements({}, 1))
1021 if (App == "App1") {
1022 extractedObjectsApp1.append("//Object for class humidity measurement!\n")
1023 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1024 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.humidityMeasurementObject\n")
1026 extractedObjectsApp2.append("//Object for class humidity measurement!\n")
1027 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1028 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.humidityMeasurementObject\n")
1031 case "capability.relaySwitch":
1032 globalObjects.eachLine { line ->
1033 if(line.contains("relaySwitchObject")){
1039 globalObjects.append("@Field def relaySwitchObject = new RelaySwitches(sendEvent, 1)\n")
1041 if (relaySwitchObjects == 0) {
1042 relaySwitchObject0 = metaData['name']
1043 this[relaySwitchObject0] = new RelaySwitches({}, 1)
1044 } else if (relaySwitchObjects == 1) {
1045 relaySwitchObject1 = metaData['name']
1046 this[relaySwitchObject1] = new RelaySwitches({}, 1)
1047 } else if (relaySwitchObjects == 2) {
1048 relaySwitchObject2 = metaData['name']
1049 this[relaySwitchObject2] = new RelaySwitches({}, 1)
1052 relaySwitchObjects=relaySwitchObjects+1
1054 settings.put(metaData['name'], new RelaySwitches({}, 1))
1056 if (App == "App1") {
1057 extractedObjectsApp1.append("//Object for class relay switch!\n")
1058 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1059 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.relaySwitchObject\n")
1061 extractedObjectsApp2.append("//Object for class relay switch!\n")
1062 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1063 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.relaySwitchObject\n")
1066 case "capability.sleepSensor":
1067 globalObjects.eachLine { line ->
1068 if(line.contains("sleepSensorObject")){
1074 globalObjects.append("@Field def sleepSensorObject = new SleepSensors(sendEvent, 1)\n")
1076 if (sleepSensorObjects == 0) {
1077 sleepSensorObject0 = metaData['name']
1078 this[sleepSensorObject0] = new SleepSensors({}, 1)
1079 } else if (sleepSensorObjects == 1) {
1080 sleepSensorObject1 = metaData['name']
1081 this[sleepSensorObject1] = new SleepSensors({}, 1)
1082 } else if (sleepSensorObjects == 2) {
1083 sleepSensorObject2 = metaData['name']
1084 this[sleepSensorObject2] = new SleepSensors({}, 1)
1087 sleepSensorObjects=sleepSensorObjects+1
1089 settings.put(metaData['name'], new SleepSensors({}, 1))
1091 if (App == "App1") {
1092 extractedObjectsApp1.append("//Object for class sleep sensor!\n")
1093 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1094 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.sleepSensorObject\n")
1096 extractedObjectsApp2.append("//Object for class sleep sensor!\n")
1097 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1098 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.sleepSensorObject\n")
1101 case "capability.smokeDetector":
1102 globalObjects.eachLine { line ->
1103 if(line.contains("smokeDetectorObject")){
1109 globalObjects.append("@Field def smokeDetectorObject = new SmokeDetectors(sendEvent, 1)\n")
1111 if (smokeDetectorObjects == 0) {
1112 smokeDetectorObject0 = metaData['name']
1113 this[smokeDetectorObject0] = new SmokeDetectors({}, 1)
1114 } else if (smokeDetectorObjects == 1) {
1115 smokeDetectorObject1 = metaData['name']
1116 this[smokeDetectorObject1] = new SmokeDetectors({}, 1)
1117 } else if (smokeDetectorObjects == 2) {
1118 smokeDetectorObject2 = metaData['name']
1119 this[smokeDetectorObject2] = new SmokeDetectors({}, 1)
1122 smokeDetectorObjects=smokeDetectorObjects+1
1124 settings.put(metaData['name'], new SmokeDetectors({}, 1))
1126 if (App == "App1") {
1127 extractedObjectsApp1.append("//Object for class smoke detector!\n")
1128 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1129 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.smokeDetectorObject\n")
1131 extractedObjectsApp2.append("//Object for class smoke detector!\n")
1132 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1133 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.smokeDetectorObject\n")
1136 case "capability.stepSensor":
1137 globalObjects.eachLine { line ->
1138 if(line.contains("stepSensorObject")){
1144 globalObjects.append("@Field def stepSensorObject = new StepSensors(sendEvent, 1)\n")
1146 if (stepSensorObjects == 0) {
1147 stepSensorObject0 = metaData['name']
1148 this[stepSensorObject0] = new StepSensors({}, 1)
1149 } else if (stepSensorObjects == 1) {
1150 stepSensorObject1 = metaData['name']
1151 this[stepSensorObject1] = new StepSensors({}, 1)
1152 } else if (stepSensorObjects == 2) {
1153 stepSensorObject2 = metaData['name']
1154 this[stepSensorObject2] = new StepSensors({}, 1)
1157 stepSensorObjects=stepSensorObjects+1
1159 settings.put(metaData['name'], new StepSensors({}, 1))
1161 if (App == "App1") {
1162 extractedObjectsApp1.append("//Object for class step sensor!\n")
1163 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1164 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.stepSensorObject\n")
1166 extractedObjectsApp2.append("//Object for class step sensor!\n")
1167 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1168 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.stepSensorObject\n")
1171 case "capability.switch":
1172 globalObjects.eachLine { line ->
1173 if(line.contains("switchObject")){
1179 globalObjects.append("@Field def switchObject = new Switches(sendEvent, 1)\n")
1181 if (switchObjects == 0) {
1182 switchObject0 = metaData['name']
1183 this[switchObject0] = new Switches({}, 1)
1184 } else if (switchObjects == 1) {
1185 switchObject1 = metaData['name']
1186 this[switchObject1] = new Switches({}, 1)
1187 } else if (switchObjects == 2) {
1188 switchObject2 = metaData['name']
1189 this[switchObject2] = new Switches({}, 1)
1192 switchObjects=switchObjects+1
1194 settings.put(metaData['name'], new Switches({}, 1))
1196 if (App == "App1") {
1197 extractedObjectsApp1.append("//Object for class switch!\n")
1198 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1199 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.switchObject\n")
1201 extractedObjectsApp2.append("//Object for class switch!\n")
1202 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1203 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.switchObject\n")
1206 case "capability.switchLevel":
1207 globalObjects.eachLine { line ->
1208 if(line.contains("switchLevelObject")){
1214 globalObjects.append("@Field def switchLevelObject = new SwitchLevels(sendEvent, 1)\n")
1216 if (switchLevelObjects == 0) {
1217 switchLevelObject0 = metaData['name']
1218 this[switchLevelObject0] = new SwitchLevels({}, 1)
1219 } else if (switchLevelObjects == 1) {
1220 switchLevelObject1 = metaData['name']
1221 this[switchLevelObject1] = new SwitchLevels({}, 1)
1222 } else if (switchLevelObjects == 2) {
1223 switchLevelObject2 = metaData['name']
1224 this[switchLevelObject2] = new SwitchLevels({}, 1)
1227 switchLevelObjects=switchLevelObjects+1
1229 settings.put(metaData['name'], new SwitchLevels({}, 1))
1231 if (App == "App1") {
1232 extractedObjectsApp1.append("//Object for class switch level!\n")
1233 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1234 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.switchLevelObject\n")
1236 extractedObjectsApp2.append("//Object for class switch level!\n")
1237 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1238 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.switchLevelObject\n")
1241 case "capability.temperatureMeasurement":
1242 globalObjects.eachLine { line ->
1243 if(line.contains("temperatureMeasurementObject")){
1249 globalObjects.append("@Field def temperatureMeasurementObject = new TemperatureMeasurements(sendEvent, 1)\n")
1251 if (temperatureMeasurementObjects == 0) {
1252 temperatureMeasurementObject0 = metaData['name']
1253 this[temperatureMeasurementObject0] = new TemperatureMeasurements({}, 1)
1254 } else if (temperatureMeasurementObjects == 1) {
1255 temperatureMeasurementObject1 = metaData['name']
1256 this[temperatureMeasurementObject1] = new TemperatureMeasurements({}, 1)
1257 } else if (temperatureMeasurementObjects == 2) {
1258 temperatureMeasurementObject2 = metaData['name']
1259 this[temperatureMeasurementObject2] = new TemperatureMeasurements({}, 1)
1262 temperatureMeasurementObjects=temperatureMeasurementObjects+1
1264 settings.put(metaData['name'], new TemperatureMeasurements({}, 1))
1266 if (App == "App1") {
1267 extractedObjectsApp1.append("//Object for class temperature measurement!\n")
1268 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1269 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.temperatureMeasurementObject\n")
1271 extractedObjectsApp2.append("//Object for class temperature measurement!\n")
1272 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1273 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.temperatureMeasurementObject\n")
1276 case "capability.thermostat":
1277 globalObjects.eachLine { line ->
1278 if(line.contains("thermostatObject")){
1284 globalObjects.append("@Field def thermostatObject = new Thermostats(sendEvent, 1)\n")
1286 if (thermostatObjects == 0) {
1287 thermostatObject0 = metaData['name']
1288 this[thermostatObject0] = new Thermostats({}, 1)
1289 } else if (thermostatObjects == 1) {
1290 thermostatObject1 = metaData['name']
1291 this[thermostatObject1] = new Thermostats({}, 1)
1292 } else if (thermostatObjects == 2) {
1293 thermostatObject2 = metaData['name']
1294 this[thermostatObject2] = new Thermostats({}, 1)
1297 thermostatObjects=thermostatObjects+1
1299 settings.put(metaData['name'], new Thermostats({}, 1))
1301 if (App == "App1") {
1302 extractedObjectsApp1.append("//Object for class thermostat!\n")
1303 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1304 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.thermostatObject\n")
1306 extractedObjectsApp2.append("//Object for class thermostat!\n")
1307 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1308 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.thermostatObject\n")
1311 case "capability.valve":
1312 globalObjects.eachLine { line ->
1313 if(line.contains("valveObject")){
1319 globalObjects.append("@Field def valveObject = new Valves(sendEvent, 1)\n")
1321 if (valveObjects == 0) {
1322 valveObject0 = metaData['name']
1323 this[valveObject0] = new Valves({}, 1)
1324 } else if (valveObjects == 1) {
1325 valveObject1 = metaData['name']
1326 this[valveObject1] = new Valves({}, 1)
1327 } else if (valveObjects == 2) {
1328 valveObject2 = metaData['name']
1329 this[valveObject2] = new Valves({}, 1)
1332 valveObjects=valveObjects+1
1334 settings.put(metaData['name'], new Valves({}, 1))
1336 if (App == "App1") {
1337 extractedObjectsApp1.append("//Object for class valve!\n")
1338 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1339 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.valveObject\n")
1341 extractedObjectsApp2.append("//Object for class valve!\n")
1342 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1343 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.valveObject\n")
1346 case "capability.speechSynthesis":
1347 globalObjects.eachLine { line ->
1348 if(line.contains("speechSynthesisObject")){
1354 globalObjects.append("@Field def speechSynthesisObject = new SpeechSynthesises(sendEvent, 1)\n")
1356 if (speechSynthesisObjects == 0) {
1357 speechSynthesisObject0 = metaData['name']
1358 this[speechSynthesisObject0] = new SpeechSynthesises({}, 1)
1359 } else if (speechSynthesisObjects == 1) {
1360 speechSynthesisObject1 = metaData['name']
1361 this[speechSynthesisObject1] = new SpeechSynthesises({}, 1)
1362 } else if (speechSynthesisObjects == 2) {
1363 speechSynthesisObject2 = metaData['name']
1364 this[speechSynthesisObject2] = new SpeechSynthesises({}, 1)
1367 speechSynthesisObjects=speechSynthesisObjects+1
1369 settings.put(metaData['name'], new SpeechSynthesises({}, 1))
1371 if (App == "App1") {
1372 extractedObjectsApp1.append("//Object for class speech synthesis!\n")
1373 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1374 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.speechSynthesisObject\n")
1376 extractedObjectsApp2.append("//Object for class speech synthesis!\n")
1377 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1378 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.speechSynthesisObject\n")
1381 case "capability.waterSensor":
1382 globalObjects.eachLine { line ->
1383 if(line.contains("waterSensorObject")){
1389 globalObjects.append("@Field def waterSensorObject = new WaterSensors(sendEvent, 1)\n")
1391 if (waterSensorObjects == 0) {
1392 waterSensorObject0 = metaData['name']
1393 this[waterSensorObject0] = new WaterSensors({}, 1)
1394 } else if (waterSensorObjects == 1) {
1395 waterSensorObject1 = metaData['name']
1396 this[waterSensorObject1] = new WaterSensors({}, 1)
1397 } else if (waterSensorObjects == 2) {
1398 waterSensorObject2 = metaData['name']
1399 this[waterSensorObject2] = new WaterSensors({}, 1)
1402 waterSensorObjects=waterSensorObjects+1
1404 settings.put(metaData['name'], new WaterSensors({}, 1))
1406 if (App == "App1") {
1407 extractedObjectsApp1.append("//Object for class water sensor!\n")
1408 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1409 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.waterSensorObject\n")
1411 extractedObjectsApp2.append("//Object for class water sensor!\n")
1412 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1413 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.waterSensorObject\n")
1416 case "capability.touchSensor":
1417 globalObjects.eachLine { line ->
1418 if(line.contains("touchSensorObject")){
1424 globalObjects.append("@Field def touchSensorObject = new NfcTouch(sendEvent, 1)\n")
1426 if (touchSensorObjects == 0) {
1427 touchSensorObject0 = metaData['name']
1428 this[touchSensorObject0] = new NfcTouch({}, 1)
1429 } else if (touchSensorObjects == 1) {
1430 touchSensorObject1 = metaData['name']
1431 this[touchSensorObject1] = new NfcTouch({}, 1)
1432 } else if (touchSensorObjects == 2) {
1433 touchSensorObject2 = metaData['name']
1434 this[touchSensorObject2] = new NfcTouch({}, 1)
1437 touchSensorObjects=touchSensorObjects+1
1439 settings.put(metaData['name'], new NfcTouch({}, 1))
1441 if (App == "App1") {
1442 extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
1443 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1444 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.touchSensorObject\n")
1446 extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
1447 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1448 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.touchSensorObject\n")
1451 case "capability.imageCapture":
1452 globalObjects.eachLine { line ->
1453 if(line.contains("imageCaptureObject")){
1459 globalObjects.append("@Field def imageCaptureObject = new ImageCaptures(sendEvent, 1)\n")
1461 if (imageCaptureObjects == 0) {
1462 imageCaptureObject0 = metaData['name']
1463 this[imageCaptureObject0] = new ImageCaptures({}, 1)
1464 } else if (imageCaptureObjects == 1) {
1465 imageCaptureObject1 = metaData['name']
1466 this[imageCaptureObject1] = new ImageCaptures({}, 1)
1467 } else if (imageCaptureObjects == 2) {
1468 imageCaptureObject2 = metaData['name']
1469 this[imageCaptureObject2] = new ImageCaptures({}, 1)
1472 imageCaptureObjects=imageCaptureObjects+1
1474 settings.put(metaData['name'], new ImageCaptures({}, 1))
1476 if (App == "App1") {
1477 extractedObjectsApp1.append("//Object for class Image Capture!\n")
1478 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1479 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.imageCaptureObject\n")
1481 extractedObjectsApp2.append("//Object for class Image Capture!\n")
1482 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1483 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.imageCaptureObject\n")
1486 case "device.mobilePresence":
1487 globalObjects.eachLine { line ->
1488 if(line.contains("mobilePresenceObject")){
1494 globalObjects.append("@Field def mobilePresenceObject = new MobilePresences(sendEvent, 1)\n")
1496 if (mobilePresenceObjects == 0) {
1497 mobilePresenceObject0 = metaData['name']
1498 this[mobilePresenceObject0] = new MobilePresences({}, 1)
1499 } else if (mobilePresenceObjects == 1) {
1500 mobilePresenceObject1 = metaData['name']
1501 this[mobilePresenceObject1] = new MobilePresences({}, 1)
1502 } else if (mobilePresenceObjects == 2) {
1503 mobilePresenceObject2 = metaData['name']
1504 this[mobilePresenceObject2] = new MobilePresences({}, 1)
1507 mobilePresenceObjects=mobilePresenceObjects+1
1509 settings.put(metaData['name'], new MobilePresences({}, 1))
1511 if (App == "App1") {
1512 extractedObjectsApp1.append("//Object for class mobile presence!\n")
1513 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1514 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.mobilePresenceObject\n")
1516 extractedObjectsApp2.append("//Object for class mobile presence!\n")
1517 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1518 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.mobilePresenceObject\n")
1521 case "device.aeonKeyFob":
1522 globalObjects.eachLine { line ->
1523 if(line.contains("aeonKeyFobObject")){
1528 globalObjects.append("@Field def aeonKeyFobObject = new AeonKeyFobs(sendEvent, 1)\n")
1530 if (aeonKeyFobObjects == 0) {
1531 aeonKeyFobObject0 = metaData['name']
1532 this[aeonKeyFobObject0] = new AeonKeyFobs({}, 1)
1533 } else if (aeonKeyFobObjects == 1) {
1534 aeonKeyFobObject1 = metaData['name']
1535 this[aeonKeyFobObject1] = new AeonKeyFobs({}, 1)
1536 } else if (aeonKeyFobObjects == 2) {
1537 aeonKeyFobObject2 = metaData['name']
1538 this[aeonKeyFobObject2] = new AeonKeyFobs({}, 1)
1541 aeonKeyFobObjects=aeonKeyFobObjects+1
1543 settings.put(metaData['name'], new AeonKeyFobs({}, 1))
1545 if (App == "App1") {
1546 extractedObjectsApp1.append("//Object for class aeon key fob!\n")
1547 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1548 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.aeonKeyFobObject\n")
1550 extractedObjectsApp2.append("//Object for class aeon key fob!\n")
1551 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1552 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.aeonKeyFobObject\n")
1556 //def randomVariable = Math.abs(new Random().nextInt() % 3)
1557 def modes = ["away", "home", "night"]
1558 def userInput = modes[1]
1560 if (modeVariables == 0) {
1561 mode0 = metaData['name']
1562 this[mode0] = userInput
1563 } else if (modeVariables == 1) {
1564 mode1 = metaData['name']
1565 this[mode1] = userInput
1566 } else if (modeVariables == 2) {
1567 mode2 = metaData['name']
1568 this[mode2] = userInput
1569 } else if (modeVariables == 3) {
1570 mode3 = metaData['name']
1571 this[mode3] = userInput
1572 } else if (modeVariables == 4) {
1573 mode4 = metaData['name']
1574 this[mode4] = userInput
1575 } else if (modeVariables == 5) {
1576 mode5 = metaData['name']
1577 this[mode5] = userInput
1580 if (modeVariables != 5)
1581 modeVariables=modeVariables+1
1586 settings.put(metaData['name'], metaData['name'])
1588 if (App == "App1") {
1589 extractedObjectsApp1.append("//Global variable for mode!\n")
1590 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1592 extractedObjectsApp2.append("//Global variable for mode!\n")
1593 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1597 //def userInput = Math.abs(new Random().nextInt() % 60) + 40
1600 if (decimalVariables == 0) {
1601 decimal0 = metaData['name']
1602 this[decimal0] = userInput
1603 } else if (decimalVariables == 1) {
1604 decimal1 = metaData['name']
1605 this[decimal1] = userInput
1606 } else if (decimalVariables == 2) {
1607 decimal2 = metaData['name']
1608 this[decimal2] = userInput
1609 } else if (decimalVariables == 3) {
1610 decimal3 = metaData['name']
1611 this[decimal3] = userInput
1612 } else if (decimalVariables == 4) {
1613 decimal4 = metaData['name']
1614 this[decimal4] = userInput
1615 } else if (decimalVariables == 5) {
1616 decimal5 = metaData['name']
1617 this[decimal5] = userInput
1620 if (decimalVariables != 5)
1621 decimalVariables=decimalVariables+1
1625 settings.put(metaData['name'], metaData['name'])
1627 if (App == "App1") {
1628 extractedObjectsApp1.append("//Global variable for decimal number!\n")
1629 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1631 extractedObjectsApp2.append("//Global variable for decimal number!\n")
1632 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1636 def userInput = "This is just a text!"
1638 if (textVariables == 0) {
1639 text0 = metaData['name']
1640 this[text0] = userInput
1641 } else if (textVariables == 1) {
1642 text1 = metaData['name']
1643 this[text1] = userInput
1644 } else if (textVariables == 2) {
1645 text2 = metaData['name']
1646 this[text2] = userInput
1647 } else if (textVariables == 3) {
1648 text3 = metaData['name']
1649 this[text3] = userInput
1650 } else if (textVariables == 4) {
1651 text4 = metaData['name']
1652 this[text4] = userInput
1653 } else if (textVariables == 5) {
1654 text5 = metaData['name']
1655 this[text5] = userInput
1658 if (textVariables != 5)
1659 textVariables=textVariables+1
1664 settings.put(metaData['name'], metaData['name'])
1666 if (App == "App1") {
1667 extractedObjectsApp1.append("//Global variable for text!\n")
1668 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1670 extractedObjectsApp2.append("//Global variable for text!\n")
1671 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1675 //def userInput = Math.abs(new Random().nextInt() % 60) + 40
1678 if (numberVariables == 0) {
1679 number0 = metaData['name']
1680 this[number0] = userInput
1681 } else if (numberVariables == 1) {
1682 number1 = metaData['name']
1683 this[number1] = userInput
1684 } else if (numberVariables == 2) {
1685 number2 = metaData['name']
1686 this[number2] = userInput
1687 } else if (numberVariables == 3) {
1688 number3 = metaData['name']
1689 this[number3] = userInput
1690 } else if (numberVariables == 4) {
1691 number4 = metaData['name']
1692 this[number4] = userInput
1693 } else if (numberVariables == 5) {
1694 number5 = metaData['name']
1695 this[number5] = userInput
1699 if (numberVariables != 5)
1700 numberVariables=numberVariables+1
1705 settings.put(metaData['name'], metaData['name'])
1707 if (App == "App1") {
1708 extractedObjectsApp1.append("//Global variable for number!\n")
1709 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1711 extractedObjectsApp2.append("//Global variable for number!\n")
1712 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1716 def userInput = "15:00"
1718 if (timeVariables == 0) {
1719 time0 = metaData['name']
1720 this[time0] = userInput
1721 } else if (timeVariables == 1) {
1722 time1 = metaData['name']
1723 this[time1] = userInput
1724 } else if (timeVariables == 2) {
1725 time2 = metaData['name']
1726 this[time2] = userInput
1727 } else if (timeVariables == 3) {
1728 time3 = metaData['name']
1729 this[time3] = userInput
1730 } else if (timeVariables == 4) {
1731 time4 = metaData['name']
1732 this[time4] = userInput
1733 } else if (timeVariables == 5) {
1734 time5 = metaData['name']
1735 this[time5] = userInput
1738 if (timeVariables != 5)
1739 timeVariables=timeVariables+1
1743 settings.put(metaData['name'], metaData['name'])
1745 if (App == "App1") {
1746 extractedObjectsApp1.append("//Global variable for time!\n")
1747 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1749 extractedObjectsApp2.append("//Global variable for time!\n")
1750 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1754 if (metaData['options'] != null)
1755 modes = metaData['options']
1756 else if (metaData['metadata'] != null) { // If it is not named 'options' then it is captured as 'metadata'
1757 modes = metaData['metadata']
1758 modes = modes['values']
1760 def userInput = modes[0]
1762 if (enumVariables == 0) {
1763 enum0 = metaData['name']
1764 this[enum0] = userInput
1765 } else if (enumVariables == 1) {
1766 enum1 = metaData['name']
1767 this[enum1] = userInput
1768 } else if (enumVariables == 2) {
1769 enum2 = metaData['name']
1770 this[enum2] = userInput
1771 } else if (enumVariables == 3) {
1772 enum3 = metaData['name']
1773 this[enum3] = userInput
1774 } else if (enumVariables == 4) {
1775 enum4 = metaData['name']
1776 this[enum4] = userInput
1777 } else if (enumVariables == 5) {
1778 enum5 = metaData['name']
1779 this[enum5] = userInput
1782 if (enumVariables != 5)
1783 enumVariables=enumVariables+1
1788 settings.put(metaData['name'], metaData['name'])
1790 if (App == "App1") {
1791 extractedObjectsApp1.append("//Global variable for enum!\n")
1792 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1794 extractedObjectsApp2.append("//Global variable for enum!\n")
1795 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1799 //def userInput = Math.abs(new Random().nextInt() % 2)
1800 def userInput = true
1802 if (boolVariables == 0) {
1803 bool0 = metaData['name']
1804 this[bool0] = userInput
1805 } else if (boolVariables == 1) {
1806 bool1 = metaData['name']
1807 this[bool1] = userInput
1808 } else if (boolVariables == 2) {
1809 bool2 = metaData['name']
1810 this[bool2] = userInput
1811 } else if (boolVariables == 3) {
1812 bool3 = metaData['name']
1813 this[bool3] = userInput
1814 } else if (boolVariables == 4) {
1815 bool4 = metaData['name']
1816 this[bool4] = userInput
1817 } else if (boolVariables == 5) {
1818 bool5 = metaData['name']
1819 this[bool5] = userInput
1822 if (boolVariables != 5)
1823 boolVariables=boolVariables+1
1828 settings.put(metaData['name'], metaData['name'])
1830 if (App == "App1") {
1831 extractedObjectsApp1.append("//Global variable for boolean!\n")
1832 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1834 extractedObjectsApp2.append("//Global variable for boolean!\n")
1835 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1839 def userInput = 9495379373
1841 if (phoneVariables == 0) {
1842 phone0 = metaData['name']
1843 this[phone0] = userInput
1844 } else if (phoneVariables == 1) {
1845 phone1 = metaData['name']
1846 this[phone1] = userInput
1847 } else if (phoneVariables == 2) {
1848 phone2 = metaData['name']
1849 this[phone2] = userInput
1850 } else if (phoneVariables == 3) {
1851 phone3 = metaData['name']
1852 this[phone3] = userInput
1853 } else if (phoneVariables == 4) {
1854 phone4 = metaData['name']
1855 this[phone4] = userInput
1856 } else if (phoneVariables == 5) {
1857 phone5 = metaData['name']
1858 this[phone5] = userInput
1861 if (phoneVariables != 5)
1862 phoneVariables=phoneVariables+1
1866 settings.put(metaData['name'], metaData['name'])
1868 if (App == "App1") {
1869 extractedObjectsApp1.append("//Global variable for phone!\n")
1870 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1872 extractedObjectsApp2.append("//Global variable for phone!\n")
1873 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1877 def userInput = "AJ"
1879 if (contactVariables == 0) {
1880 contact0 = metaData['name']
1881 this[contact0] = userInput
1882 } else if (contactVariables == 1) {
1883 contact1 = metaData['name']
1884 this[contact1] = userInput
1885 } else if (contactVariables == 2) {
1886 contact2 = metaData['name']
1887 this[contact2] = userInput
1888 } else if (contactVariables == 3) {
1889 contact3 = metaData['name']
1890 this[contact3] = userInput
1891 } else if (contactVariables == 4) {
1892 contact4 = metaData['name']
1893 this[contact4] = userInput
1894 } else if (contactVariables == 5) {
1895 contact5 = metaData['name']
1896 this[contact5] = userInput
1899 if (contactVariables != 5)
1900 contactVariables=contactVariables+1
1904 settings.put(metaData['name'], metaData['name'])
1906 if (App == "App1") {
1907 extractedObjectsApp1.append("//Global variable for contact!\n")
1908 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1910 extractedObjectsApp2.append("//Global variable for contact!\n")
1911 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1919 def label(LinkedHashMap metaData) {
1920 if (metaData.containsKey('title')) {
1921 println metaData['title']
1923 if (metaData.containsKey('options')) {
1924 println "Options: "+metaData['options']
1927 println("//IGNORE--ForMobileUse//")
1930 def mode(LinkedHashMap metaData) {
1931 if (metaData.containsKey('title')) {
1932 println metaData['title']
1934 if (metaData.containsKey('options')) {
1935 println "Options: "+metaData['options']
1938 println("//IGNORE--ForMobileUse//")
1941 def href(LinkedHashMap metaData) {
1942 println("//IGNORE--some data//")
1945 def href(LinkedHashMap metaData, String name) {
1946 println("//IGNORE--some data//")
1948 /////Input Methods/////
1951 /////MethodsForExtraction/////
1952 def definition(LinkedHashMap metaData) {
1953 println("///Just some information///")
1956 def preferences(Closure inputData) {
1957 find(inputData) //Run the closure to extract pages/sections/inputMethods
1958 settings.put("END", "END")
1959 if (App == "App1") {
1960 extractedObjectsConstructorApp1.append("//Global variable for settings!\n")
1961 extractedObjectsConstructorApp1.append("settings = [")
1965 extractedObjectsConstructorApp1.append("$key: $key, ")
1967 extractedObjectsConstructorApp1.append("END: \"END\"]\n")
1970 extractedObjectsConstructorApp2.append("//Global variable for settings!\n")
1971 extractedObjectsConstructorApp2.append("settings = [")
1975 extractedObjectsConstructorApp2.append("$key: $key, ")
1977 extractedObjectsConstructorApp2.append("END: \"END\"]\n")
1980 File GlobalVariablesBothApps = new File("GlobalVariables/GlobalVariablesBothApps.groovy")
1981 GlobalVariablesBothApps.write("")
1982 GlobalVariablesBothApps.append("//Creating Global variables for both apps\n")
1983 GlobalVariablesBothApps.append("@Field def sendEvent = {eventDataMap -> eventHandler(eventDataMap)}\n")
1984 GlobalVariablesBothApps.append("@Field def locationObject = new LocationVar(sendEvent)\n")
1985 GlobalVariablesBothApps.append("@Field def appObject = new Touched(sendEvent, 0)\n")
1987 globalObjects.withReader { reader ->
1988 while ((line = reader.readLine()) != null) {
1989 GlobalVariablesBothApps.append(line)
1990 GlobalVariablesBothApps.append("\n")
1996 def page(LinkedHashMap metaData, Closure inputData) {
1997 if (metaData.containsKey('name'))
1998 println(metaData['name'])
1999 if (metaData.containsKey('title'))
2000 println(metaData['title'])
2002 find(inputData) //Run the closure to extract sections/inputMethods
2005 def page(LinkedHashMap metaData) {
2006 def nameOfFunction = metaData['name']
2007 "$nameOfFunction"() //Call the page
2010 def dynamicPage(LinkedHashMap metaData, Closure inputData) {
2011 if (metaData.containsKey('name'))
2012 println(metaData['name'])
2013 if (metaData.containsKey('title'))
2014 println(metaData['title'])
2016 find(inputData) //Run the closure to extract sections/inputMethods
2019 def paragraph(String paragraphText) {
2020 println(paragraphText)
2023 def section(String title, Closure inputData) {
2025 find(inputData) //Run the closure to extract inputMethods
2028 def section(Closure inputData) {
2029 find(inputData) //Run the closure to extract inputMethods
2032 def section(LinkedHashMap metaData, Closure inputData) {
2033 find(inputData) //Run the closure to extract inputMethods
2036 def section(LinkedHashMap metaData, String data, Closure inputData) {
2040 def mappings(Closure inputData) {
2041 println("//IGNORE--some data//")
2043 /////MethodsForExtraction/////