miio.integrations.vacuum.viomi.viomivacuum module

Viomi Vacuum.

# https://github.com/rytilahti/python-miio/issues/550#issuecomment-552780952 # https://github.com/homebridge-xiaomi-roborock-vacuum/homebridge-xiaomi-roborock-vacuum/blob/ee10cbb3e98dba75d9c97791a6e1fcafc1281591/miio/lib/devices/vacuum.js # https://github.com/homebridge-xiaomi-roborock-vacuum/homebridge-xiaomi-roborock-vacuum/blob/ee10cbb3e98dba75d9c97791a6e1fcafc1281591/miio/lib/devices/viomivacuum.js

Features:

Main: - Area/Duration - Missing (get_clean_summary/get_clean_record - Battery - battery_life - Dock - set_charge - Start/Pause - set_mode_withroom - Modes (Vacuum/Vacuum&Mop/Mop) - set_mop/id_mop - Fan Speed (Silent/Standard/Medium/Turbo) - set_suction/suction_grade - Water Level (Low/Medium/High) - set_suction/water_grade

Settings: - Cleaning history - MISSING (cleanRecord) - Scheduled cleanup - get_ordertime - Vacuum along the edges - get_mode/set_mode - Secondary cleanup - set_repeat/repeat_cleaning - Mop or vacuum & mod mode - set_moproute/mop_route - DND(DoNotDisturb) - set_notdisturb/get_notdisturb - Voice On/Off - set_sound_volume/sound_volume - Remember Map - remember_map - Virtual wall/restricted area - MISSING - Map list - get_maps/rename_map/delete_map/set_map - Area editor - MISSING - Reset map - MISSING - Device leveling - MISSING - Looking for the vacuum-mop - MISSING (find_me) - Consumables statistics - get_properties - Remote Control - MISSING

Misc: - Get Properties - Language - set_language - Led - set_light - Rooms - get_ordertime (hack) - Clean History Path - MISSING (historyPath) - Map plan - MISSING (map_plan)

exception miio.integrations.vacuum.viomi.viomivacuum.ViomiVacuumException[source]

Bases: miio.exceptions.DeviceException

Exception raised by Viomi Vacuum.

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.

args
class miio.integrations.vacuum.viomi.viomivacuum.ViomiBinType(value)[source]

Bases: enum.Enum

An enumeration.

NoBin = 0
Vacuum = 1
VacuumAndWater = 3
Water = 2
class miio.integrations.vacuum.viomi.viomivacuum.ViomiCarpetTurbo(value)[source]

Bases: enum.Enum

An enumeration.

Medium = 1
Off = 0
Turbo = 2
class miio.integrations.vacuum.viomi.viomivacuum.ViomiConsumableStatus(data: List[int])[source]

Bases: miio.integrations.vacuum.roborock.vacuumcontainers.ConsumableStatus

Consumable container for viomi vacuums.

Note that this exposes mop and mop_left that are not available in the base class, while returning zeroed timedeltas for sensor_dirty and sensor_dirty_left which it doesn’t report.

property filter: datetime.timedelta

Filter usage time.

property filter_left: datetime.timedelta

How long until the filter should be changed.

property main_brush: datetime.timedelta

Main brush usage time.

property main_brush_left: datetime.timedelta

How long until the main brush should be changed.

property mop: datetime.timedelta

Return sensor_dirty_time

property mop_left: datetime.timedelta

How long until the mop should be changed.

property sensor_dirty: datetime.timedelta

Viomi has no sensor dirty, so we return zero here.

property sensor_dirty_left: datetime.timedelta

Viomi has no sensor dirty, so we return zero here.

property side_brush: datetime.timedelta

Side brush usage time.

property side_brush_left: datetime.timedelta

How long until the side brush should be changed.

class miio.integrations.vacuum.viomi.viomivacuum.ViomiEdgeState(value)[source]

Bases: enum.Enum

An enumeration.

Off = 0
On = 2
Unknown = 1
Unknown2 = 5
class miio.integrations.vacuum.viomi.viomivacuum.ViomiLanguage(value)[source]

Bases: enum.Enum

An enumeration.

CN = 1
EN = 2
class miio.integrations.vacuum.viomi.viomivacuum.ViomiLedState(value)[source]

Bases: enum.Enum

An enumeration.

Off = 0
On = 1
class miio.integrations.vacuum.viomi.viomivacuum.ViomiMode(value)[source]

Bases: enum.Enum

An enumeration.

CleanSpot = 4
CleanZone = 3
Mop = 2
Vacuum = 0
VacuumAndMop = 1
class miio.integrations.vacuum.viomi.viomivacuum.ViomiMovementDirection(value)[source]

Bases: enum.Enum

An enumeration.

Backward = 4
Forward = 1
Left = 2
Right = 3
Stop = 5
Unknown = 10
class miio.integrations.vacuum.viomi.viomivacuum.ViomiPositionPoint(pos_x, pos_y, phi, update, plan_multiplicator=1)[source]

Bases: object

Vacuum position coordinate.

image_pos_x(offset, img_center)[source]

X coordinate on an image.

image_pos_y(offset, img_center)[source]

Y coordinate on an image.

property pos_x

X coordinate with multiplicator.

property pos_y

Y coordinate with multiplicator.

class miio.integrations.vacuum.viomi.viomivacuum.ViomiRoutePattern(value)[source]

Bases: enum.Enum

Mopping pattern.

S = 0
Y = 1
class miio.integrations.vacuum.viomi.viomivacuum.ViomiVacuum(ip: str, token: Optional[str] = None, start_id: int = 0, debug: int = 0, *, model: Optional[str] = None)[source]

Bases: miio.device.Device, miio.interfaces.vacuuminterface.VacuumInterface

Interface for Viomi vacuums (viomi.vacuum.v7).

add_timer(*args, **kwargs)
carpet_mode(*args, **kwargs)
clean_mode(*args, **kwargs)
configure_wifi(ssid, password, uid=0, extra_params=None)

Configure the wifi settings.

consumable_status(*args, **kwargs)
delete_map(*args, **kwargs)
delete_timer(*args, **kwargs)
dnd_status(*args, **kwargs)
fan_speed_presets(*args, **kwargs)

Return available fan speed presets.

The returned object is a dictionary where the key is user-readable name and the value is input for set_fan_speed_preset().

get_current_position(*args, **kwargs)
classmethod get_device_group()
get_maps(*args, **kwargs)
get_positions(plan_multiplicator=1) List[miio.integrations.vacuum.viomi.viomivacuum.ViomiPositionPoint][source]

Return the last positions.

plan_multiplicator scale up the coordinates values

get_properties(properties, *, property_getter='get_prop', max_properties=None)

Request properties in slices based on given max_properties.

This is necessary as some devices have limitation on how many properties can be queried at once.

If max_properties is None, all properties are requested at once.

Parameters
  • properties (list) – List of properties to query from the device.

  • max_properties (int) – Number of properties that can be requested at once.

:return List of property values.

get_rooms(*args, **kwargs)
get_scheduled_cleanup(*args, **kwargs)
home(*args, **kwargs)

Return vacuum robot to home station/dock.

info(*args, **kwargs)
led(*args, **kwargs)
move(*args, **kwargs)
pause(*args, **kwargs)

Pause cleaning.

Raises

RuntimeError – if the method is not supported by the device

raw_command(*args, **kwargs)
rename_map(*args, **kwargs)
send(command: str, parameters: Optional[Any] = None, retry_count: Optional[int] = None, *, extra_parameters=None) Any

Send a command to the device.

Basic format of the request: {“id”: 1234, “method”: command, “parameters”: parameters}

extra_parameters allows passing elements to the top-level of the request. This is necessary for some devices, such as gateway devices, which expect the sub-device identifier to be on the top-level.

Parameters
  • command (str) – Command to send

  • parameters (dict) – Parameters to send

  • retry_count (int) – How many times to retry on error

  • extra_parameters (dict) – Extra top-level parameters

  • model (str) – Force model to avoid autodetection

send_handshake()

Send initial handshake to the device.

set_dnd(*args, **kwargs)
set_edge(*args, **kwargs)
set_fan_speed(*args, **kwargs)
set_fan_speed_preset(*args, **kwargs)

Set fan speed preset speed.

Parameters

speed_preset – a value from fan_speed_presets()

Raises

ValueError – for invalid preset value

set_language(*args, **kwargs)
set_map(*args, **kwargs)
set_remember_map(*args, **kwargs)
set_repeat(*args, **kwargs)
set_route_pattern(*args, **kwargs)
set_sound_volume(*args, **kwargs)
set_water_grade(*args, **kwargs)
start(*args, **kwargs)

Start cleaning.

start_with_room(*args, **kwargs)
status(*args, **kwargs)
stop(*args, **kwargs)

Stop cleaning.

test_properties(*args, **kwargs)
update(url: str, md5: str)

Start an OTA update.

update_progress() int

Return current update progress [0-100].

update_state()

Return current update state.

property device_id: int

Return device id (did), if available.

property model: str

Return device model.

property raw_id: int

Return the last used protocol sequence id.

retry_count = 10
supported_models = ['viomi.vacuum.v6', 'viomi.vacuum.v7', 'viomi.vacuum.v8', 'viomi.vacuum.v10', 'viomi.vacuum.v13']
timeout = 5
token: Optional[str]
class miio.integrations.vacuum.viomi.viomivacuum.ViomiVacuumSpeed(value)[source]

Bases: enum.Enum

An enumeration.

Medium = 2
Silent = 0
Standard = 1
Turbo = 3
class miio.integrations.vacuum.viomi.viomivacuum.ViomiVacuumState(value)[source]

Bases: enum.Enum

An enumeration.

Cleaning = 3
Docked = 5
Idle = 1
Idle2 = 2
IdleNotDocked = 0
Returning = 4
Unknown = -1
VacuumingAndMopping = 6
class miio.integrations.vacuum.viomi.viomivacuum.ViomiVacuumStatus(data)[source]

Bases: miio.device.DeviceStatus

property battery: int

Battery in percentage.

property bin_type: miio.integrations.vacuum.viomi.viomivacuum.ViomiBinType

Type of the inserted bin.

property charging: bool

True if battery is charging.

Note: When the battery is at 100%, device reports that it is not charging.

property clean_area: float

Cleaned area in square meters.

property clean_time: datetime.timedelta

Cleaning time.

property current_map_id: float

Current map id.

property edge_state: miio.integrations.vacuum.viomi.viomivacuum.ViomiEdgeState

Vaccum along the edges.

The settings is valid once 0: Off 1: Unknown 2: On 5: Unknown

property error: Optional[str]

String presentation for the error code.

property error_code: int

Error code from vacuum.

property fanspeed: miio.integrations.vacuum.viomi.viomivacuum.ViomiVacuumSpeed

Current fan speed.

property has_map: bool

True if device has map?

property has_new_map: bool

True if the device has scanned a new map (like a new floor).

property hw_info: str

Hardware info.

property is_on: bool

True if device is working.

property light_state: bool

Led state.

This seems doing nothing on STYJ02YM

property map_number: int

Number of saved maps.

property mop_installed: bool

True if the mop is installed.

property mop_mode: miio.integrations.vacuum.viomi.viomivacuum.ViomiMode

Whether mopping is enabled and if so which mode.

property mop_route: miio.integrations.vacuum.viomi.viomivacuum.ViomiRoutePattern

Pattern mode.

property remember_map: bool

True to remember the map.

property repeat_cleaning: bool

Secondary clean up state.

True if the cleaning is performed twice

property sound_volume: int

Voice volume level (from 0 to 100%, 0 means Off).

property state

State of the vacuum.

property water_grade: miio.integrations.vacuum.viomi.viomivacuum.ViomiWaterGrade

Water grade.

class miio.integrations.vacuum.viomi.viomivacuum.ViomiWaterGrade(value)[source]

Bases: enum.Enum

An enumeration.

High = 13
Low = 11
Medium = 12