From 9f3e1cb7812afad03edfc4532667fe4dc748371c Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 5 Jun 2019 09:51:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BF=D1=80=D0=B8=D1=81=D1=83=D1=82=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=B8=D0=B5=20=D0=BD=D0=B0=20=D1=82=D0=BE=D0=BB?= =?UTF-8?q?=D1=87=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appdaemon/settings/apps/notifiers/balance.py | 2 +- .../settings/apps/sensors/toilet_presence.py | 22 ++++++++++++++----- .../apps/sensors/toilet_presence.yaml | 4 ---- appdaemon/settings/apps/timers/curtain.py | 1 + 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/appdaemon/settings/apps/notifiers/balance.py b/appdaemon/settings/apps/notifiers/balance.py index d23aaa3..da3600c 100644 --- a/appdaemon/settings/apps/notifiers/balance.py +++ b/appdaemon/settings/apps/notifiers/balance.py @@ -46,7 +46,7 @@ class Balance(Base): if low or ("always_send" in self.args and self.args["always_send"] == 1) or ("force" in kwargs and kwargs["force"] == 1): if message != "": - self.notify(message, name = "telegram_monster") + self.notify(message, name = "telegram") #name = "telegram_monster" def is_number(self, s): try: diff --git a/appdaemon/settings/apps/sensors/toilet_presence.py b/appdaemon/settings/apps/sensors/toilet_presence.py index 80fdea3..99574ff 100644 --- a/appdaemon/settings/apps/sensors/toilet_presence.py +++ b/appdaemon/settings/apps/sensors/toilet_presence.py @@ -19,6 +19,8 @@ import appdaemon.plugins.hass.hassapi as hass class ToiletPresence(hass.Hass): state = "" + timers = [] + presence_timeout = 30 def initialize(self): if 'sensor' not in self.args: @@ -28,13 +30,21 @@ class ToiletPresence(hass.Hass): def distance_changed(self, entity, attribute, old, new, kwargs): distance = int(new) - - if distance > 1000 or distance < 850: - if self.state == "" or self.state == "off": + state = "" + if (distance > 1000 or distance < 850): + self.timers_off() + self.timers.append(self.run_in(self.run_in_presense_off, self.presence_timeout)) + self.log('re-setting timer for {}s.'.format(self.presence_timeout)) + if (self.state != "on"): self.set_value("on") - elif distance < 1000 and distance > 850: - if self.state == "" or self.state == "on": - self.set_value("off") + + + def run_in_presense_off(self, args): + self.set_value("off") + + def timers_off(self): + for timer in self.timers: + self.cancel_timer(timer) def set_value(self, state): self.log('Toilet presense: {}'.format(state)) diff --git a/appdaemon/settings/apps/sensors/toilet_presence.yaml b/appdaemon/settings/apps/sensors/toilet_presence.yaml index 9627f82..6b75f4c 100644 --- a/appdaemon/settings/apps/sensors/toilet_presence.yaml +++ b/appdaemon/settings/apps/sensors/toilet_presence.yaml @@ -4,10 +4,6 @@ toilet_presence: module: toilet_presence class: ToiletPresence - # constraint: input_boolean.water_leak_control sensor: sensor.toilet_distance - # valve: switch.water_valve - # notify: telegram - # gw_mac: !secret aqara1_mac global_dependencies: - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/timers/curtain.py b/appdaemon/settings/apps/timers/curtain.py index 87238d4..46c8d6a 100644 --- a/appdaemon/settings/apps/timers/curtain.py +++ b/appdaemon/settings/apps/timers/curtain.py @@ -32,3 +32,4 @@ class Curtain(hass.Hass): self.log('off_timer') if 'entity' in self.args: self.call_service("cover/close_cover", entity_id = self.args['entity']) +