Merge branch 'master' of ssh://plrg.eecs.uci.edu/home/git/smartthings-infrastructure
authoramiraj <amiraj.95@uci.edu>
Mon, 29 Jul 2019 21:11:59 +0000 (14:11 -0700)
committeramiraj <amiraj.95@uci.edu>
Mon, 29 Jul 2019 21:11:59 +0000 (14:11 -0700)
52 files changed:
Battery/Batteries.groovy
CarbonMonoxideDetector/CarbonMonoxideDetectors.groovy
ColorControl/ColorControls.groovy
DoorControl/DoorControls.groovy
EnergyMeter/EnergyMeters.groovy
Extractor/Extractor.groovy
Extractor/ExtractorScript.py
GlobalVariables/GlobalVariablesBothApps.groovy
Methods/eventHandler.groovy
ModelCheck.py
MusicPlayer/MusicPlayers.groovy
Runner.py
Switch/Switches.groovy
Thermostat/Thermostats.groovy
appLists/device-interaction/acfanheaterSwitchesAppList [new file with mode: 0644]
appLists/device-interaction/alarmsAppList [new file with mode: 0644]
appLists/device-interaction/cameraSwitchesAppList [new file with mode: 0644]
appLists/device-interaction/camerasAppList [new file with mode: 0644]
appLists/device-interaction/hueLightsAppList [new file with mode: 0644]
appLists/device-interaction/lightSwitchesAppList [new file with mode: 0644]
appLists/device-interaction/locksAppList [new file with mode: 0644]
appLists/device-interaction/musicPlayersAppList [new file with mode: 0644]
appLists/device-interaction/nonHueLightsAppList [new file with mode: 0644]
appLists/device-interaction/relaySwitchesAppList [new file with mode: 0644]
appLists/device-interaction/speechesAppList [new file with mode: 0644]
appLists/device-interaction/switchesAppList [new file with mode: 0644]
appLists/device-interaction/thermostatsAppList [new file with mode: 0644]
appLists/device-interaction/valvesAppList [new file with mode: 0644]
appLists/device-interaction/ventfanSwitchesAppList [new file with mode: 0644]
appLists/global-state-variable-interaction/globalstatevariableAppList [new file with mode: 0644]
appLists/physical-interaction/illuminancesensorAppList [new file with mode: 0644]
appLists/physical-interaction/lightAppList [new file with mode: 0644]
appLists/physical-interaction/motionAppList [new file with mode: 0644]
appLists/physical-interaction/motionsensorAppList [new file with mode: 0644]
appLists/physical-interaction/soundAppList [new file with mode: 0644]
appLists/physical-interaction/soundsensorAppList [new file with mode: 0644]
appLists/physical-interaction/watersensorAppList [new file with mode: 0644]
appLists/physical-interaction/watervalveAppList [new file with mode: 0644]
eventSimulator/accelerationActiveEvent.groovy
eventSimulator/accelerationInactiveEvent.groovy
eventSimulator/beaconLeftEvent.groovy
eventSimulator/beaconPresentEvent.groovy
eventSimulator/carbonMonoxideClearEvent.groovy
eventSimulator/carbonMonoxideDetectedEvent.groovy
eventSimulator/carbonMonoxideTestedEvent.groovy
eventSimulator/colorChangedEvent.groovy
eventSimulator/hueChangedEvent.groovy
eventSimulator/saturationChangedEvent.groovy
eventSimulator/smokeCarbonMonoxideClearEvent.groovy
eventSimulator/smokeCarbonMonoxideDetectedEvent.groovy
eventSimulator/smokeCarbonMonoxideTestedEvent.groovy
run.sh

index 8aca5e2a66c50bee42ff20a8ce466299101a855b..4664fb9f62b761553c05fb4bd7ea736781a8b77c 100644 (file)
@@ -22,6 +22,9 @@ public class Batteries {
                this.sendEvent = sendEvent              
                this.deviceNumbers = deviceNumbers
                this.batteries = []
+               
+               def init = Verify.getIntFromList(30, 50, 70)
+               this.battery = init
 
                def init = Verify.getIntFromList(30, 50, 70)
                this.battery = init
index 2eb9d745bb74b47379d8dc3fc5016d2607991320..d61bc59b8a34ee110c35d31a36d390b08f1085ce 100644 (file)
@@ -35,7 +35,11 @@ public class CarbonMonoxideDetectors {
                        this.carbonMonoxide = "tested"
                        this.carbonMonoxideLatestValue = "tested"               
                }
+<<<<<<< HEAD
                carbonMonoxideDetectors.add(new CarbonMonoxideDetector(id, label, displayName, this.currentCarbonMonoxideValue, this.carbonMonoxideLatestValue))
+=======
+               carbonMonoxideDetectors.add(new CarbonMonoxideDetector(id, label, displayName, this.carbonMonoxide, this.carbonMonoxideLatestValue))
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
        }
 
        //By Model Checker
