Update SpotArea
Update SpotArea and CLI command to more closely reflect the app Library: SpotArea namedarea -> area SpotArea customarea -> map_position CLI Commands: spotclean -> area Ex: sucks area 0,1 - will clean areas 0 and 1 / A and B area options: --map-postion|-p - will clean a specified map coordinate Ex: sucks area -p "-602,1812,800,723" - will clean the specified custom map coordinates
This commit is contained in:
+6
-6
@@ -1020,14 +1020,14 @@ class Stop(Clean):
|
|||||||
super().__init__('stop', 'normal')
|
super().__init__('stop', 'normal')
|
||||||
|
|
||||||
class SpotArea(Clean):
|
class SpotArea(Clean):
|
||||||
def __init__(self, action='start', namedarea='', customarea='', cleanings='1'):
|
def __init__(self, action='start', area='', map_position='', cleanings='1'):
|
||||||
if namedarea != '': #For cleaning specified map area
|
if area != '': #For cleaning specified area
|
||||||
super().__init__('spot_area', 'normal', act=CLEAN_ACTION_TO_ECOVACS[action], mid=namedarea)
|
super().__init__('spot_area', 'normal', act=CLEAN_ACTION_TO_ECOVACS[action], mid=area)
|
||||||
elif customarea != '': #For cleaning custom map area, and specify deep amount 1x/2x
|
elif map_position != '': #For cleaning custom map area, and specify deep amount 1x/2x
|
||||||
super().__init__('spot_area' ,'normal',act=CLEAN_ACTION_TO_ECOVACS[action], p=customarea, deep=cleanings)
|
super().__init__('spot_area' ,'normal',act=CLEAN_ACTION_TO_ECOVACS[action], p=map_position, deep=cleanings)
|
||||||
else:
|
else:
|
||||||
#no valid entries
|
#no valid entries
|
||||||
raise ValueError("must provide namedarea or customarea for spotarea clean")
|
raise ValueError("must provide area or map_position for spotarea clean")
|
||||||
|
|
||||||
class Charge(VacBotCommand):
|
class Charge(VacBotCommand):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|||||||
+9
-4
@@ -179,10 +179,15 @@ def edge(frequency, minutes):
|
|||||||
return CliAction(Edge(), wait=TimeWait(minutes * 60))
|
return CliAction(Edge(), wait=TimeWait(minutes * 60))
|
||||||
|
|
||||||
|
|
||||||
@cli.command(help='spotcleans provided room(s)')
|
@cli.command(help='cleans provided area(s), ex: "0,1"',context_settings={"ignore_unknown_options": True}) #ignore_unknown for map coordinates with negatives
|
||||||
@click.argument('room', type=click.STRING)
|
@click.option("--map-position","-p", is_flag=True, help='clean provided map position instead of area, ex: "-602,1812,800,723"')
|
||||||
def spotclean(room):
|
@click.argument('area', type=click.STRING, required=True)
|
||||||
return CliAction(SpotArea('start', room), wait=StatusWait('charge_status', 'returning'))
|
def area(area, map_position):
|
||||||
|
if map_position:
|
||||||
|
return CliAction(SpotArea('start', map_position=area), wait=StatusWait('charge_status', 'returning'))
|
||||||
|
else:
|
||||||
|
return CliAction(SpotArea('start', area=area), wait=StatusWait('charge_status', 'returning'))
|
||||||
|
|
||||||
|
|
||||||
@cli.command(help='returns to charger')
|
@cli.command(help='returns to charger')
|
||||||
def charge():
|
def charge():
|
||||||
|
|||||||
+11
-11
@@ -61,31 +61,31 @@ def test_spotarea_command():
|
|||||||
assert_equals(ElementTree.tostring(c.to_xml()),
|
assert_equals(ElementTree.tostring(c.to_xml()),
|
||||||
b'<ctl td="Clean"><clean act="s" mid="0" speed="standard" type="SpotArea" /></ctl>') #Test namedarea clean
|
b'<ctl td="Clean"><clean act="s" mid="0" speed="standard" type="SpotArea" /></ctl>') #Test namedarea clean
|
||||||
|
|
||||||
c = SpotArea('start', namedarea='0')
|
c = SpotArea('start', area='0')
|
||||||
assert_equals(ElementTree.tostring(c.to_xml()),
|
assert_equals(ElementTree.tostring(c.to_xml()),
|
||||||
b'<ctl td="Clean"><clean act="s" mid="0" speed="standard" type="SpotArea" /></ctl>') #Test namedarea keyword clean
|
b'<ctl td="Clean"><clean act="s" mid="0" speed="standard" type="SpotArea" /></ctl>') #Test namedarea keyword clean
|
||||||
|
|
||||||
c = SpotArea('start', '', '01234,56789')
|
c = SpotArea('start', '', '-602,1812,800,723')
|
||||||
assert_equals(ElementTree.tostring(c.to_xml()),
|
assert_equals(ElementTree.tostring(c.to_xml()),
|
||||||
b'<ctl td="Clean"><clean act="s" deep="1" p="01234,56789" speed="standard" type="SpotArea" /></ctl>') #Test customarea clean
|
b'<ctl td="Clean"><clean act="s" deep="1" p="-602,1812,800,723" speed="standard" type="SpotArea" /></ctl>') #Test customarea clean
|
||||||
|
|
||||||
c = SpotArea('start', '', '01234,56789', '2')
|
c = SpotArea('start', '', '-602,1812,800,723', '2')
|
||||||
assert_equals(ElementTree.tostring(c.to_xml()),
|
assert_equals(ElementTree.tostring(c.to_xml()),
|
||||||
b'<ctl td="Clean"><clean act="s" deep="2" p="01234,56789" speed="standard" type="SpotArea" /></ctl>') #Test customarea clean with deep 2
|
b'<ctl td="Clean"><clean act="s" deep="2" p="-602,1812,800,723" speed="standard" type="SpotArea" /></ctl>') #Test customarea clean with deep 2
|
||||||
|
|
||||||
c = SpotArea('start', '', customarea='01234,56789')
|
c = SpotArea('start', '', map_position='-602,1812,800,723')
|
||||||
assert_equals(ElementTree.tostring(c.to_xml()),
|
assert_equals(ElementTree.tostring(c.to_xml()),
|
||||||
b'<ctl td="Clean"><clean act="s" deep="1" p="01234,56789" speed="standard" type="SpotArea" /></ctl>') #Test customarea keyword clean with deep default
|
b'<ctl td="Clean"><clean act="s" deep="1" p="-602,1812,800,723" speed="standard" type="SpotArea" /></ctl>') #Test customarea keyword clean with deep default
|
||||||
|
|
||||||
c = SpotArea('start', customarea='01234,56789', cleanings='2')
|
c = SpotArea('start', map_position='-602,1812,800,723', cleanings='2')
|
||||||
assert_equals(ElementTree.tostring(c.to_xml()),
|
assert_equals(ElementTree.tostring(c.to_xml()),
|
||||||
b'<ctl td="Clean"><clean act="s" deep="2" p="01234,56789" speed="standard" type="SpotArea" /></ctl>') #Test customarea keyword and cleanings keyword clean with deep default
|
b'<ctl td="Clean"><clean act="s" deep="2" p="-602,1812,800,723" speed="standard" type="SpotArea" /></ctl>') #Test customarea keyword and cleanings keyword clean with deep default
|
||||||
|
|
||||||
c = SpotArea('start', namedarea='0', customarea='01234,56789', cleanings='2')
|
c = SpotArea('start', area='0', map_position='-602,1812,800,723', cleanings='2')
|
||||||
assert_equals(ElementTree.tostring(c.to_xml()),
|
assert_equals(ElementTree.tostring(c.to_xml()),
|
||||||
b'<ctl td="Clean"><clean act="s" mid="0" speed="standard" type="SpotArea" /></ctl>') #Test all keywords specified, should default to only mid
|
b'<ctl td="Clean"><clean act="s" mid="0" speed="standard" type="SpotArea" /></ctl>') #Test all keywords specified, should default to only mid
|
||||||
|
|
||||||
c = SpotArea('start', '0', '01234,56789','2')
|
c = SpotArea('start', '0', '-602,1812,800,723','2')
|
||||||
assert_equals(ElementTree.tostring(c.to_xml()),
|
assert_equals(ElementTree.tostring(c.to_xml()),
|
||||||
b'<ctl td="Clean"><clean act="s" mid="0" speed="standard" type="SpotArea" /></ctl>') #Test all keywords specified, should default to only mid
|
b'<ctl td="Clean"><clean act="s" mid="0" speed="standard" type="SpotArea" /></ctl>') #Test all keywords specified, should default to only mid
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user