updating configuration
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
import appdaemon.plugins.hass.hassapi as hass
|
||||
import globals
|
||||
|
||||
#
|
||||
# Turn on entry light when the lock is opened (coming home).
|
||||
# Listens for 'door_opened' event, turns on control_entity and keeps it on
|
||||
# for 'timeout' seconds after the last event.
|
||||
#
|
||||
# Args:
|
||||
# control_entity = entity that will be turned on (example: light.light_hall_long)
|
||||
# timeout = seconds to keep the light on after the last door opening
|
||||
# events (optionally) = list of event names to listen to (default: ['door_opened'])
|
||||
# constraint = you can define constraint (input_boolean), that will turn on and off this app.
|
||||
#
|
||||
# Release Notes
|
||||
#
|
||||
# Version 1.0:
|
||||
# Initial Version
|
||||
|
||||
class LightControlEntry(hass.Hass):
|
||||
timer = None
|
||||
|
||||
def initialize(self):
|
||||
if not globals.check_args(self, ["control_entity", "timeout"]):
|
||||
return
|
||||
self.listen_event_handle_list = []
|
||||
for event in self.args.get('events', ['door_opened']):
|
||||
self.listen_event_handle_list.append(self.listen_event(self.event_trigger, event))
|
||||
|
||||
def event_trigger(self, event_name, data, kwargs):
|
||||
if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']):
|
||||
return
|
||||
#turn on control entity and keep it on for 'timeout' seconds after last event.
|
||||
self.control_entity_on()
|
||||
self.run_timer()
|
||||
|
||||
def terminate(self):
|
||||
if self.listen_event_handle_list != None:
|
||||
for listen_event_handle in self.listen_event_handle_list:
|
||||
self.cancel_listen_event(listen_event_handle)
|
||||
|
||||
############ TIMER ########################
|
||||
def run_timer(self):
|
||||
if self.timer != None:
|
||||
self.stop_timer()
|
||||
self.timer = self.run_in(self.control_entity_off, self.args['timeout'])
|
||||
|
||||
def control_entity_on(self):
|
||||
#if 'constraint' is off - we dont need to do anything
|
||||
if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']):
|
||||
return
|
||||
|
||||
entity = self.args['control_entity']
|
||||
state = self.get_state(entity)
|
||||
|
||||
self.turn_on(entity)
|
||||
self.log("Light on ({}).".format(entity))
|
||||
|
||||
def control_entity_off(self, kwargs):
|
||||
#if 'constraint' is off - we dont need to do anything
|
||||
if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']):
|
||||
return
|
||||
|
||||
entity = self.args['control_entity']
|
||||
state = self.get_state(entity)
|
||||
self.turn_off(entity)
|
||||
self.log("Light off ({}).".format(entity))
|
||||
self.stop_timer()
|
||||
|
||||
def stop_timer(self):
|
||||
if (self.timer == None):
|
||||
return
|
||||
self.log('stopping timer.')
|
||||
self.cancel_timer(self.timer)
|
||||
self.timer = None
|
||||
Reference in New Issue
Block a user