miio.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

exception miio.huizuo.HuizuoException[source]

Bases: miio.exceptions.DeviceException

with_traceback()

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

args
class miio.huizuo.Huizuo(ip: Optional[str] = None, token: Optional[str] = None, start_id: int = 0, debug: int = 0, lazy_discover: bool = True, model: str = 'huayi.light.pis123')[source]

Bases: miio.miot_device.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

call_action(*args, **kwargs)
call_action_by(*args, **kwargs)
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.

:return List of property values.

get_properties_for_mapping(*, max_properties=15) list

Retrieve raw properties based on mapping.

get_property_by(*args, **kwargs)
info(*args, **kwargs)
off(*args, **kwargs)
on(*args, **kwargs)
raw_command(*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_brightness(*args, **kwargs)
set_color_temp(*args, **kwargs)
set_property(property_key: str, value)

Sets property value using the existing mapping.

set_property_by(*args, **kwargs)
status(*args, **kwargs)
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.

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: Optional[str]
class miio.huizuo.HuizuoLampFan(ip: Optional[str] = None, token: Optional[str] = None, start_id: int = 0, debug: int = 0, lazy_discover: bool = True, model: str = 'huayi.light.pis123')[source]

Bases: miio.huizuo.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

call_action(*args, **kwargs)
call_action_by(*args, **kwargs)
configure_wifi(ssid, password, uid=0, extra_params=None)

Configure the wifi settings.

fan_off(*args, **kwargs)
fan_on(*args, **kwargs)
fan_reverse_off(*args, **kwargs)
fan_reverse_on(*args, **kwargs)
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.

:return List of property values.

get_properties_for_mapping(*, max_properties=15) list

Retrieve raw properties based on mapping.

get_property_by(*args, **kwargs)
info(*args, **kwargs)
off(*args, **kwargs)
on(*args, **kwargs)
raw_command(*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_basic_fan_mode(*args, **kwargs)
set_brightness(*args, **kwargs)
set_color_temp(*args, **kwargs)
set_fan_level(*args, **kwargs)
set_natural_fan_mode(*args, **kwargs)
set_property(property_key: str, value)

Sets property value using the existing mapping.

set_property_by(*args, **kwargs)
status(*args, **kwargs)
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.

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: Optional[str]
class miio.huizuo.HuizuoLampHeater(ip: Optional[str] = None, token: Optional[str] = None, start_id: int = 0, debug: int = 0, lazy_discover: bool = True, model: str = 'huayi.light.pis123')[source]

Bases: miio.huizuo.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

call_action(*args, **kwargs)
call_action_by(*args, **kwargs)
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.

:return List of property values.

get_properties_for_mapping(*, max_properties=15) list

Retrieve raw properties based on mapping.

get_property_by(*args, **kwargs)
heater_off(*args, **kwargs)
heater_on(*args, **kwargs)
info(*args, **kwargs)
off(*args, **kwargs)
on(*args, **kwargs)
raw_command(*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_brightness(*args, **kwargs)
set_color_temp(*args, **kwargs)
set_heat_level(*args, **kwargs)
set_property(property_key: str, value)

Sets property value using the existing mapping.

set_property_by(*args, **kwargs)
status(*args, **kwargs)
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.

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: Optional[str]
class miio.huizuo.HuizuoLampScene(ip: Optional[str] = None, token: Optional[str] = None, start_id: int = 0, debug: int = 0, lazy_discover: bool = True, model: str = 'huayi.light.pis123')[source]

Bases: miio.huizuo.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

brightness_decrease(*args, **kwargs)
brightness_increase(*args, **kwargs)
brightness_switch(*args, **kwargs)
call_action(*args, **kwargs)
call_action_by(*args, **kwargs)
colortemp_decrease(*args, **kwargs)
colortemp_increase(*args, **kwargs)
colortemp_switch(*args, **kwargs)
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.

:return List of property values.

get_properties_for_mapping(*, max_properties=15) list

Retrieve raw properties based on mapping.

get_property_by(*args, **kwargs)
info(*args, **kwargs)
off(*args, **kwargs)
on(*args, **kwargs)
on_or_increase_brightness(*args, **kwargs)
on_or_increase_colortemp(*args, **kwargs)
raw_command(*args, **kwargs)
scene_on_off(*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_brightness(*args, **kwargs)
set_color_temp(*args, **kwargs)
set_property(property_key: str, value)

Sets property value using the existing mapping.

set_property_by(*args, **kwargs)
status(*args, **kwargs)
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.

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: Optional[str]
class miio.huizuo.HuizuoStatus(data: Dict[str, Any])[source]

Bases: miio.device.DeviceStatus

property brightness: int

Return current brightness.

property color_temp: int

Return current color temperature.

property fan_mode: Optional[int]

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

property fan_speed_level: Optional[int]

Return current Fan speed level.

property heat_level: Optional[int]

Return Heater’s heat level.

property heater_fault_code: Optional[int]

Return Heater’s fault code.

0 - No Fault

property is_fan_on: Optional[bool]

Return True if Fan is on.

property is_fan_reverse: Optional[bool]

Return True if Fan reverse is on.

property is_heater_on: Optional[bool]

Return True if Heater is on.

property is_on: bool

Return True if device is on.