Как подключить к шлюзу Xiaomi чайник редмонд

На Гиктаймс уже была статья, посвященная разбору протокола чайника Redmond SkyKettle. Однако там речь шла о модели RK-M171S, здесь же речь пойдет о более функциональном G200S. В данной модели изменился протокол взаимодействия, из за чего подход автора предыдущей статьи уже не работает, а также появились дополнительные функции ночника и индикации текущей температуры цветом.

В данной статье я приведу результаты разбора протокола с примерами кода на python (если кто захочет разработать свой модуль/приложение для управления чайником). Также в конце статьи ссылка на готовый модуль для подключения чайника к HomeAssistant (это мой первый опыт написания на python после прохождения онлайн-курса, так что данный модуль можно и даже нужно улучшать).

Всем, кому интересно, добро пожаловать под кат.

Проблемы и задачи

У данного чайника есть один большущий минус (кроме тех, что указал автор первой статьи): как только чайник снимаешь с подставки, происходит сброс текущего времени и, как следствие, невозможность использования расписания для кипячения чайника. По задумкам авторов сего творения, каждый раз после возвращения чайника на подставку ты должен запустить их фирменное приложение и синхронизировать чайник со смартфоном. Вот так вместо облегчения рутинных задач «умная» техника дрессирует нас совершать дополнительные действия. Но все изменилось, когда в доме появился HomeAssistant. Тогда я и решил разобраться в протоколе.

Readmond SkyKettle RK-M216S Smart Home Против Xiaomi Mi Electric Kettle EU. Умный дом и котики

Инструменты

Я честно пытался декомпилировать и разобрать оригинальное приложение, но потерпел фиаско. Те инструменты, которые я использовал, не позволили мне понять логику работы чайника. Все процедуры и функции получались «кривыми», безымянными (по типу a, b, c и тд). Возможно, у меня не хватает опыта и умения. В итоге я пошел тем же путем, что и автор предыдущей статьи.

Единственное существенное отличие в том, что я использовал интерактивный режим работы утилиты gatttool. Преимущество в том, что данный режим исключает всевозможные «гонки», о которых писал автор первой статьи.

Так как HomeAssistant написан на python, то все дальнейшие команды будем писать на нем. Для использования интерактивного режима работы gatttool на python нам поможет библиотека pexpect, позволяющая порождать сущности сторонних приложений и следить за их выводом (лихо загнул).

Практика

Про общее описание протокола обмена я вновь отправлю к автору первой статьи, поэтому без долгих прелюдий приступим к командам управления.

    Установка и разрыв соединения