index d96b978d774579c4f7efcb2519d86d8b4adb9985..3538447ce14bad689fd59d4e68a8e752d8d49219 100644 (file)
@@ -23,6 +23,19 @@ public class ColorControls {
                this.sendEvent = sendEvent
                this.deviceNumbers = deviceNumbers
                this.colorControls = []
+               
+               def initHue = Verify.getIntFromList(30, 50, 70)
+               this.hue = initHue
+               def initSat = Verify.getIntFromList(40, 50, 60)
+               this.saturation = initSat
+               def init = Verify.getInt(0,2)
+               if (init == 0) {
+                       this.color = "red"
+               } else if (init == 1) {
+                       this.color = "green"
+               } else {
+                       this.color = "blue"
+               }
 
                def initHue = Verify.getIntFromList(30, 50, 70)
                this.hue = initHue
index 25818009adfd0ba480940322ed19e9fc60713c61..e8e067a5e7966060e586e2b6a65f07374fc2f72b 100644 (file)
@@ -23,7 +23,11 @@ public class DoorControls {
                this.timers = new SimulatedTimer()
                this.deviceNumbers = deviceNumbers
                this.doorControls = []
+<<<<<<< HEAD
                
+=======
+
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
                def init = Verify.getBoolean()
                if (init) {
                        this.doorState = "closed"
index a3f2b8dff1409b68958ad937d738dc69e3099585..85544953c2c05aa20996d6e0aee4bf89fef1ec48 100644 (file)
@@ -22,10 +22,17 @@ public class EnergyMeters {
                this.sendEvent = sendEvent              
                this.deviceNumbers = deviceNumbers
                this.energyMeters = []
+<<<<<<< HEAD
 
                def init = Verify.getIntFromList(30, 50, 70)
                this.energy = init
 
+=======
+               
+               def init = Verify.getIntFromList(30, 50, 70)
+               this.energy = init
+               
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
                energyMeters.add(new EnergyMeter(id, label, displayName, this.energy))
        }
 
index 309223d3547eaa7cb8ba1412763e7777a3301ae3..e8ccbdae45c7ca71197afafc92cdbf395b6cfee4 100644 (file)
@@ -1365,6 +1365,13 @@ def input(LinkedHashMap metaData) {
                        }
                        break
                case "enum":
+<<<<<<< HEAD
+=======
+                       def randomVariable = Math.abs(new Random().nextInt() % 2)
+                       def modes = ["Yes", "No"]
+                       //def userInput = modes[randomVariable]
+                       //def modes = metaData['options']
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
                        if (metaData['options'] != null)
                                modes = metaData['options']
                        else // If it is not named 'options' then it is captured as 'metadata'
index 5bd867aa2ad37cce06b06b4f020de1428144f8ad..27abbc1044d509823a7ce91f2316f8aa99ae41f6 100644 (file)
@@ -419,8 +419,12 @@ def CheckIfOnlyTouchEvents():
                        onlyTouchEvents = False
        if onlyTouchEvents is True and app1Subscribe is True and app2Subscribe is True:
                raise Exception("\n\nDirect-Direct Interaction detected: we are skipping this pair...\n\n")
+<<<<<<< HEAD
 
 
+=======
+               
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
 #Extract objects to call functions from App1
 F1 = open("Extractor/App1/App1.groovy", "r")
 extractedFunctionsApp1 = open("Extractor/App1/extractedFunctionsApp1.groovy", "w+")
@@ -479,5 +483,10 @@ extractorFile.close()
 Extractor.close()
 F2.close()
 os.system("groovy -classpath lib/jpf.jar Extractor/extractorFile.groovy")
+<<<<<<< HEAD
+=======
+
+
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
 
 
index 998778b9380bb5611888df21ca3941a744de4056..bb45ddf6d395e20a1b966029c646e66376c102ea 100644 (file)
@@ -8,8 +8,11 @@
 @Field def appObject = new Touched(sendEvent, 0)
 //Create a global list for events
 //@Field def evt = []
+<<<<<<< HEAD
 //Global Object for class AtomicState!
 @Field def atomicState = new AtomicState()
+=======
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
 //Global Object for class Touch Sensor!
 @Field def touchSensorObject = new NfcTouch(sendEvent, 1)
 //Global Object for class switch!
index b838418bf64c12cbba30b99e4b4804d8fa919686..1a3dd011584ff87fad2646a502291f22ea1908d2 100644 (file)
@@ -13,6 +13,10 @@ def eventHandler(LinkedHashMap eventDataMap) {
        for (int i = 0;i < app2.eventList.size();i++) {
                if (app2.eventList[i] == name) {
                        def event = new Event(value, name, deviceId, descriptionText, displayed, linkText, linkText, isStateChange, unit, data)
+<<<<<<< HEAD
+=======
+                       //evt.add(event)
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
                        app2.functionList[i](event)
                }
        }
@@ -20,6 +24,10 @@ def eventHandler(LinkedHashMap eventDataMap) {
        for (int i = 0;i < app1.eventList.size();i++) {
                if (app1.eventList[i] == name) {
                        def event = new Event(value, name, deviceId, descriptionText, displayed, linkText, linkText, isStateChange, unit, data)
+<<<<<<< HEAD
+=======
+                       //evt.add(event)
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
                        app1.functionList[i](event)
                }
        }
index d00c6991a2c2c7a710d2f2f5a6106a99bf647b02..e3c6ff910e710a9975f5a8065d51ce8042728aee 100644 (file)
@@ -117,3 +117,11 @@ writeLogList.close()
 
 
 
+<<<<<<< HEAD
+=======
+
+
+
+
+
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index 63a213b9852f6b263e997b76446b6cfa86520158..3e5f4f31ecedf28be72c0fffe6604ca2ab23c459 100644 (file)
@@ -27,6 +27,35 @@ public class MusicPlayers {
                this.sendEvent = sendEvent
                this.deviceNumbers = deviceNumbers
                this.musicPlayers = []
+               
+               def initLevel = Verify.getIntFromList(10, 20, 30)
+               this.level = initLevel
+               def initTrack = Verify.getIntFromList(1, 2, 3)
+               this.trackNumber = initTrack
+               def initMute = Verify.getBoolean()
+               if (initMute) {
+                       this.mute = "unmuted"
+               } else {
+                       this.mute = "mute"
+               }
+               def initStatus = Verify.getBoolean()
+               if (initStatus) {
+                       this.status = "pause"
+               } else {
+                       this.status = "play"
+               }
+               def initTrackData = Verify.getBoolean()
+               if (initTrackData) {
+                       this.trackData = "someTrack"
+               } else {
+                       this.trackData = "someOtherTrack"
+               }
+               def initTrackDesc = Verify.getBoolean()
+               if (initTrackDesc) {
+                       this.trackDescription = "someDescriptions"
+               } else {
+                       this.trackDescription = "someOtherDescriptions"
+               }
 
                def initLevel = Verify.getIntFromList(10, 20, 30)
                this.level = initLevel
index d72844dbe2d2be08adace65a80fcfab232280238..5d3e101a08b25ee5537ad8ab89c4a9a387ac5c9d 100644 (file)
--- a/Runner.py
+++ b/Runner.py
@@ -303,8 +303,13 @@ Out.write("if (installOrder) {\n")
 Out.write("\tapp1.installed()\n")
 Out.write("\tapp2.installed()\n")
 Out.write("} else {\n")
+<<<<<<< HEAD
 Out.write("\tapp2.installed()\n")
 Out.write("\tapp1.installed()\n")
+=======
+Out.write("\tapp1.installed()\n")
+Out.write("\tapp2.installed()\n")
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
 Out.write("}\n\n")
 for line in eventSimulator:
        Out.write(line)
index 5a4ef48e77bd6bc5b51d0de6b2bbf27e0c082d38..d396b900d05ca2020462c3ec5b1ccdb9b1b171b4 100644 (file)
@@ -25,6 +25,19 @@ public class Switches {
                this.timers = new SimulatedTimer()
                this.deviceNumbers = deviceNumbers
                this.switches = []
+               
+               def initLevel = Verify.getIntFromList(30, 50, 70)
+               this.currentLevel = initLevel
+               def init = Verify.getBoolean()
+               if (init) {
+                       this.switchState = "off"
+                       this.currentSwitch = "off"
+                       this.switchLatestValue = "off"
+               } else {
+                       this.switchState = "on"
+                       this.currentSwitch = "on"
+                       this.switchLatestValue = "on"
+               }
 
                def initLevel = Verify.getIntFromList(30, 50, 70)
                this.currentLevel = initLevel
index 19f5d6f696ef3f2c486412a8e9c97be7c3430045..d77af21e2a2d2cfe8095c53092df97abd594e7cb 100644 (file)
@@ -50,7 +50,11 @@ public class Thermostats{
                this.heatingSetpoint = initHeatingSetpoint
                
                def initThermostatSetpoint = Verify.getIntFromList(50, 60, 70)
+<<<<<<< HEAD
                this.thermostatSetpoint = initThermostatSetpoint
+=======
+               this.currentHeatingSetpoint = initThermostatSetpoint
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
                
                def initFanMode = Verify.getInt(0,4)
                if (initFanMode == 0) {
diff --git a/appLists/device-interaction/acfanheaterSwitchesAppList b/appLists/device-interaction/acfanheaterSwitchesAppList
new file mode 100644 (file)
index 0000000..bcb0fdd
--- /dev/null
@@ -0,0 +1,3 @@
+its-too-cold.groovy
+its-too-hot.groovy
+virtual-thermostat.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/alarmsAppList b/appLists/device-interaction/alarmsAppList
new file mode 100644 (file)
index 0000000..51487f7
--- /dev/null
@@ -0,0 +1,4 @@
+lock-it-at-a-specific-time.groovy
+#lock-it-when-i-leave.groovy
+#make-it-so.groovy
+nfc-tag-toggle.groovy
diff --git a/appLists/device-interaction/cameraSwitchesAppList b/appLists/device-interaction/cameraSwitchesAppList
new file mode 100644 (file)
index 0000000..26b4300
--- /dev/null
@@ -0,0 +1,2 @@
+camera-power-scheduler.groovy
+cameras-on-when-im-away.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/camerasAppList b/appLists/device-interaction/camerasAppList
new file mode 100644 (file)
index 0000000..b2376c2
--- /dev/null
@@ -0,0 +1,3 @@
+foscam-connect.groovy
+opent2t-smartapp-test.groovy
+photo-burst-when.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/hueLightsAppList b/appLists/device-interaction/hueLightsAppList
new file mode 100644 (file)
index 0000000..6f94562
--- /dev/null
@@ -0,0 +1,13 @@
+03-sms-to-hue.groovy
+door-state-to-color-light-hue-bulb.groovy
+hue-minimote.groovy
+hue-mood-lighting.groovy
+jenkins-notifier.groovy
+notify-me-with-hue.groovy
+step-notifier.groovy
+tweet-to-hue.groovy
+BetterLaundryMonitor.groovy
+Hue Party Mode.groovy
+mini-hue-controller.groovy
+hue-lights-and-groups-and-scenes-oh-my.groovy
+loft.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/lightSwitchesAppList b/appLists/device-interaction/lightSwitchesAppList
new file mode 100644 (file)
index 0000000..11cab3f
--- /dev/null
@@ -0,0 +1,32 @@
+brighten-dark-places.groovy
+brighten-my-path.groovy
+darken-behind-me.groovy
+forgiving-security.groovy
+good-night-house.groovy
+hall-light-welcome-home.groovy
+hue-minimote.groovy
+laundry-monitor.groovy
+let-there-be-dark.groovy
+let-there-be-light.groovy
+Light_Rule.groovy
+light-follows-me.groovy
+lighting-director.groovy
+lights-off-with-no-motion-and-presence.groovy
+light-up-the-night.groovy
+mood-cube.groovy
+my-light-toggle.groovy
+smart-light-timer-x-minutes-unless-already-on.groovy
+smart-nightlight.groovy
+smart-security.groovy
+step-notifier.groovy
+turn-on-at-sunset.groovy
+turn-on-before-sunset.groovy
+turn-on-by-zip-code.groovy
+turn-it-on-when-im-here.groovy
+turn-it-on-when-it-opens.groovy
+turn-off-with-motion.groovy
+turn-on-only-if-i-arrive-after-sunset.groovy
+undead-early-warning.groovy
+vacation-lighting-director.groovy
+ecobeeAwayFromHome.groovy
+FireCO2Alarm.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/locksAppList b/appLists/device-interaction/locksAppList
new file mode 100644 (file)
index 0000000..860b434
--- /dev/null
@@ -0,0 +1,21 @@
+#beacon-control.groovy
+enhanced-auto-lock-door.groovy
+good-night-house.groovy
+#initial-state-event-streamer.groovy
+lock-it-at-a-specific-time.groovy
+lock-it-when-i-leave.groovy
+make-it-so.groovy
+nfc-tag-toggle.groovy
+#single-button-controller.groovy
+#smart-auto-lock-unlock.groovy
+unlock-it-when-i-arrive.groovy
+auto-lock-door.smartapp.groovy
+#buffered-event-sender.groovy
+#ecobeeAwayFromHome.groovy
+#FireCO2Alarm.groovy
+#groveStreams.groovy
+#influxdb-logger.groovy
+#initial-state-event-sender.groovy
+#initialstate-smart-app-v1.2.0.groovy
+#NotifyIfLeftUnlocked.groovy
+#unbuffered-event-sender.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/musicPlayersAppList b/appLists/device-interaction/musicPlayersAppList
new file mode 100644 (file)
index 0000000..9c5b6f8
--- /dev/null
@@ -0,0 +1,5 @@
+initial-state-event-streamer.groovy
+buffered-event-sender.groovy
+influxdb-logger.groovy
+initialstate-smart-app-v1.2.0.groovy
+unbuffered-event-sender.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/nonHueLightsAppList b/appLists/device-interaction/nonHueLightsAppList
new file mode 100644 (file)
index 0000000..7d58810
--- /dev/null
@@ -0,0 +1,11 @@
+color-coordinator.groovy
+initial-state-event-streamer.groovy
+medicine-management-contact-sensor.groovy
+medicine-management-temp-motion.groovy
+buffered-event-sender.groovy
+circadian-daylight.groovy
+influxdb-logger.groovy
+initial-state-event-sender.groovy
+initialstate-smart-app-v1.2.0.groovy
+unbuffered-event-sender.groovy
+hue-minimote.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/relaySwitchesAppList b/appLists/device-interaction/relaySwitchesAppList
new file mode 100644 (file)
index 0000000..75b2486
--- /dev/null
@@ -0,0 +1,5 @@
+initial-state-event-streamer.groovy
+buffered-event-sender.groovy
+initial-state-event-sender.groovy
+initialstate-smart-app-v1.2.0.groovy
+unbuffered-event-sender.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/speechesAppList b/appLists/device-interaction/speechesAppList
new file mode 100644 (file)
index 0000000..a232cd6
--- /dev/null
@@ -0,0 +1,3 @@
+BetterLaundryMonitor.groovy
+FireCO2Alarm.groovy
+WindowOrDoorOpen.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/switchesAppList b/appLists/device-interaction/switchesAppList
new file mode 100644 (file)
index 0000000..fdadf64
--- /dev/null
@@ -0,0 +1,24 @@
+01-control-lights-and-locks-with-contact-sensor.groovy
+beacon-control.groovy
+big-turn-off.groovy
+big-turn-on.groovy
+control-switch-with-contact-sensor.groovy
+double-tap.groovy
+energy-saver.groovy
+gentle-wake-up.groovy
+good-night.groovy
+humidity-alert.groovy
+jenkins-notifier.groovy
+make-it-so.groovy
+monitor-on-sense.groovy
+nfc-tag-toggle.groovy
+once-a-day.groovy
+power-allowance.groovy
+rise-and-shine.groovy
+smart-turn-it-on.groovy
+sunrise-sunset.groovy
+the-big-switch.groovy
+turn-it-on-for-5-minutes.groovy
+BetterLaundryMonitor.groovy
+garage-switch.groovy
+loft.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/thermostatsAppList b/appLists/device-interaction/thermostatsAppList
new file mode 100644 (file)
index 0000000..f0a6573
--- /dev/null
@@ -0,0 +1,19 @@
+initial-state-event-streamer.groovy
+keep-me-cozy.groovy
+keep-me-cozy-ii.groovy
+make-it-so.groovy
+talking-alarm-clock.groovy
+thermostat.groovy
+thermostat-auto-off.groovy
+thermostat-mode-director.groovy
+thermostat-window-check.groovy
+whole-house-fan.groovy
+buffered-event-sender.groovy
+FireCO2Alarm.groovy
+groveStreams.groovy
+hvac-auto-off.smartapp.groovy
+influxdb-logger.groovy
+initial-state-event-sender.groovy
+initialstate-smart-app-v1.2.0.groovy
+unbuffered-event-sender.groovy
+WindowOrDoorOpen.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/valvesAppList b/appLists/device-interaction/valvesAppList
new file mode 100644 (file)
index 0000000..2d2ba98
--- /dev/null
@@ -0,0 +1,7 @@
+close-the-valve.groovy
+initial-state-event-streamer.groovy
+buffered-event-sender.groovy
+influxdb-logger.groovy
+initial-state-event-sender.groovy
+initialstate-smart-app-v1.2.0.groovy
+unbuffered-event-sender.groovy
\ No newline at end of file
diff --git a/appLists/device-interaction/ventfanSwitchesAppList b/appLists/device-interaction/ventfanSwitchesAppList
new file mode 100644 (file)
index 0000000..b827486
--- /dev/null
@@ -0,0 +1,3 @@
+auto-humidity-vent.groovy
+smart-home-ventilation.groovy
+whole-house-fan.groovy
\ No newline at end of file
diff --git a/appLists/global-state-variable-interaction/globalstatevariableAppList b/appLists/global-state-variable-interaction/globalstatevariableAppList
new file mode 100644 (file)
index 0000000..04c4d0a
--- /dev/null
@@ -0,0 +1,47 @@
+beacon-control.groovy
+bon-voyage.groovy
+bose-soundtouch-control.groovy
+bright-when-dark-and-or-bright-after-sunset.groovy
+button-controller.groovy
+forgiving-security.groovy
+gentle-wake-up.groovy
+good-night.groovy
+good-night-house.groovy
+greetings-earthling.groovy
+hello-home-phrase-director.groovy
+hue-mood-lighting.groovy
+keep-me-cozy.groovy
+lighting-director.groovy
+make-it-so.groovy
+nobody-home.groovy
+notify-me-with-hue.groovy
+rise-and-shine.groovy
+routine-director.groovy
+scheduled-mode-change.groovy
+simple-sync-trigger.groovy
+single-button-controller.groovy
+smart-alarm.groovy
+smart-home-ventilation.groovy
+smart-security.groovy
+sonos-music-modes.groovy
+speaker-control.groovy
+speaker-mood-music.groovy
+speaker-notify-with-sound.groovy
+speaker-weather-forecast.groovy
+sunrise-sunset.groovy
+switch-activates-home-phrase-or-mode.groovy
+switch-changes-mode.groovy
+talking-alarm-clock.groovy
+thermostat-mode-director.groovy
+vacation-lighting-director.groovy
+working-from-home.groovy
+button-controller-for-hlgs.groovy
+circadian-daylight.groovy
+ecobeeChangeMode.groovy
+ecobeeGenerateWeeklyStats.groovy
+ecobeeManageClimate.groovy
+ecobeeResumeProg.groovy
+MonitorAndSetEcobeeHumidity.groovy
+SmartPresence.groovy
+Switches.groovy
+WorkingFromHome.groovy
\ No newline at end of file
diff --git a/appLists/physical-interaction/illuminancesensorAppList b/appLists/physical-interaction/illuminancesensorAppList
new file mode 100644 (file)
index 0000000..07f39ee
--- /dev/null
@@ -0,0 +1,5 @@
+brighten-dark-places.groovy
+bright-when-dark-and-or-bright-after-sunset.groovy
+lighting-director.groovy
+light-up-the-night.groovy
+smart-nightlight.groovy
\ No newline at end of file
diff --git a/appLists/physical-interaction/lightAppList b/appLists/physical-interaction/lightAppList
new file mode 100644 (file)
index 0000000..e5fac4e
--- /dev/null
@@ -0,0 +1,42 @@
+brighten-dark-places.groovy
+brighten-my-path.groovy
+darken-behind-me.groovy
+forgiving-security.groovy
+good-night-house.groovy
+hall-light-welcome-home.groovy
+hue-minimote.groovy
+laundry-monitor.groovy
+let-there-be-dark.groovy
+let-there-be-light.groovy
+Light_Rule.groovy
+light-follows-me.groovy
+lighting-director.groovy
+lights-off-with-no-motion-and-presence.groovy
+light-up-the-night.groovy
+mood-cube.groovy
+my-light-toggle.groovy
+smart-light-timer-x-minutes-unless-already-on.groovy
+smart-nightlight.groovy
+smart-security.groovy
+step-notifier.groovy
+turn-on-at-sunset.groovy
+turn-on-before-sunset.groovy
+turn-on-by-zip-code.groovy
+turn-it-on-when-im-here.groovy
+turn-it-on-when-it-opens.groovy
+turn-off-with-motion.groovy
+turn-on-only-if-i-arrive-after-sunset.groovy
+undead-early-warning.groovy
+vacation-lighting-director.groovy
+ecobeeAwayFromHome.groovy
+FireCO2Alarm.groovy
+bright-when-dark-and-or-bright-after-sunset.groovy
+03-sms-to-hue.groovy
+color-coordinator.groovy
+door-state-to-color-light-hue-bulb.groovy
+hue-mood-lighting.groovy
+medicine-management-contact-sensor.groovy
+medicine-management-temp-motion.groovy
+notify-me-with-hue.groovy
+tweet-to-hue.groovy
+gentle-wake-up.groovy
\ No newline at end of file
diff --git a/appLists/physical-interaction/motionAppList b/appLists/physical-interaction/motionAppList
new file mode 100644 (file)
index 0000000..149e456
--- /dev/null
@@ -0,0 +1,2 @@
+coffee-after-shower.groovy
+neato-connect.groovy
\ No newline at end of file
diff --git a/appLists/physical-interaction/motionsensorAppList b/appLists/physical-interaction/motionsensorAppList
new file mode 100644 (file)
index 0000000..1b8ca82
--- /dev/null
@@ -0,0 +1,37 @@
+bose-soundtouch-control.groovy
+brighten-my-path.groovy
+bright-when-dark-and-or-bright-after-sunset.groovy
+curling-iron.groovy
+darken-behind-me.groovy
+elder-care-daily-routine.groovy
+elder-care-slip-fall.groovy
+forgiving-security.groovy
+good-night.groovy
+hue-mood-lighting.groovy
+light-follows-me.groovy
+lights-off-with-no-motion-and-presence.groovy
+my-light-toggle.groovy
+notify-me-when.groovy
+notify-me-with-hue.groovy
+photo-burst-when.groovy        rise-and-shine.groovy
+safe-watch.groovy
+send-ham-bridge-command-when.groovy
+simple-sync-trigger.groovy
+smart-alarm.groovy
+smart-light-timer-x-minutes-unless-already-on.groovy
+smart-nightlight.groovy        smart-security.groovy
+speaker-control.groovy
+speaker-mood-music.groovy
+speaker-notify-with-sound.groovy
+speaker-weather-forecast.groovy
+text-me-when-theres-motion-and-im-not-here.groovy
+the-flasher.groovy
+turn-off-with-motion.groovy
+ubi.groovy
+virtual-thermostat.groovy
+camera-motion.groovy
+ecobeeAwayFromHome.groovy
+ecobeeResumeProg.groovy
+loft.groovy
+MonitorAndSetEcobeeTemp.groovy
+it-moved.groovy
\ No newline at end of file
diff --git a/appLists/physical-interaction/soundAppList b/appLists/physical-interaction/soundAppList
new file mode 100644 (file)
index 0000000..635b0d2
--- /dev/null
@@ -0,0 +1,23 @@
+bose-soundtouch-control.groovy
+forgiving-security.groovy
+ifttt.groovy
+initial-state-event-streamer.groovy
+logitech-harmony-connect.groovy
+smart-alarm.groovy
+smart-security.groovy
+initial-state-event-streamer.groovy
+simple-control.groovy
+single-button-controller.groovy
+sonos-music-modes.groovy
+sonos-remote-control.groovy
+step-notifier.groovy
+talking-alarm-clock.groovy
+buffered-event-sender.groovy
+influxdb-logger.groovy
+initialstate-smart-app-v1.2.0.groovy
+Sonos.groovy
+unbuffered-event-sender.groovy
+BetterLaundryMonitor.groovy
+FireCO2Alarm.groovy
+loft.groovy
+WindowOrDoorOpen.groovy
\ No newline at end of file
diff --git a/appLists/physical-interaction/soundsensorAppList b/appLists/physical-interaction/soundsensorAppList
new file mode 100644 (file)
index 0000000..afc906c
--- /dev/null
@@ -0,0 +1 @@
+influxdb-logger.groovy
\ No newline at end of file
diff --git a/appLists/physical-interaction/watersensorAppList b/appLists/physical-interaction/watersensorAppList
new file mode 100644 (file)
index 0000000..f036a84
--- /dev/null
@@ -0,0 +1,11 @@
+bose-soundtouch-control.groovy
+close-the-valve.groovy
+dry-the-wetspot.groovy
+flood-alert.groovy
+hue-mood-lighting.groovy
+notify-me-when.groovy
+notify-me-with-hue.groovy
+speaker-control.groovy
+speaker-mood-music.groovy
+speaker-notify-with-sound.groovy
+speaker-weather-forecast.groovy
\ No newline at end of file
diff --git a/appLists/physical-interaction/watervalveAppList b/appLists/physical-interaction/watervalveAppList
new file mode 100644 (file)
index 0000000..b3e5dfc
--- /dev/null
@@ -0,0 +1,2 @@
+close-the-valve.groovy
+sprayer-controller-2.groovy
\ No newline at end of file
index 6991b5621a26bc6bf9d148aa799c737ce149e564..06ec00bb3c909a38f3ea9840bb3c9dde7349677e 100644 (file)
@@ -1,2 +1,6 @@
                        accelerationSensorObject.setValue([name: "acceleration", value: "active", deviceId: "accelerationSensorID0", descriptionText: "",
+<<<<<<< HEAD
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+=======
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index eaa876fcd42b80cb555fda18d915f4a32f94c804..2e5b6728f36a24fd9d90f494fc3d24030d4886b0 100644 (file)
@@ -1,2 +1,6 @@
                        accelerationSensorObject.setValue([name: "acceleration", value: "inactive", deviceId: "accelerationSensorID0", descriptionText: "",
+<<<<<<< HEAD
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+=======
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index 445e51f7281b4f6b2add8e67125fbd5cf1677672..36f8bd8cb53f68cba7fbcd3b759b44ccf93528a9 100644 (file)
@@ -1,2 +1,7 @@
+<<<<<<< HEAD
                        beaconSensorObject.setValue([name: "presence", value: "not present", deviceId: "beaconSensorID0", descriptionText: "",
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"presence":"0","dni":"mobile0"}'])
+=======
+                       beaconSensorObject.setValue([name: "beacon", value: "not present", deviceId: "beaconSensorID0", descriptionText: "",
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index 816a1299cf4f958417ae768ea40804bf626a1dfb..7ce002b05a14aab64e6f17aee81b53d854c0f8c1 100644 (file)
@@ -1,2 +1,7 @@
+<<<<<<< HEAD
                        beaconSensorObject.setValue([name: "presence", value: "present", deviceId: "beaconeSensorID0", descriptionText: "",
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"presence":"1","dni":"mobile0"}'])
+=======
+                       beaconSensorObject.setValue([name: "beacon", value: "present", deviceId: "beaconeSensorID0", descriptionText: "",
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index fb3520d33b456682534c7d7651855403f6a59883..0101c3fb6b0bdbcf1b8b3157e7a3aea18e51bb68 100644 (file)
@@ -1,2 +1,6 @@
                        carbonMonoxideDetectorObject.setValue([name: "carbonMonoxide", value: "clear", deviceId: "carbonMonoxideDetectorID0", descriptionText: "",
+<<<<<<< HEAD
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+=======
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index 6686f9112272f23c0babafb30ca70990e10cc9b7..5a3464ccac67eb4b385aad0442edaeb69f6a8345 100644 (file)
@@ -1,2 +1,6 @@
                        carbonMonoxideDetectorObject.setValue([name: "carbonMonoxide", value: "tested", deviceId: "carbonMonoxideDetectorID0", descriptionText: "",
+<<<<<<< HEAD
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+=======
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index 6686f9112272f23c0babafb30ca70990e10cc9b7..5a3464ccac67eb4b385aad0442edaeb69f6a8345 100644 (file)
@@ -1,2 +1,6 @@
                        carbonMonoxideDetectorObject.setValue([name: "carbonMonoxide", value: "tested", deviceId: "carbonMonoxideDetectorID0", descriptionText: "",
+<<<<<<< HEAD
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+=======
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index 5ed3b4f34a12a520223b3bef7b1f5f642fbb5e7e..598e011d40cc2b40847d9049620f72d1e02870d9 100644 (file)
@@ -1,2 +1,6 @@
                        colorControlObject.setValue([name: "color", value: "red", deviceId: "colorControlID0", descriptionText: "",
+<<<<<<< HEAD
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+=======
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index b5d20d2fd9650c4a772ab10eff1e25e1794f6962..de7e537e8185dc8c5d9267b9a1ad5d9961addf82 100644 (file)
@@ -1,2 +1,6 @@
                        colorControlObject.setValue([name: "hue", value: "50", deviceId: "colorControlID0", descriptionText: "",
+<<<<<<< HEAD
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+=======
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index 5327de2e3c42ac2c3b764af2c0a5de8ab7aea9da..842d28bb1ee50d4a6f9361856c8f364af4061d49 100644 (file)
@@ -1,2 +1,6 @@
                        colorControlObject.setValue([name: "saturation", value: "50", deviceId: "colorControlID0", descriptionText: "",
+<<<<<<< HEAD
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+=======
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index 7c1df43930826420abf0b3d7e2060d8286c910fc..06728c7f6d5bcaffea37bb9d731a39e95ab3b5d3 100644 (file)
@@ -1,2 +1,6 @@
                        smokeDetectorObject.setValue([name: "carbonMonoxide", value: "clear", deviceId: "smokeDetectorID0", descriptionText: "",
+<<<<<<< HEAD
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+=======
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index b889098ffc0e865cfdd4bd77cc03440bcc2fd320..2f2fa4e03978ae99555220031423555dc58ecd49 100644 (file)
@@ -1,2 +1,6 @@
                        smokeDetectorObject.setValue([name: "carbonMonoxide", value: "detected", deviceId: "smokeDetectorID0", descriptionText: "",
+<<<<<<< HEAD
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+=======
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
index 2ce58bc98cadbcfa3ac1fab0881d739710530e43..04b1805ec7e63a9cb17e7a2a6c43e325166bea3f 100644 (file)
@@ -1,2 +1,6 @@
                        smokeDetectorObject.setValue([name: "carbonMonoxide", value: "tested", deviceId: "smokeDetectorID0", descriptionText: "",
+<<<<<<< HEAD
                                        displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+=======
+                                       displayed: true, linkText: "", isStateChange: false, unit: "", data: [info: "info"]])
+>>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c
diff --git a/run.sh b/run.sh
index 7ba9baab7a537e4ceec7da58119e316524bf0c12..b0f8b053bc87ef10b96f2ee27dc22303270b8331 100755 (executable)
--- a/run.sh
+++ b/run.sh
@@ -1,2 +1,10 @@
 #!/bin/bash
-python ModelCheck.py ../jpf-core/ ../logs/ ../smartapps/ ../smartapps/appList1
+
+# Device conflict
+#python ModelCheck.py ../jpf-core/ ../logs/ ../smartapps/ ../smartapps/appList1
+
+# Physical conflict
+python ModelCheck.py ../jpf-core/ ../logs/ ../smartapps/ appLists/physical-interaction/soundsensorAppList appLists/physical-interaction/soundAppList
+python ModelCheck.py ../jpf-core/ ../logs/ ../smartapps/ appLists/physical-interaction/motionsensorAppList appLists/physical-interaction/motionAppList
+python ModelCheck.py ../jpf-core/ ../logs/ ../smartapps/ appLists/physical-interaction/illuminancesensorAppList appLists/physical-interaction/lightAppList
+python ModelCheck.py ../jpf-core/ ../logs/ ../smartapps/ appLists/physical-interaction/watersensorAppList appLists/physical-interaction/watervalveAppList
\ No newline at end of file