mos.ru power sensors

This commit is contained in:
Your Name
2019-10-31 11:33:20 +03:00
parent 4bf01f2873
commit 94778c039e
24 changed files with 930 additions and 73 deletions
@@ -13,14 +13,16 @@ import globals
# Initial Version
class CurtainSecurity(hass.Hass):
listen_event_handle_list = []
def initialize(self):
if not globals.check_args(self, ['curtain', 'door']):
return
self.listen_event(self.curtain_changed, event='call_service', entity_id = self.args['curtain'])
# self.listen_event_handle_list = []
# locks = globals.get_group_entities(self, "group.all_locks")
# for lock in locks:
# self.listen_event_handle_list.append(self.listen_state(self.lock_state_changed, lock))
self.listen_event_handle_list.append(self.listen_event(self.curtain_changed, event='call_service', entity_id = self.args['curtain']))
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)
def curtain_changed(self, event_name, data, kwargs):
if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']):
@@ -36,6 +36,14 @@ class SecuritySensorsReport(hass.Hass):
alarm_panel_state = self.get_state(self.args['ha_panel'])
if alarm_panel_state != "armed_away":
return
vacuum_state = "docked"
if "vacuum" in self.args:
vacuum_state = self.get_state(self.args["vacuum"])
#Если работает пылесос и сработал датчик движения
if vacuum_state == 'cleaning' and 'binary_sensor.motion' in entity:
self.log('Motion sensor is triggered, but vacuum is cleaning.')
return
self.alarm_triggered(entity, old, new)
def alarm_triggered(self, entity, old, new):
@@ -4,6 +4,7 @@ security_sensors:
sensor: group.security_sensors
constraint: input_boolean.security_sensors_report
ha_panel: alarm_control_panel.ha_alarm
vacuum: vacuum.xiaomi_vacuum_cleaner
notify: telegram
global_dependencies:
- globals