diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2022-07-25 15:00:43 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2022-07-25 15:00:43 +0300 |
commit | 21f1852133af6821e1b99be7e9acb2e1327ef9fe (patch) | |
tree | 5b15c60157bb4d82406aa9c1a36bf0c07c16eb73 | |
parent | 8a07e8e920e359f891661f7342ffbfe254348412 (diff) |
config flow unsupported model message, backward compatibility
-rw-r--r-- | custom_components/skykettle/config_flow.py | 5 | ||||
-rw-r--r-- | custom_components/skykettle/skykettle.py | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/custom_components/skykettle/config_flow.py b/custom_components/skykettle/config_flow.py index 4660b97..1d6b660 100644 --- a/custom_components/skykettle/config_flow.py +++ b/custom_components/skykettle/config_flow.py @@ -116,6 +116,9 @@ class SkyKettleConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): spl = user_input[CONF_MAC].split(' ', maxsplit=1) mac = spl[0] name = spl[1][1:-1] if len(spl) >= 2 else None + if not SkyKettle.get_model_code(name): + # Model is not supported + return self.async_abort(reason='unknown_model') if not await self.init_mac(mac): # This kettle already configured return self.async_abort(reason='already_configured') @@ -126,7 +129,7 @@ class SkyKettleConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): try: macs = await ble_scan(self.config.get(CONF_DEVICE, None), scan_time=BLE_SCAN_TIME) _LOGGER.debug(f"Scan result: {macs}") - macs_filtered = [mac for mac in macs if SkyKettle.get_model_code(mac.name)] + macs_filtered = [mac for mac in macs if mac.name and (mac.name.startswith("RK-") or mac.name.startswith("RFS-"))] if len(macs_filtered) == 0: return self.async_abort(reason='kettle_not_found') mac_list = [f"{r.mac} ({r.name})" for r in macs_filtered] diff --git a/custom_components/skykettle/skykettle.py b/custom_components/skykettle/skykettle.py index 27de70a..a24a95e 100644 --- a/custom_components/skykettle/skykettle.py +++ b/custom_components/skykettle/skykettle.py @@ -115,14 +115,16 @@ class SkyKettle(): def __init__(self, model): _LOGGER.info(f"Kettle model: {model}") self.model = model - self.model_code = self.get_model_code(model) + self.model_code = self.get_model_code(model, backward_compatibility=True) if not self.model_code: raise SkyKettleError("Unknown kettle model") @staticmethod - def get_model_code(model): + def get_model_code(model, backward_compatibility=False): if model in SkyKettle.MODEL_TYPE: return SkyKettle.MODEL_TYPE[model] + if backward_compatibility and model + 'S' in SkyKettle.MODEL_TYPE: + return SkyKettle.MODEL_TYPE[model + 'S'] return None @abstractmethod |