From: rtrimana Date: Tue, 6 Aug 2019 00:03:16 +0000 (-0700) Subject: Renaming app. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=smartapps.git;a=commitdiff_plain;h=217a7a90442141824793d31e892741156c4076ef Renaming app. --- diff --git a/third-party/Hue Party Mode.groovy b/third-party/Hue Party Mode.groovy deleted file mode 100755 index 0bcda03..0000000 --- a/third-party/Hue Party Mode.groovy +++ /dev/null @@ -1,119 +0,0 @@ -/************************************************************************************* -* Hue Party Mode -* -* Author: Mitch Pond -* Date: 2015-05-29 - -Copyright (c) 2015, Mitch Pond -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*************************************************************************************/ - -definition( - name: "Hue Party Mode", - namespace: "mitchpond", - author: "Mitch Pond", - description: "Change the color of your lights randomly at an interval of your choosing.", - category: "Fun & Social", - iconUrl: "https://s3.amazonaws.com/smartapp-icons/FunAndSocial/App-ItsPartyTime.png", - iconX2Url: "https://s3.amazonaws.com/smartapp-icons/FunAndSocial/App-ItsPartyTime@2x.png", -) - -preferences { - section("Choose lights..."){ - input "lights", "capability.colorControl", title: "Pick your lights", required: false, multiple: true - } - section("Adjust color change speed and timeout"){ - input "interval", "number", title: "Color change interval (seconds)", required: false, defaultValue: 10 - input "timeout", "number", title: "How long to run (minutes)", required: false, defaultValue: 60 - } -} - -def installed() { - settings.interval = 10 //default value: 10 seconds - settings.timeout = 60 //default value: 60 minutes - state.running = false - log.debug("Installed with settings: ${settings}") - updated() -} - -def updated() { - log.debug("Updated with settings: ${settings}") - unsubscribe() - subscribe(app, onAppTouch) - for (light in lights) { - subscribe(light, "off", onLightOff) - } - - -} - -def onLightOff(evt) { - //if one of the lights in our device list is turned off, and we are running, unschedule any pending color changes - if (state.running) { - log.info("${app.name}: One of our lights was turned off.") - stop() - } -} - -def onAppTouch(evt) { - //if currently running, unschedule any scheduled function calls - //if not running, start our scheduling loop - - if (state.running) { - log.debug("${app.name} is running.") - stop() - } - else if (!state.running) { - log.debug("${app.name} is not running.") - start() - } - -} - -def changeColor() { - if (!state.running) return //just return without doing anything in case unschedule() doesn't finish before next function call - - //calculate a random color, send the setColor command, then schedule our next execution - log.info("${app.name}: Running scheduled color change") - def nextHue = new Random().nextInt(101) - def nextSat = new Random().nextInt(51)+50 - //def nextColor = Integer.toHexString(new Random().nextInt(0x1000000)) - log.debug nextColor - lights*.setColor(hue: nextHue, saturation: nextSat) - runIn(settings.interval, changeColor) -} - -def start() { - log.debug("${app.name}: Beginning execution...") - state.running = true - lights*.on() - changeColor() - runIn(settings.timeout*60, stop) -} - -def stop() { - log.debug("${app.name}: Stopping execution...") - unschedule() - state.running = false -} diff --git a/third-party/Hue-Party-Mode.groovy b/third-party/Hue-Party-Mode.groovy new file mode 100755 index 0000000..0bcda03 --- /dev/null +++ b/third-party/Hue-Party-Mode.groovy @@ -0,0 +1,119 @@ +/************************************************************************************* +* Hue Party Mode +* +* Author: Mitch Pond +* Date: 2015-05-29 + +Copyright (c) 2015, Mitch Pond +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*************************************************************************************/ + +definition( + name: "Hue Party Mode", + namespace: "mitchpond", + author: "Mitch Pond", + description: "Change the color of your lights randomly at an interval of your choosing.", + category: "Fun & Social", + iconUrl: "https://s3.amazonaws.com/smartapp-icons/FunAndSocial/App-ItsPartyTime.png", + iconX2Url: "https://s3.amazonaws.com/smartapp-icons/FunAndSocial/App-ItsPartyTime@2x.png", +) + +preferences { + section("Choose lights..."){ + input "lights", "capability.colorControl", title: "Pick your lights", required: false, multiple: true + } + section("Adjust color change speed and timeout"){ + input "interval", "number", title: "Color change interval (seconds)", required: false, defaultValue: 10 + input "timeout", "number", title: "How long to run (minutes)", required: false, defaultValue: 60 + } +} + +def installed() { + settings.interval = 10 //default value: 10 seconds + settings.timeout = 60 //default value: 60 minutes + state.running = false + log.debug("Installed with settings: ${settings}") + updated() +} + +def updated() { + log.debug("Updated with settings: ${settings}") + unsubscribe() + subscribe(app, onAppTouch) + for (light in lights) { + subscribe(light, "off", onLightOff) + } + + +} + +def onLightOff(evt) { + //if one of the lights in our device list is turned off, and we are running, unschedule any pending color changes + if (state.running) { + log.info("${app.name}: One of our lights was turned off.") + stop() + } +} + +def onAppTouch(evt) { + //if currently running, unschedule any scheduled function calls + //if not running, start our scheduling loop + + if (state.running) { + log.debug("${app.name} is running.") + stop() + } + else if (!state.running) { + log.debug("${app.name} is not running.") + start() + } + +} + +def changeColor() { + if (!state.running) return //just return without doing anything in case unschedule() doesn't finish before next function call + + //calculate a random color, send the setColor command, then schedule our next execution + log.info("${app.name}: Running scheduled color change") + def nextHue = new Random().nextInt(101) + def nextSat = new Random().nextInt(51)+50 + //def nextColor = Integer.toHexString(new Random().nextInt(0x1000000)) + log.debug nextColor + lights*.setColor(hue: nextHue, saturation: nextSat) + runIn(settings.interval, changeColor) +} + +def start() { + log.debug("${app.name}: Beginning execution...") + state.running = true + lights*.on() + changeColor() + runIn(settings.timeout*60, stop) +} + +def stop() { + log.debug("${app.name}: Stopping execution...") + unschedule() + state.running = false +}