child = pexpect.spawn(«gatttool -I -t random -b » + mac, ignore_sighup=False) child.expect(r'[LE]>’, timeout=3) child.sendline(«connect») child.expect(r’Connection successful.*[LE]>’, timeout=3)

Здесь mac — мак адрес чайника.

child.sendline(«exit»)

После установления соединения перво-наперво нам надо подписаться на получение уведомлений от чайника. Без этого чайник будет воспринимать команды, однако не сможет ничего нам ответить, кроме текстового «Successfully».

Яндекс Алиса и Bluetooth-чайник


child.sendline(«char-write-cmd 0x000c 0100») child.expect(r'[LE]>’)
child.sendline(«char-write-req 0x000e 55» + iter + «ff» + key + «aa») child.expect(«value: «) child.expect(«rn») connectedStr = child.before[0:].decode(«utf-8») answer = connectedStr.split()[3] # parse: 00 — no 01 — yes child.expect(r'[LE]>’)

Здесь и далее iter — целочисленная итерационная hex переменная от 0 до 64 (от 0 до 100 в десятичной системе). После каждой команды (как успешной, так и неуспешной) эту переменную следует увеличивать на 1, при достижении 64 она вновь сбрасывается на 0; key — hex 8 байт ключ авторизации (например: ffffffffffffffff).

value: 55 00 ff 01 aa

child.sendline(«char-write-req 0x000e 55» + iter + «01aa») child.expect(«value: «) child.expect(«rn») child.expect(r'[LE]>’)

Пример ответа:

value: 55 01 01 02 1d aa

Во всех моих экспериментах ответ неизменно был таким.

child.sendline(«char-write-req 0x000e 55» + iter + «6e» + timeNow + tmz + «0000aa») child.expect(«value: «) child.expect(«rn») child.expect(r'[LE]>’)

Здесь tmz — часовой пояс в обратном hex формате (например, часовой пояс +3 переводим в секунды, затем в hex формат и получаем hex(3*60*60)=2a30, разбиваем по парам и выводим в обратном порядке 302a). Как быть с отрицательными часовыми поясами я не знаю, не тестировал, но есть подозрение, что за это отвечает следующий за tmz байт. Здесь timeNow — текущее время unixtime в обратном hex формате. Алгоритм такой же: получаем текущее время в секундах, переводим в HEX, разбиваем по парам и выводим строкой в обратном порядке.

value: 55 02 6e 00 aa

child.sendline(«char-write-req 0x000e 55» + iter + «4700aa») child.expect(«value: «) child.expect(«rn») statusStr = child.before[0:].decode(«utf-8») Watts = hexToDec(str(statusStr.split()[11] + statusStr.split()[10] + statusStr.split()[9])) alltime = round(self._Watts/2200, 1) child.expect(r'[LE]>’) child.sendline(«char-write-req 0x000e 55» + iter + «5000aa») child.expect(«value: «) child.expect(«rn») statusStr = child.before[0:].decode(«utf-8») times = hexToDec(str(statusStr.split()[7] + statusStr.split()[6])) child.expect(r'[LE]>’)
child.sendline(«char-write-req 0x000e 55» + iter + «06aa») child.expect(«value: «) child.expect(«rn») statusStr = child.before[0:].decode(«utf-8») answer = statusStr.split() status = str(answer[11]) temp = hexToDec(str(answer[8])) mode = str(answer[3])

Пример ответа:

value: 55 04 06 00 00 00 00 01 2a 1e 00 00 00 00 00 00 80 00 00 aa

child.sendline(«char-write-req 0x000e 55» + iter + «05» + mode + «00» + temp + «00000000000000000000» + howMuchBoil + «0000aa») child.expect(«value: «) child.expect(«rn») statusStr = child.before[0:].decode(«utf-8») answer = statusStr.split()[3] child.expect(r'[LE]>’)

Параметр mode: 00 — кипячение, 01 — нагрев до температуры, 03 — ночник. Параметр temp — hex температура, до которой нужно нагревать в режиме работы «нагрев», в режиме кипячения он равен 00. Параметр howMuchBoil — это продолжительность работы чайника после достижения нужной температуры, по умолчанию равна 80 в hex (видимо, это какие то относительные единицы, точно не секунды).

value: 55 05 05 01 aa

child.sendline(«char-write-req 0x000e 55» + iter + «03aa») child.expect(«value: «) child.expect(«rn») statusStr = self.child.before[0:].decode(«utf-8») answer = statusStr.split()[3] child.expect(r'[LE]>’)

Пример ответа:

value: 55 06 03 01 aa

child.sendline(«char-write-req 0x000e 55» + iter + «04aa») child.expect(«value: «) child.expect(«rn») statusStr = self.child.before[0:].decode(«utf-8») answer = statusStr.split()[3] child.expect(r'[LE]>’)

Пример ответа:

value: 55 07 04 01 aa

child.sendline(«char-write-req 0x000e 55» + iter + «37c8c8» + onoff + «aa») # 00 — off, 01 — on child.expect(«value: «) child.expect(«rn») child.expect(r'[LE]>’)

Параметр onoff равен либо 01 — включить функцию, либо 00 — выключить функцию.

value: 55 08 37 00 aa

child.sendline(«char-write-req 0x000e 55» + iter + «32» + boilOrLight + scale_from + rand + rgb1 + scale_mid + rand + rgb_mid + scale_to + rand + rgb2 + «aa») child.expect(«value: «) child.expect(«rn») child.expect(r'[LE]>’)

Параметр boilOrLight равен 00, если мы настраиваем режим отображения текущей температуры или 01, если мы настраиваем режим ночника.

Параметр scale_from указывает начало диапазона изменения цвета и равен 00 в режиме ночника и 28 в режиме отображения текущей температуры (28 — это 40 в десятичном формате и именно с этой температуры начнется плавное изменение цвета). Параметр scale_mid — это середина диапазона и равен 32 в режиме ночника и 46 в режиме отображения текущей температуры.

Параметр scale_to указывает конец диапазона изменения цвета и равен 64 в обоих режимах. Параметр rgb1 — hex цвет начала палитры. Параметр rgb_mid — hex цвет середины палитры (я вычисляю его как середину между левым и правым концом, но теоретически можно задать любой цвет, это повлияет только на красивость и плавность смены цвета). Параметр rgb2 — hex цвет конца палитры. Параметр rand — некий параметр, значение которого я точно не понял, возможно, как то связан с яркостью цвета (примеры значений: e5, cc).

value: 55 09 32 00 aa

child.sendline(«char-write-req 0x000e 55» + iter + «33» + boilOrLight + «aa») child.expect(«value: «) child.expect(«rn») statusStr = self.child.before[0:].decode(«utf-8») child.expect(r'[LE]>’)

Обзор электробритвы Xiaomi enchen blackstone 3

Параметр boilOrLight может быть 00 — если мы настраиваем режим отображения текущей температуры или 01 — если мы настраиваем режим ночника.

value: 55 10 33 01 00 7f 00 00 ff 32 7f 00 ff 00 64 7f ff 00 00 aa

Если gatttool не желает подключаться к чайнику (такое возможно при первом подключении к неизвестным устройствам), то попробуйте выполнить поиск чайника средствами os до подключения модуля:

sudo hciconfig device reset sudo timeout 1 hcitool lescan

device — id вашего блютус устройства (например, hci0). Убедитесь, что мак адрес вашего чайника есть в списке найденных устройств. После этого:

sudo hcitool lewladd mac sudo hcitool lerladd mac

mac — мак адрес вашего чайника

UPD6: Существенно доработал модуль чайника:
1. Перевел модуль с платформы на режим интеграции
2. После добавления у вас автоматически появится 3 элемента: водный нагреватель (текущая температура, целевая температура, кипячение и нагрев), сенсор (время синхронизации, затрачено энергии, часов работы, количество включений) и свет (можно использовать как ночник и выбирать любой цвет подсветки)
3. теперь модуль доступен на GitHub.
4. Модуль поддерживает установку через HACS
5. Пример конфигурации:

r4s_kettler: device: ‘hci0’ mac: ‘FF:FF:FF:FF:FF:FF’ password: ‘ffffffffffffffff’
Скриншоты новой версии

image
image
image
image

UPD7: Удалил неактуальную информацию

Источник: habr.com

Шлюз для умной техники Redmond на базе ESP32

logo

Несколько лет назад загорелся идеей внедрения системы умного дома в свою новую квартиру. Умные светильники, розетки, датчики, бытовая техника, различные хитрые сценарии их взаимодействия друг с другом, голосовое управление с помощью Алисы и многое другое. Все это появилось со временем, успешно работает и постоянно расширяет свой функционал. Но сейчас хочу вам рассказать о своей первом шаге к умному дому — покупке умного чайника Redmond RK-G211S.

G211s

И, согласно известной поговорке, первый блин вышел комом. Но о бо всем по порядку. Как чайник он вполне себя неплохо показал. Быстро нагревает до заданной температуры, умеет ее поддерживать, красивая подсветка, меняющаяся в зависимости от температуры воды, стильный внешний вид. Но как к умному устройству возник ряд вопросов.

Дистанционное управление со смартфона в целом работает неплохо, но реализовано по Bluetooth и через пару бетонных стен в квартире уже практически не пробивает. Поэтому о мечтах дистанционного включения чайника, лежа в кровати, пришлось забыть. Надпись огромными буквами на упаковке, что работает с Алисой, тоже не совсем соответствует действительности.

Для этого нужен лишь купить специальный шлюз, к которому можно по bluetooth подключить до 5 умных устройств Redmond. А он уже, в свою очередь, по Wifi Через свои облачный сервис, поможет подружить их с Алисой. Правда при цене чайника 2500 рублей, покупка шлюза за 2000 выглядит не очень целесообразной.

Кроме того, в конце 2022 года Redmond из-за внутренних проблем с лицензированием лишились прав на использование сервиса Ready 4 Sky. Поэтому вся их «умная» техника просто превратилась в тыкву. Возможности удаленного управления полностью заблокировали для всех пользователей. Поэтому с самой покупки данного чайника, я искал альтернативное решение его интеграции в умный дом и спустя некоторое время я его нашел.

R4Sgate

Шлюз ESP32 r4sGate в минимальной конфигурации (только ESP32 или ESP32C3 с источником питания 3.3v) позволяет подключать BLE-совместимые устройства Redmond, чайники Xiaomi MiKettle и некоторые другие устройства к системе умный дом (Home Assistant, OpenHab, ioBroker, MajorDoMo и т.д.) по протоколу MQTT. Изначально проект был только под Redmond, сейчас добавляются и другие устройства.

Список поддерживаемых устройств

Электрочайники:

  • Redmond SkyKettle RK-M170S
  • Redmond SkyKettle RK-M173S / RTP-M810S
  • Redmond SkyKettle RK-G200S / RK-G204S / RK-G210S / RK-G211S / RK-G212S / RK-G214S / RK-M216S
  • Redmond SkyKettle RK-G240S / RK-G204S / RK-G210S / RK-G211S / RK-G212S / RK-G214S / RK-M216S
  • Xiaomi MiKettle YM-K1501(Int) — ProductId 275
  • Xiaomi MiKettle YM-K1501(HK) — ProductId 131
  • Xiaomi MiKettle V-SK152(Int) — ProductId 1116

Мультиварки

  • Redmond SkyCooker RMC-M224S
  • Redmond SkyCooker RMC-M800S
  • Redmond SkyCooker RMC-M903S
  • Redmond SkyCooker RMC-M92S
  • Redmond SkyCooker RMC-M961S

Кофеварки

  • Redmond SkyCoffee M1519S

Розетки

  • Redmond SkyPort 103S

Конвекторы электрические

  • Redmond SkyHeat RCH-7001S / RCH-7002S / RCH-7003S
  • Redmond SkyHeat RCH-4529S (управляется как SkyPort 103S)

Климатические станции

  • Redmond SkyClimate RSC-51S

Датчики дыма

  • Redmond SkySmoke RSS-61S

Контроллеры полива

Драйверы штор/жалюзи

  • AM43 (A-OK и подобные)

Возможности

Шлюз поддерживает 5 одновременных BLE соединений. Управление устройствами возможно и из web интерфейса шлюза. Предусмотрена простая защита web интерфейса паролем. Для этого строку виде login:password нужно зашифровать в Base 64 и затем вписать ее в поле Basic Auth в настройках. Строка пароля выводится в лог при старте шлюза.
Поддерживается Home Assistant Mqtt Discovery. Для включения нужно отметить Hass Discovery в настройках. Предусмотрена возможность удаления всех созданных шлюзом данных в Mqtt и устройств в Home Assistant. Для этого нужно выбрать во вкладке Setting опцию Delete Mqtt topics и затем нажать Save setting. После перезагрузки шлюза будут заново созданы только подключенные к шлюзу устройства.

Рекомендуется при первом подключении шлюза и реконфигурации с удалением устройств.

Поддерживается вычисление количества воды в чайнике при нагреве в интервале 65-85°C и более 3°C с момента включения чайника. Не требуется никаких доработок. Вычисляется на основе затраченной энергии и разности температур. Вычисленное значение сбрасывается при снятии чайника с подставки. Опция работает только в чайниках со статистикой. КПД чайника изначально принят 80%.

Точность так себе, у меня выходит где-то ~0.2 литра. Для повышения точности предусмотрен режим корректировки значения КПД. Для этого нужно залить в чайник 1л воды и выбрать в web-интерфейсе Boil 1l on. Когда режим отработает, нужно зайти в режим настроек. Новое значение будет выведено сразу за типом устройства. Записать новое значение в nvram можно командой Save setting.

Как мне думается, получить большую точность нереально, так как КПД чайника со временем меняется, например, с появлением накипи, и, что хуже, затраченная энергия не измеряется, а просто вычисляется процессором чайника исходя из номинальной мощности нагревателя и времени его работы. Отклонение питающего напряжения при работе от значения при калибровке вносит заметную погрешность, зависимость там квадратичная. У меня при кипячении чайником RK-M216S 1.7 литра воды при напряжении на входе в дом 200-204V в итоге вычисляется 1.8 литра, при напряжении 210-214V выходит 1.6 литра. При калибровке очевидно было что-то среднее.

BLE монитор шлюза можно использовать для отслеживания до 24 BLE устройств меток/(маяков) со статическим MAC адресом. Выводится наличие/отсутствие метки(маяка) и rssi. Поддерживаются BLE маяки приложения Home Assistant на смартфонах (привязка по uuid), термометры Xiaomi Mijia 2 с прошивкой от atc1441 в режиме custom и прошивкой от pvvx в режиме custom, Xiaomi Mi Scale, а также Samsung Smart Tag.
Предусмотрено 10 портов ввода-вывода, 5 из них можно использовать для управления внешними устройствами(режим Out) и чтения их состояния(режим In). Три порта можно настроить как кнопки для включения — выключения подключенных BLE устройств(режим Sw, при этом состояние кнопок в mqtt не выводится), четвертый порт — как кнопку обновления картинки с камеры.

Xiaomi не видит bluetooth гарнитуру

При конфигурации в режиме входа включается pullup, если это возможно (номер пина меньше 34). Еще 2 порта используются шиной I2C, а каждый из 3-х оставшихся портов можно использовать как выход с широтно — импульсной модуляцией (PWM), или же как вход для подключения или одного датчика DS18B20 с прямым питанием, или одного датчика DHT22/AM2302 (7 и 8 порт).

Процедуры чтения упрощены, контрольная сумма не читается и не проверяется, данные округляются до одного знака после запятой. Если шлюз оборудован звуковым излучателем, то, подключив к нему выход PWM (в m5stack basic это gpio 25), можно организовать вывод звукового сигнала. Изменяя скважность импульсов, можно регулировать громкость. Частота фиксирована и равна 3.136 kHz.

Шина I2C поддерживает датчики SHT3x(адреса 0x44, 0x45), AHT20(0x38), HTU21(0x40), BMP280/BME280/680/688(0x76, 0x77, 688 пока не проверен), а также RTC DS3231(0x68) и контроллер батареи IP5306(0x75). Часы используются для хранения даты и времени с NTP сервера, датчик температуры выводится в Mqtt. Контроллер IP5306 установлен в m5stack и ttgo-t4 (SCL 22, SDA 21), позволяет определять уровень батареи с шагом 25% и ее режим (Discarging / Charging / Charged).

При питании от батареи яркость экрана уменьшается в 16 раз. Шлюз поддерживает также контроллер питания AXP192 и RTC PCF8563, что позволяет ему работать на M5Stack Tough, а также поддерживает ADC тензодатчиков HX711. Результат измерения с HX711 можно выводить как в килограммах, так и в процентах, в зависимости от калибровки.

HX711 опрашивается с интервалом 4 секунды, остальные датчики с интервалом 12 секунд. Шлюз допускает горячее подключение всех сенсоров. Датчики 18B20 и DHT22 появляются в Mqtt и Home Assistant сразу после старта шлюза, даже если они не подключены, а I2C сенсоры по мере обнаружения их на шине в течение 2-х циклов опроса (24 секунды).

Комплектующие

Для запуска шлюза в минимальной конфигурации вам понадобится лишь макетная плата на базе ESP32 c внутренней или внешней антенной. Также возможно подключение TFT экрана 320х240 2.4 дюйма. Но в целом можно обойтись и без него

Настройка шлюза

Подключение устройства к шлюзу

Нужно создать гостевую сеть Wi-Fi в роутере или точку доступа на смартфоне с ssid r4s и паролем 12345678, подождать, пока esp32 не подключится к нему, ввести esp32 IP-адрес в веб-браузере и во вкладке Setting установить остальные параметры. После чего гостевая сеть больше не нужна.

Esp32 будет пытаться подключиться к сети r4s только при недоступности основной сети, например, при неправильном пароле. Если не удается подключиться и к гостевой сети, esp32 перезагружается. Вариант с гостевой сетью в отличие от общепринятой практики запуска точки доступа на esp32, как мне кажется, удобнее, так как позволяет настраивать все с компьютера не тыкая пальцами в смартфон, который при отсутствии инета так и норовит соскочить с esp32. Но, главное, в случае падения по каким-то причинам Wi-Fi роутера (а он может быть выделенным только для iot устройств) остальной Wi-Fi не засоряется дружно вплывшими esp32.

Далее нужно ввести имя или MAC адрес Redmond устройства и привязать его к шлюзу. Поиск устройств запускается только тогда, когда есть хотя бы одно определенное, но не соединенное устройство, либо активен BLE монитор.

Если имя устройства точно не известно (а редмонды не всегда светятся по BLE как модель один в один), то для начала сканирования нужно ввести в поле Name в настройках любое имя, а потом заменить его найденным при сканировании и выбрать в настройках ближайший тип устройства (поле TYPE, например, для чайников от RK-G(M)200S до RK-G(M)240S протокол один и тот же, можно выбрать как RK-G200S, так и RK-G240S). Нужно учитывать, что не все устройства передают имя при пассивном сканировании (например, Xiaomi Mikettle, AM43 Blinds).

В любом случае лучше вводить в поле имени MAC адрес, можно как с двоеточиями, так и без. Найти и скопировать адрес можно BLE Last found name/address на главной страничке или на странице BLE monitor. Далее для привязки нужно нажать и удерживать кнопку + на чайнике или таймер на мультиварке до тех пор, пока устройство не войдет в режим привязки и через некоторое время соединится со шлюзом. Жалюзи AM43 требуют еще и ввода пин кода (Passkey) для соединения.

Подключение к MQTT

Предусмотрена возможность подключения к одному MQTT серверу нескольких шлюзов. Для этого нужно в каждом шлюзе установить свой r4sGate Number. Шлюз с номером 0 будет писать в топик r4s0/devaddr/. шлюз с номером 1 — r4s1/devaddr/. и т.д. Нужно только учесть, что запрос на авторизацию при привязке зависит от номера шлюза и от номера соединения в шлюзе.

Это позволяет привязать 2 одинаковых чайника или мультиварки к 2 разным шлюзам или к 2 разным соединениям в пределах одного шлюза. Если же рядом работают два шлюза с одинаковыми параметрами, подключенные к разным системам умного дома (например, сосед за стенкой), для исключения возможности подключения устройства к шлюзу соседа можно использовать опцию авторизации устройств с использованием MAC адреса шлюза, выбрав в настройках Use MAC in BLE Authentication. После чего сбросить на устройствах все привязки и затем привязать их к шлюзу заново.

Для подключения к Mqtt брокеру нужно ввести его адрес и порт, а также логин и пароль. Если шлюз работает с Home Assistant в паре с mosquitto брокером, стоит использовать опцию Hass Discovery. Перед ее использованием рекомендую удалить в Mqtt брокере все топики с r4s, для чего выбрать в настройках Delete Mqtt topics. Если же система не поддерживает Mqtt Discovery, придется разбираться с Mqtt.

Топики для чайника

Значение devaddr можно узнать в web интерфейсе шлюза

devaddr

На скриншоте выше оно равно e78801bcb6d5

Интеграция с Яндекс Алисой.

Интеграция с Яндекс Алисой производится через навык Домовенок Кузя через протокол MQTT. Подробнее об этом можно почитать в статье Простое подключение ESP8266 к Яндекс Алисе

Веб интерфейс

Устройством можно также управлять и через веб интерфейс. Пример главной страницы смотрите ниже

main

Пример окна настроек

settings

Заключение

Более подробно с проектом можно ознакомиться в Github репозитории автора . Список поддерживаемых устройств постоянно растет. Новые версии выходят примерно раз в месяц. Поддерживается обновление по воздуху. В целом это очень достойный проект. И он наглядно показывает как один человек способен сделать то, что не под силу целой компании Redmond

Источник: projectalt.ru

ClusterM/skykettle-ha

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags

Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.

Как отключить исправление слов на андроиде Xiaomi

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

44e7ecb Feb 4, 2023

Fix and update Russian translation

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time
February 10, 2022 18:53
February 4, 2023 09:18
January 14, 2022 14:20
January 20, 2022 20:24

August 16, 2022 15:31
August 13, 2022 10:30

README.md

Redmond SkyKettle integration for Home Assistant

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

image

image

image

  • RK-G200
  • RK-G200S
  • RK-G201S
  • RK-G202S
  • RK-G203S
  • RK-G204S
  • RK-G210S
  • RK-G211S
  • RK-G212S
  • RK-G213S
  • RK-G214S
  • RK-G215S
  • RK-G233S
  • RK-G240S
  • RK-M139S
  • RK-M171S
  • RK-M215S
  • RK-M216S
  • RK-M223S
  • RK-M136S
  • RFS-KKL002
  • RFS-KKL003
  • RFS-KKL004
  • .

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.

  • Allows to set target temperature.
  • Allows to set any boil mode: heating (keep desired temperature), standard boiling, boiling+heating.
  • Allows to change many settings of the kettle directly from Home Assistant, even more settings than the official application allows.
  • Allows to read all statistics, even more than the official application allows.
  • Allows to use kettle as RGB lamp.
  • Automatic mode change if target temperature changed, allows easy control from Google Assistant, Yandex Alice, etc.
  • Persistent connection and fast reconnect.
  • Bluetooth adapter with BLE support.
  • Home Assistant Bluetooth integration (comes with Home Assistant v2022.8.1+)
  • Make sure that you are using Home Assistant version 2022.8.1 or greater.
  • Make sure that Bluetooth integration is installed, enabled and working.
  • Install SkyKettle integration via HACS — search for SkyKettle or just copy skykettle directory to your custom_components directory.
  • Add SkyKettle integration just like any other integration (restart Home Assistant and press Shift+F5 if it’s not listed).
  • Make sure that the Kettle is on the stand and it’s plugged into the outlet.
  • Select MAC address of your kettle from the list.
  • Tune rest of the settings if you want.
  • Enjoy.

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

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

  • Off — the kettle is off, not heating at all.
  • 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.
  • Boil — boil water and turn off (switch to «Off» mode).
  • Boil+heat — boil water, wait until temperature drops to the desired temperature and keep this temperature.
  • Lamp — use kettle as night light, color changes between the selected ones (see below).
  • Light — use kettle as night light but keep the only one selected color (see below).

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.

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

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.

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

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

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: > :host < —card-mod-icon: 95 %> mdi:kettle-steam; mdi:kettle; —card-mod-icon-color: hsl( >, >%, 50% ) black ; > — type: entities entities: — entity: water_heater.skykettle_rk_g211 card_mod: style: > :host < —card-mod-icon: 95 %> mdi:kettle-steam; mdi:kettle; —card-mod-icon-color: hsl( >, >%, 50% ) black ; >

image

  • YooMoney: 41001843680639
  • Bitcoin: 1GS4XXx1FjQaFjgHnoPPVAzw9xqfv5Spx5
  • DonationAlerts: https://www.donationalerts.com/r/clustermeerkat

Источник: github.com

Рейтинг
( Пока оценок нет )
Загрузка ...
Китай Покупай