From 5e03352a73b206044d4d0cf789f9f52f235a356f Mon Sep 17 00:00:00 2001 From: Teemu R Date: Wed, 1 Dec 2021 18:41:36 +0100 Subject: [PATCH 1/3] Add issue template for missing model information (#1200) --- .github/ISSUE_TEMPLATE/missing-model.md | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/missing-model.md diff --git a/.github/ISSUE_TEMPLATE/missing-model.md b/.github/ISSUE_TEMPLATE/missing-model.md new file mode 100644 index 000000000..249dbdfcd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/missing-model.md @@ -0,0 +1,26 @@ +--- +name: Missing model information for a supported device +about: Inform about functioning device that prints out a warning about unsupported model +title: '' +labels: missing model +assignees: '' + +--- + +If you are receiving a warning indicating an unsupported model (`Found an unsupported model '' for class ''.`), +this means that the implementation does not list your model as supported. + +If it is working fine for you nevertheless, feel free to open an issue or create a PR to add the model to the `_supported_models` ([example](https://github.com/rytilahti/python-miio/blob/72cd423433ad71918b5a8e55833a5b2eda9877a5/miio/integrations/vacuum/roborock/vacuum.py#L125-L153)) for that class. + +Before submitting, use the search to see if there is an existing issue for the device model, thanks! + +**Device information:** + + - Name(s) of the device: + - Link: + +Use `miiocli device --ip --token `. + + - Model: [e.g., lumi.gateway.v3] + - Hardware version: + - Firmware version: From 7fc45404d1b14c461568510b999113524d84ba44 Mon Sep 17 00:00:00 2001 From: Teemu R Date: Thu, 2 Dec 2021 00:44:24 +0100 Subject: [PATCH 2/3] Add known models to supported models (#1202) * airhumidifier: add supported models * gateway: add supported models * aurqualitymonitor: add supported models * Add currently known models to supported models --- miio/airconditioningcompanion.py | 2 ++ miio/airconditioningcompanionMCN.py | 2 ++ miio/airdehumidifier.py | 2 ++ miio/airfresh.py | 2 ++ miio/airfresh_t2017.py | 2 ++ miio/airhumidifier.py | 9 +++++++++ miio/airhumidifier_jsq.py | 2 ++ miio/airhumidifier_mjjsq.py | 2 ++ miio/airpurifier.py | 11 +++++++++++ miio/airpurifier_airdog.py | 4 ++++ miio/airqualitymonitor.py | 2 ++ miio/alarmclock.py | 2 ++ miio/aqaracamera.py | 2 ++ miio/ceil.py | 2 ++ miio/chuangmi_camera.py | 4 ++++ miio/chuangmi_ir.py | 2 ++ miio/chuangmi_plug.py | 2 ++ miio/cooker.py | 4 +++- miio/fan.py | 6 ++++++ miio/fan_leshow.py | 2 ++ miio/gateway/gateway.py | 13 +++++++++++++ miio/gateway/gatewaydevice.py | 2 ++ miio/heater.py | 2 ++ miio/integrations/vacuum/viomi/viomivacuum.py | 3 +++ miio/philips_bulb.py | 2 ++ miio/philips_eyecare.py | 2 ++ miio/philips_moonlight.py | 2 ++ miio/philips_rwread.py | 2 ++ miio/pwzn_relay.py | 2 ++ miio/scishare_coffeemaker.py | 2 ++ miio/tests/test_device.py | 9 +++++++++ miio/toiletlid.py | 4 ++++ miio/walkingpad.py | 2 ++ miio/waterpurifier.py | 4 +++- miio/waterpurifier_yunmi.py | 4 ++++ miio/wifirepeater.py | 2 ++ miio/wifispeaker.py | 2 ++ 37 files changed, 123 insertions(+), 2 deletions(-) diff --git a/miio/airconditioningcompanion.py b/miio/airconditioningcompanion.py index aba46c6e7..9eba51b5e 100644 --- a/miio/airconditioningcompanion.py +++ b/miio/airconditioningcompanion.py @@ -227,6 +227,8 @@ def mode(self) -> Optional[OperationMode]: class AirConditioningCompanion(Device): """Main class representing Xiaomi Air Conditioning Companion V1 and V2.""" + _supported_models = MODELS_SUPPORTED + def __init__( self, ip: str = None, diff --git a/miio/airconditioningcompanionMCN.py b/miio/airconditioningcompanionMCN.py index cc90b016c..f572b420f 100644 --- a/miio/airconditioningcompanionMCN.py +++ b/miio/airconditioningcompanionMCN.py @@ -102,6 +102,8 @@ def swing_mode(self) -> Optional[SwingMode]: class AirConditioningCompanionMcn02(Device): """Main class representing Xiaomi Air Conditioning Companion V1 and V2.""" + _supported_models = [MODEL_ACPARTNER_MCN02] + def __init__( self, ip: str = None, diff --git a/miio/airdehumidifier.py b/miio/airdehumidifier.py index 2b5906241..d8984ad7d 100644 --- a/miio/airdehumidifier.py +++ b/miio/airdehumidifier.py @@ -158,6 +158,8 @@ def alarm(self) -> str: class AirDehumidifier(Device): """Implementation of Xiaomi Mi Air Dehumidifier.""" + _supported_models = list(AVAILABLE_PROPERTIES.keys()) + @command( default_output=format_output( "", diff --git a/miio/airfresh.py b/miio/airfresh.py index 084322c01..a7e004aed 100644 --- a/miio/airfresh.py +++ b/miio/airfresh.py @@ -219,6 +219,8 @@ def extra_features(self) -> Optional[int]: class AirFresh(Device): """Main class representing the air fresh.""" + _supported_models = list(AVAILABLE_PROPERTIES.keys()) + @command( default_output=format_output( "", diff --git a/miio/airfresh_t2017.py b/miio/airfresh_t2017.py index 1bf6800c4..c6b54eee3 100644 --- a/miio/airfresh_t2017.py +++ b/miio/airfresh_t2017.py @@ -224,6 +224,8 @@ def display_orientation(self) -> Optional[DisplayOrientation]: class AirFreshA1(Device): """Main class representing the air fresh a1.""" + _supported_models = list(AVAILABLE_PROPERTIES.keys()) + @command( default_output=format_output( "", diff --git a/miio/airhumidifier.py b/miio/airhumidifier.py index d084e8a0b..6574adc01 100644 --- a/miio/airhumidifier.py +++ b/miio/airhumidifier.py @@ -17,6 +17,13 @@ MODEL_HUMIDIFIER_CB1 = "zhimi.humidifier.cb1" MODEL_HUMIDIFIER_CB2 = "zhimi.humidifier.cb2" +SUPPORTED_MODELS = [ + MODEL_HUMIDIFIER_V1, + MODEL_HUMIDIFIER_CA1, + MODEL_HUMIDIFIER_CB1, + MODEL_HUMIDIFIER_CB2, +] + AVAILABLE_PROPERTIES_COMMON = [ "power", "mode", @@ -251,6 +258,8 @@ def button_pressed(self) -> Optional[str]: class AirHumidifier(Device): """Implementation of Xiaomi Mi Air Humidifier.""" + _supported_models = SUPPORTED_MODELS + @command( default_output=format_output( "", diff --git a/miio/airhumidifier_jsq.py b/miio/airhumidifier_jsq.py index c3dee049d..9793b83ae 100644 --- a/miio/airhumidifier_jsq.py +++ b/miio/airhumidifier_jsq.py @@ -141,6 +141,8 @@ def use_time(self) -> Optional[int]: class AirHumidifierJsq(Device): """Implementation of Xiaomi Zero Fog Humidifier: shuii.humidifier.jsq001.""" + _supported_models = [MODEL_HUMIDIFIER_JSQ001] + @command( default_output=format_output( "", diff --git a/miio/airhumidifier_mjjsq.py b/miio/airhumidifier_mjjsq.py index 0e24be59a..2eeda2ebb 100644 --- a/miio/airhumidifier_mjjsq.py +++ b/miio/airhumidifier_mjjsq.py @@ -132,6 +132,8 @@ def use_time(self) -> Optional[int]: class AirHumidifierMjjsq(Device): """Support for deerma.humidifier.(mj)jsq.""" + _supported_models = list(AVAILABLE_PROPERTIES.keys()) + @command( default_output=format_output( "", diff --git a/miio/airpurifier.py b/miio/airpurifier.py index b38efc058..e774402c0 100644 --- a/miio/airpurifier.py +++ b/miio/airpurifier.py @@ -13,6 +13,15 @@ _LOGGER = logging.getLogger(__name__) +SUPPORTED_MODELS = [ + "zhimi.airpurifier.v3", + "zhimi.airpurifier.v6", + "zhimi.airpurifier.v7", + "zhimi.airpurifier.m1", + "zhimi.airpurifier.m2", +] + + class AirPurifierException(DeviceException): pass @@ -300,6 +309,8 @@ def button_pressed(self) -> Optional[str]: class AirPurifier(Device): """Main class representing the air purifier.""" + _supported_models = SUPPORTED_MODELS + @command( default_output=format_output( "", diff --git a/miio/airpurifier_airdog.py b/miio/airpurifier_airdog.py index 9ce047a58..722f75b5e 100644 --- a/miio/airpurifier_airdog.py +++ b/miio/airpurifier_airdog.py @@ -101,6 +101,10 @@ def hcho(self) -> Optional[int]: class AirDogX3(Device): + """Support for Airdog air purifiers (airdog.airpurifier.x*).""" + + _supported_models = list(AVAILABLE_PROPERTIES.keys()) + @command( default_output=format_output( "", diff --git a/miio/airqualitymonitor.py b/miio/airqualitymonitor.py index 5d97db0a4..1fcf95971 100644 --- a/miio/airqualitymonitor.py +++ b/miio/airqualitymonitor.py @@ -151,6 +151,8 @@ def tvoc(self) -> Optional[int]: class AirQualityMonitor(Device): """Xiaomi PM2.5 Air Quality Monitor.""" + _supported_models = list(AVAILABLE_PROPERTIES.keys()) + @command( default_output=format_output( "", diff --git a/miio/alarmclock.py b/miio/alarmclock.py index 2eb831d9b..04cc9c526 100644 --- a/miio/alarmclock.py +++ b/miio/alarmclock.py @@ -63,6 +63,8 @@ class AlarmClock(Device): seconds /tries to get an answer. """ + _supported_models = ["zimi.clock.myk01"] + @command() def get_config_version(self): """ diff --git a/miio/aqaracamera.py b/miio/aqaracamera.py index 5bdeac793..8fc0364e8 100644 --- a/miio/aqaracamera.py +++ b/miio/aqaracamera.py @@ -156,6 +156,8 @@ def av_password(self) -> str: class AqaraCamera(Device): """Main class representing the Xiaomi Aqara Camera.""" + _supported_models = ["lumi.camera.aq1"] + @command( default_output=format_output( "", diff --git a/miio/ceil.py b/miio/ceil.py index 4f2c40a3d..600578e68 100644 --- a/miio/ceil.py +++ b/miio/ceil.py @@ -73,6 +73,8 @@ class Ceil(Device): # TODO: - Auto On/Off Not Supported # - Adjust Scenes with Wall Switch Not Supported + _supported_models = ["unknown.models"] + @command( default_output=format_output( "", diff --git a/miio/chuangmi_camera.py b/miio/chuangmi_camera.py index 1a13787fd..cfbfa100e 100644 --- a/miio/chuangmi_camera.py +++ b/miio/chuangmi_camera.py @@ -64,6 +64,8 @@ class NASVideoRetentionTime(enum.IntEnum): CONST_HIGH_SENSITIVITY = [MotionDetectionSensitivity.High] * 32 CONST_LOW_SENSITIVITY = [MotionDetectionSensitivity.Low] * 32 +SUPPORTED_MODELS = ["chuangmi.camera.ipc009", "chuangmi.camera.ipc019"] + class CameraStatus(DeviceStatus): """Container for status reports from the Xiaomi Chuangmi Camera.""" @@ -148,6 +150,8 @@ def mini_level(self) -> int: class ChuangmiCamera(Device): """Main class representing the Xiaomi Chuangmi Camera.""" + _supported_models = SUPPORTED_MODELS + @command( default_output=format_output( "", diff --git a/miio/chuangmi_ir.py b/miio/chuangmi_ir.py index 7499873b0..dacd0de46 100644 --- a/miio/chuangmi_ir.py +++ b/miio/chuangmi_ir.py @@ -31,6 +31,8 @@ class ChuangmiIrException(DeviceException): class ChuangmiIr(Device): """Main class representing Chuangmi IR Remote Controller.""" + _supported_models = ["unknown.models"] + PRONTO_RE = re.compile(r"^([\da-f]{4}\s?){3,}([\da-f]{4})$", re.IGNORECASE) @command( diff --git a/miio/chuangmi_plug.py b/miio/chuangmi_plug.py index 5a7af9646..b0fd39d4c 100644 --- a/miio/chuangmi_plug.py +++ b/miio/chuangmi_plug.py @@ -89,6 +89,8 @@ def wifi_led(self) -> Optional[bool]: class ChuangmiPlug(Device): """Main class representing the Chuangmi Plug.""" + _supported_models = list(AVAILABLE_PROPERTIES.keys()) + @command( default_output=format_output( "", diff --git a/miio/cooker.py b/miio/cooker.py index dc91de04c..2d7d1db42 100644 --- a/miio/cooker.py +++ b/miio/cooker.py @@ -578,7 +578,9 @@ def custom(self) -> Optional[CookerCustomizations]: class Cooker(Device): - """Main class representing the cooker.""" + """Main class representing the chunmi.cooker.*.""" + + _supported_models = [*MODEL_NORMAL, *MODEL_PRESSURE] @command( default_output=format_output( diff --git a/miio/fan.py b/miio/fan.py index cb0056a88..473b8277c 100644 --- a/miio/fan.py +++ b/miio/fan.py @@ -276,6 +276,8 @@ def child_lock(self) -> bool: class Fan(Device): """Main class representing the Xiaomi Mi Smart Pedestal Fan.""" + _supported_models = list(AVAILABLE_PROPERTIES.keys() - MODEL_FAN_P5) + def __init__( self, ip: str = None, @@ -524,6 +526,10 @@ def __init__( class FanP5(Device): + """Support for dmaker.fan.p5.""" + + _supported_models = [MODEL_FAN_P5] + def __init__( self, ip: str = None, diff --git a/miio/fan_leshow.py b/miio/fan_leshow.py index 4b083f421..8e2fd3aa1 100644 --- a/miio/fan_leshow.py +++ b/miio/fan_leshow.py @@ -93,6 +93,8 @@ def error_detected(self) -> bool: class FanLeshow(Device): """Main class representing the Xiaomi Rosou SS4 Ventilator.""" + _supported_models = list(AVAILABLE_PROPERTIES.keys()) + @command( default_output=format_output( "", diff --git a/miio/gateway/gateway.py b/miio/gateway/gateway.py index 053e2f1cb..c9fa3cb5d 100644 --- a/miio/gateway/gateway.py +++ b/miio/gateway/gateway.py @@ -27,6 +27,17 @@ GATEWAY_MODEL_AC_V3 = "lumi.acpartner.v3" +SUPPORTED_MODELS = [ + GATEWAY_MODEL_CHINA, + GATEWAY_MODEL_EU, + GATEWAY_MODEL_ZIG3, + GATEWAY_MODEL_AQARA, + GATEWAY_MODEL_AC_V1, + GATEWAY_MODEL_AC_V2, + GATEWAY_MODEL_AC_V3, +] + + class GatewayException(DeviceException): """Exception for the Xioami Gateway communication.""" @@ -77,6 +88,8 @@ class Gateway(Device): * get_lumi_bind ["scene", ] for rooms/devices """ + _supported_models = SUPPORTED_MODELS + def __init__( self, ip: str = None, diff --git a/miio/gateway/gatewaydevice.py b/miio/gateway/gatewaydevice.py index 8935dd6f0..9629fad29 100644 --- a/miio/gateway/gatewaydevice.py +++ b/miio/gateway/gatewaydevice.py @@ -17,6 +17,8 @@ class GatewayDevice(Device): """GatewayDevice class Specifies the init method for all gateway device functionalities.""" + _supported_models = ["dummy.device"] + def __init__( self, ip: str = None, diff --git a/miio/heater.py b/miio/heater.py index e0c98518f..41f5b5100 100644 --- a/miio/heater.py +++ b/miio/heater.py @@ -127,6 +127,8 @@ def delay_off_countdown(self) -> Optional[int]: class Heater(Device): """Main class representing the Smartmi Zhimi Heater.""" + _supported_models = list(SUPPORTED_MODELS.keys()) + @command( default_output=format_output( "", diff --git a/miio/integrations/vacuum/viomi/viomivacuum.py b/miio/integrations/vacuum/viomi/viomivacuum.py index 399c7a5c7..7192b1062 100644 --- a/miio/integrations/vacuum/viomi/viomivacuum.py +++ b/miio/integrations/vacuum/viomi/viomivacuum.py @@ -62,6 +62,7 @@ _LOGGER = logging.getLogger(__name__) +SUPPORTED_MODELS = ["viomi.vacuum.v7"] ERROR_CODES = { 0: "Sleeping and not charging", @@ -479,6 +480,8 @@ def _get_rooms_from_schedules(schedules: List[str]) -> Tuple[bool, Dict]: class ViomiVacuum(Device): """Interface for Viomi vacuums (viomi.vacuum.v7).""" + _supported_models = SUPPORTED_MODELS + timeout = 5 retry_count = 10 diff --git a/miio/philips_bulb.py b/miio/philips_bulb.py index a70a0ef26..ed165b393 100644 --- a/miio/philips_bulb.py +++ b/miio/philips_bulb.py @@ -68,6 +68,8 @@ def delay_off_countdown(self) -> int: class PhilipsWhiteBulb(Device): """Main class representing Xiaomi Philips White LED Ball Lamp.""" + _supported_models = list(AVAILABLE_PROPERTIES.keys()) + @command( default_output=format_output( "", diff --git a/miio/philips_eyecare.py b/miio/philips_eyecare.py index f2544b72f..4ccadbf78 100644 --- a/miio/philips_eyecare.py +++ b/miio/philips_eyecare.py @@ -78,6 +78,8 @@ def delay_off_countdown(self) -> int: class PhilipsEyecare(Device): """Main class representing Xiaomi Philips Eyecare Smart Lamp 2.""" + _supported_models = ["unknown.models"] + @command( default_output=format_output( "", diff --git a/miio/philips_moonlight.py b/miio/philips_moonlight.py index 892025c03..8e20279c0 100644 --- a/miio/philips_moonlight.py +++ b/miio/philips_moonlight.py @@ -114,6 +114,8 @@ class PhilipsMoonlight(Device): enable_bl # Night light """ + _supported_models = ["philips.light.moonlight"] + @command( default_output=format_output( "", diff --git a/miio/philips_rwread.py b/miio/philips_rwread.py index 9b1b42a81..04d9eb29d 100644 --- a/miio/philips_rwread.py +++ b/miio/philips_rwread.py @@ -83,6 +83,8 @@ def child_lock(self) -> bool: class PhilipsRwread(Device): """Main class representing Xiaomi Philips RW Read.""" + _supported_models = list(AVAILABLE_PROPERTIES.keys()) + @command( default_output=format_output( "", diff --git a/miio/pwzn_relay.py b/miio/pwzn_relay.py index 8d268a564..95f146024 100644 --- a/miio/pwzn_relay.py +++ b/miio/pwzn_relay.py @@ -99,6 +99,8 @@ def on_count(self) -> Optional[int]: class PwznRelay(Device): """Main class representing the PWZN Relay.""" + _supported_models = list(AVAILABLE_PROPERTIES.keys()) + @command(default_output=format_output("", "on_count: {result.on_count}\n")) def status(self) -> PwznRelayStatus: """Retrieve properties.""" diff --git a/miio/scishare_coffeemaker.py b/miio/scishare_coffeemaker.py index 99964a88e..fc18c53d2 100644 --- a/miio/scishare_coffeemaker.py +++ b/miio/scishare_coffeemaker.py @@ -29,6 +29,8 @@ class Status(IntEnum): class ScishareCoffee(Device): """Main class for Scishare coffee maker (scishare.coffee.s1102).""" + _supported_models = ["scishare.coffee.s1102"] + @command() def status(self) -> int: """Device status.""" diff --git a/miio/tests/test_device.py b/miio/tests/test_device.py index 6412cae24..f435a4ddf 100644 --- a/miio/tests/test_device.py +++ b/miio/tests/test_device.py @@ -104,3 +104,12 @@ def test_device_ctor_model(cls): dummy_model = "dummy" dev = cls("127.0.0.1", "68ffffffffffffffffffffffffffffff", model=dummy_model) assert dev.model == dummy_model + + +@pytest.mark.parametrize("cls", Device.__subclasses__()) +def test_device_supported_models(cls): + """Make sure that every device subclass has a non-empty supported models.""" + if cls.__name__ == "MiotDevice": # skip miotdevice + return + + assert cls._supported_models diff --git a/miio/toiletlid.py b/miio/toiletlid.py index 4f78927e6..eb522f045 100644 --- a/miio/toiletlid.py +++ b/miio/toiletlid.py @@ -71,6 +71,10 @@ def ambient_light(self) -> str: class Toiletlid(Device): + """Support for tinymu.toiletlid.v1.""" + + _supported_models = list(AVAILABLE_PROPERTIES.keys()) + @command( default_output=format_output( "", diff --git a/miio/walkingpad.py b/miio/walkingpad.py index d9bb877c5..ba4cde19e 100644 --- a/miio/walkingpad.py +++ b/miio/walkingpad.py @@ -101,6 +101,8 @@ def calories(self) -> int: class Walkingpad(Device): """Main class representing Xiaomi Walkingpad.""" + _supported_models = ["ksmb.walkingpad.v3"] + @command( default_output=format_output( "", diff --git a/miio/waterpurifier.py b/miio/waterpurifier.py index 80d3dfddf..e9b2ce73f 100644 --- a/miio/waterpurifier.py +++ b/miio/waterpurifier.py @@ -91,7 +91,9 @@ def valve(self) -> str: class WaterPurifier(Device): - """Main class representing the waiter purifier.""" + """Main class representing the water purifier.""" + + _supported_models = ["unknown.models"] @command( default_output=format_output( diff --git a/miio/waterpurifier_yunmi.py b/miio/waterpurifier_yunmi.py index c50b7ea8a..30d0b7c88 100644 --- a/miio/waterpurifier_yunmi.py +++ b/miio/waterpurifier_yunmi.py @@ -7,6 +7,8 @@ _LOGGER = logging.getLogger(__name__) +SUPPORTED_MODELS = ["yunmi.waterpuri.lx9", "yunmi.waterpuri.lx11"] + ERROR_DESCRIPTION = [ { "name": "Water temperature anomaly", @@ -240,6 +242,8 @@ def tds_warn_thd(self) -> int: class WaterPurifierYunmi(Device): """Main class representing the water purifier (Yunmi model).""" + _supported_models = SUPPORTED_MODELS + @command( default_output=format_output( "", diff --git a/miio/wifirepeater.py b/miio/wifirepeater.py index bced42896..e6ca921ad 100644 --- a/miio/wifirepeater.py +++ b/miio/wifirepeater.py @@ -71,6 +71,8 @@ def ssid_hidden(self) -> bool: class WifiRepeater(Device): """Device class for Xiaomi Mi WiFi Repeater 2.""" + _supported_models = ["xiaomi.repeater.v2"] + @command( default_output=format_output( "", diff --git a/miio/wifispeaker.py b/miio/wifispeaker.py index 0cc1af45c..35ec3b3c1 100644 --- a/miio/wifispeaker.py +++ b/miio/wifispeaker.py @@ -94,6 +94,8 @@ def transport_channel(self) -> TransportChannel: class WifiSpeaker(Device): """Device class for Xiaomi Smart Wifi Speaker.""" + _supported_models = ["xiaomi.wifispeaker.v2"] + @command( default_output=format_output( "", From 5699aead1551cc1c54696e672ae0fdb1f23a8d06 Mon Sep 17 00:00:00 2001 From: Teemu R Date: Thu, 2 Dec 2021 00:53:47 +0100 Subject: [PATCH 3/3] Prepare 0.5.9.1 (#1203) --- CHANGELOG.md | 13 +++++++++++++ pyproject.toml | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f531cdcf..7bf78cc47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,17 @@ # Change Log + +## [0.5.9.1](https://github.com/rytilahti/python-miio/tree/0.5.9.1) (2021-12-01) + +This minor release only adds already known models pre-emptively to the lists of supported models to avoid flooding the issue tracker on reports after the next homeassistant release. + +[Full Changelog](https://github.com/rytilahti/python-miio/compare/0.5.9...0.5.9.1) + +**Merged pull requests:** + +- Add known models to supported models [\#1202](https://github.com/rytilahti/python-miio/pull/1202) ([rytilahti](https://github.com/rytilahti)) +- Add issue template for missing model information [\#1200](https://github.com/rytilahti/python-miio/pull/1200) ([rytilahti](https://github.com/rytilahti)) + + ## [0.5.9](https://github.com/rytilahti/python-miio/tree/0.5.9) (2021-11-30) Besides enhancements and bug fixes, this release includes plenty of janitoral work to enable common base classes in the future. diff --git a/pyproject.toml b/pyproject.toml index b3aae0669..bdea44cd0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "python-miio" -version = "0.5.9" +version = "0.5.9.1" description = "Python library for interfacing with Xiaomi smart appliances" authors = ["Teemu R "] repository = "https://github.com/rytilahti/python-miio"