Шлюз для умной техники Redmond на базе ESP32
Представляю вашему вниманию проект шлюза для умной техники Redmond на базе ESP32. Реализация от Redmond не иделаьна, так что предлагаю альтернативное решение.
Шлюз для умной техники Redmond на базе ESP32
Версия для печати

Шлюз для умной техники 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

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

  • Galcon GL9001A

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

  • 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 не выводится), четвертый порт - как кнопку обновления картинки с камеры. При конфигурации в режиме входа включается 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 дюйма. Но в целом можно обойтись и без него

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


Для запуска шлюза нужно запрограммировать ESP32. Для прошивки можно использовать программу flash_download_tools. Файл fr4sGate.bin в папке build это уже собранный бинарник для esp32 @160MHz с памятью 4 Мбайт, DIO загрузчиком и прошивается одним файлом с адреса 0x0000 в режиме DIO. Если же DIO загрузчик не стартует, можно использовать файл fqr4sGate.bin с загрузчиком QIO и программировать его в режиме QIO. Как я понял, большинство esp32 можно программировать в любом режиме, но были случаи, что шлюз работал только при прошивке его файлом fqr4sGate.bin в режиме QIO. Файл r4sGate.bin используется для обновления прошивки через web интерфейс. Файлы для программирования ESP32C3 в папке C3.

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

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

Далее нужно ввести имя или 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.

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

r4s0/devaddr/cmd/boil <-- 0/off/false - выключение кипячения, 1/on/true - включение кипячения. Если перед этим был включен подогрев, включается кипячение с последующим подогревом;
r4s0/devaddr/cmd/heat <-- 0/off/false - выключение подогрева, 1/on/true - включение подогрева с последней запомненной шлюзом температурой. При старте шлюза температура берется из поля Heat в настройках;
r4s0/devaddr/cmd/heat_temp <-- 30...90 - включение подогрева, > 97 - выключение, < 30 - выключение, если подогрев был включен, последняя температура если был выключен;
r4s0/devaddr/cmd/boiltime <-- -5...5 - время кипения чайника;
r4s0/devaddr/cmd/nightlight <-- 0/off/false - выключение ночника, 1/on/true - включение ночника;
r4s0/devaddr/cmd/nightlight_red <-- 0..255 Уровень красного в ночнике;
r4s0/devaddr/cmd/nightlight_green <-- 0..255 Уровень зеленого в ночнике;
r4s0/devaddr/cmd/nightlight_blue <-- 0..255 Уровень синего в ночнике;
r4s0/devaddr/rsp/ - текущее состояние, температура, rssi и т.д.;

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


devaddr

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

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

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

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

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

main

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

settings

 

Заключение

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

Материал также доступен на моем канале: Яндекс Дзен и в группе ВК
Категория: ESP32 | Добавил: | Теги: умный дом, r4sgate, Redmond, Ready for Sky, алиса, ESP32
Просмотров: 2507 | Загрузок: 147 | Комментарии: 2 | Рейтинг: 0.0/0
Ссылки:
Скачать файл
7.84 Mb
Скачать
Скачать файл
8024 кб
Скачать удаленно
Поделиться:
Всего комментариев: 2
avatar
0
Андрей • 09:47, 15.04.2023
Подскажите, а самые первые розетки RSP-100S будут здесь работать? А то остались несколько штук из прошлой жизни. Спасибо за ответ.
avatar
0
ALT • 19:59, 23.04.2023
Заявлена только поддержка розеток 103S. Но я думаю и 100s должно потянуть
avatar