ClusterM / skykettle-ha

Redmond SkyKettle integration for Home Assistant
GNU General Public License v3.0
94 stars 15 forks source link
kettle redmond skykettle

Redmond SkyKettle integration for Home Assistant

This integration allows to control smart kettles from Redmond SkyKettle series.

image

image

image

Supported models

If your kettle model is not listed, please write an issue and I'll try to add support for it with your help. Models RK-M123S, RK-M170S and RK-M173S are especially wanted.

Features

Requirements

How to use

Entities

The default entity names are listed below. Note that some entities can be missed on your kettle model.

water_heater.kettle_model

This is main entity to control water boiling and heating. There are five operation modes:

light.kettle_model_light (Light)

This entity allows to control the "Light" mode. You can select brightness and color when this mode is active. The "Light" mode will be enabled automatically when this virtual light is on.

switch.kettle_model

Just virtual switch to control the kettle. Turn it on to switch the kettle to "Boil" mode and turn it off for "Off" mode.

sensor.kettle_model_water_freshness

Virtual sensor to check how long the water has been in the kettle. Actually, it's just kettle uptime.

number.kettle_model_boil_time (Boil time)

This is configuration entity to select boil time from -5 to +5 just like in the official app.

switch.kettle_model_enable_boil_light (Enable boil light)

This is configuration entity to enable or disable the boil light. This light in on when "Heat", "Boil" or "Boil+Heat" mode is active. Color depends on the current water temperature (see below).

switch.kettle_model_enable_sound (Enable sound).

This is configuration entity to enable or disable kettle beeping sounds.

switch.kettle_model_enable_sync_light (Enable sync light)

This is configuration entity to enable or disable the idle light. This light in on when "Off" mode is active. Color depends on the current water temperature (see below).

light.kettle_model_lamp_1_color (Lamp color #1), light.kettle_model_lamp_2_color (Lamp color #2) and light.kettle_model_lamp_3_color (Lamp color #3)

These are three configuration entities to select colors in the "Lamp" mode. The color will change smoothly from #1 to #2, from #2 to #3 and back.

number.kettle_model_lamp_color_change_interval (Lamp color change interval)

This is configuration entity to select color change interval in the "Lamp" mode. In seconds. Minimum is 30 seconds.

number.kettle_model_lamp_auto_off_time (Lamp auto off time)

This is configuration entity to select lamp auto off time in hours. Lamp will be turned off after this time passed.

number.kettle_model_temperature_1 (Temperature #1), light.kettle_model_temperature_1_color (Temperature #1 color), number.kettle_model_temperature_2 (Temperature #2), light.kettle_model_temperature_2_color (Temperature #2 color) and number.kettle_model_temperature_3 (Temperature #3), light.kettle_model_temperature_3_color (Temperature #3 color)

These are six configuration entities to select colors for the "boil light" and "sync light". You can select three colors and temperature for each color. The color will change smoothly.

sensor.skykettle_rk_g211s_success_rate (Success rate)

Diagnostic entity, shows percent of successfull connections and polls.

Scripts

To boil and turn off after boiling

sequence:
  - service: water_heater.set_operation_mode
    data:
      operation_mode: Boil
    target:
      entity_id: water_heater.skykettle_rk_g211

Also you can use water_heater.turn_on service when the kettle is off/idle:

sequence:
  - service: water_heater.turn_on
    data: {}
    target:
      entity_id: water_heater.skykettle_rk_g211

To boil and keep desired temperature

sequence:
  - service: water_heater.set_operation_mode
    data:
      operation_mode: Boil+Heat
    target:
      entity_id: water_heater.skykettle_rk_g211
  - service: water_heater.set_temperature
    data:
      temperature: 90
    target:
      entity_id: water_heater.skykettle_rk_g211

To warm up and keep desired temperature without boiling

sequence:
  - service: water_heater.set_operation_mode
    data:
      operation_mode: Heat
    target:
      entity_id: water_heater.skykettle_rk_g211
  - service: water_heater.set_temperature
    data:
      temperature: 90
    target:
      entity_id: water_heater.skykettle_rk_g211

Turn the kettle off

sequence:
  - service: water_heater.set_operation_mode
    data:
      operation_mode: off
    target:
      entity_id: water_heater.skykettle_rk_g211

Also you can use water_heater.turn_off service:

sequence:
  - service: water_heater.turn_off
    data: {}
    target:
      entity_id: water_heater.skykettle_rk_g211

Turn the kettle into a lamp

sequence:
  - service: light.turn_on
    data:
      rgb_color:
        - 255
        - 100
        - 255
      brightness: 255
    target:
      entity_id: light.skykettle_rk_g211_light

Hints

You can use the card_mod integration to make the color of the card icon depend on the temperature of the kettle.

Example:

type: vertical-stack
cards:
  - type: button
    tap_action:
      action: more-info
    entity: water_heater.skykettle_rk_g211
    show_state: true
    name: Чайник
    hold_action:
      action: toggle
    card_mod:
      style: >
        {% set temp = state_attr("water_heater.skykettle_rk_g211",
        "current_temperature") %}

        :host {
          --card-mod-icon:
          {% if temp != None and temp > 95 %}
          mdi:kettle-steam;
          {% else %}
          mdi:kettle;
          {% endif %}
          --card-mod-icon-color:
          {% if temp != None -%}
          hsl(
            {{ 235 + (0 - 235) / (95 - 25) * (temp - 25) }},
            {{ 60 + (100 - 60) / (100 - 25) * (temp - 25) }}%,
            50%
          )
          {%- else -%}
          black
          {%- endif %};
        }
  - type: entities
    entities:
      - entity: water_heater.skykettle_rk_g211
        card_mod:
          style: >
            {% set temp = state_attr("water_heater.skykettle_rk_g211",
            "current_temperature") %}

            :host {
              --card-mod-icon:
              {% if temp != None and temp > 95 %}
              mdi:kettle-steam;
              {% else %}
              mdi:kettle;
              {% endif %}
              --card-mod-icon-color:
              {% if temp != None -%}
              hsl(
                {{ 235 + (0 - 235) / (95 - 25) * (temp - 25) }},
                {{ 60 + (100 - 60) / (100 - 25) * (temp - 25) }}%,
                50%
              )
              {%- else -%}
              black
              {%- endif %};
            }

image

Donations