miio.integrations.yeelight.light.yeelight module

class miio.integrations.yeelight.light.yeelight.Yeelight(ip: str | None = None, token: str | None = None, start_id: int = 0, debug: int = 0, lazy_discover: bool = True, timeout: int | None = None, model: str | None = None)[source]

Bases: Device

A rudimentary support for Yeelight bulbs.

The API is the same as defined in https://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf and only partially implmented here.

For a more complete implementation please refer to python-yeelight package (https://yeelight.readthedocs.io/en/latest/), which however requires enabling the developer mode on the bulbs.

actions() DescriptorCollection[ActionDescriptor]

Return device actions.

call_action(name: str, params=None)

Call action by name.

change_setting(name: str, params=None)

Change setting value.

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

Configure the wifi settings.

descriptors() DescriptorCollection[Descriptor]

Return a collection containing all descriptors for the device.

dump_ble_debug(table)[source]

Dump the BLE debug table, defaults to evtRuleTbl.

Some Yeelight devices offer support for BLE remotes. This command allows dumping the information about paired remotes, that can be used to decrypt the beacon payloads from these devices.

Example:

[{‘mac’: ‘xxx’, ‘evtid’: 4097, ‘pid’: 950, ‘beaconkey’: ‘xxx’},

{‘mac’: ‘xxx’, ‘evtid’: 4097, ‘pid’: 339, ‘beaconkey’: ‘xxx’}]

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.

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

off(transition=0)[source]

Power off.

on(transition=0, mode=0)[source]

Power on.

set_power [“on|off”, “sudden|smooth”, time_in_ms, mode] where mode: 0: last mode 1: normal mode 2: rgb mode 3: hsv mode 4: color flow 5: moonlight

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: Any | None = None, retry_count: int | None = 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() DescriptorCollection[PropertyDescriptor]

Return read-only properties.

set_brightness(level, transition=0)[source]

Set brightness.

set_color_temp(level, transition=500)[source]

Deprecated, use set_color_temperature instead.

set_color_temperature(level, transition=500)[source]

Set color temp in kelvin.

set_default()[source]

Set current state as default.

set_developer_mode(enable: bool) bool[source]

Enable or disable the developer mode.

set_hsv(hsv)[source]

Set color in HSV.

set_name(name: str) bool[source]

Set an internal name for the bulb.

set_power(on: bool, **kwargs)[source]

Set power on or off.

set_rgb(rgb: Tuple[int, int, int])[source]

Set color in RGB.

set_rgb_int(rgb: int)[source]

Set color from single RGB integer.

set_save_state_on_change(enable: bool) bool[source]

Enable or disable saving the state on changes.

set_scene(scene, *vals)[source]

Set the scene.

settings() DescriptorCollection[PropertyDescriptor]

Return settable properties.

status() YeelightStatus[source]

Retrieve properties.

supports_miot() bool

Return True if the device supports miot commands.

This requests a single property (siid=1, piid=1) and returns True on success.

toggle(*args)[source]

Toggle bulb state.

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 color_temperature_range: ValidSettingRange

Return supported color temperature range.

property device_id: int

Return the device id (did).

property model: str

Return device model.

property raw_id: int

Return the last used protocol sequence id.

retry_count = 3
supported_models = dict_keys(['yeelink.light.bslamp1', 'yeelink.light.bslamp2', 'yeelink.light.bslamp3', 'yeelink.light.ceil26', 'yeelink.light.ceila', 'yeelink.light.ceiling1', 'yeelink.light.ceiling2', 'yeelink.light.ceiling3', 'yeelink.light.ceiling4', 'yeelink.light.ceiling5', 'yeelink.light.ceiling6', 'yeelink.light.ceiling10', 'yeelink.light.ceiling13', 'yeelink.light.ceiling15', 'yeelink.light.ceiling18', 'yeelink.light.ceiling19', 'yeelink.light.ceiling20', 'yeelink.light.ceiling22', 'yeelink.light.ceiling24', 'yeelink.light.color1', 'yeelink.light.color2', 'yeelink.light.color3', 'yeelink.light.color4', 'yeelink.light.color5', 'yeelink.light.color7', 'yeelink.light.colora', 'yeelink.light.colorb', 'yeelink.light.colorc', 'yeelink.light.color', 'yeelink.light.ct_bulb', 'yeelink.light.ct2', 'yeelink.light.lamp1', 'yeelink.light.lamp2', 'yeelink.light.lamp4', 'yeelink.light.lamp15', 'yeelink.light.mono1', 'yeelink.light.mono5', 'yeelink.light.mono6', 'yeelink.light.mono', 'yeelink.light.monob', 'yeelink.light.strip1', 'yeelink.light.strip2', 'yeelink.light.strip4', 'yeelink.light.strip6', 'yeelink.bhf_light.v2', 'yeelink.light.lamp22', 'yeelink.light.*'])
timeout = 5
token: str | None
class miio.integrations.yeelight.light.yeelight.YeelightMode(value)[source]

Bases: IntEnum

An enumeration.

ColorTemperature = 2
HSV = 3
RGB = 1
class miio.integrations.yeelight.light.yeelight.YeelightStatus(data)[source]

Bases: DeviceStatus

descriptors() DescriptorCollection[PropertyDescriptor]

Return the dict of sensors exposed by the status container.

Use @sensor and @setting decorators to define properties.

embed(name: str, other: DeviceStatus)

Embed another status container to current one.

This makes it easy to provide a single status response for cases where responses from multiple I/O calls is wanted to provide a simple interface for downstreams.

Internally, this will prepend the name of the other class to the attribute names, and override the __getattribute__ to lookup attributes in the embedded containers.

property brightness: int

Return current brightness.

property color_flow_params: str | None

Return color flowing params.

property color_flowing: bool

Return whether the color flowing is active.

property color_mode: YeelightMode | None

Return current color mode.

property color_temp: int | None

Return current color temperature, if applicable.

property delay_off: int

Return delay in minute before bulb is off.

property developer_mode: bool | None

Return whether the developer mode is active.

property hsv: Tuple[int, int, int] | None

Return current color in HSV if HSV mode is active.

property is_on: bool

Return whether the light is on or off.

property lights: List[YeelightSubLight]

Return list of sub lights.

property moonlight_mode: bool | None

Return whether the moonlight mode is active.

property moonlight_mode_brightness: int | None

Return current moonlight brightness.

property music_mode: bool | None

Return whether the music mode is active.

property name: str

Return the internal name of the bulb.

property rgb: Tuple[int, int, int] | None

Return color in RGB if RGB mode is active.

property rgb_int: int | None

Return color as single integer if RGB mode is active.

property save_state_on_change: bool

Return whether the bulb state is saved on change.

class miio.integrations.yeelight.light.yeelight.YeelightSubLight(data, type)[source]

Bases: DeviceStatus

descriptors() DescriptorCollection[PropertyDescriptor]

Return the dict of sensors exposed by the status container.

Use @sensor and @setting decorators to define properties.

embed(name: str, other: DeviceStatus)

Embed another status container to current one.

This makes it easy to provide a single status response for cases where responses from multiple I/O calls is wanted to provide a simple interface for downstreams.

Internally, this will prepend the name of the other class to the attribute names, and override the __getattribute__ to lookup attributes in the embedded containers.

get_prop_name(prop) str[source]
property brightness: int

Return current brightness.

property color_flow_params: str | None

Return color flowing params.

property color_flowing: bool

Return whether the color flowing is active.

property color_mode: YeelightMode | None

Return current color mode.

property color_temp: int | None

Return current color temperature, if applicable.

property hsv: Tuple[int, int, int] | None

Return current color in HSV if HSV mode is active.

property is_on: bool

Return whether the light is on or off.

property rgb: Tuple[int, int, int] | None

Return color in RGB if RGB mode is active.

property rgb_int: int | None

Return color as single integer RGB if RGB mode is active.