Summary
Calling light.turn_off for the main SkyKettle light entity can stop an active boiling or heating cycle.
We encountered this because a Home Assistant automation turned off all lights in the kitchen area when room presence disappeared:
action: light.turn_off
target:
area_id: kitchen
The SkyKettle device belongs to the kitchen area, so Home Assistant included its main light entity in the service target:
light.skykettle_rk_g210s_light
Although this light entity was already shown as off while the kettle was boiling, its async_turn_off() method was still called. This caused the entire kettle to switch to off and immediately stopped heating.
Environment
- Kettle: Redmond SkyKettle RK-G210S
- Firmware: 3.8
- Integration version: 2.7
- The same relevant
async_turn_off() implementation appears to still be present in version 2.8
Observed behavior
We captured two occurrences in Home Assistant state history.
Occurrence 1
19:50:29.100531
Kitchen presence: on → off
19:50:29.701713
Kettle switch: on → off
Water temperature: 50°C
The kettle stopped approximately 0.60 seconds after the absence automation called light.turn_off for the kitchen area.
Occurrence 2
19:51:06.933408
Kitchen presence: on → off
19:51:07.553106
Kettle switch: on → off
Water temperature: 64°C
The kettle again stopped approximately 0.62 seconds after the absence automation ran.
A separate normal completion at 100°C worked as expected, so the 50°C and 64°C transitions were premature shutdowns rather than completed boiling cycles.
Relevant code
The behavior appears to originate in custom_components/skykettle/light.py:
async def async_turn_off(self, **kwargs):
"""Turn the light off."""
_LOGGER.debug(f"Turn off ({self.light_type}): {kwargs}")
if self.light_type == LIGHT_GAME:
await self.kettle.set_target_mode(STATE_OFF)
self.on = False
self.hass.async_add_executor_job(
dispatcher_send,
self.hass,
DISPATCHER_UPDATE,
)
For the main light entity, async_turn_off() unconditionally calls:
await self.kettle.set_target_mode(STATE_OFF)
It does not first check whether the kettle is currently in the light mode managed by that entity.
Consequently, calling light.turn_off while the kettle is in Boil, Heat, or Boil+Heat sends a command that switches off the complete kettle operation.
Expected behavior
Turning off the main light entity should not interrupt an active boiling or heating mode.
Before sending STATE_OFF, the implementation needs to check that the current or target kettle mode is actually the light mode represented by this entity.
Reproduction steps
-
Assign the SkyKettle device to a Home Assistant area.
-
Start boiling through switch.kettle or water_heater.kettle.
-
While the kettle is still heating, call:
action: light.turn_off
target:
entity_id: light.skykettle_rk_g210s_light
Alternatively, call light.turn_off for the whole area containing the kettle.
-
Observe that the active boiling cycle stops before the target temperature is reached.
Hermes Agent, running GPT-5.6-sol, helped trace this from the Home Assistant automation down to the relevant integration code. The investigation and final write-up were reviewed and verified by a human.
Summary
Calling
light.turn_offfor the main SkyKettle light entity can stop an active boiling or heating cycle.We encountered this because a Home Assistant automation turned off all lights in the kitchen area when room presence disappeared:
The SkyKettle device belongs to the
kitchenarea, so Home Assistant included its main light entity in the service target:Although this light entity was already shown as
offwhile the kettle was boiling, itsasync_turn_off()method was still called. This caused the entire kettle to switch tooffand immediately stopped heating.Environment
async_turn_off()implementation appears to still be present in version 2.8Observed behavior
We captured two occurrences in Home Assistant state history.
Occurrence 1
The kettle stopped approximately 0.60 seconds after the absence automation called
light.turn_offfor the kitchen area.Occurrence 2
The kettle again stopped approximately 0.62 seconds after the absence automation ran.
A separate normal completion at 100°C worked as expected, so the 50°C and 64°C transitions were premature shutdowns rather than completed boiling cycles.
Relevant code
The behavior appears to originate in
custom_components/skykettle/light.py:For the main light entity,
async_turn_off()unconditionally calls:It does not first check whether the kettle is currently in the light mode managed by that entity.
Consequently, calling
light.turn_offwhile the kettle is inBoil,Heat, orBoil+Heatsends a command that switches off the complete kettle operation.Expected behavior
Turning off the main light entity should not interrupt an active boiling or heating mode.
Before sending
STATE_OFF, the implementation needs to check that the current or target kettle mode is actually the light mode represented by this entity.Reproduction steps
Assign the SkyKettle device to a Home Assistant area.
Start boiling through
switch.kettleorwater_heater.kettle.While the kettle is still heating, call:
Alternatively, call
light.turn_offfor the whole area containing the kettle.Observe that the active boiling cycle stops before the target temperature is reached.
Hermes Agent, running GPT-5.6-sol, helped trace this from the Home Assistant automation down to the relevant integration code. The investigation and final write-up were reviewed and verified by a human.