updating configuration

This commit is contained in:
Your Name
2026-03-10 07:08:59 +00:00
commit 9498a076ee
238 changed files with 18119 additions and 0 deletions
@@ -0,0 +1,77 @@
import appdaemon.plugins.hass.hassapi as hass
#
# Listen for Alarm panel state change and fire an events ('away_mode' and 'return_home_mode')
#
# Args:
# ha_panel - alarm control panel entity.
# Release Notes
#
# Version 1.0:
# Initial Version
class AlarmPanelAction(hass.Hass):
extended_timeout = 5*60
timers = []
def initialize(self):
if "ha_panel" not in self.args:
self.error("Please provide ha_panel in config!")
return
self.listen_state(self.ha_panel_trigger, self.args['ha_panel'])
extended_timeout = self.args.get('extended_timeout', self.extended_timeout)
self.log('extended_timeout: {}'.format(self.extended_timeout))
def ha_panel_trigger(self, entity, attribute, old, new, kwargs):
# не срабатываем на triggered.
if new == "armed_away" and old != "triggered":
self.away_mode()
if new == "disarmed" and old == "armed_away":
self.return_home_mode()
def away_mode(self):
self.log('away_mode')
self.fire_event('away_mode')
if 'presence_extended' in self.args:
self.fire_event('presence_extended_just_left')
self.set_mode('Just Left')
self.cancel_current_timer()
self.timers.append(self.run_in(self.run_in_set_mode, self.extended_timeout, mode='Away'))
def return_home_mode(self):
self.log('return_home_mode')
self.fire_event('return_home_mode')
if 'presence_extended' in self.args:
self.set_mode('Just Arrived')
self.fire_event('presence_extended_just_arrived')
self.cancel_current_timer()
self.timers.append(self.run_in(self.run_in_set_mode, self.extended_timeout, mode='Home'))
def set_mode(self, mode):
if 'presence_extended' not in self.args:
return
entity_id = self.args['presence_extended']
self.log('setting mode direct: {}={}'.format(entity_id, mode))
self.call_service("input_select/select_option", entity_id = entity_id, option = mode)
def run_in_set_mode(self, kwargs):
if not 'mode' in kwargs:
return
mode = kwargs['mode']
entity_id = self.args['presence_extended']
event = 'presence_extended_{}'.format(mode.lower())
self.log('firing event: {}'.format(event))
self.fire_event(event)
self.log('setting mode by timer: {}={}'.format(entity_id, mode))
self.call_service("input_select/select_option", entity_id = entity_id, option = mode)
def cancel_current_timer(self):
for timer in self.timers:
self.log('canceling timer')
self.cancel_timer(timer)
self.timers = []