diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2022-08-13 11:40:57 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2022-08-13 11:40:57 +0300 |
commit | 66484ab542510df5ba45245fc740c1cecb275745 (patch) | |
tree | 66af1370709639be7f7577904d50907174a97369 | |
parent | 5925c756b6e163dcfadba994bfecc96c67c84a85 (diff) |
Merged models
-rw-r--r-- | custom_components/skykettle/light.py | 2 | ||||
-rw-r--r-- | custom_components/skykettle/number.py | 2 | ||||
-rw-r--r-- | custom_components/skykettle/sensor.py | 2 | ||||
-rw-r--r-- | custom_components/skykettle/skykettle.py | 65 | ||||
-rw-r--r-- | custom_components/skykettle/switch.py | 2 | ||||
-rw-r--r-- | custom_components/skykettle/water_heater.py | 2 |
6 files changed, 36 insertions, 39 deletions
diff --git a/custom_components/skykettle/light.py b/custom_components/skykettle/light.py index 923fd22..eff103c 100644 --- a/custom_components/skykettle/light.py +++ b/custom_components/skykettle/light.py @@ -23,7 +23,7 @@ LIGHT_GAME = "light" async def async_setup_entry(hass, entry, async_add_entities, discovery_info=None): """Set up the SkyKettle entry.""" model_code = hass.data[DOMAIN][entry.entry_id][DATA_CONNECTION].model_code - if model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure async_add_entities([ KettleLight(hass, entry, LIGHT_GAME), KettleLight(hass, entry, SkyKettle.LIGHT_BOIL, 0), diff --git a/custom_components/skykettle/number.py b/custom_components/skykettle/number.py index 2d36612..5645431 100644 --- a/custom_components/skykettle/number.py +++ b/custom_components/skykettle/number.py @@ -23,7 +23,7 @@ NUMBER_LAMP_AUTO_OFF_HOURS = "lamp_auto_off_hours" async def async_setup_entry(hass, entry, async_add_entities): """Set up the SkyKettle entry.""" model_code = hass.data[DOMAIN][entry.entry_id][DATA_CONNECTION].model_code - if model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure async_add_entities([ SkyNumber(hass, entry, NUMBER_TYPE_BOIL_TIME), SkyNumber(hass, entry, NUMBER_TEMPERATURE_LOW), diff --git a/custom_components/skykettle/sensor.py b/custom_components/skykettle/sensor.py index 4b62a4c..bfe9ad5 100644 --- a/custom_components/skykettle/sensor.py +++ b/custom_components/skykettle/sensor.py @@ -22,7 +22,7 @@ async def async_setup_entry(hass, entry, async_add_entities): async_add_entities([ SkySensor(hass, entry, SENSOR_TYPE_SUCCESS_RATE), ]) - if model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure async_add_entities([ SkySensor(hass, entry, SENSOR_TYPE_WATER_FRESHNESS), ]) diff --git a/custom_components/skykettle/skykettle.py b/custom_components/skykettle/skykettle.py index fca7481..58e2edd 100644 --- a/custom_components/skykettle/skykettle.py +++ b/custom_components/skykettle/skykettle.py @@ -10,13 +10,10 @@ _LOGGER = logging.getLogger(__name__) class SkyKettle(): - MODELS_1 = 1 - MODELS_2 = 2 - MODELS_3 = 4 - MODELS_4 = 8 - MODELS_5 = 16 - MODELS_6 = 32 - MODELS_7 = 64 + MODELS_1 = "models_1" + MODELS_2 = "models_2" + MODELS_3 = "models_3" + MODELS_4 = "models_4" MODEL_TYPE = { # Source: https://github.com/KomX/ESPHome-Ready4Sky/blob/main/components/skykettle/__init__.py #"RK-M170S": MODELS_1, # need more investigation @@ -38,14 +35,14 @@ class SkyKettle(): "RFS-KKL002": MODELS_4, "RFS-KKL003": MODELS_4, "RFS-KKL004": MODELS_4, - "RK-G233S": MODELS_5, - "RK-G240S": MODELS_5, - "RK-M215S": MODELS_6, - "RK-M216S": MODELS_6, - "RK-M216S-E": MODELS_6, - "RK-M223S": MODELS_6, - "RK-M136S": MODELS_7, - "RK-M139S": MODELS_7, + "RK-G233S": MODELS_4, + "RK-G240S": MODELS_4, + "RK-M215S": MODELS_4, + "RK-M216S": MODELS_4, + "RK-M216S-E": MODELS_4, + "RK-M223S": MODELS_4, + "RK-M136S": MODELS_4, + "RK-M139S": MODELS_4, } MODE_BOIL = 0x00 @@ -140,7 +137,7 @@ class SkyKettle(): return (major, minor) async def turn_on(self): - if self.model_code in [SkyKettle.MODELS_3, SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # All except RK-M171S, RK-M172S, RK-M173S + if self.model_code in [SkyKettle.MODELS_3, SkyKettle.MODELS_4]: # All except RK-M171S, RK-M172S, RK-M173S r = await self.command(SkyKettle.COMMAND_TURN_ON) if r[0] != 1: raise SkyKettleError("can't turn on") _LOGGER.debug(f"Turned on") @@ -148,7 +145,7 @@ class SkyKettle(): _LOGGER.debug(f"turn_on is not supported by this model") async def turn_off(self): - if self.model_code in [SkyKettle.MODELS_1, SkyKettle.MODELS_2, SkyKettle.MODELS_3, SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # All known models + if self.model_code in [SkyKettle.MODELS_1, SkyKettle.MODELS_2, SkyKettle.MODELS_3, SkyKettle.MODELS_4]: # All known models r = await self.command(SkyKettle.COMMAND_TURN_OFF) if r[0] != 1: raise SkyKettleError("can't turn off") _LOGGER.debug(f"Turned off") @@ -178,7 +175,7 @@ class SkyKettle(): data = pack("BBxx", int(mode), int(target_temp)) if self.model_code in [SkyKettle.MODELS_2, SkyKettle.MODELS_3]: # RK-M171S, RK-M173S and RK-G200 data = pack("BxBx", int(mode), int(target_temp)) - elif self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S + elif self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S data = pack("BxBxxxxxxxxxxBxx", int(mode), int(target_temp), int(0x80 + boil_time)) else: _LOGGER.debug(f"set_main_mode is not supported by this model") @@ -201,7 +198,7 @@ class SkyKettle(): is_on=is_on, error_code=None, boil_time=None) - elif self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S + elif self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S # New models status = SkyKettle.Status(*unpack("<BxBx?BB??BxxxBxx", r)) status = status._replace( @@ -238,7 +235,7 @@ class SkyKettle(): return status async def sync_time(self): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S t = time.localtime() offset = calendar.timegm(t) - calendar.timegm(time.gmtime(time.mktime(t))) now = int(time.time()) @@ -250,7 +247,7 @@ class SkyKettle(): _LOGGER.debug(f"sync_time is not supported by this model") async def get_time(self): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure r = await self.command(SkyKettle.COMMAND_GET_TIME) t, offset = unpack("<ii", r) _LOGGER.debug(f"time={t} ({datetime.fromtimestamp(t).strftime('%Y-%m-%d %H:%M:%S')}), offset={offset} (GMT{offset/60/60:+.2f})") @@ -259,7 +256,7 @@ class SkyKettle(): _LOGGER.debug(f"get_time is not supported by this model") async def set_lamp_auto_off_hours(self, hours): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure data = pack("<H", int(hours)) r = await self.command(SkyKettle.COMMAND_SET_AUTO_OFF_HOURS, data) if r[0] != 0: raise SkyKettleError("can't set lamp auto off hours") @@ -268,7 +265,7 @@ class SkyKettle(): _LOGGER.debug(f"set_lamp_auto_off_hours is not supported by this model") async def get_lamp_auto_off_hours(self): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure r = await self.command(SkyKettle.COMMAND_GET_AUTO_OFF_HOURS) hours, = unpack("<H", r) _LOGGER.debug(f"Lamp auto off hours={hours}") @@ -277,7 +274,7 @@ class SkyKettle(): _LOGGER.debug(f"get_lamp_auto_off_hours is not supported by this model") async def get_colors(self, light_type): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure r = await self.command(SkyKettle.COMMAND_GET_COLORS, [light_type]) colors_set = SkyKettle.ColorsSet(*unpack("BBBBBBBBBBBBBBBB", r)) _LOGGER.debug(f"{colors_set}") @@ -286,7 +283,7 @@ class SkyKettle(): _LOGGER.debug(f"get_colors is not supported by this model") async def set_colors(self, colors_set): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure data = pack("BBBBBBBBBBBBBBBB", *colors_set) r = await self.command(SkyKettle.COMMAND_SET_COLORS, data) if r[0] != 0: raise SkyKettleError("can't set colors") @@ -295,7 +292,7 @@ class SkyKettle(): _LOGGER.debug(f"set_colors is not supported by this model") async def commit(self): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure r = await self.command(SkyKettle.COMMAND_COMMIT_SETTINGS) if r[0] != 1: raise SkyKettleError("can't commit settings") _LOGGER.debug(f"Settings commited") @@ -303,7 +300,7 @@ class SkyKettle(): _LOGGER.debug(f"commit is not supported by this model") async def set_lamp_color_interval(self, secs): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure data = pack("<H", int(secs)) r = await self.command(SkyKettle.COMMAND_SET_COLOR_INTERVAL, data) if r[0] != 0: raise SkyKettleError("can't set lamp color change interval") @@ -312,7 +309,7 @@ class SkyKettle(): _LOGGER.debug(f"set_lamp_color_interval is not supported by this model") async def impulse_color(self, r, g, b, brightness=0xff, interval=0): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure data = pack("<BBBBH", r, g, b, brightness, interval) r = await self.command(SkyKettle.COMMAND_IMPULSE_COLOR, data) if r[0] != 1: raise SkyKettleError("can't fire color impulse") @@ -321,7 +318,7 @@ class SkyKettle(): _LOGGER.debug(f"impulse_color is not supported by this model") async def set_light_switch(self, light_type, on): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure data = pack("BB?", light_type, light_type, on) r = await self.command(SkyKettle.COMMAND_SET_LIGHT_SWITCH, data) if r[0] != 0: raise SkyKettleError("can't switch light") @@ -330,7 +327,7 @@ class SkyKettle(): _LOGGER.debug(f"set_light_switch is not supported by this model") async def get_light_switch(self, light_type): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure data = pack("B", light_type) r = await self.command(SkyKettle.COMMAND_GET_LIGHT_SWITCH, data) is_on, = unpack("xx?xx", r) @@ -340,7 +337,7 @@ class SkyKettle(): _LOGGER.debug(f"get_light_switch is not supported by this model") async def set_sound(self, on): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure data = pack("?", on) r = await self.command(SkyKettle.COMMAND_SET_SOUND, data) if r[0] != 1: raise SkyKettleError("can't switch sound") @@ -349,7 +346,7 @@ class SkyKettle(): _LOGGER.debug(f"set_sound is not supported by this model") async def set_fresh_water(self, on, unknown1=48): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure data = pack("<x?Hxxxxxxxxxxxx", on, int(unknown1)) r = await self.command(SkyKettle.COMMAND_SET_FRESH_WATER, data) _LOGGER.debug(f"Fresh water notification switched {'on' if on else 'off'}") @@ -357,7 +354,7 @@ class SkyKettle(): _LOGGER.debug(f"set_fresh_water is not supported by this model") async def get_fresh_water(self): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure r = await self.command(SkyKettle.COMMAND_GET_FRESH_WATER, [0x00]) info = SkyKettle.FreshWaterInfo(*unpack("<x?HHxxxxxxxxxx", r)) _LOGGER.debug(f"Fresh water notification is {'on' if info.is_on else 'off'}, unknown1={info.unknown1}, water_freshness_hours={info.water_freshness_hours}") @@ -366,7 +363,7 @@ class SkyKettle(): _LOGGER.debug(f"get_fresh_water is not supported by this model") async def get_stats(self): - if self.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # Not sure + if self.model_code in [SkyKettle.MODELS_4]: # Not sure r1 = await self.command(SkyKettle.COMMAND_GET_STATS1, [0x00]) stats1 = unpack("<xxLLLxx", r1) r2 = await self.command(SkyKettle.COMMAND_GET_STATS2, [0x00]) diff --git a/custom_components/skykettle/switch.py b/custom_components/skykettle/switch.py index df9ceb7..a46c777 100644 --- a/custom_components/skykettle/switch.py +++ b/custom_components/skykettle/switch.py @@ -24,7 +24,7 @@ async def async_setup_entry(hass, entry, async_add_entities): async_add_entities([ SkySwitch(hass, entry, SWITCH_MAIN) ]) - if model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure async_add_entities([ SkySwitch(hass, entry, SWITCH_SOUND), SkySwitch(hass, entry, SWITCH_LIGHT_SYNC), diff --git a/custom_components/skykettle/water_heater.py b/custom_components/skykettle/water_heater.py index 7cff833..d800549 100644 --- a/custom_components/skykettle/water_heater.py +++ b/custom_components/skykettle/water_heater.py @@ -93,7 +93,7 @@ class SkyWaterHeater(WaterHeaterEntity): @property def operation_list(self): - if self.kettle.model_code in [SkyKettle.MODELS_4, SkyKettle.MODELS_5, SkyKettle.MODELS_6, SkyKettle.MODELS_7]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure + if self.kettle.model_code in [SkyKettle.MODELS_4]: # RK-G2xxS, RK-M13xS, RK-M21xS, RK-M223S but not sure return [ STATE_OFF, SkyKettle.MODE_NAMES[SkyKettle.MODE_HEAT], |