Adjusting setLocationMode for global-variable conflict detection.
[smartthings-infrastructure.git] / Extractor / Extractor.groovy
index b049f6105405bc3f6b60967e9e3b9d5eda11d866..4607b7c89cd7916f2848fcbd776cd788fa792cec 100644 (file)
@@ -70,10 +70,18 @@ import Valve.Valve
 import Valve.Valves
 import MobilePresence.MobilePresence
 import MobilePresence.MobilePresences
+import ColorTemperature.ColorTemperature
+import ColorTemperature.ColorTemperatures
+import Button.Button
+import Button.Buttons
+import ThreeAxis.ThreeAxis
+import ThreeAxis.ThreeAxises
+import Momentary.Momentary
+import Momentary.Momentaries
 import Timer.SimulatedTimer
 
 //GlobalVariables
-@Field def location = new LocationVar()
+@Field def location = new LocationVar({}, true)
 //Settings variable defined to settings on purpose
 @Field def settings = [app: "app"]
 //Global variable for state[mode]
@@ -244,7 +252,7 @@ def timeToday(String time, Object timeZone) {
 @Field def sleepSensorObject0
 @Field def sleepSensorObject1
 @Field def sleepSensorObject2
-//Global Object for class sleep sensor!
+//Global Object for class step sensor!
 @Field stepSensorObjects = 0
 @Field def stepSensorObject0
 @Field def stepSensorObject1
@@ -259,7 +267,7 @@ def timeToday(String time, Object timeZone) {
 @Field def temperatureMeasurementObject0
 @Field def temperatureMeasurementObject1
 @Field def temperatureMeasurementObject2
-//Global Object for class temperature measurement!
+//Global Object for class water sensor!
 @Field waterSensorObjects = 0
 @Field def waterSensorObject0
 @Field def waterSensorObject1
@@ -269,12 +277,31 @@ def timeToday(String time, Object timeZone) {
 @Field def valveObject0
 @Field def valveObject1
 @Field def valveObject2
-//Global Object for class valve!
+//Global Object for class mobile presence!
 @Field mobilePresenceObjects = 0
 @Field def mobilePresenceObject0
 @Field def mobilePresenceObject1
 @Field def mobilePresenceObject2
-
+//Global Object for class color temperature!
+@Field colorTemperatureObjects = 0
+@Field def colorTemperatureObject0
+@Field def colorTemperatureObject1
+@Field def colorTemperatureObject2
+//Global Object for class button!
+@Field buttonObjects = 0
+@Field def buttonObject0
+@Field def buttonObject1
+@Field def buttonObject2
+//Global Object for class three axis!
+@Field threeAxisObjects = 0
+@Field def threeAxisObject0
+@Field def threeAxisObject1
+@Field def threeAxisObject2
+//Global Object for class momentary switch device!
+@Field momentaryObjects = 0
+@Field def momentaryObject0
+@Field def momentaryObject1
+@Field def momentaryObject2
 
 
 //Global variables
@@ -375,6 +402,8 @@ def input(LinkedHashMap metaData, String name, String type, Closure Input) {
        find(Input)
 }
 
+@Field chooseMode = 0
+
 //input linkedHashMap
 def input(LinkedHashMap metaData) {
        if (metaData.containsKey('title')) {
@@ -393,22 +422,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def lockObject = new Locks(sendEvent, 1)\n")
+                               globalObjects.append("@Field def lockObject = new Locks(sendEvent, 1, init)\n")
 
                        if (lockObjects == 0) {
                                lockObject0 = metaData['name']
-                               this[lockObject0] = new Locks({}, 1)
+                               this[lockObject0] = new Locks({}, 1, true)
                        } else if (lockObjects == 1) {
                                lockObject1 = metaData['name']
-                               this[lockObject1] = new Locks({}, 1)
+                               this[lockObject1] = new Locks({}, 1, true)
                        } else if (lockObjects == 2) {
                                lockObject2 = metaData['name']
-                               this[lockObject2] = new Locks({}, 1)
+                               this[lockObject2] = new Locks({}, 1, true)
                        }
 
                        lockObjects=lockObjects+1
 
-                       settings.put(metaData['name'], new Locks({}, 1)) 
+                       settings.put(metaData['name'], new Locks({}, 1, true)) 
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class lock!\n")
@@ -428,22 +457,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def alarmObject = new Alarms(sendEvent, 1)\n")
+                               globalObjects.append("@Field def alarmObject = new Alarms(sendEvent, 1, init)\n")
 
                        if (alarmObjects == 0) {
                                alarmObject0 = metaData['name']
-                               this[alarmObject0] = new Alarms({}, 1)
+                               this[alarmObject0] = new Alarms({}, 1, true)
                        } else if (alarmObjects == 1) {
                                alarmObject1 = metaData['name']
-                               this[alarmObject1] = new Alarms({}, 1)
+                               this[alarmObject1] = new Alarms({}, 1, true)
                        } else if (alarmObjects == 2) {
                                alarmObject2 = metaData['name']
-                               this[alarmObject2] = new Alarms({}, 1)
+                               this[alarmObject2] = new Alarms({}, 1, true)
                        }
 
                        alarmObjects=alarmObjects+1
 
-                       settings.put(metaData['name'], new Alarms({}, 1)) 
+                       settings.put(metaData['name'], new Alarms({}, 1, true)) 
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class alarm!\n")
@@ -455,6 +484,41 @@ def input(LinkedHashMap metaData) {
                                extractedObjectsConstructorApp2.append(metaData['name']+" = obj.alarmObject\n")
                        }
                        break
+               case "capability.button":
+                       globalObjects.eachLine { line ->
+                               if(line.contains("buttonObject")){
+                                       contains = 1
+                               }
+                       }
+
+                       if (contains == 0)
+                               globalObjects.append("@Field def buttonObject = new Buttons(sendEvent, 1, init)\n")
+
+                       if (buttonObjects == 0) {
+                               buttonObject0 = metaData['name']
+                               this[buttonObject0] = new Buttons({}, 1, true)
+                       } else if (buttonObjects == 1) {
+                               buttonObject1 = metaData['name']
+                               this[buttonObject1] = new Buttons({}, 1, true)
+                       } else if (buttonObjects == 2) {
+                               buttonObject2 = metaData['name']
+                               this[buttonObject2] = new Buttons({}, 1, true)
+                       }
+
+                       buttonObjects=buttonObjects+1
+
+                       settings.put(metaData['name'], new Buttons({}, 1, true))
+
+                       if (App == "App1") {
+                               extractedObjectsApp1.append("//Object for class Button!\n")
+                               extractedObjectsApp1.append("def "+metaData['name']+"\n")
+                               extractedObjectsConstructorApp1.append(metaData['name']+" = obj.buttonObject\n")                
+                       } else {
+                               extractedObjectsApp2.append("//Object for class Button!\n")
+                               extractedObjectsApp2.append("def "+metaData['name']+"\n")
+                               extractedObjectsConstructorApp2.append(metaData['name']+" = obj.buttonObject\n")
+                       }
+                       break
                case "capability.battery":
                        globalObjects.eachLine { line ->
                                if(line.contains("batteryObject")){
@@ -463,22 +527,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def batteryObject = new Batteries(sendEvent, 1)\n")
+                               globalObjects.append("@Field def batteryObject = new Batteries(sendEvent, 1, init)\n")
 
                        if (batteryObjects == 0) {
                                batteryObject0 = metaData['name']
-                               this[batteryObject0] = new Batteries({}, 1)
+                               this[batteryObject0] = new Batteries({}, 1, true)
                        } else if (batteryObjects == 1) {
                                batteryObject1 = metaData['name']
-                               this[batteryObject1] = new Batteries({}, 1)
+                               this[batteryObject1] = new Batteries({}, 1, true)
                        } else if (batteryObjects == 2) {
                                batteryObject2 = metaData['name']
-                               this[batteryObject2] = new Batteries({}, 1)
+                               this[batteryObject2] = new Batteries({}, 1, true)
                        }
 
                        batteryObjects=batteryObjects+1
 
-                       settings.put(metaData['name'], new Batteries({}, 1))
+                       settings.put(metaData['name'], new Batteries({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class Battery!\n")
@@ -498,22 +562,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def beaconSensorObject = new BeaconSensors(sendEvent, 1)\n")
+                               globalObjects.append("@Field def beaconSensorObject = new BeaconSensors(sendEvent, 1, init)\n")
 
                        if (beaconSensorObjects == 0) {
                                beaconSensorObject0 = metaData['name']
-                               this[beaconSensorObject0] = new BeaconSensors({}, 1)
+                               this[beaconSensorObject0] = new BeaconSensors({}, 1, true)
                        } else if (beaconSensorObjects == 1) {
                                beaconSensorObject1 = metaData['name']
-                               this[beaconSensorObject1] = new BeaconSensors({}, 1)
+                               this[beaconSensorObject1] = new BeaconSensors({}, 1, true)
                        } else if (beaconSensorObjects == 2) {
                                beaconSensorObject2 = metaData['name']
-                               this[beaconSensorObject2] = new BeaconSensors({}, 1)
+                               this[beaconSensorObject2] = new BeaconSensors({}, 1, true)
                        }
 
                        beaconSensorObjects=beaconSensorObjects+1
 
-                       settings.put(metaData['name'], new BeaconSensors({}, 1))
+                       settings.put(metaData['name'], new BeaconSensors({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class beacon sensor!\n")
@@ -533,22 +597,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def carbonMonoxideDetectorObject = new CarbonMonoxideDetectors(sendEvent, 1)\n")
+                               globalObjects.append("@Field def carbonMonoxideDetectorObject = new CarbonMonoxideDetectors(sendEvent, 1, init)\n")
 
                        if (carbonMonoxideDetectorObjects == 0) {
                                carbonMonoxideDetectorObject0 = metaData['name']
-                               this[carbonMonoxideDetectorObject0] = new CarbonMonoxideDetectors({}, 1)
+                               this[carbonMonoxideDetectorObject0] = new CarbonMonoxideDetectors({}, 1, true)
                        } else if (carbonMonoxideDetectorObjects == 1) {
                                carbonMonoxideDetectorObject1 = metaData['name']
-                               this[carbonMonoxideDetectorObject1] = new CarbonMonoxideDetectors({}, 1)
+                               this[carbonMonoxideDetectorObject1] = new CarbonMonoxideDetectors({}, 1, true)
                        } else if (carbonMonoxideDetectorObjects == 2) {
                                carbonMonoxideDetectorObject2 = metaData['name']
-                               this[carbonMonoxideDetectorObject2] = new CarbonMonoxideDetectors({}, 1)
+                               this[carbonMonoxideDetectorObject2] = new CarbonMonoxideDetectors({}, 1, true)
                        }
 
                        carbonMonoxideDetectorObjects=carbonMonoxideDetectorObjects+1
                        
-                       settings.put(metaData['name'], new CarbonMonoxideDetectors({}, 1))
+                       settings.put(metaData['name'], new CarbonMonoxideDetectors({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class carbon monoxide detector!\n")
@@ -560,6 +624,41 @@ def input(LinkedHashMap metaData) {
                                extractedObjectsConstructorApp2.append(metaData['name']+" = obj.carbonMonoxideDetectorObject\n")
                        }
                        break
+               case "capability.colorTemperature":
+                       globalObjects.eachLine { line ->
+                               if(line.contains("colorTemperatureObject")){
+                                       contains = 1
+                               }
+                       }
+
+                       if (contains == 0)
+                               globalObjects.append("@Field def colorTemperatureObject = new ColorTemperatures(sendEvent, 1, init)\n")
+
+                       if (colorTemperatureObjects == 0) {
+                               colorTemperatureObject0 = metaData['name']
+                               this[colorTemperatureObject0] = new ColorTemperatures({}, 1, true)
+                       } else if (colorTemperatureObjects == 1) {
+                               colorTemperatureObject1 = metaData['name']
+                               this[colorTemperatureObject1] = new ColorTemperatures({}, 1, true)
+                       } else if (colorTemperatureObjects == 2) {
+                               colorTemperatureObject2 = metaData['name']
+                               this[colorTemperatureObject2] = new ColorTemperatures({}, 1, true)
+                       }
+
+                       colorTemperatureObjects=colorTemperatureObjects+1
+
+                       settings.put(metaData['name'], new ColorTemperatures({}, 1, true))
+
+                       if (App == "App1") {
+                               extractedObjectsApp1.append("//Object for class color temperature!\n")
+                               extractedObjectsApp1.append("def "+metaData['name']+"\n")
+                               extractedObjectsConstructorApp1.append(metaData['name']+" = obj.colorTemperatureObject\n")              
+                       } else {
+                               extractedObjectsApp2.append("//Object for class color control!\n")
+                               extractedObjectsApp2.append("def "+metaData['name']+"\n")
+                               extractedObjectsConstructorApp2.append(metaData['name']+" = obj.colorTemperatureObject\n")
+                       }
+                       break
                case "capability.colorControl":
                        globalObjects.eachLine { line ->
                                if(line.contains("colorControlObject")){
@@ -568,22 +667,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def colorControlObject = new ColorControls(sendEvent, 1)\n")
+                               globalObjects.append("@Field def colorControlObject = new ColorControls(sendEvent, 1, init)\n")
 
                        if (colorControlObjects == 0) {
                                colorControlObject0 = metaData['name']
-                               this[colorControlObject0] = new ColorControls({}, 1)
+                               this[colorControlObject0] = new ColorControls({}, 1, true)
                        } else if (colorControlObjects == 1) {
                                colorControlObject1 = metaData['name']
-                               this[colorControlObject1] = new ColorControls({}, 1)
+                               this[colorControlObject1] = new ColorControls({}, 1, true)
                        } else if (colorControlObjects == 2) {
                                colorControlObject2 = metaData['name']
-                               this[colorControlObject2] = new ColorControls({}, 1)
+                               this[colorControlObject2] = new ColorControls({}, 1, true)
                        }
 
                        colorControlObjects=colorControlObjects+1
 
-                       settings.put(metaData['name'], new ColorControls({}, 1))
+                       settings.put(metaData['name'], new ColorControls({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class color control!\n")
@@ -603,22 +702,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def contactObject = new ContactSensors(sendEvent, 1)\n")
+                               globalObjects.append("@Field def contactObject = new ContactSensors(sendEvent, 1, init)\n")
 
                        if (contactObjects == 0) {
                                contactObject0 = metaData['name']
-                               this[contactObject0] = new ContactSensors({}, 1)
+                               this[contactObject0] = new ContactSensors({}, 1, true)
                        } else if (contactObjects == 1) {
                                contactObject1 = metaData['name']
-                               this[contactObject1] = new ContactSensors({}, 1)
+                               this[contactObject1] = new ContactSensors({}, 1, true)
                        } else if (contactObjects == 2) {
                                contactObject2 = metaData['name']
-                               this[contactObject2] = new ContactSensors({}, 1)
+                               this[contactObject2] = new ContactSensors({}, 1, true)
                        }
 
                        contactObjects=contactObjects+1
 
-                       settings.put(metaData['name'], new ContactSensors({}, 1))
+                       settings.put(metaData['name'], new ContactSensors({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class contactSensor!\n")
@@ -630,6 +729,41 @@ def input(LinkedHashMap metaData) {
                                extractedObjectsConstructorApp2.append(metaData['name']+" = obj.contactObject\n")
                        }
                        break
+               case "capability.threeAxis":
+                       globalObjects.eachLine { line ->
+                               if(line.contains("threeAxisObject")){
+                                       contains = 1
+                               }
+                       }
+
+                       if (contains == 0)
+                               globalObjects.append("@Field def threeAxisObject = new ThreeAxises(sendEvent, 1, init)\n")
+
+                       if (threeAxisObjects == 0) {
+                               threeAxisObject0 = metaData['name']
+                               this[threeAxisObject0] = new ThreeAxises({}, 1, true)
+                       } else if (threeAxisObjects == 1) {
+                               threeAxisObject1 = metaData['name']
+                               this[threeAxisObject1] = new ThreeAxises({}, 1, true)
+                       } else if (threeAxisObjects == 2) {
+                               threeAxisObject2 = metaData['name']
+                               this[threeAxisObject2] = new ThreeAxises({}, 1, true)
+                       }
+
+                       threeAxisObjects=threeAxisObjects+1
+
+                       settings.put(metaData['name'], new ThreeAxises({}, 1, true))
+
+                       if (App == "App1") {
+                               extractedObjectsApp1.append("//Object for class three axis!\n")
+                               extractedObjectsApp1.append("def "+metaData['name']+"\n")
+                               extractedObjectsConstructorApp1.append(metaData['name']+" = obj.threeAxisObject\n")             
+                       } else {
+                               extractedObjectsApp2.append("//Object for class three axis!\n")
+                               extractedObjectsApp2.append("def "+metaData['name']+"\n")
+                               extractedObjectsConstructorApp2.append(metaData['name']+" = obj.threeAxisObject\n")
+                       }
+                       break
                case "capability.doorControl":
                        globalObjects.eachLine { line ->
                                if(line.contains("doorControlObject")){
@@ -638,22 +772,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def doorControlObject = new DoorControls(sendEvent, 1)\n")
+                               globalObjects.append("@Field def doorControlObject = new DoorControls(sendEvent, 1, init)\n")
 
                        if (doorControlObjects == 0) {
                                doorControlObject0 = metaData['name']
-                               this[doorControlObject0] = new DoorControls({}, 1)
+                               this[doorControlObject0] = new DoorControls({}, 1, true)
                        } else if (doorControlObjects == 1) {
                                doorControlObject1 = metaData['name']
-                               this[doorControlObject1] = new DoorControls({}, 1)
+                               this[doorControlObject1] = new DoorControls({}, 1, true)
                        } else if (doorControlObjects == 2) {
                                doorControlObject2 = metaData['name']
-                               this[doorControlObject2] = new DoorControls({}, 1)
+                               this[doorControlObject2] = new DoorControls({}, 1, true)
                        }
 
                        doorControlObjects=doorControlObjects+1
 
-                       settings.put(metaData['name'], new DoorControls({}, 1))
+                       settings.put(metaData['name'], new DoorControls({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class door control!\n")
@@ -673,22 +807,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def energyMeterObject = new EnergyMeters(sendEvent, 1)\n")
+                               globalObjects.append("@Field def energyMeterObject = new EnergyMeters(sendEvent, 1, init)\n")
 
                        if (energyMeterObjects == 0) {
                                energyMeterObject0 = metaData['name']
-                               this[energyMeterObject0] = new EnergyMeters({}, 1)
+                               this[energyMeterObject0] = new EnergyMeters({}, 1, true)
                        } else if (energyMeterObjects == 1) {
                                energyMeterObject1 = metaData['name']
-                               this[energyMeterObject1] = new EnergyMeters({}, 1)
+                               this[energyMeterObject1] = new EnergyMeters({}, 1, true)
                        } else if (energyMeterObjects == 2) {
                                energyMeterObject2 = metaData['name']
-                               this[energyMeterObject2] = new EnergyMeters({}, 1)
+                               this[energyMeterObject2] = new EnergyMeters({}, 1, true)
                        }
 
                        energyMeterObjects=energyMeterObjects+1
 
-                       settings.put(metaData['name'], new EnergyMeters({}, 1))
+                       settings.put(metaData['name'], new EnergyMeters({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class energy meter!\n")
@@ -708,22 +842,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def illuminanceMeasurementObject = new IlluminanceMeasurements(sendEvent, 1)\n")
+                               globalObjects.append("@Field def illuminanceMeasurementObject = new IlluminanceMeasurements(sendEvent, 1, init)\n")
 
                        if (illuminanceMeasurementObjects == 0) {
                                illuminanceMeasurementObject0 = metaData['name']
-                               this[illuminanceMeasurementObject0] = new IlluminanceMeasurements({}, 1)
+                               this[illuminanceMeasurementObject0] = new IlluminanceMeasurements({}, 1, true)
                        } else if (illuminanceMeasurementObjects == 1) {
                                illuminanceMeasurementObject1 = metaData['name']
-                               this[illuminanceMeasurementObject1] = new IlluminanceMeasurements({}, 1)
+                               this[illuminanceMeasurementObject1] = new IlluminanceMeasurements({}, 1, true)
                        } else if (illuminanceMeasurementObjects == 2) {
                                illuminanceMeasurementObject2 = metaData['name']
-                               this[illuminanceMeasurementObject2] = new IlluminanceMeasurements({}, 1)
+                               this[illuminanceMeasurementObject2] = new IlluminanceMeasurements({}, 1, true)
                        }
 
                        illuminanceMeasurementObjects=illuminanceMeasurementObjects+1
 
-                       settings.put(metaData['name'], new IlluminanceMeasurements({}, 1))
+                       settings.put(metaData['name'], new IlluminanceMeasurements({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class illuminance measurement!\n")
@@ -743,22 +877,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def accelerationSensorObject = new AccelerationSensors(sendEvent, 1)\n")
+                               globalObjects.append("@Field def accelerationSensorObject = new AccelerationSensors(sendEvent, 1, init)\n")
 
                        if (accelerationSensorObjects == 0) {
                                accelerationSensorObject0 = metaData['name']
-                               this[accelerationSensorObject0] = new AccelerationSensors({}, 1)
+                               this[accelerationSensorObject0] = new AccelerationSensors({}, 1, true)
                        } else if (accelerationSensorObjects == 1) {
                                accelerationSensorObject1 = metaData['name']
-                               this[accelerationSensorObject1] = new AccelerationSensors({}, 1)
+                               this[accelerationSensorObject1] = new AccelerationSensors({}, 1, true)
                        } else if (accelerationSensorObjects == 2) {
                                accelerationSensorObject2 = metaData['name']
-                               this[accelerationSensorObject2] = new AccelerationSensors({}, 1)
+                               this[accelerationSensorObject2] = new AccelerationSensors({}, 1, true)
                        }
 
                        accelerationSensorObjects=accelerationSensorObjects+1
 
-                       settings.put(metaData['name'], new AccelerationSensors({}, 1))
+                       settings.put(metaData['name'], new AccelerationSensors({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class Acceleration Sensor!\n")
@@ -770,6 +904,41 @@ def input(LinkedHashMap metaData) {
                                extractedObjectsConstructorApp2.append(metaData['name']+" = obj.accelerationSensorObject\n")
                        }
                        break
+               case "capability.momentary":
+                       globalObjects.eachLine { line ->
+                               if(line.contains("momentoryObject")){
+                                       contains = 1
+                               }
+                       }
+
+                       if (contains == 0)
+                               globalObjects.append("@Field def momentaryObject = new Momentaries(sendEvent, 1)\n")
+
+                       if (momentaryObjects == 0) {
+                               momentaryObject0 = metaData['name']
+                               this[momentaryObject0] = new Momentaries({}, 1)
+                       } else if (momentaryObjects == 1) {
+                               momentaryObject1 = metaData['name']
+                               this[momentaryObject1] = new Momentaries({}, 1)
+                       } else if (momentaryObjects == 2) {
+                               momentaryObject2 = metaData['name']
+                               this[momentaryObject2] = new Momentaries({}, 1)
+                       }
+
+                       momentaryObjects=momentaryObjects+1
+
+                       settings.put(metaData['name'], new Momentaries({}, 1))
+
+                       if (App == "App1") {
+                               extractedObjectsApp1.append("//Object for class momentory switch class!\n")
+                               extractedObjectsApp1.append("def "+metaData['name']+"\n")
+                               extractedObjectsConstructorApp1.append(metaData['name']+" = obj.momentaryObject\n")             
+                       } else {
+                               extractedObjectsApp2.append("//Object for class momentory Sensor!\n")
+                               extractedObjectsApp2.append("def "+metaData['name']+"\n")
+                               extractedObjectsConstructorApp2.append(metaData['name']+" = obj.momentaryObject\n")
+                       }                       
+                       break
                case "capability.motionSensor":
                        globalObjects.eachLine { line ->
                                if(line.contains("motionSensorObject")){
@@ -778,22 +947,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def motionSensorObject = new MotionSensors(sendEvent, 1)\n")
+                               globalObjects.append("@Field def motionSensorObject = new MotionSensors(sendEvent, 1, init)\n")
 
                        if (motionSensorObjects == 0) {
                                motionSensorObject0 = metaData['name']
-                               this[motionSensorObject0] = new MotionSensors({}, 1)
+                               this[motionSensorObject0] = new MotionSensors({}, 1, true)
                        } else if (motionSensorObjects == 1) {
                                motionSensorObject1 = metaData['name']
-                               this[motionSensorObject1] = new MotionSensors({}, 1)
+                               this[motionSensorObject1] = new MotionSensors({}, 1, true)
                        } else if (motionSensorObjects == 2) {
                                motionSensorObject2 = metaData['name']
-                               this[motionSensorObject2] = new MotionSensors({}, 1)
+                               this[motionSensorObject2] = new MotionSensors({}, 1, true)
                        }
 
                        motionSensorObjects=motionSensorObjects+1
 
-                       settings.put(metaData['name'], new MotionSensors({}, 1))
+                       settings.put(metaData['name'], new MotionSensors({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class Motion Sensor!\n")
@@ -813,22 +982,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def musicPlayerObject = new MusicPlayers(sendEvent, 1)\n")
+                               globalObjects.append("@Field def musicPlayerObject = new MusicPlayers(sendEvent, 1, init)\n")
 
                        if (musicPlayerObjects == 0) {
                                musicPlayerObject0 = metaData['name']
-                               this[musicPlayerObject0] = new MusicPlayers({}, 1)
+                               this[musicPlayerObject0] = new MusicPlayers({}, 1, true)
                        } else if (musicPlayerObjects == 1) {
                                musicPlayerObject1 = metaData['name']
-                               this[musicPlayerObject1] = new MusicPlayers({}, 1)
+                               this[musicPlayerObject1] = new MusicPlayers({}, 1, true)
                        } else if (musicPlayerObjects == 2) {
                                musicPlayerObject2 = metaData['name']
-                               this[musicPlayerObject2] = new MusicPlayers({}, 1)
+                               this[musicPlayerObject2] = new MusicPlayers({}, 1, true)
                        }
 
                        musicPlayerObjects=musicPlayerObjects+1
 
-                       settings.put(metaData['name'], new MusicPlayers({}, 1)) 
+                       settings.put(metaData['name'], new MusicPlayers({}, 1, true)) 
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class music player!\n")
@@ -848,22 +1017,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def powerMeterObject = new PowerMeters(sendEvent, 1)\n")
+                               globalObjects.append("@Field def powerMeterObject = new PowerMeters(sendEvent, 1, init)\n")
 
                        if (powerMeterObjects == 0) {
                                powerMeterObject0 = metaData['name']
-                               this[powerMeterObject0] = new PowerMeters({}, 1)
+                               this[powerMeterObject0] = new PowerMeters({}, 1, true)
                        } else if (powerMeterObjects == 1) {
                                powerMeterObject1 = metaData['name']
-                               this[powerMeterObject1] = new PowerMeters({}, 1)
+                               this[powerMeterObject1] = new PowerMeters({}, 1, true)
                        } else if (powerMeterObjects == 2) {
                                powerMeterObject2 = metaData['name']
-                               this[powerMeterObject2] = new PowerMeters({}, 1)
+                               this[powerMeterObject2] = new PowerMeters({}, 1, true)
                        }
 
                        powerMeterObjects=powerMeterObjects+1
 
-                       settings.put(metaData['name'], new PowerMeters({}, 1))
+                       settings.put(metaData['name'], new PowerMeters({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class power meter!\n")
@@ -883,22 +1052,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def presenceSensorObject = new PresenceSensors(sendEvent, 1)\n")
+                               globalObjects.append("@Field def presenceSensorObject = new PresenceSensors(sendEvent, 1, init)\n")
 
                        if (presenceSensorObjects == 0) {
                                presenceSensorObject0 = metaData['name']
-                               this[presenceSensorObject0] = new PresenceSensors({}, 1)
+                               this[presenceSensorObject0] = new PresenceSensors({}, 1, true)
                        } else if (presenceSensorObjects == 1) {
                                presenceSensorObject1 = metaData['name']
-                               this[presenceSensorObject1] = new PresenceSensors({}, 1)
+                               this[presenceSensorObject1] = new PresenceSensors({}, 1, true)
                        } else if (presenceSensorObjects == 2) {
                                presenceSensorObject2 = metaData['name']
-                               this[presenceSensorObject2] = new PresenceSensors({}, 1)
+                               this[presenceSensorObject2] = new PresenceSensors({}, 1, true)
                        }
 
                        presenceSensorObjects=presenceSensorObjects+1
 
-                       settings.put(metaData['name'], new PresenceSensors({}, 1))
+                       settings.put(metaData['name'], new PresenceSensors({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class presence sensor!\n")
@@ -918,22 +1087,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def humidityMeasurementObject = new RelativeHumidityMeasurements(sendEvent, 1)\n")
+                               globalObjects.append("@Field def humidityMeasurementObject = new RelativeHumidityMeasurements(sendEvent, 1, init)\n")
 
                        if (humidityMeasurementObjects == 0) {
                                humidityMeasurementObject0 = metaData['name']
-                               this[humidityMeasurementObject0] = new RelativeHumidityMeasurements({}, 1)
+                               this[humidityMeasurementObject0] = new RelativeHumidityMeasurements({}, 1, true)
                        } else if (humidityMeasurementObjects == 1) {
                                humidityMeasurementObject1 = metaData['name']
-                               this[humidityMeasurementObject1] = new RelativeHumidityMeasurements({}, 1)
+                               this[humidityMeasurementObject1] = new RelativeHumidityMeasurements({}, 1, true)
                        } else if (humidityMeasurementObjects == 2) {
                                humidityMeasurementObject2 = metaData['name']
-                               this[humidityMeasurementObject2] = new RelativeHumidityMeasurements({}, 1)
+                               this[humidityMeasurementObject2] = new RelativeHumidityMeasurements({}, 1, true)
                        }
 
                        humidityMeasurementObjects=humidityMeasurementObjects+1
 
-                       settings.put(metaData['name'], new RelativeHumidityMeasurements({}, 1))
+                       settings.put(metaData['name'], new RelativeHumidityMeasurements({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class humidity measurement!\n")
@@ -953,22 +1122,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def relaySwitchObject = new RelaySwitches(sendEvent, 1)\n")
+                               globalObjects.append("@Field def relaySwitchObject = new RelaySwitches(sendEvent, 1, init)\n")
 
                        if (relaySwitchObjects == 0) {
                                relaySwitchObject0 = metaData['name']
-                               this[relaySwitchObject0] = new RelaySwitches({}, 1)
+                               this[relaySwitchObject0] = new RelaySwitches({}, 1, true)
                        } else if (relaySwitchObjects == 1) {
                                relaySwitchObject1 = metaData['name']
-                               this[relaySwitchObject1] = new RelaySwitches({}, 1)
+                               this[relaySwitchObject1] = new RelaySwitches({}, 1, true)
                        } else if (relaySwitchObjects == 2) {
                                relaySwitchObject2 = metaData['name']
-                               this[relaySwitchObject2] = new RelaySwitches({}, 1)
+                               this[relaySwitchObject2] = new RelaySwitches({}, 1, true)
                        }
 
                        relaySwitchObjects=relaySwitchObjects+1
                        
-                       settings.put(metaData['name'], new RelaySwitches({}, 1))
+                       settings.put(metaData['name'], new RelaySwitches({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class relay switch!\n")
@@ -988,22 +1157,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def sleepSensorObject = new SleepSensors(sendEvent, 1)\n")
+                               globalObjects.append("@Field def sleepSensorObject = new SleepSensors(sendEvent, 1, init)\n")
 
                        if (sleepSensorObjects == 0) {
                                sleepSensorObject0 = metaData['name']
-                               this[sleepSensorObject0] = new SleepSensors({}, 1)
+                               this[sleepSensorObject0] = new SleepSensors({}, 1, true)
                        } else if (sleepSensorObjects == 1) {
                                sleepSensorObject1 = metaData['name']
-                               this[sleepSensorObject1] = new SleepSensors({}, 1)
+                               this[sleepSensorObject1] = new SleepSensors({}, 1, true)
                        } else if (sleepSensorObjects == 2) {
                                sleepSensorObject2 = metaData['name']
-                               this[sleepSensorObject2] = new SleepSensors({}, 1)
+                               this[sleepSensorObject2] = new SleepSensors({}, 1, true)
                        }
 
                        sleepSensorObjects=sleepSensorObjects+1
                        
-                       settings.put(metaData['name'], new SleepSensors({}, 1))
+                       settings.put(metaData['name'], new SleepSensors({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class sleep sensor!\n")
@@ -1023,22 +1192,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def smokeDetectorObject = new SmokeDetectors(sendEvent, 1)\n")
+                               globalObjects.append("@Field def smokeDetectorObject = new SmokeDetectors(sendEvent, 1, init)\n")
 
                        if (smokeDetectorObjects == 0) {
                                smokeDetectorObject0 = metaData['name']
-                               this[smokeDetectorObject0] = new SmokeDetectors({}, 1)
+                               this[smokeDetectorObject0] = new SmokeDetectors({}, 1, true)
                        } else if (smokeDetectorObjects == 1) {
                                smokeDetectorObject1 = metaData['name']
-                               this[smokeDetectorObject1] = new SmokeDetectors({}, 1)
+                               this[smokeDetectorObject1] = new SmokeDetectors({}, 1, true)
                        } else if (smokeDetectorObjects == 2) {
                                smokeDetectorObject2 = metaData['name']
-                               this[smokeDetectorObject2] = new SmokeDetectors({}, 1)
+                               this[smokeDetectorObject2] = new SmokeDetectors({}, 1, true)
                        }
 
                        smokeDetectorObjects=smokeDetectorObjects+1
                        
-                       settings.put(metaData['name'], new SmokeDetectors({}, 1))
+                       settings.put(metaData['name'], new SmokeDetectors({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class smoke detector!\n")
@@ -1058,22 +1227,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def stepSensorObject = new StepSensors(sendEvent, 1)\n")
+                               globalObjects.append("@Field def stepSensorObject = new StepSensors(sendEvent, 1, init)\n")
 
                        if (stepSensorObjects == 0) {
                                stepSensorObject0 = metaData['name']
-                               this[stepSensorObject0] = new StepSensors({}, 1)
+                               this[stepSensorObject0] = new StepSensors({}, 1, true)
                        } else if (stepSensorObjects == 1) {
                                stepSensorObject1 = metaData['name']
-                               this[stepSensorObject1] = new StepSensors({}, 1)
+                               this[stepSensorObject1] = new StepSensors({}, 1, true)
                        } else if (stepSensorObjects == 2) {
                                stepSensorObject2 = metaData['name']
-                               this[stepSensorObject2] = new StepSensors({}, 1)
+                               this[stepSensorObject2] = new StepSensors({}, 1, true)
                        }
 
                        stepSensorObjects=stepSensorObjects+1
                        
-                       settings.put(metaData['name'], new StepSensors({}, 1))
+                       settings.put(metaData['name'], new StepSensors({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class step sensor!\n")
@@ -1093,22 +1262,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def switchObject = new Switches(sendEvent, 1)\n")
+                               globalObjects.append("@Field def switchObject = new Switches(sendEvent, 1, init)\n")
 
                        if (switchObjects == 0) {
                                switchObject0 = metaData['name']
-                               this[switchObject0] = new Switches({}, 1)
+                               this[switchObject0] = new Switches({}, 1, true)
                        } else if (switchObjects == 1) {
                                switchObject1 = metaData['name']
-                               this[switchObject1] = new Switches({}, 1)
+                               this[switchObject1] = new Switches({}, 1, true)
                        } else if (switchObjects == 2) {
                                switchObject2 = metaData['name']
-                               this[switchObject2] = new Switches({}, 1)
+                               this[switchObject2] = new Switches({}, 1, true)
                        }
 
                        switchObjects=switchObjects+1
                        
-                       settings.put(metaData['name'], new Switches({}, 1))
+                       settings.put(metaData['name'], new Switches({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class switch!\n")
@@ -1128,22 +1297,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def switchLevelObject = new SwitchLevels(sendEvent, 1)\n")
+                               globalObjects.append("@Field def switchLevelObject = new SwitchLevels(sendEvent, 1, init)\n")
 
                        if (switchLevelObjects == 0) {
                                switchLevelObject0 = metaData['name']
-                               this[switchLevelObject0] = new SwitchLevels({}, 1)
+                               this[switchLevelObject0] = new SwitchLevels({}, 1, true)
                        } else if (switchLevelObjects == 1) {
                                switchLevelObject1 = metaData['name']
-                               this[switchLevelObject1] = new SwitchLevels({}, 1)
+                               this[switchLevelObject1] = new SwitchLevels({}, 1, true)
                        } else if (switchLevelObjects == 2) {
                                switchLevelObject2 = metaData['name']
-                               this[switchLevelObject2] = new SwitchLevels({}, 1)
+                               this[switchLevelObject2] = new SwitchLevels({}, 1, true)
                        }
 
                        switchLevelObjects=switchLevelObjects+1
 
-                       settings.put(metaData['name'], new SwitchLevels({}, 1))
+                       settings.put(metaData['name'], new SwitchLevels({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class switch level!\n")
@@ -1163,22 +1332,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def temperatureMeasurementObject = new TemperatureMeasurements(sendEvent, 1)\n")
+                               globalObjects.append("@Field def temperatureMeasurementObject = new TemperatureMeasurements(sendEvent, 1, init)\n")
 
                        if (temperatureMeasurementObjects == 0) {
                                temperatureMeasurementObject0 = metaData['name']
-                               this[temperatureMeasurementObject0] = new TemperatureMeasurements({}, 1)
+                               this[temperatureMeasurementObject0] = new TemperatureMeasurements({}, 1, true)
                        } else if (temperatureMeasurementObjects == 1) {
                                temperatureMeasurementObject1 = metaData['name']
-                               this[temperatureMeasurementObject1] = new TemperatureMeasurements({}, 1)
+                               this[temperatureMeasurementObject1] = new TemperatureMeasurements({}, 1, true)
                        } else if (temperatureMeasurementObjects == 2) {
                                temperatureMeasurementObject2 = metaData['name']
-                               this[temperatureMeasurementObject2] = new TemperatureMeasurements({}, 1)
+                               this[temperatureMeasurementObject2] = new TemperatureMeasurements({}, 1, true)
                        }
 
                        temperatureMeasurementObjects=temperatureMeasurementObjects+1
 
-                       settings.put(metaData['name'], new TemperatureMeasurements({}, 1))
+                       settings.put(metaData['name'], new TemperatureMeasurements({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class temperature measurement!\n")
@@ -1198,22 +1367,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def thermostatObject = new Thermostats(sendEvent, 1)\n")
+                               globalObjects.append("@Field def thermostatObject = new Thermostats(sendEvent, 1, init)\n")
                                
                        if (thermostatObjects == 0) {
                                thermostatObject0 = metaData['name']
-                               this[thermostatObject0] = new Thermostats({}, 1)
+                               this[thermostatObject0] = new Thermostats({}, 1, true)
                        } else if (thermostatObjects == 1) {
                                thermostatObject1 = metaData['name']
-                               this[thermostatObject1] = new Thermostats({}, 1)
+                               this[thermostatObject1] = new Thermostats({}, 1, true)
                        } else if (thermostatObjects == 2) {
                                thermostatObject2 = metaData['name']
-                               this[thermostatObject2] = new Thermostats({}, 1)
+                               this[thermostatObject2] = new Thermostats({}, 1, true)
                        }
 
                        thermostatObjects=thermostatObjects+1
 
-                       settings.put(metaData['name'], new Thermostats({}, 1))
+                       settings.put(metaData['name'], new Thermostats({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class thermostat!\n")
@@ -1233,22 +1402,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def valveObject = new Valves(sendEvent, 1)\n")
+                               globalObjects.append("@Field def valveObject = new Valves(sendEvent, 1, init)\n")
 
                        if (valveObjects == 0) {
                                valveObject0 = metaData['name']
-                               this[valveObject0] = new Valves({}, 1)
+                               this[valveObject0] = new Valves({}, 1, true)
                        } else if (valveObjects == 1) {
                                valveObject1 = metaData['name']
-                               this[valveObject1] = new Valves({}, 1)
+                               this[valveObject1] = new Valves({}, 1, true)
                        } else if (valveObjects == 2) {
                                valveObject2 = metaData['name']
-                               this[valveObject2] = new Valves({}, 1)
+                               this[valveObject2] = new Valves({}, 1, true)
                        }
 
                        valveObjects=valveObjects+1
 
-                       settings.put(metaData['name'], new Valves({}, 1))
+                       settings.put(metaData['name'], new Valves({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class valve!\n")
@@ -1268,22 +1437,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def speechSynthesisObject = new SpeechSynthesises(sendEvent, 1)\n")
+                               globalObjects.append("@Field def speechSynthesisObject = new SpeechSynthesises(sendEvent, 1, init)\n")
 
                        if (speechSynthesisObjects == 0) {
                                speechSynthesisObject0 = metaData['name']
-                               this[speechSynthesisObject0] = new SpeechSynthesises({}, 1)
+                               this[speechSynthesisObject0] = new SpeechSynthesises({}, 1, true)
                        } else if (speechSynthesisObjects == 1) {
                                speechSynthesisObject1 = metaData['name']
-                               this[speechSynthesisObject1] = new SpeechSynthesises({}, 1)
+                               this[speechSynthesisObject1] = new SpeechSynthesises({}, 1, true)
                        } else if (speechSynthesisObjects == 2) {
                                speechSynthesisObject2 = metaData['name']
-                               this[speechSynthesisObject2] = new SpeechSynthesises({}, 1)
+                               this[speechSynthesisObject2] = new SpeechSynthesises({}, 1, true)
                        }
 
                        speechSynthesisObjects=speechSynthesisObjects+1
 
-                       settings.put(metaData['name'], new SpeechSynthesises({}, 1))
+                       settings.put(metaData['name'], new SpeechSynthesises({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class speech synthesis!\n")
@@ -1303,22 +1472,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def waterSensorObject = new WaterSensors(sendEvent, 1)\n")
+                               globalObjects.append("@Field def waterSensorObject = new WaterSensors(sendEvent, 1, init)\n")
 
                        if (waterSensorObjects == 0) {
                                waterSensorObject0 = metaData['name']
-                               this[waterSensorObject0] = new WaterSensors({}, 1)
+                               this[waterSensorObject0] = new WaterSensors({}, 1, true)
                        } else if (waterSensorObjects == 1) {
                                waterSensorObject1 = metaData['name']
-                               this[waterSensorObject1] = new WaterSensors({}, 1)
+                               this[waterSensorObject1] = new WaterSensors({}, 1, true)
                        } else if (waterSensorObjects == 2) {
                                waterSensorObject2 = metaData['name']
-                               this[waterSensorObject2] = new WaterSensors({}, 1)
+                               this[waterSensorObject2] = new WaterSensors({}, 1, true)
                        }
 
                        waterSensorObjects=waterSensorObjects+1
 
-                       settings.put(metaData['name'], new WaterSensors({}, 1))
+                       settings.put(metaData['name'], new WaterSensors({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class water sensor!\n")
@@ -1373,22 +1542,22 @@ def input(LinkedHashMap metaData) {
                        }
 
                        if (contains == 0)
-                               globalObjects.append("@Field def imageCaptureObject = new ImageCaptures(sendEvent, 1)\n")
+                               globalObjects.append("@Field def imageCaptureObject = new ImageCaptures(sendEvent, 1, init)\n")
 
                        if (imageCaptureObjects == 0) {
                                imageCaptureObject0 = metaData['name']
-                               this[imageCaptureObject0] = new ImageCaptures({}, 1)
+                               this[imageCaptureObject0] = new ImageCaptures({}, 1, true)
                        } else if (imageCaptureObjects == 1) {
                                imageCaptureObject1 = metaData['name']
-                               this[imageCaptureObject1] = new ImageCaptures({}, 1)
+                               this[imageCaptureObject1] = new ImageCaptures({}, 1, true)
                        } else if (imageCaptureObjects == 2) {
                                imageCaptureObject2 = metaData['name']
-                               this[imageCaptureObject2] = new ImageCaptures({}, 1)
+                               this[imageCaptureObject2] = new ImageCaptures({}, 1, true)
                        }
 
                        imageCaptureObjects=imageCaptureObjects+1
 
-                       settings.put(metaData['name'], new ImageCaptures({}, 1))
+                       settings.put(metaData['name'], new ImageCaptures({}, 1, true))
 
                        if (App == "App1") {
                                extractedObjectsApp1.append("//Object for class Image Capture!\n")
@@ -1435,7 +1604,6 @@ def input(LinkedHashMap metaData) {
                                extractedObjectsConstructorApp2.append(metaData['name']+" = obj.mobilePresenceObject\n")
                        }
                        break
-               case "capability.button":
                case "device.aeonKeyFob":
                        globalObjects.eachLine { line ->
                                if(line.contains("aeonKeyFobObject")){
@@ -1473,7 +1641,13 @@ def input(LinkedHashMap metaData) {
                case "mode":
                        //def randomVariable = Math.abs(new Random().nextInt() % 3)
                        def modes = ["away", "home", "night"]
-                       def userInput = modes[0]
+                       // Always assign a different mode to each app
+                       //def userInput = modes[1]
+                       def userInput = modes[chooseMode]
+                       if (chooseMode < 3)
+                               chooseMode++;
+                       else
+                               chooseMode = chooseMode%3
 
                        if (modeVariables == 0) {
                                mode0 = metaData['name']
@@ -1713,6 +1887,46 @@ def input(LinkedHashMap metaData) {
                                extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
                        }
                        break
+               case "boolean":
+                       //def userInput = Math.abs(new Random().nextInt() % 2)
+                       def userInput = true
+
+                       if (boolVariables == 0) {
+                               bool0 = metaData['name']
+                               this[bool0] = userInput
+                       } else if (boolVariables == 1) {
+                               bool1 = metaData['name']
+                               this[bool1] = userInput
+                       } else if (boolVariables == 2) {
+                               bool2 = metaData['name']
+                               this[bool2] = userInput
+                       } else if (boolVariables == 3) {
+                               bool3 = metaData['name']
+                               this[bool3] = userInput
+                       } else if (boolVariables == 4) {
+                               bool4 = metaData['name']
+                               this[bool4] = userInput
+                       } else if (boolVariables == 5) {
+                               bool5 = metaData['name']
+                               this[bool5] = userInput
+                       }
+
+                       if (boolVariables != 5)
+                               boolVariables=boolVariables+1
+                       else
+                               boolVariables=0
+
+
+                       settings.put(metaData['name'], metaData['name'])
+
+                       if (App == "App1") {                    
+                               extractedObjectsApp1.append("//Global variable for boolean!\n")
+                               extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
+                       } else {
+                               extractedObjectsApp2.append("//Global variable for boolean!\n")
+                               extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
+                       }
+                       break
                case "bool":
                        //def userInput = Math.abs(new Random().nextInt() % 2)
                        def userInput = true
@@ -1899,7 +2113,7 @@ def preferences(Closure inputData) {
                GlobalVariablesBothApps.write("")
                GlobalVariablesBothApps.append("//Creating Global variables for both apps\n")
                GlobalVariablesBothApps.append("@Field def sendEvent = {eventDataMap -> eventHandler(eventDataMap)}\n")
-               GlobalVariablesBothApps.append("@Field def locationObject = new LocationVar(sendEvent)\n")
+               GlobalVariablesBothApps.append("@Field def locationObject = new LocationVar(sendEvent, init)\n")
                GlobalVariablesBothApps.append("@Field def appObject = new Touched(sendEvent, 0)\n")
                
                globalObjects.withReader { reader ->
@@ -1911,6 +2125,10 @@ def preferences(Closure inputData) {
        }
 }
 
+def image(String data) {
+       println("//IGNORE--some image//")
+}
+
 def page(LinkedHashMap metaData, Closure inputData) {
        if (metaData.containsKey('name'))
                println(metaData['name'])
@@ -1938,6 +2156,10 @@ def paragraph(String paragraphText) {
        println(paragraphText)
 }
 
+def paragraph(LinkedHashMap metaData, String paragraphText) {
+       println(paragraphText)
+}
+
 def section(String title, Closure inputData) {
        println(title)
        find(inputData) //Run the closure to extract inputMethods