miio.integrations.huayi.light.huizuo module

Basic implementation for HUAYI HUIZUO LAMPS (huayi.light.*)

These lamps have a white color only and support dimming and control of the temperature from 3000K to 6400K

class miio.integrations.huayi.light.huizuo.Huizuo(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 = 'huayi.light.pis123')[source]

Bases: MiotDevice

A basic support for Huizuo Lamps.

Example response of a Huizuo Pisces For Bedroom (huayi.light.pis123):

{'id': 1, 'result': [
  {'did': '', 'siid': 2, 'piid': 1, 'code': 0, 'value': False},
  {'did': '', 'siid': 2, 'piid': 2, 'code': 0, 'value': 94},
  {'did': '', 'siid': 2, 'piid': 3, 'code': 0, 'value': 6400}
  ]
}

Explanation (line-by-line):

power = '{"siid":2,"piid":1}' values = true,false
brightless(%) = '{"siid":2,"piid":2}' values = 1-100
color temperature(Kelvin) = '{"siid":2,"piid":3}' values = 3000-6400

This is basic response for all HUIZUO lamps. Also some models supports additional properties, like for Fan or Heating management. If your device does’t support some properties, the ‘None’ will be returned.

actions() DescriptorCollection[ActionDescriptor]

Return device actions.

call_action(name: str, params=None)

Call action by name.

call_action_by(siid, aiid, params=None)

Call an action.

call_action_from_mapping(name: str, params=None)

Call an action by a name in the mapping.

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.

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

Retrieve raw properties based on mapping.

get_property_by(siid: int, piid: int)

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

off()[source]

Power off.

on()[source]

Power on.

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)[source]

Set brightness.

set_color_temp(color_temp)[source]

Set color temp in kelvin.

set_property(property_key: str, value)

Sets property value using the existing mapping.

set_property_by(siid: int, piid: int, value: int | float | str | bool, *, value_type: Any | None = None, name: str | None = None)

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() DescriptorCollection[PropertyDescriptor]

Return settable properties.

