47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
import appdaemon.plugins.hass.hassapi as hass
|
|
|
|
#
|
|
# Water leak detector
|
|
# close water valve and send a report
|
|
#
|
|
# Args:
|
|
#
|
|
# sensor = water leak sensor group
|
|
# valve = water valve - app will close it, when leak is detected
|
|
# notify = notify name to send notification
|
|
#
|
|
# None
|
|
#
|
|
# Release Notes
|
|
#
|
|
# Version 1.0:
|
|
# Initial Version
|
|
|
|
class ToiletPresence(hass.Hass):
|
|
state = ""
|
|
|
|
def initialize(self):
|
|
if 'sensor' not in self.args:
|
|
self.error("Please provide sensor in config!")
|
|
return
|
|
self.listen_state(self.distance_changed, self.args['sensor'])
|
|
|
|
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":
|
|
self.set_value("on")
|
|
elif distance < 1000 and distance > 850:
|
|
if self.state == "" or self.state == "on":
|
|
self.set_value("off")
|
|
|
|
def set_value(self, state):
|
|
self.log('Toilet presense: {}'.format(state))
|
|
self.state = state
|
|
entity_id = "sensor.toilet_presence"
|
|
|
|
attributes = {}
|
|
attributes['description'] = 'Created and updated from appdaemon ({})'.format(__name__)
|
|
|
|
self.set_state(entity_id, state = state, attributes = attributes) |