Appdaemon - Better vacuum cleaner controls
This commit is contained in:
34
appdaemon/apps/vacuum.py
Normal file
34
appdaemon/apps/vacuum.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from entities import Entities
|
||||
|
||||
class Vacuum(Entities):
|
||||
def initialize(self):
|
||||
super().initialize()
|
||||
self.entity_id = self.args['entity_id']
|
||||
|
||||
self.run_in(self._setup, 1)
|
||||
|
||||
def _setup(self, kwargs):
|
||||
for zone in self.args['zones']:
|
||||
e = dict(self.args['zones'][zone])
|
||||
name = f'switch.vacuum_{zone}'
|
||||
self.register_entity(zone, name, True, "off", e)
|
||||
|
||||
self.listen_event(self.zone, 'VACUUM_ZONE')
|
||||
self.listen_event(self.all, 'VACUUM_ALL')
|
||||
self.listen_event(self.service, 'VACUUM_SERVICE')
|
||||
self.listen_event(self.home, 'VACUUM_HOME')
|
||||
|
||||
def zone(self, ev, data, kwargs):
|
||||
areas = []
|
||||
for zone in self.args['zones']:
|
||||
if self.e[zone].state == "on":
|
||||
areas.append(self.e[zone].attr['area'])
|
||||
|
||||
self.call_service("vacuum/xiaomi_clean_zone", repeats = 1, zone = areas)
|
||||
|
||||
def all(self, ev, data, kwargs):
|
||||
self.call_service("vacuum/start")
|
||||
def service(self, ev, data, kwargs):
|
||||
self.call_service("vacuum/send_command", entity_id = self.entity_id, command = 'app_goto_target', params = self.args['empty_spot'])
|
||||
def home(self, ev, data, kwargs):
|
||||
self.call_service("vacuum/return_to_base", entity_id = self.entity_id)
|
||||
29
appdaemon/apps/vacuum.yaml
Normal file
29
appdaemon/apps/vacuum.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
vacuum:
|
||||
module: vacuum
|
||||
class: Vacuum
|
||||
global_dependencies:
|
||||
- base
|
||||
- entities
|
||||
|
||||
entity_id: vacuum.xiaomi_vacuum_cleaner
|
||||
|
||||
empty_spot: [26000, 26000]
|
||||
|
||||
zones:
|
||||
kitchen:
|
||||
# Left, bottom, right, top
|
||||
area: [23200, 21000, 27500, 25100]
|
||||
friendly_name: Köket
|
||||
hall:
|
||||
area: [23200, 25300, 27500, 28000]
|
||||
friendly_name: Hallen
|
||||
livingroom:
|
||||
area: [19000, 24000, 23000, 31200]
|
||||
friendly_name: Vardagsrum
|
||||
bedroom:
|
||||
area: [19000, 31500, 23500, 35500]
|
||||
friendly_name: Sovrum
|
||||
office:
|
||||
area: [23300, 31000, 27500, 35500]
|
||||
friendly_name: Kontoret
|
||||
|
||||
Reference in New Issue
Block a user