1. Название и модель
Levoit Core 300S — бытовой очиститель с тремя ступенями фильтра. На плате стоит ESP32-SOLO-1, а кнопки, вентилятор, датчик PM2.5 и индикация живут на соседнем микроконтроллере. В карточках ESPHome его называют Tuya MCU: ESP32 только мост между Wi-Fi и этим чипом.
Связь идёт по UART, 115200 бод, 8N1. Отладочная гребёнка, через которую прошивают ESP32, — это не линия между ESP и MCU. Её путают чаще всего.
Перед пайкой сверьте ревизию платы с фотографиями в репозитории. Разбор снимает гарантию, сеть 220 В остаётся внутри корпуса.
2. Что даёт перепрошивка
После замены прошивки ESP32 очиститель появляется в Home Assistant по локальному API и не ходит в VeSync.
- Включение и режим вентилятора: ручной, сон, авто
- Скорость в ручном режиме
- Показания PM2.5 и оценка качества воздуха — в тех конфигах, где компонент их отдаёт
- Блокировка экрана и подсветка дисплея
- Остаток ресурса фильтра — есть не во всех форках; у mulcmu это отдельный датчик
Расписание и «выключить через час» проще собрать автоматизациями Home Assistant, а не ждать штатный таймер приложения.
3. Что теряется
- Приложение VeSync и удалённый доступ через облако Levoit перестают управлять устройством
- Штатные таймеры приложения пропадают. Их заменяют автоматизациями
- Голосовые сценарии, завязанные на аккаунт VeSync, нужно перепривязать к Home Assistant
- Гарантия производителя после вскрытия, как правило, заканчивается
- Прошивка ESP32 не обновляет прошивку соседнего MCU. Файл с fw.vesync.com для второго чипа сам по себе не применится
4. Что понадобится
- Паяльник с тонким жалом, флюс и тонкий провод (AWG 28–30)
- USB–UART переходник на 3,3 В. Годится CP2102, CH340 или аналогичный. Пять вольт на плату подавать нельзя
- Кнопка или перемычка на GPIO0, чтобы попасть в загрузчик
- ESPHome и секреты Wi-Fi в
secrets.yaml - Запасной комплект фильтров не нужен для прошивки, но после сборки проверьте, что крышка села без пережатых проводов
Программатор в виде отдельной платы ESP32 не обязателен: прошивается штатный модуль на плате очистителя. Внешний ESP32 у mulcmu использовался как сниффер линии, а не как замена модуля.
5. Разборка и пины
Программатор USB–UART подключают к модулю, который прошивают, крест-накрест:
- Земля переходника (GND) — на землю платы. Этот провод обязателен.
- TX переходника — на RX модуля. На плате площадка часто подписана RX, RXD или RXD0.
- RX переходника — на TX модуля. На плате это TX, TXD или TXD0.
- Питание логики — 3,3 В. Пять вольт на эти площадки не подают. Если плату уже кормит её блок, линию 3,3 В с переходника не подключают вторым источником.
- Для входа в загрузчик ESP8266 и ESP32 площадку GPIO0 (IO0, BOOT) замыкают на землю и в этот момент подают питание. После старта записи землю с GPIO0 снимают.
Если у этой модели в тексте ниже другие имена площадок, прямой порядок TX–TX или прошивка по USB, делайте как написано там. Общая схема выше — для обычного модульного UART.
Корпус разбирается до платы с ESP32-SOLO-1. На модуле выведена гребёнка под прошивку: 3,3 В, земля, TX, RX и GPIO0.
Линия к MCU — другие точки. По разбору mulcmu выводы 13 и 14 чипа U2 идут на GPIO16 и GPIO17 ESP32, рядом с модулем есть тестовые точки TP10 и TP33. Уровень между чипами сдвигают MOSFET на обратной стороне платы, поэтому «просто припаять 5 В логику» нельзя.
Гребёнка J1 нужна, чтобы записать прошивку в ESP32. TP10 и TP33 — чтобы слушать или понимать обмен с MCU. Это разные цепи.
На время прошивки:
- Земля переходника на землю платы
- TX переходника на RX модуля, RX переходника на TX модуля
- 3,3 В только если модуль не питается от своего блока. Не подавайте 5 В
- GPIO0 замкнуть на землю, подать питание, отпустить после старта загрузчика
6. Прошивка
Готового файла «прошивка именно этой модели» на этом сайте нет. Её собирает ESPHome из текстового конфига YAML: туда входят Wi-Fi, пины и команды второго чипа. Чужой .bin из интернета почти наверняка собран с чужим паролем сети.
Какую программу ставить
- ESPHome Dashboard — дополнение в Home Assistant или программа на компьютере. В ней пишут YAML, нажимают Install, и она сама собирает прошивку. Установка: дополнение для Home Assistant или команда
pip install esphome. - ESPHome Web, сайт web.esphome.io, — загрузчик в браузере Chrome или Edge. Им записывают уже собранный
.binна ESP8266 и ESP32 через USB–UART. На BK72xx он не рассчитан. - esptool — программа Espressif, чтобы снять заводскую копию флеша и записать
.bin, если браузер порт не видит. Репозиторий: espressif/esptool. - ltchiptool — то же самое для чипов Beken BK72xx (модули WB3S, WBR3, CB3S и похожие). ESPHome для них собирается через LibreTiny. Программа: libretiny-eu/ltchiptool, описание платы: компонент bk72xx.
Как собрать конфиг
- В Dashboard нажмите New Device и выберите чип, который стоит на плате: ESP8266, ESP32 или BK72xx. Имя — латиницей, без пробелов.
- Пароль Wi-Fi уберите в файл
secrets.yamlрядом с конфигом. В YAML оставьтеssid: !secret wifi_ssidиpassword: !secret wifi_password. - Блок UART, модель и скорости из раздела ниже вставьте в этот файл. Полный пример, если он длинный, берите по ссылке в источниках внизу страницы, а не из гайда соседней модели.
- Строки
api:иota:оставьте. Безapi:Home Assistant устройство не увидит. Ключ шифрования Dashboard предлагает сам, его потом спросит интеграция ESPHome.
Как залить первый раз
- Подключите USB–UART, как в разделе «Разборка и пины»: земля переходника на землю платы, TX переходника на RX модуля, RX переходника на TX модуля. Логика 3,3 В. Имена площадок на конкретной плате — там же.
- Для ESP8266 и ESP32 замкните GPIO0 (IO0, BOOT) на землю и в этот момент подайте питание. Для BK72xx ltchiptool сам просит перезапустить чип, обычно кратким отключением земли.
- В Dashboard: Install → Plug into this computer, выберите порт переходника. Либо Install → Manual download, сохраните
.binи откройте его на web.esphome.io. Из терминала то же самое делаетesphome run имя-устройства.yaml. - Когда в логе появится IP-адрес, GPIO0 от земли отпустите, провода можно отпаять. Следующие обновления идут по Wi-Fi, пункт OTA, паяльник больше не нужен.
Дальше — только то, чем эта модель отличается от общей схемы.
Рабочих веток несколько, и они не взаимозаменяемы один в один.
- acvigue/esphome-levoit-air-purifier — компонент, на котором основана карточка devices.esphome.io. В самой карточке источник указан как
github://acvigue/esphome-levoit-purifier: такое короткое имя может не совпасть с реальным репозиторием, берите URL с GitHub - tuct/esphome-projects и компонент tuct/levoit — более широкая линейка Core и Vital, модель задаётся явно
- mulcmu/esphome-levoit-core300s — ранний разбор 300S, пины и дампы UART
Карточка каталога задаёт UART так: ESP передаёт на GPIO17, принимает на GPIO16, скорость 115200. Фреймворк — ESP-IDF, для одноядерного ESP32-SOLO в конфиге включают CONFIG_FREERTOS_UNICORE.
Короткий каркас, не замена полного файла из репозитория:
У tuct в блок levoit добавляют model: CORE300S. Если внешний компонент не собирается, откройте README выбранного репозитория: путь github:// чувствителен к структуре каталогов.
Первый раз удобнее прошить по кабелю через esphome run. Дальше хватает OTA, если Wi-Fi поднялся.
Базовый конфиг этой модели с карточки или из репозитория компонента. Wi-Fi, пароль и OTA задайте как в общем разделе выше. Пароли из исходника сюда не перенесены.
esphome:
name: levoit-air-purifier-core-300s
friendly_name: Levoit Air Purifier Core 300s
esp32:
variant: esp32
framework:
type: esp-idf
sdkconfig_options:
CONFIG_FREERTOS_UNICORE: y
external_components:
- source: github://acvigue/esphome-levoit-purifier
components: [levoit]
logger:
baud_rate: 115200
# Enable Home Assistant API
uart:
tx_pin: GPIO17
rx_pin: GPIO16
baud_rate: 115200
levoit:
id: levoit1
fan:
- platform: levoit
name: Levoit Purifier
sensor:
# Uptime sensor.
- platform: uptime
name: Uptime
# WiFi Signal sensor.
- platform: wifi_signal
name: WiFi Signal
update_interval: 60s
# PM2.5 sensor
- platform: levoit
pm_2_5:
name: PM2.5
air_quality:
name: Air Quality Index
switch:
- platform: levoit
display_lock:
name: "Display Lock"
display_on:
name: "Display On"
power:
name: "Master Power"
select:
- platform: levoit
fan_mode:
name: "Fan Mode"
auto_mode:
name: "Auto Mode"
7. Настройка в Home Assistant
Когда устройство в той же сети и в конфиге есть api:, Home Assistant сам предлагает его в уведомлениях ESPHome. Если обнаружения нет, добавьте интеграцию ESPHome вручную и укажите IP очистителя.
Имеет смысл вынести на панель:
- вентилятор (режим и скорость)
- PM2.5
- выключатели питания и блокировки экрана
- датчик Wi-Fi, чтобы видеть, что модуль жив после сборки
Таймер «30 минут на ночь» делается автоматизацией: включить скорость, подождать, выключить. Так вы не зависите от облачного таймера VeSync.
Автоматизация по порогу PM2.5 — главный практический выигрыш: очиститель включается от своего же датчика, без промежуточного облака.
8. Известные баги и как их обойти
- TX и RX перепутаны. Если в логе тишина, поменяйте
tx_pinиrx_pinместами и проверьте землю - В карточке devices.esphome.io таблица пинов и блок YAML расходятся в подписях TX/RX. Ориентир — YAML: передача GPIO17, приём GPIO16
- Отладочная гребёнка не является UART к MCU. Сниффер вешают на TP10 и TP33, а не на пины прошивки
- Ветка acvigue подтверждала в первую очередь 300S. Другие модели той же линейки лучше сверять с таблицей tuct: там указаны проверенные версии MCU
- Штатный ESP32 в работе отдаёт в облако не весь протокол открытым текстом. Разбор mulcmu описывает MQTT к серверам VeSync и отдельно отмечает, что пакеты выглядят битыми или закрытыми. Для локального управления это не нужно расшифровывать: ESPHome говорит с MCU напрямую
- Если увести штатный ESP32 в загрузчик и оставить его там, MCU останется без моста. После прошивки модуль должен нормально стартовать, а не висеть с GPIO0 на земле
- Ресурс фильтра и таймеры зависят от форка. Не обещайте себе функции, которых нет в выбранном README
- В issue 62 спрашивают, чем Core 300S отличается от наклейки 300S-P. Автор репозитория отвечает, что суффикс -P Levoit стал добавлять позже, и ссылка на 300S-P выглядит как его 300S. Пока разбор конкретной платы не опубликован, пины сверяйте со своей платой, не с названием на коробке
9. Источники
- Каталог Levoit Core 300S на devices.esphome.io https://devices.esphome.io/devices/levoit-core-300s/
- GitHub Исходник карточки Core 300S https://github.com/esphome/esphome-devices/blob/main/src/docs/devices/Levoit-Core-300s/index.md
- GitHub acvigue/esphome-levoit-air-purifier https://github.com/acvigue/esphome-levoit-air-purifier
- GitHub mulcmu/esphome-levoit-core300s https://github.com/mulcmu/esphome-levoit-core300s
- GitHub tuct/levoit https://github.com/tuct/levoit
- GitHub tuct/esphome-projects https://github.com/tuct/esphome-projects
- GitHub README компонента tuct/levoit https://github.com/tuct/levoit/blob/main/components/levoit/README.md
- Обсуждение Разбор Aiden Vigue https://vigue.me/posts/levoit-air-purifier-esphome-conversion
- GitHub Issue: Core 300S и наклейка 300S-P https://github.com/tuct/levoit/issues/62