Update README.md
[smartapps.git] / official / hue-mood-lighting.groovy
index 0fe42bed42831683a6a60334ba1942eaadbe7f61..abcdefa476c749837f20c723df4fe3690f8bda93 100755 (executable)
@@ -36,6 +36,20 @@ preferences {
        }
 }
 
+// input "motion", "capability.motionSensor", title: "Motion Here", required: false, multiple: true
+// input "contact", "capability.contactSensor", title: "Contact Opens", required: false, multiple: true
+// input "contactClosed", "capability.contactSensor", title: "Contact Closes", required: false, multiple: true
+// input "acceleration", "capability.accelerationSensor", title: "Acceleration Detected", required: false, multiple: true
+// input "mySwitch", "capability.switch", title: "Switch Turned On", required: false, multiple: true
+// input "mySwitchOff", "capability.switch", title: "Switch Turned Off", required: false, multiple: true
+// input "arrivalPresence", "capability.presenceSensor", title: "Arrival Of", required: false, multiple: true
+// input "departurePresence", "capability.presenceSensor", title: "Departure Of", required: false, multiple: true
+// input "smoke", "capability.smokeDetector", title: "Smoke Detected", required: false, multiple: true
+// input "water", "capability.waterSensor", title: "Water Sensor Wet", required: false, multiple: true
+// input "button1", "capability.button", title: "Button Press", required:false, multiple:true //remove from production
+// input "triggerModes", "mode", title: "System Changes Mode", required: false, multiple: true
+// input "timeOfDay", "time", title: "At a Scheduled Time", required: false
+
 def mainPage() {
        dynamicPage(name: "mainPage") {
                def anythingSet = anythingSet()
@@ -82,12 +96,12 @@ def mainPage() {
                                        ["Daylight":"Daylight - Energize"],
                                        ["Warm White":"Warm White - Relax"],
                                        "Red","Green","Blue","Yellow","Orange","Purple","Pink"]
-                               input "lightLevel", "enum", title: "Light Level?", required: false, options: [[10:"10%"],[20:"20%"],[30:"30%"],[40:"40%"],[50:"50%"],[60:"60%"],[70:"70%"],[80:"80%"],[90:"90%"],[100:"100%"]]
+                               input "lightLevel", "enum", title: "Light Level?", required: false, options: [10,20,30,40,50,60,70,80,90,100]
                        }
 
                section("More options", hideable: true, hidden: true) {
                        input "frequency", "decimal", title: "Minimum time between actions (defaults to every event)", description: "Minutes", required: false
-                       href "timeIntervalInput", title: "Only during a certain time", description: timeLabel ?: "Tap to set", state: timeLabel ? "complete" : "incomplete"
+                       href "timeIntervalInput", title: "Only during a certain time"
                        input "days", "enum", title: "Only on certain days of the week", multiple: true, required: false,
                                options: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
                        input "modes", "mode", title: "Only when mode is", multiple: true, required: false
@@ -123,6 +137,8 @@ private ifSet(Map options, String name, String capability) {
 def installed() {
        log.debug "Installed with settings: ${settings}"
        subscribeToEvents()
+       // Initialize input value
+       color = "Purple"
 }
 
 def updated() {
@@ -134,19 +150,19 @@ def updated() {
 
 def subscribeToEvents() {
        subscribe(app, appTouchHandler)
-       subscribe(contact, "contact.open", eventHandler)
-       subscribe(contactClosed, "contact.closed", eventHandler)
-       subscribe(acceleration, "acceleration.active", eventHandler)
-       subscribe(motion, "motion.active", eventHandler)
-       subscribe(mySwitch, "switch.on", eventHandler)
-       subscribe(mySwitchOff, "switch.off", eventHandler)
-       subscribe(arrivalPresence, "presence.present", eventHandler)
-       subscribe(departurePresence, "presence.not present", eventHandler)
-       subscribe(smoke, "smoke.detected", eventHandler)
-       subscribe(smoke, "smoke.tested", eventHandler)
-       subscribe(smoke, "carbonMonoxide.detected", eventHandler)
-       subscribe(water, "water.wet", eventHandler)
-       subscribe(button1, "button.pushed", eventHandler)
+       subscribe(contact, "contact.open", eventHandler1)
+       subscribe(contactClosed, "contact.closed", eventHandler1)
+       subscribe(acceleration, "acceleration.active", eventHandler1)
+       subscribe(motion, "motion.active", eventHandler1)
+       subscribe(mySwitch, "switch.on", eventHandler1)
+       subscribe(mySwitchOff, "switch.off", eventHandler1)
+       subscribe(arrivalPresence, "presence.present", eventHandler1)
+       subscribe(departurePresence, "presence.not present", eventHandler1)
+       subscribe(smoke, "smoke.detected", eventHandler1)
+       subscribe(smoke, "smoke.tested", eventHandler1)
+       subscribe(smoke, "carbonMonoxide.detected", eventHandler1)
+       subscribe(water, "water.wet", eventHandler1)
+       subscribe(button1, "button.pushed", eventHandler1)
 
        if (triggerModes) {
                subscribe(location, modeChangeHandler)
@@ -157,7 +173,7 @@ def subscribeToEvents() {
        }
 }
 
-def eventHandler(evt=null) {
+def eventHandler1(evt=null) {
        log.trace "Executing Mood Lighting"
        if (allOk) {
                log.trace "allOk"
@@ -181,13 +197,13 @@ def eventHandler(evt=null) {
 def modeChangeHandler(evt) {
        log.trace "modeChangeHandler $evt.name: $evt.value ($triggerModes)"
        if (evt.value in triggerModes) {
-               eventHandler(evt)
+               eventHandler1(evt)
        }
 }
 
 def scheduledTimeHandler() {
        log.trace "scheduledTimeHandler()"
-       eventHandler()
+       eventHandler1()
 }
 
 def appTouchHandler(evt) {
@@ -279,14 +295,16 @@ private dayString(Date date) {
 
 
 private oncePerDayOk(Long lastTime) {
-       def result = lastTime ? dayString(new Date()) != dayString(new Date(lastTime)) : true
-       log.trace "oncePerDayOk = $result - $lastTime"
+       //def result = lastTime ? dayString(new Date()) != dayString(new Date(lastTime)) : true
+       //log.trace "oncePerDayOk = $result - $lastTime"
+       def result = true //No time implementation in our infrastructure!
        result
 }
 
 // TODO - centralize somehow
 private getAllOk() {
-       modeOk && daysOk && timeOk
+       //modeOk && daysOk && timeOk
+       return true
 }
 
 private getModeOk() {