ESP32 Ready4Sky (R4S) Gateway for Redmond+ devices
2024.01.14. Проект собран с использованием esp-idf версии 5.2-beta2. Добавлены русские названия программ в меню мультиварок. Добавлена поддержка обогревателя Redmond SkyHeat RCH-4560S. В BLE монитор шлюза добавлена поддержка термометров LYWSDCGQ. На экран шлюза можно выводить до 4 картинок по очереди, используя 4 url. 2023.12.23. В BLE монитор шлюза добавлена поддержка LYWSD02 часов с термометром и LYWSD03MMC термометров с оригинальной прошивкой. Ключи для LYWSD03MMC версии 2.1.1_0159 брал из облака Xiaomi. 2023.12.06. Добавлена возможность запрета AP по умолчанию r4s и перезагрузки шлюза при пропадании wifi. Добавлена поддержка протоколов Tx RF433 Livolo и RCswitch. 2023.11.12. Проект собран с использованием esp-idf версии 4.4.6. Добавлена поддержка Delonghi ECAM650.75. Мелкие исправления. 2023.10.05. Поле Mqtt сервера увеличено до 64 символов. 2023.09.28. Поправлена процедура таймера. Увеличен тайм-аут I2C. Добавлена проверка CRC при чтении SCD4x. 2023.09.23. Оптимизация и мелкие исправления. Свободной оперативной памяти стало больше примерно на 20кбайт. 2023.08.22. Добавлена поддержка экранов на ST7789. Мелкие исправления. 2023.08.04. Изменены имена объектов в Home Assistant Mqtt Discovery для совместимости с версией 2023.8.0. Для корректного изменения имен желательно после обновления выбрать в настройках Delete Mqtt Topics. Добавлена поддержка датчика движения HLK-LD2410B и датчика дверей Redmond RSO-31S. Ресурс батареи последнего в режиме постоянного соединения пока не тестировал). Исправления по Galcon. Добавлен вывод уровня батареи в счетчиках Элехант. 2023.07.08. Для портов 1-5 изменена процедура вывода в режиме open drain. Изменена процедура чтения для устройств Redmond. Интервал опроса метеостанции и датчиков дыма увеличен до 3 минут. Мелкие исправления. 2023.06.10. Для портов 1-5 режим Inv Out заменен на Out od(Out open drain) и выбирается отдельно для каждого выхода. 2023.05.15. В счетчике Элехант(Elehant) state_class изменен с measurements на total_increasing. Это позволяет добавить этот счетчик в раздел Энергия Home Assistant. 2023.05.14. Добавлена поддержка сенсоров SGP4x(0x59). Для вычисления VOC используется библиотека Sensirion. Добавлена возможность инвертирования выходов портов 1-5. 2023.04.30. Поправлено включение экрана M5Stack Tough при работе от батареи. 2023.04.29. Добавлена поддержка SkyDew RHF-3310S. 2023.04.22. В BLE монитор шлюза добавлена поддержка счетчиков Элехант(Elehant). 2023.04.01. Мелкие исправления. 2023.02.23. Добавлена поддержка сенсоров SHT4x(0x44, 0x45), SCD4x(0x62). Мелкие исправления. 2023.02.13. Добавлена поддержка шлюзом сенсора SGP30(0x58), BLE монитором устройства Qingping Air Monitor Lite(CGDN1). Общее время работы чайника выводится https://github.com/alutov/ESP32-R4sGate-for-Redmond/issues/141. Мелкие исправления. 2023.01.23. Данные в Mqtt LWT топик (r4sx/status) записываются с флагом Retain. Добавлена иконка favicon.ico. 2023.01.21. Поправлено выделение памяти в процедуре Hass Discovery. Актуально для версий 2023.01.17 и 2023.01.18. 2023.01.18. Добавлен вывод версии подключенных устройств Redmond и Mikettle в web и Home Assistant. Поправлена авторизация Redmond. 2023.01.17. Добавлен вывод на экран напряжения и тока из json строки по метрикам Voltage и Current (строка энергомониторинга Tasmota). 2023.01.05. Добавлено получение NTP сервера по DHCP.
Увеличено до 19 символов поле Mqtt Server. Добавлены "configuration_url" и версия прошивки для шлюза. Первая опция работает только на 11 версии ХА, на 10 версии из-за ошибки в этой опции разбор discovery на ней тормозится и в итоге пропадает выключатель экрана. Добавлена опция чистки топиков Mqtt. Переделан вывод на экран даты для освобождения места. На освободившееся место цветом выводится состояние устройств, 1 - первое устройство, 2- второе и 3 - третье. Серый - не на связи или не определено, синий - выключено, красный - включено, желтый - подогрев, белый - установлена программа. Стало удобней пользоваться кнопками включения - выключения. Добавлена мультиварка RMC-M224S. Добавлено 5 портов ввода-вывода (Port1-Port5). Порты программируются на вывод(от 0 до 33 пина) или ввод(от 0 до 39), с учетом ограничений esp32, разумеется. Жесткой проверки не производится, так что возможно зависание esp32 при старте при неверном выборе пинов. Для первых трех портов предусмотрен также режим sw(sw1-sw3), когда порт работает в режиме ввода с активным низким уровнем как кнопка локального включения-выключения соответствующего устройства. В этом режиме состояние кнопки в mqtt не выводится. При включенном Hass Discovery порты в Ассистенте привязываются к шлюзу. Отмечу, что выключение порта не удаляет его из шлюза в Ассистенте, для этого нужно удалить в Mqtt брокере все топики с r4s, выбрав в настройках Delete Mqtt topics. При работе порта на ввод подтягивающие резисторы (pullup, pulldown) программно не задействовал, да и для пинов 34-39 esp32 это нельзя сделать. Пока потестируем, может что-то и стоит поправить. Добавлена поддержка экрана на ili9342. Во всех типах чайников топик "state" изменен на "boil". Теперь он управляет только режимом кипячения, на режим подогрева не влияет. Добавлен топик heat. Включает подогрев с последней установленной температурой с момента соединения с чайником. При старте шлюза температура подогрева берется из Heat temp вкладки Setting. Если и там температура < 30°C, то по умолчанию температура подогрева 40°C. В Hass Discovery добавлено поле "via_device". Потребленная энергия выводится в кВт/ч. В чайниках 200-240 добавлено включение и выключение цветовой индикации температуры воды, включение и выключение звуковой индикации, а также статистика. Включенная "offline Response" выводит offline в топиках состояний при отсутствии связи с устройством. Если она выключена, об отсутствии связи можно судить только по топику status. Если включена опция Hass Discovery, опции true/false и offline выключаются за ненадобностью. Добавлена лицензия. Увеличена длина пароля Mqtt до 19 символов. Работа с экраном теперь включается в настройках и по умолчанию выключена. Это нужно для запуска прошивки на esp32 с нестандартной разводкой пинов, например, на ESP32-PICO-D4 (m5atom lite). После кипячения чайник Mikettle переводится в режим поддержания температуры, что позволяет повторно включать кипячение без снятия с подставки. Добавлен чайник M170S. После обновления с версии 2021.03.25 нужно проверить и при необходимости поправить тип чайника.
При обновлении закрываются все BLE cоединения. Изменил параметры скана и добавил строку состояния BLE. При соединении показывает 2 этапа: open - установление соединения, auth - чтение характеристик устройства и авторизация. Немного поправил wifi, теперь пытается восстановить соединение 10 раз до рестарта. Уменьшил до 256 минут время сброса счетчика warming Mikettle. Вроде бы нашел в коде причину зависания BLE при сканировании. Но пока сильно не тестировал. Мониторинг состояния BLE сделан опцией "BLE monitoring" и по умолчанию выключен. Если он включен, поведение прошивки аналогично старой версии, то есть рестарт при потере соединения более минуты и ошибке скана. Добавлена поддержка мультиварки RMC-M903S и частично духового шкафа RO-5707S, за исключением режимов блокировки и автоподогрева.
В RMC-M800S добавлена программа мультиповар. В режиме RMC-M903S можно попробовать и другие мультиварки. Отключена проверка состояния BLE соединений во время обновления. На экране вместо влажности в помещении выводится напряжение и ток из ZMAi-90.
Добавлена возможность очистки NVS перед записью настроек. Может быть полезна при переходе на другую версию esp-idf. Исправлена ошибка вывода текущей температуры MiKettle в третьей позиции. Устранено принудительное выключение чайника через несколько секунд после установки на подставку. Добавлен мониторинг состояния BLE соединений. При отсутствии хотя бы одного ранее подключенного устройства в течение минуты или при неудачном старте поиска устройств выполняется рестарт шлюза. Перегрузить шлюз можно и по Mqtt, записав в топик screen restart, reboot или reset. Добавлена поддержка чайников Xiaomi MiKettle. Поддерживаются 3 версии: интернациональная YM-K1501(Int) с ProductId 275, YM-K1501(HK) для Гонконга и Китая с ProductId 131 и V-SK152(Int) с ProductId 1116. Использована информация от aprosvetova c уточнением по авторизации от drndos. Управление возможно только из режима "keep warm". В этом режиме чайник поддерживает заданную шлюзом минимальную температуру 40°C с гистерезисом примерно 4°C, то есть при 36°C подогрев включается, а при 44°C отключается. Доступно включение и выключение кипячения (state = ON/OFF), установка температуры подогрева (heat_temp = 40...95). Можно перевести чайник в режим Idle (heat_temp = 0). Последняя команда выполняется с задержкой. После выполнения команды дальнейшее управление чайником недоступно. В отличие от выключения сенсором "warm" на чайнике при дальнейшем выключении и включении чайник возвращается в режим "keep warm". Возможно, это особенность конкретной версии MCU 6.2.1.9 и работает только если температура воды выше 20°C, это нужно уточнять. Пока оставил так и включил чайник через редмондовскую розетку. Если ее выключить и опять включить, чайник переходит в режим подогрева. Осталось найти возможность рестарта контроллера QN9020 чайника по BLE и будет полноценное включение. Все необходимые параметры чайника шлюз устанавливает самостоятельно, а родное приложение пригодится для обновления прошивки. Время подогрева установлено на 12 часов (720 минут), после 700 минут шлюз сбрасывает счетчик кратковременно включая и выключая кипячение. Изменены параметры сборки в sdkconfig. Пытаюсь убрать вылезшие непонятно с какого времени проблемы в библиотеке Ble. Удалил все проблемные релизы. Вернулся на версию v4.2-dev-1905-g625bd5eb1 esp-idf. В этой версии esp-idf собирал все ранние версии шлюза. Сейчас более-менее стабильная работа. В sdkconfig уменьшил timeout на установление BLE соединения с 30 до 10 секунд. Добавлено переназначение пинов для дисплея в настройках, что позволяет использовать для шлюза уже готовые устройства, например TFT BTC Ticker или m5 stack basic. Также экран можно включать и выключать по Mqtt, иcпользуя топик r4s/screen. Немного изменен выбор типа чайника. Есть вариант для старой прошивки RK-G200S-old, был актуален год-полтора назад, но может еще где встретится. Все новые чайники от RK-G200S до RK-G240S похоже используют один протокол обмена, можно выбирать для них любой из этих пунктов в меню. Поправлена обработка температуры нагрева чайника heat_temp по Mqtt. Если задается температура до 40, чайник выключается, при 40..90 включается режим нагрева, при 91 и более включается режим кипячения. Начинал делать это не помню в какой версии, но ошибка была в том, что при температуре 0...39 чайник не выключался. Добавлена возможность вывода в ответах на команды "true/false" вместо "ON/OFF". Мне пригодилась в в драйвере iot iobroker-а при подключении к яндекс колонке или гугл ассистенту. Они дружно понимают только "true/false". Позволяет не возиться в драйвере со скриптами автозамены. Опция включается в настройках и не работает, если включен Hass Discovery, т.к. в Home Assistant (и OpenHAB) "ON/OFF" идет по умолчанию. Увеличен размер стека http server-а. Доделал вроде бы общие топики команд/ответов. В версиях от 2020.10.27 до 2020.11.07(пока тестировал общие топики), возможны проблемы с Mqtt. Если это так, стоит обновиться до текущей версии.
Добавлена поддержка SkyPower RSP-103S(нагреватель SkyHeat RCH-4529S похоже по командам полностью совместим с розеткой, нужно проверить), SkyCoffee RCM-М1519S. Добавлен Mqtt Discovery для ассистента. Опция включается в настройках. Перед ее использованием рекомендую удалить в Mqtt брокере все топики с r4s. Сущности чайника да и мультиварки нет в Mqtt, так что собрано из климата, сенсоров и свичей. Функционал пока ограничен, нет отложенного старта в мультиварке и кофеварке и кипячения с последующим подогревом в чайнике. Не нашел форму ввода числа. И потому время для мультиварки ставится в минимальной и максимальной температуре, то есть нельзя поставить 1 час, нужно 1 час и 1 минута. В Mqtt Discovery не все работает как надо, или я не разобрался. Например зависимости. Специально делал esp32 чтобы, когда она недоступна, становились недоступны и все ее устройства. Но вставляю "via_device" - Hass ругается. Так что решение временное. Как появится сущность нагревателя в Home Assistant Mqtt Discovery, переделаю. А сама идея Discovery мне очень понравилась. Слышал, в OpenHab-е тоже есть опция discovery, причем совместимая с Hass. В процессе ковыряния с discovery пришлось сделать ряд изменений в топиках. Теперь все топики статуса отправляются на брокер в флагом retain, true/false/on/off заменены на большие ON/OFF. По умолчанию они приняты в Home Assistant и openHAB как вкл. и выкл. строки. С этой же целью online=0/1 заменены на status=online/offline. Команды, напротив, должны передаваться на брокер без ретайна, чтобы не было самопроизвольных включений. Вроде это все учтено в discovery. Добавлено несколько топиков статуса для работы с ассистентом. Поправлена подсветка, теперь при включении подсветки кипячение должно выключаться. И теперь можно менять цвет на уже включенной подсветке. В новых прошивках Redmond немного изменен ответ на авторизацию. Учтено. То, что раньше не соединялось, теперь должно работать.
Поддержка трех BLE устройств, добавлена мультиварка RMC-M800S. Сканирование теперь запускается только тогда, когда есть хотя бы одно определенное, но не соединенное устройство. То есть для начала сканирования нужно ввести в настройках хотя бы одно какое-нибудь имя устройства, а потом заменить его найденным (строка "BLE last found device name") при сканировании.
Первая версия. Одно BLE устройство. Поддержка только чайников Redmond, типа RK-M173S или RK-G240S. Если устройство не соединено или не определено, постоянно идет сканирование. Имя последнего найденного устройства можно увидеть на главной страничке в строке "BLE last found device name". Далее его копипастом нужно ввести в поле "Device name" в настройках и выбрать ближайший тип устройства.