miio.miot_device module

class miio.miot_device.MiotDevice(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, mapping: Optional[Dict[str, Dict[str, Any]]] = None)[source]

Bases: Device

Main class representing a MIoT device.

The inheriting class should use the _mappings to set the MiotMapping keyed by the model names to inform which mapping is to be used for methods contained in this class. Defining the mappiong using mapping class variable is deprecated but remains in-place for backwards compatibility.

buttons() List[ButtonDescriptor]

Return a list of button-like, clickable actions of the device.

call_action(name: str, params=None)[source]

Call an action by a name in the mapping.

call_action_by(siid, aiid, params=None)[source]

Call an action.

configure_wifi(ssid, password, uid=0, extra_params=None)

Configure the wifi settings.

classmethod get_device_group()
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.

Returns

List of property values.

get_properties_for_mapping(*, max_properties=15) list[source]

Retrieve raw properties based on mapping.

get_property_by(siid: int, piid: int)[source]

Get a single property (siid/piid).

info(*, skip_cache=False) DeviceInfo

Get (and cache) miIO protocol information from the device.

This includes information about connected wlan network, and hardware and software versions.

Parameters

bool (skip_cache) – Skip the cache

raw_command(command, parameters)

Send a raw command to the device. This is mostly useful when trying out commands which are not implemented by a given device instance.

Parameters
  • command (str) – Command to send

  • parameters (dict) – Parameters to send

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.

sensors() Dict[str, SensorDescriptor]

Return sensors.

set_property(property_key: str, value)[source]

Sets property value using the existing mapping.

set_property_by(siid: int, piid: int, value: Union[int, float, str, bool], value_type: Any = None)[source]

Set a single property (siid/piid) to given value.

value_type can be given to convert the value to wanted type, allowed types are: int, float, bool, str

settings() Dict[str, SettingDescriptor]

Return list of settings.

status() DeviceStatus

Return device status.

switches() Dict[str, SwitchDescriptor]

Return toggleable switches.

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.

mapping: Dict[str, Dict[str, Any]]
property model: str

Return device model.

property raw_id: int

Return the last used protocol sequence id.

retry_count = 3
supported_models = []
timeout = 5
token: Optional[str]
class miio.miot_device.MiotValueType(value)[source]

Bases: Enum

An enumeration.

Bool = functools.partial(<function MiotValueType._str2bool>)
Float = <class 'float'>
Int = <class 'int'>
Str = <class 'str'>