status() HuizuoStatus[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.

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 the device id (did).

mapping: Dict[str, Dict[str, Any]] = {'brightness': {'piid': 2, 'siid': 2}, 'color_temp': {'piid': 3, 'siid': 2}, 'power': {'piid': 1, 'siid': 2}}
property model: str

Return device model.

property raw_id: int

Return the last used protocol sequence id.

retry_count = 3
supported_models = ['huayi.light.pis123', 'huayi.light.ari013', 'huayi.light.aries', 'huayi.light.peg091', 'huayi.light.peg093', 'huayi.light.pisces', 'huayi.light.tau023', 'huayi.light.taurus', 'huayi.light.vir063', 'huayi.light.virgo', 'huayi.light.wy', 'huayi.light.zw131']
timeout = 5
token: str | None
class miio.integrations.huayi.light.huizuo.HuizuoLampFan(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 = 'huayi.light.pis123')[source]

Bases: Huizuo

Support for Huizuo Lamps with fan.

The next section contains the fan management commands Right now I have no devices with the fan for live testing, so the following section generated based on device specitifations

actions() DescriptorCollection[ActionDescriptor]

Return device actions.

call_action(name: str, params=None)

Call action by name.

call_action_by(siid, aiid, params=None)

Call an action.

call_action_from_mapping(name: str, params=None)

Call an action by a name in the mapping.

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.

fan_off()[source]

Power fan off (only for models with fan).

fan_on()[source]

Power fan on (only for models with fan).

fan_reverse_off()[source]

Disable fan reverse (only for models which support this fan option)

fan_reverse_on()[source]

Enable fan reverse (only for models which support this fan option)

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

Retrieve raw properties based on mapping.

get_property_by(siid: int, piid: int)

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

off()

Power off.

on()

Power on.

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_basic_fan_mode()[source]

Set fan mode to ‘Basic’ (only for models with fan)

set_brightness(level)

Set brightness.

set_color_temp(color_temp)

Set color temp in kelvin.

set_fan_level(fan_level)[source]

Set fan speed level (only for models with fan)

set_natural_fan_mode()[source]

Set fan mode to ‘Natural wind’ (only for models with fan)

set_property(property_key: str, value)

Sets property value using the existing mapping.

set_property_by(siid: int, piid: int, value: int | float | str | bool, *, value_type: Any | None = None, name: str | None = None)

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() DescriptorCollection[PropertyDescriptor]

Return settable properties.

status() HuizuoStatus[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.

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 the device id (did).

mapping: Dict[str, Dict[str, Any]] = {'brightness': {'piid': 2, 'siid': 2}, 'color_temp': {'piid': 3, 'siid': 2}, 'power': {'piid': 1, 'siid': 2}}
property model: str

Return device model.

property raw_id: int

Return the last used protocol sequence id.

retry_count = 3
supported_models = ['huayi.light.pis123', 'huayi.light.ari013', 'huayi.light.aries', 'huayi.light.peg091', 'huayi.light.peg093', 'huayi.light.pisces', 'huayi.light.tau023', 'huayi.light.taurus', 'huayi.light.vir063', 'huayi.light.virgo', 'huayi.light.wy', 'huayi.light.zw131']
timeout = 5
token: str | None
class miio.integrations.huayi.light.huizuo.HuizuoLampHeater(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 = 'huayi.light.pis123')[source]

Bases: Huizuo

Support for Huizuo Lamps with heater.

The next section contains the heater management commands Right now I have no devices with the heater for live testing, so the following section generated based on device specitifations

actions() DescriptorCollection[ActionDescriptor]

Return device actions.

call_action(name: str, params=None)

Call action by name.

call_action_by(siid, aiid, params=None)

Call an action.

call_action_from_mapping(name: str, params=None)

Call an action by a name in the mapping.

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.

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

Retrieve raw properties based on mapping.

get_property_by(siid: int, piid: int)

Get a single property (siid/piid).

heater_off()[source]

Power heater off (only for models with heater).

heater_on()[source]

Power heater on (only for models with heater).

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()

Power off.

on()

Power on.

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)

Set brightness.

set_color_temp(color_temp)

Set color temp in kelvin.

set_heat_level(heat_level)[source]

Set heat level (only for models with heater)

set_property(property_key: str, value)

Sets property value using the existing mapping.

set_property_by(siid: int, piid: int, value: int | float | str | bool, *, value_type: Any | None = None, name: str | None = None)

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() DescriptorCollection[PropertyDescriptor]

Return settable properties.

status() HuizuoStatus[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.

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 the device id (did).

mapping: Dict[str, Dict[str, Any]] = {'brightness': {'piid': 2, 'siid': 2}, 'color_temp': {'piid': 3, 'siid': 2}, 'power': {'piid': 1, 'siid': 2}}
property model: str

Return device model.

property raw_id: int

Return the last used protocol sequence id.

retry_count = 3
supported_models = ['huayi.light.pis123', 'huayi.light.ari013', 'huayi.light.aries', 'huayi.light.peg091', 'huayi.light.peg093', 'huayi.light.pisces', 'huayi.light.tau023', 'huayi.light.taurus', 'huayi.light.vir063', 'huayi.light.virgo', 'huayi.light.wy', 'huayi.light.zw131']
timeout = 5
token: str | None
class miio.integrations.huayi.light.huizuo.HuizuoLampScene(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 = 'huayi.light.pis123')[source]

Bases: Huizuo

Support for Huizuo Lamps with additional scene commands.

The next section contains the scene management commands Right now I have no devices with the scenes for live testing, so the following section generated based on device specitifations

actions() DescriptorCollection[ActionDescriptor]

Return device actions.

brightness_decrease()[source]

Decrease the brightness (only for models with scenes support).

brightness_increase()[source]

Increase the brightness (only for models with scenes support).

brightness_switch()[source]

Switch between the brightnesses (only for models with scenes support).

call_action(name: str, params=None)

Call action by name.

call_action_by(siid, aiid, params=None)

Call an action.

call_action_from_mapping(name: str, params=None)

Call an action by a name in the mapping.

change_setting(name: str, params=None)

Change setting value.

colortemp_decrease()[source]

Decrease the color temperature (only for models with scenes support).

colortemp_increase()[source]

Increase the color temperature (only for models with scenes support).

colortemp_switch()[source]

Switch between the color temperatures (only for models with scenes support).

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.

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

Retrieve raw properties based on mapping.

get_property_by(siid: int, piid: int)

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

off()

Power off.

on()

Power on.

on_or_increase_brightness()[source]

Switch on or increase brightness (only for models with scenes support).

on_or_increase_colortemp()[source]

Switch on or increase color temperature (only for models with scenes support).

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

scene_on_off()[source]

Switch the on/off (only for models with scenes support).

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)

Set brightness.

set_color_temp(color_temp)

Set color temp in kelvin.

set_property(property_key: str, value)

Sets property value using the existing mapping.

set_property_by(siid: int, piid: int, value: int | float | str | bool, *, value_type: Any | None = None, name: str | None = None)

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() DescriptorCollection[PropertyDescriptor]

Return settable properties.

status() HuizuoStatus

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.

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 the device id (did).

mapping: Dict[str, Dict[str, Any]] = {'brightness': {'piid': 2, 'siid': 2}, 'color_temp': {'piid': 3, 'siid': 2}, 'power': {'piid': 1, 'siid': 2}}
property model: str

Return device model.

property raw_id: int

Return the last used protocol sequence id.

retry_count = 3
supported_models = ['huayi.light.pis123', 'huayi.light.ari013', 'huayi.light.aries', 'huayi.light.peg091', 'huayi.light.peg093', 'huayi.light.pisces', 'huayi.light.tau023', 'huayi.light.taurus', 'huayi.light.vir063', 'huayi.light.virgo', 'huayi.light.wy', 'huayi.light.zw131']
timeout = 5
token: str | None
class miio.integrations.huayi.light.huizuo.HuizuoStatus(data: Dict[str, Any])[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_temp: int

Return current color temperature.

property fan_mode: int | None

Return 0 if ‘Basic’ and 1 if ‘Natural wind’.

property fan_speed_level: int | None

Return current Fan speed level.

property heat_level: int | None

Return Heater’s heat level.

property heater_fault_code: int | None

Return Heater’s fault code.

0 - No Fault

property is_fan_on: bool | None

Return True if Fan is on.

property is_fan_reverse: bool | None

Return True if Fan reverse is on.

property is_heater_on: bool | None

Return True if Heater is on.

property is_on: bool

Return True if device is on.