Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/skykettle-ha.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2022-08-13 11:40:57 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2022-08-13 11:40:57 +0300
commit66484ab542510df5ba45245fc740c1cecb275745 (patch)
tree66af1370709639be7f7577904d50907174a97369
parent5925c756b6e163dcfadba994bfecc96c67c84a85 (diff)
Merged models
-rw-r--r--custom_components/skykettle/light.py2
-rw-r--r--custom_components/skykettle/number.py2
-rw-r--r--custom_components/skykettle/sensor.py2
-rw-r--r--custom_components/skykettle/skykettle.py65
-rw-r--r--custom_components/skykettle/switch.py2
-rw-r--r--custom_components/skykettle/water_heater.py2
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],