{"id":21917463,"url":"https://github.com/clusterm/skykettle-ha","last_synced_at":"2025-04-05T17:05:19.040Z","repository":{"id":43438006,"uuid":"450192057","full_name":"ClusterM/skykettle-ha","owner":"ClusterM","description":"Redmond SkyKettle integration for Home Assistant","archived":false,"fork":false,"pushed_at":"2024-11-13T11:12:14.000Z","size":182,"stargazers_count":102,"open_issues_count":29,"forks_count":16,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-29T16:07:26.140Z","etag":null,"topics":["kettle","redmond","skykettle"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ClusterM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["ClusterM"],"custom":["https://www.buymeacoffee.com/cluster","https://boosty.to/cluster"]}},"created_at":"2022-01-20T17:24:27.000Z","updated_at":"2025-03-21T15:36:49.000Z","dependencies_parsed_at":"2024-11-13T12:19:21.321Z","dependency_job_id":null,"html_url":"https://github.com/ClusterM/skykettle-ha","commit_stats":{"total_commits":136,"total_committers":9,"mean_commits":15.11111111111111,"dds":"0.16911764705882348","last_synced_commit":"98852996c187ef137e26bc5fae788fd4fd667e28"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClusterM%2Fskykettle-ha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClusterM%2Fskykettle-ha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClusterM%2Fskykettle-ha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClusterM%2Fskykettle-ha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ClusterM","download_url":"https://codeload.github.com/ClusterM/skykettle-ha/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247369953,"owners_count":20927928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kettle","redmond","skykettle"],"created_at":"2024-11-28T19:32:39.524Z","updated_at":"2025-04-05T17:05:19.003Z","avatar_url":"https://github.com/ClusterM.png","language":"Python","funding_links":["https://github.com/sponsors/ClusterM","https://www.buymeacoffee.com/cluster","https://boosty.to/cluster"],"categories":[],"sub_categories":[],"readme":"# Redmond SkyKettle integration for Home Assistant\nThis integration allows to control smart kettles from **Redmond SkyKettle** series.\n\n![image](https://user-images.githubusercontent.com/4236181/153447814-b2b3846d-e925-477f-ad7b-1f5639f7609a.png)\n\n![image](https://user-images.githubusercontent.com/4236181/151023077-ca0055b4-1b1d-41a6-879c-6aabe3a30164.png)\n\n![image](https://user-images.githubusercontent.com/4236181/151022885-1a93c4d5-b5fe-40f2-8d1f-ddb458ea2c09.png)\n\n## Supported models\n* RK-G200\n* RK-G200S\n* RK-G201S\n* RK-G202S\n* RK-G203S\n* RK-G204S\n* RK-G210S\n* RK-G211S\n* RK-G212S\n* RK-G213S\n* RK-G214S\n* RK-G215S\n* RK-G233S\n* RK-G240S\n* RK-M139S\n* RK-M171S\n* RK-M215S\n* RK-M216S\n* RK-M223S\n* RK-M136S\n* RFS-KKL002\n* RFS-KKL003\n* RFS-KKL004\n* ???\n\nIf your kettle model is not listed, please write an [issue](https://github.com/ClusterM/skykettle-ha/issues) and I'll try to add support for it with your help. Models RK-M123S, RK-M170S and RK-M173S are especially wanted.\n\n## Features\n* Allows to set target temperature.\n* Allows to set any boil mode: heating (keep desired temperature), standard boiling, boiling+heating.\n* Allows to change many settings of the kettle directly from Home Assistant, even more settings than the official application allows.\n* Allows to read all statistics, even more than the official application allows.\n* Allows to use kettle as RGB lamp.\n* Automatic mode change if target temperature changed, allows easy control from Google Assistant, Yandex Alice, etc.\n* Persistent connection and fast reconnect.\n\n## Requirements\n* Bluetooth adapter with BLE support.\n* Home Assistant [Bluetooth integration](https://www.home-assistant.io/integrations/bluetooth/) (comes with Home Assistant v2022.8.1+)\n\n## How to use\n* Make sure that you are using Home Assistant version 2022.8.1 or greater.\n* Make sure that [Bluetooth integration](https://www.home-assistant.io/integrations/bluetooth/) is installed, enabled and working.\n* Install **SkyKettle** integration via [HACS](https://hacs.xyz/) - search for **SkyKettle** or just copy [skykettle](https://github.com/ClusterM/skykettle_ha/tree/master/custom_components/skykettle) directory to your `custom_components` directory.\n* Add **SkyKettle** integration just like any other integration (restart Home Assistant and press Shift+F5 if it's not listed).\n* Make sure that the Kettle is on the stand and it's plugged into the outlet.\n* Select MAC address of your kettle from the list.\n* Tune rest of the settings if you want.\n* Enjoy.\n\n## Entities\nThe default entity names are listed below. Note that some entities can be missed on your kettle model.\n\n### water_heater.*kettle_model*\nThis is main entity to control water boiling and heating. There are five operation modes:\n* Off - the kettle is off, not heating at all.\n* Heat - just heat water to the desired temperature and keep this temperature. Without boiling. Useful when water already boiled and you need just to warm it up.\n* Boil - boil water and turn off (switch to \"Off\" mode).\n* Boil+heat - boil water, wait until temperature drops to the desired temperature and keep this temperature.\n* Lamp - use kettle as night light, color changes between the selected ones (see below).\n* Light - use kettle as night light but keep the only one selected color (see below).\n\n### light.*kettle_model*_light (Light)\nThis 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.\n\n### switch.*kettle_model*\nJust virtual switch to control the kettle. Turn it on to switch the kettle to \"Boil\" mode and turn it off for \"Off\" mode.\n\n### sensor.*kettle_model*_water_freshness\nVirtual sensor to check how long the water has been in the kettle. Actually, it's just kettle uptime.\n\n### number.*kettle_model*_boil_time (Boil time)\nThis is configuration entity to select boil time from -5 to +5 just like in the official app.\n\n### switch.*kettle_model*_enable_boil_light (Enable boil light)\nThis 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).\n\n### switch.*kettle_model*_enable_sound (Enable sound).\nThis is configuration entity to enable or disable kettle beeping sounds.\n\n### switch.*kettle_model*_enable_sync_light (Enable sync light)\nThis 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).\n\n### 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)\nThese 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.\n\n### number.*kettle_model*_lamp_color_change_interval (Lamp color change interval)\nThis is configuration entity to select color change interval in the \"Lamp\" mode. In seconds. Minimum is 30 seconds.\n\n### number.*kettle_model*_lamp_auto_off_time (Lamp auto off time)\nThis is configuration entity to select lamp auto off time in hours. Lamp will be turned off after this time passed.\n\n### 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)\nThese 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.\n\n### sensor.skykettle_rk_g211s_success_rate (Success rate)\nDiagnostic entity, shows percent of successfull connections and polls.\n\n## Scripts\n### To boil and turn off after boiling\n```YAML\nsequence:\n  - service: water_heater.set_operation_mode\n    data:\n      operation_mode: Boil\n    target:\n      entity_id: water_heater.skykettle_rk_g211\n```\n\nAlso you can use `water_heater.turn_on` service **when the kettle is off/idle**:\n```YAML\nsequence:\n  - service: water_heater.turn_on\n    data: {}\n    target:\n      entity_id: water_heater.skykettle_rk_g211\n```\n\n### To boil and keep desired temperature\n```YAML\nsequence:\n  - service: water_heater.set_operation_mode\n    data:\n      operation_mode: Boil+Heat\n    target:\n      entity_id: water_heater.skykettle_rk_g211\n  - service: water_heater.set_temperature\n    data:\n      temperature: 90\n    target:\n      entity_id: water_heater.skykettle_rk_g211\n```\n\n### To warm up and keep desired temperature without boiling\n```YAML\nsequence:\n  - service: water_heater.set_operation_mode\n    data:\n      operation_mode: Heat\n    target:\n      entity_id: water_heater.skykettle_rk_g211\n  - service: water_heater.set_temperature\n    data:\n      temperature: 90\n    target:\n      entity_id: water_heater.skykettle_rk_g211\n```\n\n### Turn the kettle off\n```YAML\nsequence:\n  - service: water_heater.set_operation_mode\n    data:\n      operation_mode: off\n    target:\n      entity_id: water_heater.skykettle_rk_g211\n```\nAlso you can use `water_heater.turn_off` service:\n```YAML\nsequence:\n  - service: water_heater.turn_off\n    data: {}\n    target:\n      entity_id: water_heater.skykettle_rk_g211\n```\n\n### Turn the kettle into a lamp\n```YAML\nsequence:\n  - service: light.turn_on\n    data:\n      rgb_color:\n        - 255\n        - 100\n        - 255\n      brightness: 255\n    target:\n      entity_id: light.skykettle_rk_g211_light\n```\n\n## Hints\nYou can use the [card_mod](https://github.com/thomasloven/lovelace-card-mod) integration to make the color of the card icon depend on the temperature of the kettle.\n\nExample:\n\n```\ntype: vertical-stack\ncards:\n  - type: button\n    tap_action:\n      action: more-info\n    entity: water_heater.skykettle_rk_g211\n    show_state: true\n    name: Чайник\n    hold_action:\n      action: toggle\n    card_mod:\n      style: \u003e\n        {% set temp = state_attr(\"water_heater.skykettle_rk_g211\",\n        \"current_temperature\") %}\n\n        :host {\n          --card-mod-icon:\n          {% if temp != None and temp \u003e 95 %}\n          mdi:kettle-steam;\n          {% else %}\n          mdi:kettle;\n          {% endif %}\n          --card-mod-icon-color:\n          {% if temp != None -%}\n          hsl(\n            {{ 235 + (0 - 235) / (95 - 25) * (temp - 25) }},\n            {{ 60 + (100 - 60) / (100 - 25) * (temp - 25) }}%,\n            50%\n          )\n          {%- else -%}\n          black\n          {%- endif %};\n        }\n  - type: entities\n    entities:\n      - entity: water_heater.skykettle_rk_g211\n        card_mod:\n          style: \u003e\n            {% set temp = state_attr(\"water_heater.skykettle_rk_g211\",\n            \"current_temperature\") %}\n\n            :host {\n              --card-mod-icon:\n              {% if temp != None and temp \u003e 95 %}\n              mdi:kettle-steam;\n              {% else %}\n              mdi:kettle;\n              {% endif %}\n              --card-mod-icon-color:\n              {% if temp != None -%}\n              hsl(\n                {{ 235 + (0 - 235) / (95 - 25) * (temp - 25) }},\n                {{ 60 + (100 - 60) / (100 - 25) * (temp - 25) }}%,\n                50%\n              )\n              {%- else -%}\n              black\n              {%- endif %};\n            }\n```\n\n![image](https://user-images.githubusercontent.com/4236181/153446401-45c2f09e-2637-4fd1-8dec-0c365a3babb5.png)\n\n## Donations\n* [Buy Me A Coffee](https://www.buymeacoffee.com/cluster)\n* [Donation Alerts](https://www.donationalerts.com/r/clustermeerkat)\n* [Boosty](https://boosty.to/cluster)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclusterm%2Fskykettle-ha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclusterm%2Fskykettle-ha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclusterm%2Fskykettle-ha/lists"}