miio.device module

class miio.device.Device(ip: Optional[str] = None, token: Optional[str] = None, start_id: int = 0, debug: int = 0, lazy_discover: bool = True, timeout: Optional[int] = None, *, model: Optional[str] = None)[source]

Bases: object

Base class for all device implementations.

This is the main class providing the basic protocol handling for devices using the miIO protocol. This class should not be initialized directly but a device- specific class inheriting it should be used instead of it.

configure_wifi(ssid, password, uid=0, extra_params=None)[source]

Configure the wifi settings.

classmethod get_device_group()
get_properties(properties, *, property_getter='get_prop', max_properties=None)[source]

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.

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

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


List of property values.

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

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.

  • 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 initial handshake to the device.

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

Start an OTA update.

update_progress() int[source]

Return current update progress [0-100].


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 = 3
supported_models = []
timeout = 5
class miio.device.DeviceStatus[source]

Bases: object

Base class for status containers.

All status container classes should inherit from this class. The __repr__ implementation returns all defined properties and their values.

class miio.device.UpdateState(value)[source]

Bases: Enum

An enumeration.

Downloading = 'downloading'
Failed = 'failed'
Idle = 'idle'
Installing = 'installing'