Skip to content

Instantly share code, notes, and snippets.

@klinquist
Created June 6, 2020 17:21
Show Gist options
  • Save klinquist/fca643e4a605179702f6c12270fd3582 to your computer and use it in GitHub Desktop.
Save klinquist/fca643e4a605179702f6c12270fd3582 to your computer and use it in GitHub Desktop.
definition(
name: "Turn Lights On When I'm Home",
namespace: "",
author: "kris@linquist.net",
description: "Turns light(s) on when I arrive",
category: "Convenience",
iconUrl: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience.png",
iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience%402x.png",
iconX3Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience%402x.png")
preferences {
section("When I arrive..."){
input "presence1", "capability.presenceSensor", title: "Who?", multiple: true
}
section("Turn on/off a light..."){
input "switch1", "capability.switch", multiple: true
}
section("Zip code..."){
input "zipcode", "text", title: "Zipcode?"
}
}
def installed()
{
subscribe(presence1, "presence", presenceHandler)
}
def updated()
{
unsubscribe()
subscribe(presence1, "presence", presenceHandler)
}
def checkNighttime() {
def data = getWeatherFeature("astronomy", zipcode)
def sunsettime = data.moon_phase.sunset.hour + data.moon_phase.sunset.minute
def sunrisetime = data.moon_phase.sunrise.hour + data.moon_phase.sunrise.minute
def currenttime = data.moon_phase.current_time.hour + data.moon_phase.current_time.minute
if ((currenttime.toInteger() >= sunsettime.toInteger()) || (currenttime.toInteger() <= sunrisetime.toInteger())) {
return true
} else {
return false
}
}
def presenceHandler(evt)
{
log.debug "presenceHandler $evt.name: $evt.value"
def current = presence1.currentValue("presence")
log.debug current
def presenceValue = presence1.find{it.currentPresence == "present"}
log.debug presenceValue
if(presenceValue){
if (checkNighttime()) {
switch1.on()
sendPush("Welcome home! It's dark so I'm turning on the lights for you")
}
}
else{
log.debug "Everyone's away."
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment