-////////////////////@Field App
+////////////////////
+@Field App
App = "App2"
////////////////////////////////////////
//import libraries
import Location.Phrase
import appTouch.Touched
import NfcTouch.NfcTouch
+import AeonKeyFob.AeonKeyFob
+import AeonKeyFob.AeonKeyFobs
+import MusicPlayer.MusicPlayer
+import MusicPlayer.MusicPlayers
import Timer.SimulatedTimer
+//GlobalVariables
+@Field def location = new LocationVar()
+//Settings variable defined to settings on purpose
+@Field def settings = [app: "app"]
+//Global variable for state[mode]
+@Field def state = [home:[],away:[],night:[]]
+//Create a global logger object for methods
+@Field def log = new Logger()
-@Field App //Default
+//Global variables for files
+@Field File extractedObjectsApp1 = new File("Extractor/App1/extractedObjectsApp1.groovy")
+@Field File extractedObjectsApp2 = new File("Extractor/App2/extractedObjectsApp2.groovy")
+@Field File extractedObjectsConstructorApp1 = new File("Extractor/App1/extractedObjectsConstructorApp1.groovy")
+@Field File extractedObjectsConstructorApp2 = new File("Extractor/App2/extractedObjectsConstructorApp2.groovy")
-//Global variables for files
-@Field File extractedObjectsApp1 = new File("Extractor/App1/extractedObjectsApp1.groovy")
-@Field File extractedObjectsApp2 = new File("Extractor/App2/extractedObjectsApp2.groovy")
-@Field File extractedObjectsConstructorApp1 = new File("Extractor/App1/extractedObjectsConstructorApp1.groovy")
-@Field File extractedObjectsConstructorApp2 = new File("Extractor/App2/extractedObjectsConstructorApp2.groovy")
-
-
-//Empty the files
-if (App == "App1") {
- extractedObjectsApp1.write("")
- extractedObjectsConstructorApp1.write("")
-} else if (App == "App2") {
- extractedObjectsApp2.write("")
- extractedObjectsConstructorApp2.write("")
-}
-
-
-
-
-
-//Global objects
-//Global Object for class Touch Sensor!
-@Field def touchSensorObject
-//Global Object for class switch!
-@Field def switchObject
-//Global Object for class lock!
-@Field def lockObject
-//Global Object for class door control!
-@Field def doorControlObject
-//Global Object for class contact sensor!
-@Field def contactObject
-//Global Object for class presence sensor!
-@Field def presenceSensorObject
-//Global Object for class thermostat!
-@Field def thermostatObject
-
-
-//Global variables
-//For mode
-@Field modeVariables = 0
-@Field mode0
-@Field mode1
-@Field mode2
-@Field mode3
-@Field mode4
-@Field mode5
-//For number
-@Field numberVariables = 0
-@Field number0
-@Field number1
-@Field number2
-@Field number3
-@Field number4
-@Field number5
-//For time
-@Field timeVariables = 0
-@Field time0
-@Field time1
-@Field time2
-@Field time3
-@Field time4
-@Field time5
-//For enum
-@Field enumVariables = 0
-@Field enum0
-@Field enum1
-@Field enum2
-@Field enum3
-@Field enum4
-@Field enum5
-//For phone
-@Field phoneVariables = 0
-@Field phone0
-@Field phone1
-@Field phone2
-@Field phone3
-@Field phone4
-@Field phone5
-//For contact
-@Field contactVariables = 0
-@Field contact0
-@Field contact1
-@Field contact2
-@Field contact3
-@Field contact4
-@Field contact5
-
-
-
-/////Input Methods/////
-//input "",""
-def input(String name, String type) {
- switch(type) {
- case "capability.lock":
- lockObject = name
- this[lockObject] = new Locks({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class lock!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.lockObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class lock!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.lockObject\n")
- }
- break
- case "capability.alarm":
- break
- case "capability.battery":
- break
- case "capability.beacon":
- break
- case "capability.carbonMonoxideDetector":
- break
- case "capability.colorControl":
- break
- case "capability.contactSensor":
- contactObject = name
- this[contactObject] = new ContactSensors({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class contactSensor!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.contactObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class contactSensor!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.contactObject\n")
- }
- break
- case "capability.doorControl":
- doorControlObject = name
- this[doorControlObject] = new DoorControls({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class door control!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.doorControlObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class door control!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.doorControlObject\n")
- }
- break
- case "capability.energyMeter":
- break
- case "capability.illuminanceMeasurement":
- break
- case "capability.accelerationSensor":
- break
- case "capability.motionSensor":
- break
- case "capability.musicPlayer":
- break
- case "capability.powerMeter":
- break
- case "capability.presenceSensor":
- presenceSensorObject = name
- this[presenceSensorObject] = new PresenceSensors({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class presence sensor!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.presenceSensorObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class presence sensor!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.presenceSensorObject\n")
- }
- break
- case "capability.relativeHumidityMeasurement":
- break
- case "capability.relaySwitch":
- break
- case "capability.sleepSensor":
- break
- case "capability.smokeDetector":
- break
- case "capability.stepSensor":
- break
- case "capability.switch":
- switchObject = name
- this[switchObject] = new Switches({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class switch!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.switchObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class switch!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.switchObject\n")
- }
- break
- case "capability.switchLevel":
- break
- case "capability.temperatureMeasurement":
- break
- case "capability.thermostat":
- thermostatObject = name
- this[thermostatObject] = new Thermostats({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class thermostat!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.thermostatObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class thermostat!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.thermostatObject\n")
- }
- break
- case "capability.valve":
- break
- case "capability.waterSensor":
- break
- case "capability.touchSensor":
- touchSensorObject = name
- this[touchSensorObject] = new NfcTouch({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.touchSensorObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.touchSensorObject\n")
- }
- break
- case "capability.imageCapture":
- break
- case "device.mobilePresence":
- break
- case "device.aeonKeyFob":
- break
- case "mode":
- def userInput = System.console().readLine 'Enter the mode:'
-
- if (modeVariables == 0) {
- mode0 = name
- this[mode0] = userInput
- } else if (modeVariables == 1) {
- mode1 = name
- this[mode1] = userInput
- } else if (modeVariables == 2) {
- mode2 = name
- this[mode2] = userInput
- } else if (modeVariables == 3) {
- mode3 = name
- this[mode3] = userInput
- } else if (modeVariables == 4) {
- mode4 = name
- this[mode4] = userInput
- } else if (modeVariables == 5) {
- mode5 = name
- this[mode5] = userInput
- }
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for mode!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for mode!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- case "decimal":
- break
- case "text":
- break
- case "number":
- def userInput = System.console().readLine 'Enter the number:'
-
- if (numberVariables == 0) {
- number0 = name
- this[number0] = userInput
- } else if (numberVariables == 1) {
- number1 = name
- this[number1] = userInput
- } else if (numberVariables == 2) {
- number2 = name
- this[number2] = userInput
- } else if (numberVariables == 3) {
- number3 = name
- this[number3] = userInput
- } else if (numberVariables == 4) {
- number4 = name
- this[number4] = userInput
- } else if (numberVariables == 5) {
- number5 = name
- this[number5] = userInput
- }
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for number!\n")
- extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for number!\n")
- extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
- }
- break
- case "time":
- def userInput = System.console().readLine 'Enter the time:'
-
- if (timeVariables == 0) {
- time0 = name
- this[time0] = userInput
- } else if (timeVariables == 1) {
- time1 = name
- this[time1] = userInput
- } else if (timeVariables == 2) {
- time2 = name
- this[time2] = userInput
- } else if (timeVariables == 3) {
- time3 = name
- this[time3] = userInput
- } else if (timeVariables == 4) {
- time4 = name
- this[time4] = userInput
- } else if (timeVariables == 5) {
- time5 = name
- this[time5] = userInput
- }
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for time!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for time!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- case "enum":
- def userInput = System.console().readLine 'Enter the enum:'
-
- if (enumVariables == 0) {
- enum0 = name
- this[enum0] = userInput
- } else if (enumVariables == 1) {
- enum1 = name
- this[enum1] = userInput
- } else if (enumVariables == 2) {
- enum2 = name
- this[enum2] = userInput
- } else if (enumVariables == 3) {
- enum3 = name
- this[enum3] = userInput
- } else if (enumVariables == 4) {
- enum4 = name
- this[enum4] = userInput
- } else if (enumVariables == 5) {
- enum5 = name
- this[enum5] = userInput
- }
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for enum!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for enum!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- case "bool":
- break
- case "phone":
- def userInput = System.console().readLine 'Enter the phone:'
-
- if (phoneVariables == 0) {
- phone0 = name
- this[phone0] = userInput
- } else if (phoneVariables == 1) {
- phone1 = name
- this[phone1] = userInput
- } else if (phoneVariables == 2) {
- phone2 = name
- this[phone2] = userInput
- } else if (phoneVariables == 3) {
- phone3 = name
- this[phone3] = userInput
- } else if (phoneVariables == 4) {
- phone4 = name
- this[phone4] = userInput
- } else if (phoneVariables == 5) {
- phone5 = name
- this[phone5] = userInput
- }
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for phone!\n")
- extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for phone!\n")
- extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
- }
- break
- case "contact":
- def userInput = System.console().readLine 'Enter the name of the contact:'
-
- if (contactVariables == 0) {
- contact0 = name
- this[contact0] = userInput
- } else if (contactVariables == 1) {
- contact1 = name
- this[contact1] = userInput
- } else if (contactVariables == 2) {
- contact2 = name
- this[contact2] = userInput
- } else if (contactVariables == 3) {
- contact3 = name
- this[contact3] = userInput
- } else if (contactVariables == 4) {
- contact4 = name
- this[contact4] = userInput
- } else if (contactVariables == 5) {
- contact5 = name
- this[contact5] = userInput
- }
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for contact!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for contact!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- default:
- break
- }
-}
-
-//input "","",linkedHashMap
-def input(LinkedHashMap metaData, String name, String type) {
- switch(type) {
- case "capability.lock":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- lockObject = name
- this[lockObject] = new Locks({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class lock!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.lockObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class lock!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.lockObject\n")
- }
- break
- case "capability.alarm":
- break
- case "capability.battery":
- break
- case "capability.beacon":
- break
- case "capability.carbonMonoxideDetector":
- break
- case "capability.colorControl":
- break
- case "capability.contactSensor":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- contactObject = name
- this[contactObject] = new ContactSensors({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class contactSensor!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.contactObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class contactSensor!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.contactObject\n")
- }
- break
- case "capability.doorControl":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- doorControlObject = name
- this[doorControlObject] = new DoorControls({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class door control!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.doorControlObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class door control!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.doorControlObject\n")
- }
- break
- case "capability.energyMeter":
- break
- case "capability.illuminanceMeasurement":
- break
- case "capability.accelerationSensor":
- break
- case "capability.motionSensor":
- break
- case "capability.musicPlayer":
- break
- case "capability.powerMeter":
- break
- case "capability.presenceSensor":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- presenceSensorObject = name
- this[presenceSensorObject] = new PresenceSensors({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class presence sensor!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.presenceSensorObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class presence sensor!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.presenceSensorObject\n")
- }
- break
- case "capability.relativeHumidityMeasurement":
- break
- case "capability.relaySwitch":
- break
- case "capability.sleepSensor":
- break
- case "capability.smokeDetector":
- break
- case "capability.stepSensor":
- break
- case "capability.switch":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- switchObject = name
- this[switchObject] = new Switches({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class switch!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.switchObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class switch!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.switchObject\n")
- }
- break
- case "capability.switchLevel":
- break
- case "capability.temperatureMeasurement":
- break
- case "capability.thermostat":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- thermostatObject = name
- this[thermostatObject] = new Thermostats({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class thermostat!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.thermostatObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class thermostat!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.thermostatObject\n")
- }
- break
- case "capability.valve":
- break
- case "capability.waterSensor":
- break
- case "capability.touchSensor":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- touchSensorObject = name
- this[touchSensorObject] = new NfcTouch({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.touchSensorObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.touchSensorObject\n")
- }
- break
- case "capability.imageCapture":
- break
- case "device.mobilePresence":
- break
- case "device.aeonKeyFob":
- break
- case "mode":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- def userInput = System.console().readLine 'Enter the mode:'
-
- if (modeVariables == 0) {
- mode0 = name
- this[mode0] = userInput
- } else if (modeVariables == 1) {
- mode1 = name
- this[mode1] = userInput
- } else if (modeVariables == 2) {
- mode2 = name
- this[mode2] = userInput
- } else if (modeVariables == 3) {
- mode3 = name
- this[mode3] = userInput
- } else if (modeVariables == 4) {
- mode4 = name
- this[mode4] = userInput
- } else if (modeVariables == 5) {
- mode5 = name
- this[mode5] = userInput
- }
-
- modeVariables=modeVariables+1
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for mode!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for mode!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- case "decimal":
- break
- case "text":
- break
- case "number":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- def userInput = System.console().readLine 'Enter the number:'
-
- if (numberVariables == 0) {
- number0 = name
- this[number0] = userInput
- } else if (numberVariables == 1) {
- number1 = name
- this[number1] = userInput
- } else if (numberVariables == 2) {
- number2 = name
- this[number2] = userInput
- } else if (numberVariables == 3) {
- number3 = name
- this[number3] = userInput
- } else if (numberVariables == 4) {
- number4 = name
- this[number4] = userInput
- } else if (numberVariables == 5) {
- number5 = name
- this[number5] = userInput
- }
-
- numberVariables=numberVariables+1
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for number!\n")
- extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for number!\n")
- extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
- }
- break
- case "time":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- def userInput = System.console().readLine 'Enter the time:'
-
- if (timeVariables == 0) {
- time0 = name
- this[time0] = userInput
- } else if (timeVariables == 1) {
- time1 = name
- this[time1] = userInput
- } else if (timeVariables == 2) {
- time2 = name
- this[time2] = userInput
- } else if (timeVariables == 3) {
- time3 = name
- this[time3] = userInput
- } else if (timeVariables == 4) {
- time4 = name
- this[time4] = userInput
- } else if (timeVariables == 5) {
- time5 = name
- this[time5] = userInput
- }
-
- timeVariables=timeVariables+1
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for time!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for time!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- case "enum":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- def userInput = System.console().readLine 'Enter the enum:'
-
- if (enumVariables == 0) {
- enum0 = name
- this[enum0] = userInput
- } else if (enumVariables == 1) {
- enum1 = name
- this[enum1] = userInput
- } else if (enumVariables == 2) {
- enum2 = name
- this[enum2] = userInput
- } else if (enumVariables == 3) {
- enum3 = name
- this[enum3] = userInput
- } else if (enumVariables == 4) {
- enum4 = name
- this[enum4] = userInput
- } else if (enumVariables == 5) {
- enum5 = name
- this[enum5] = userInput
- }
-
- enumVariables=enumVariables+1
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for enum!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for enum!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- case "bool":
- break
- case "phone":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- def userInput = System.console().readLine 'Enter the phone:'
+//Empty the files
+if (App == "App1") {
+ extractedObjectsApp1.write("")
+ extractedObjectsConstructorApp1.write("")
+} else if (App == "App2") {
+ extractedObjectsApp2.write("")
+ extractedObjectsConstructorApp2.write("")
+}
- if (phoneVariables == 0) {
- phone0 = name
- this[phone0] = userInput
- } else if (phoneVariables == 1) {
- phone1 = name
- this[phone1] = userInput
- } else if (phoneVariables == 2) {
- phone2 = name
- this[phone2] = userInput
- } else if (phoneVariables == 3) {
- phone3 = name
- this[phone3] = userInput
- } else if (phoneVariables == 4) {
- phone4 = name
- this[phone4] = userInput
- } else if (phoneVariables == 5) {
- phone5 = name
- this[phone5] = userInput
- }
- phoneVariables=phoneVariables+1
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for phone!\n")
- extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for phone!\n")
- extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
- }
- break
- case "contact":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- def userInput = System.console().readLine 'Enter the name of the contact:'
-
- if (contactVariables == 0) {
- contact0 = name
- this[contact0] = userInput
- } else if (contactVariables == 1) {
- contact1 = name
- this[contact1] = userInput
- } else if (contactVariables == 2) {
- contact2 = name
- this[contact2] = userInput
- } else if (contactVariables == 3) {
- contact3 = name
- this[contact3] = userInput
- } else if (contactVariables == 4) {
- contact4 = name
- this[contact4] = userInput
- } else if (contactVariables == 5) {
- contact5 = name
- this[contact5] = userInput
- }
- contactVariables=contactVariables+1
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for contact!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for contact!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- default:
- break
- }
+//Global objects
+//Global Object for class Touch Sensor!
+@Field touchSensorObjects = 0
+@Field def touchSensorObject0
+@Field def touchSensorObject1
+@Field def touchSensorObject2
+//Global Object for class switch!
+@Field switchObjects = 0
+@Field def switchObject0
+@Field def switchObject1
+@Field def switchObject2
+//Global Object for class lock!
+@Field lockObjects = 0
+@Field def lockObject0
+@Field def lockObject1
+@Field def lockObject2
+//Global Object for class door control!
+@Field doorControlObjects = 0
+@Field def doorControlObject0
+@Field def doorControlObject1
+@Field def doorControlObject2
+//Global Object for class contact sensor!
+@Field contactObjects = 0
+@Field def contactObject0
+@Field def contactObject1
+@Field def contactObject2
+//Global Object for class presence sensor!
+@Field presenceSensorObjects = 0
+@Field def presenceSensorObject0
+@Field def presenceSensorObject1
+@Field def presenceSensorObject2
+//Global Object for class thermostat!
+@Field thermostatObjects = 0
+@Field def thermostatObject0
+@Field def thermostatObject1
+@Field def thermostatObject2
+//Global Object for class music player!
+@Field musicPlayerObjects = 0
+@Field def musicPlayerObject0
+@Field def musicPlayerObject1
+@Field def musicPlayerObject2
+//Global Object for class music player!
+@Field aeonKeyFobObjects = 0
+@Field def aeonKeyFobObject0
+@Field def aeonKeyFobObject1
+@Field def aeonKeyFobObject2
+
+
+//Global variables
+//For mode
+@Field modeVariables = 0
+@Field mode0
+@Field mode1
+@Field mode2
+@Field mode3
+@Field mode4
+@Field mode5
+//For number
+@Field numberVariables = 0
+@Field number0
+@Field number1
+@Field number2
+@Field number3
+@Field number4
+@Field number5
+//For time
+@Field timeVariables = 0
+@Field time0
+@Field time1
+@Field time2
+@Field time3
+@Field time4
+@Field time5
+//For enum
+@Field enumVariables = 0
+@Field enum0
+@Field enum1
+@Field enum2
+@Field enum3
+@Field enum4
+@Field enum5
+//For phone
+@Field phoneVariables = 0
+@Field phone0
+@Field phone1
+@Field phone2
+@Field phone3
+@Field phone4
+@Field phone5
+//For contact
+@Field contactVariables = 0
+@Field contact0
+@Field contact1
+@Field contact2
+@Field contact3
+@Field contact4
+@Field contact5
+
+
+
+/////Input Methods/////
+//input "",""
+def input(String name, String type) {
+ LinkedHashMap metaData = []
+ metaData.put('name',name)
+ metaData.put('type',type)
+ input(metaData)
+}
+
+//input "","",linkedHashMap
+def input(LinkedHashMap metaData, String name, String type) {
+ metaData.put('name',name)
+ metaData.put('type',type)
+ input(metaData)
}
+
//input linkedHashMap
def input(LinkedHashMap metaData) {
+ if (metaData.containsKey('title')) {
+ println metaData['title']
+ }
+ if (metaData.containsKey('options')) {
+ println "Options: "+metaData['options']
+ }
switch(metaData['type']) {
case "capability.lock":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
+ if (lockObjects == 0) {
+ lockObject0 = metaData['name']
+ this[lockObject0] = new Locks({}, 1)
+ } else if (lockObjects == 1) {
+ lockObject1 = metaData['name']
+ this[lockObject1] = new Locks({}, 1)
+ } else if (lockObjects == 2) {
+ lockObject2 = metaData['name']
+ this[lockObject2] = new Locks({}, 1)
}
- lockObject = metaData['name']
- this[lockObject] = new Locks({}, 1)
+
+ lockObjects=lockObjects+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Object for class lock!\n")
extractedObjectsApp1.append("def "+metaData['name']+"\n")
case "capability.colorControl":
break
case "capability.contactSensor":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
+ if (contactObjects == 0) {
+ contactObject0 = metaData['name']
+ this[contactObject0] = new ContactSensors({}, 1)
+ } else if (contactObjects == 1) {
+ contactObject1 = metaData['name']
+ this[contactObject1] = new ContactSensors({}, 1)
+ } else if (contactObjects == 2) {
+ contactObject2 = metaData['name']
+ this[contactObject2] = new ContactSensors({}, 1)
}
- contactObject = metaData['name']
- this[contactObject] = new ContactSensors({}, 1)
+
+ contactObjects=contactObjects+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Object for class contactSensor!\n")
extractedObjectsApp1.append("def "+metaData['name']+"\n")
}
break
case "capability.doorControl":
- doorControlObject = metaData['name']
- this[doorControlObject] = new DoorControls({}, 1)
+ if (doorControlObjects == 0) {
+ doorControlObject0 = metaData['name']
+ this[doorControlObject0] = new DoorControls({}, 1)
+ } else if (doorControlObjects == 1) {
+ doorControlObject1 = metaData['name']
+ this[doorControlObject1] = new DoorControls({}, 1)
+ } else if (doorControlObjects == 2) {
+ doorControlObject2 = metaData['name']
+ this[doorControlObject2] = new DoorControls({}, 1)
+ }
+
+ doorControlObjects=doorControlObjects+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Object for class door control!\n")
extractedObjectsApp1.append("def "+metaData['name']+"\n")
case "capability.motionSensor":
break
case "capability.musicPlayer":
+ if (musicPlayerObjects == 0) {
+ musicPlayerObject0 = metaData['name']
+ this[musicPlayerObject0] = new MusicPlayers({}, 1)
+ } else if (musicPlayerObjects == 1) {
+ musicPlayerObject1 = metaData['name']
+ this[musicPlayerObject1] = new MusicPlayers({}, 1)
+ } else if (musicPlayerObjects == 2) {
+ musicPlayerObject2 = metaData['name']
+ this[musicPlayerObject2] = new MusicPlayers({}, 1)
+ }
+
+ musicPlayerObjects=musicPlayerObjects+1
+
+ settings.put(metaData['name'], metaData['name'])
+
+ if (App == "App1") {
+ extractedObjectsApp1.append("//Object for class music player!\n")
+ extractedObjectsApp1.append("def "+metaData['name']+"\n")
+ extractedObjectsConstructorApp1.append(metaData['name']+" = obj.musicPlayerObject\n")
+ } else {
+ extractedObjectsApp2.append("//Object for class music player!\n")
+ extractedObjectsApp2.append("def "+metaData['name']+"\n")
+ extractedObjectsConstructorApp2.append(metaData['name']+" = obj.musicPlayerObject\n")
+ }
break
case "capability.powerMeter":
break
case "capability.presenceSensor":
- if (metaData.containsKey('title')) {
- println metaData['title']
+ if (presenceSensorObjects == 0) {
+ presenceSensorObject0 = metaData['name']
+ this[presenceSensorObject0] = new PresenceSensors({}, 1)
+ } else if (presenceSensorObjects == 1) {
+ presenceSensorObject1 = metaData['name']
+ this[presenceSensorObject1] = new PresenceSensors({}, 1)
+ } else if (presenceSensorObjects == 2) {
+ presenceSensorObject2 = metaData['name']
+ this[presenceSensorObject2] = new PresenceSensors({}, 1)
}
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- presenceSensorObject = metaData['name']
- this[presenceSensorObject] = new PresenceSensors({}, 1)
+
+ presenceSensorObjects=presenceSensorObjects+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Object for class presence sensor!\n")
extractedObjectsApp1.append("def "+metaData['name']+"\n")
case "capability.stepSensor":
break
case "capability.switch":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- switchObject = metaData['name']
- this[switchObject] = new Switches({}, 1)
+ if (switchObjects == 0) {
+ switchObject0 = metaData['name']
+ this[switchObject0] = new Switches({}, 1)
+ } else if (switchObjects == 1) {
+ switchObject1 = metaData['name']
+ this[switchObject1] = new Switches({}, 1)
+ } else if (switchObjects == 2) {
+ switchObject2 = metaData['name']
+ this[switchObject2] = new Switches({}, 1)
+ }
+
+ switchObjects=switchObjects+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Object for class switch!\n")
extractedObjectsApp1.append("def "+metaData['name']+"\n")
case "capability.temperatureMeasurement":
break
case "capability.thermostat":
- if (metaData.containsKey('title')) {
- println metaData['title']
+ if (thermostatObjects == 0) {
+ thermostatObject0 = metaData['name']
+ this[thermostatObject0] = new Thermostats({}, 1)
+ } else if (thermostatObjects == 1) {
+ thermostatObject1 = metaData['name']
+ this[thermostatObject1] = new Thermostats({}, 1)
+ } else if (thermostatObjects == 2) {
+ thermostatObject2 = metaData['name']
+ this[thermostatObject2] = new Thermostats({}, 1)
}
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- thermostatObject = metaData['name']
- this[thermostatObject] = new Thermostats({}, 1)
+
+ thermostatObjects=thermostatObjects+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Object for class thermostat!\n")
extractedObjectsApp1.append("def "+metaData['name']+"\n")
case "capability.waterSensor":
break
case "capability.touchSensor":
- if (metaData.containsKey('title')) {
- println metaData['title']
+ if (touchSensorObjects == 0) {
+ touchSensorObject0 = metaData['name']
+ this[touchSensorObject0] = new NfcTouch({}, 1)
+ } else if (touchSensorObjects == 1) {
+ touchSensorObject1 = metaData['name']
+ this[touchSensorObject1] = new NfcTouch({}, 1)
+ } else if (touchSensorObjects == 2) {
+ touchSensorObject2 = metaData['name']
+ this[touchSensorObject2] = new NfcTouch({}, 1)
}
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- touchSensorObject = metaData['name']
- this[touchSensorObject] = new NfcTouch({}, 1)
+
+ touchSensorObjects=touchSensorObjects+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
extractedObjectsApp1.append("def "+metaData['name']+"\n")
case "device.mobilePresence":
break
case "device.aeonKeyFob":
- break
- case "mode":
- if (metaData.containsKey('title')) {
- println metaData['title']
+ if (aeonKeyFobObjects == 0) {
+ aeonKeyFobObject0 = metaData['name']
+ this[aeonKeyFobObject0] = new AeonKeyFobs({}, 1)
+ } else if (aeonKeyFobObjects == 1) {
+ aeonKeyFobObject1 = metaData['name']
+ this[aeonKeyFobObject1] = new AeonKeyFobs({}, 1)
+ } else if (aeonKeyFobObjects == 2) {
+ aeonKeyFobObject2 = metaData['name']
+ this[aeonKeyFobObject2] = new AeonKeyFobs({}, 1)
}
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
+
+ aeonKeyFobObjects=aeonKeyFobObjects+1
+
+ settings.put(metaData['name'], metaData['name'])
+
+ if (App == "App1") {
+ extractedObjectsApp1.append("//Object for class aeon key fob!\n")
+ extractedObjectsApp1.append("def "+metaData['name']+"\n")
+ extractedObjectsConstructorApp1.append(metaData['name']+" = obj.aeonKeyFobObject\n")
+ } else {
+ extractedObjectsApp2.append("//Object for class aeon key fob!\n")
+ extractedObjectsApp2.append("def "+metaData['name']+"\n")
+ extractedObjectsConstructorApp2.append(metaData['name']+" = obj.aeonKeyFobObject\n")
}
+ break
+ case "mode":
def userInput = System.console().readLine 'Enter the mode:'
if (modeVariables == 0) {
this[mode5] = userInput
}
+ modeVariables=modeVariables+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Global variable for mode!\n")
extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
case "text":
break
case "number":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
def userInput = System.console().readLine 'Enter the number:'
if (numberVariables == 0) {
this[number5] = userInput
}
+ numberVariables=numberVariables+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Global variable for number!\n")
extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
}
break
case "time":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
def userInput = System.console().readLine 'Enter the time:'
if (timeVariables == 0) {
this[time5] = userInput
}
+ timeVariables=timeVariables+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Global variable for time!\n")
extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
}
break
case "enum":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
def userInput = System.console().readLine 'Enter the enum:'
if (enumVariables == 0) {
this[enum5] = userInput
}
+ enumVariables=enumVariables+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Global variable for enum!\n")
extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
case "bool":
break
case "phone":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
def userInput = System.console().readLine 'Enter the phone:'
if (phoneVariables == 0) {
this[phone5] = userInput
}
+ phoneVariables=phoneVariables+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Global variable for phone!\n")
extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
}
break
case "contact":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
def userInput = System.console().readLine 'Enter the metaData['name'] of the contact:'
if (contactVariables == 0) {
this[contact5] = userInput
}
+ contactVariables=contactVariables+1
+
+ settings.put(metaData['name'], metaData['name'])
+
if (App == "App1") {
extractedObjectsApp1.append("//Global variable for contact!\n")
extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
def preferences(Closure inputData) {
find(inputData) //Run the closure to extract pages/sections/inputMethods
+ if (App == "App1") {
+ extractedObjectsConstructorApp1.append("//Global variable for settings!\n")
+ extractedObjectsConstructorApp1.append("settings = $settings\n")
+ } else {
+ extractedObjectsConstructorApp2.append("//Global variable for settings!\n")
+ extractedObjectsConstructorApp2.append("settings = $settings\n")
+ }
}
def page(LinkedHashMap metaData, Closure inputData) {
find(inputData) //Run the closure to extract inputMethods
}
+def section(Closure inputData) {
+ find(inputData) //Run the closure to extract inputMethods
+}
+
def section(LinkedHashMap metaData, Closure inputData) {
find(inputData) //Run the closure to extract inputMethods
}
-/////
+////////////////
definition(
- name: "Good Night House",
- namespace: "charette.joseph@gmail.com",
- author: "Joseph Charette",
- description: "Some on, some off with delay for bedtime, Lock The Doors",
- category: "Convenience",
- iconUrl: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience.png",
- iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience@2x.png"
-/**
-* Borrowed code from
-* Walk Gentle Into That Good Night
-*
-* Author: oneaccttorulethehouse@gmail.com
-* Date: 2014-02-01
- */
- )
+ name: "NFC Tag Toggle",
+ namespace: "smartthings",
+ author: "SmartThings",
+ description: "Allows toggling of a switch, lock, or garage door based on an NFC Tag touch event",
+ category: "SmartThings Internal",
+ iconUrl: "https://s3.amazonaws.com/smartapp-icons/Developers/nfc-tag-executor.png",
+ iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Developers/nfc-tag-executor@2x.png",
+ iconX3Url: "https://s3.amazonaws.com/smartapp-icons/Developers/nfc-tag-executor@2x.png")
+
+
preferences {
- section("When I touch the app turn these lights off…"){
- input "switchesoff", "capability.switch", multiple: true, required:true
- }
- section("When I touch the app turn these lights on…"){
- input "switcheson", "capability.switch", multiple: true, required:false
- }
- section("Lock theses locks...") {
- input "lock1","capability.lock", multiple: true
+ page(name: "pageOne", title: "Device selection", uninstall: true, nextPage: "pageTwo") {
+ section("Select an NFC tag") {
+ input "tag", "capability.touchSensor", title: "NFC Tag"
+ }
+ section("Select devices to control") {
+ input "switch1", "capability.switch", title: "Light or switch", required: false, multiple: true
+ input "lock", "capability.lock", title: "Lock", required: false, multiple: true
+ input "garageDoor", "capability.doorControl", title: "Garage door controller", required: false, multiple: true
+ }
}
- section("And change to this mode...") {
- input "newMode", "mode", title: "Mode?"
- }
- section("After so many seconds (optional)"){
- input "waitfor", "number", title: "Off after (default 120)", required: true
- }
+
+ page(name: "pageTwo", title: "Master devices", install: true, uninstall: true)
}
+def pageTwo() {
+ dynamicPage(name: "pageTwo") {
+ section("If set, the state of these devices will be toggled each time the tag is touched, " +
+ "e.g. a light that's on will be turned off and one that's off will be turned on, " +
+ "other devices of the same type will be set to the same state as their master device. " +
+ "If no master is designated then the majority of devices of the same type will be used " +
+ "to determine whether to turn on or off the devices.") {
+
+ if (switch1 || masterSwitch) {
+ input "masterSwitch", "enum", title: "Master switch", options: switch1.collect{[(it.id): it.displayName]}, required: false
+ }
+ if (lock || masterLock) {
+ input "masterLock", "enum", title: "Master lock", options: lock.collect{[(it.id): it.displayName]}, required: false
+ }
+ if (garageDoor || masterDoor) {
+ input "masterDoor", "enum", title: "Master door", options: garageDoor.collect{[(it.id): it.displayName]}, required: false
+ }
+ }
+ section([mobileOnly:true]) {
+ label title: "Assign a name", required: false
+ mode title: "Set for specific mode(s)", required: false
+ }
+ }
+}
-def installed()
-{
+def installed() {
log.debug "Installed with settings: ${settings}"
- log.debug "Current mode = ${location.mode}"
- subscribe(app, appTouch)
-}
+ initialize()
+}
-def updated()
-{
+def updated() {
log.debug "Updated with settings: ${settings}"
- log.debug "Current mode = ${location.mode}"
+
unsubscribe()
- subscribe(app, appTouch)
+ initialize()
+}
+
+def initialize() {
+ subscribe tag, "nfcTouch", touchHandler
+ subscribe app, touchHandler
+}
+
+private currentStatus(devices, master, attribute) {
+ log.trace "currentStatus($devices, $master, $attribute)"
+ def result = null
+ if (master) {
+ result = devices.find{it.id == master}?.currentValue(attribute)
+ }
+ else {
+ def map = [:]
+ devices.each {
+ def value = it.currentValue(attribute)
+ map[value] = (map[value] ?: 0) + 1
+ log.trace "$it.displayName: $value"
+ }
+ log.trace map
+ result = map.collect{it}.sort{it.value}[-1].key
+ }
+ log.debug "$attribute = $result"
+ result
}
-def appTouch(evt) {
- log.debug "changeMode, location.mode = $location.mode, newMode = $newMode, location.modes = $location.modes"
- if (location.mode != newMode) {
- setLocationMode(newMode)
- log.debug "Changed the mode to '${newMode}'"
- } else {
- log.debug "New mode is the same as the old mode, leaving it be"
- }
- log.debug "appTouch: $evt"
- lock1.lock()
- switcheson.on()
- def delay = (waitfor != null && waitfor != "") ? waitfor * 1000 : 120000
- switchesoff.off(delay: delay)
+def touchHandler(evt) {
+ log.trace "touchHandler($evt.descriptionText)"
+ if (switch1) {
+ def status = currentStatus(switch1, masterSwitch, "switch")
+ switch1.each {
+ if (status == "on") {
+ it.off()
+ }
+ else {
+ it.on()
+ }
+ }
+ }
+
+ if (lock) {
+ def status = currentStatus(lock, masterLock, "lock")
+ lock.each {
+ if (status == "locked") {
+ lock.unlock()
+ }
+ else {
+ lock.lock()
+ }
+ }
+ }
+
+ if (garageDoor) {
+ def status = currentStatus(garageDoor, masterDoor, "status")
+ garageDoor.each {
+ if (status == "open") {
+ it.close()
+ }
+ else {
+ it.open()
+ }
+ }
+ }
}