35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
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.clean_zone, 'VACUUM_ZONE')
|
|
self.listen_event(self.clean_all, 'VACUUM_ALL')
|
|
self.listen_event(self.service, 'VACUUM_SERVICE')
|
|
self.listen_event(self.home, 'VACUUM_HOME')
|
|
|
|
def clean_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 clean_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)
|