Обновлено 2026-09-22

Levoit Core 300S

Levoit, модель Core 300S. 4/5 · пайка. Модуль Wi-Fi говорит со вторым микроконтроллером.

1. Название и модель

Levoit Core 300S — бытовой очиститель с тремя ступенями фильтра. На плате стоит ESP32-SOLO-1, а кнопки, вентилятор, датчик PM2.5 и индикация живут на соседнем микроконтроллере. В карточках ESPHome его называют Tuya MCU: ESP32 только мост между Wi-Fi и этим чипом.

Связь идёт по UART, 115200 бод, 8N1. Отладочная гребёнка, через которую прошивают ESP32, — это не линия между ESP и MCU. Её путают чаще всего.

Перед пайкой сверьте ревизию платы с фотографиями в репозитории. Разбор снимает гарантию, сеть 220 В остаётся внутри корпуса.

Очиститель Levoit Core 300S
Так выглядит Core 300S снаружи. Фото: esphome/devices.esphome.io, GPL-3.0
Разобранный Levoit Core 300S
Корпус снят, дальше нужна круглая плата с модулем ESP32. Фото: tuct/levoit, MIT

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 замкнуть на землю, подать питание, отпустить после старта загрузчика
Плата Core 300S: гребёнка прошивки и UART к MCU
Красный кружок — гребёнка прошивки ESP32. Белые провода в кружке — RX и TX линии ESP↔MCU, это не пины программатора. Фото: tuct/levoit, MIT
Подписи RX, TX, EN и земли у модуля ESP32
Крупно: RX и TX у модуля, земля и EN для загрузчика. Метка +5V на фото — силовая площадка платы. На выводы ESP32 пять вольт подавать нельзя. Фото: tuct/levoit, MIT
Жгут проводов, выведенный из корпуса Core 300S
Куда уводят жгут, чтобы крышка села. После первой прошивки провода можно убрать и обновляться по OTA. Фото: tuct/levoit, MIT
Плата Core 300S с проводами на гребёнке ESP32
Тот же модуль с временными проводами на гребёнке. Подписей на этом кадре нет, ориентир — размеченное фото выше. Фото: esphome/devices.esphome.io, GPL-3.0
Схема выводов ESP32-SOLO-1 с тестовыми точками TP10 и TP33
Схема модуля, не фото платы. TP33 отмечен как IO17 (UART2 TX), TP10 — как IO16 (UART2 RX). Это совпадает с tx_pin GPIO17 и rx_pin GPIO16. Схема: mulcmu/esphome-levoit-core300s, MIT

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.

Как собрать конфиг

  1. В Dashboard нажмите New Device и выберите чип, который стоит на плате: ESP8266, ESP32 или BK72xx. Имя — латиницей, без пробелов.
  2. Пароль Wi-Fi уберите в файл secrets.yaml рядом с конфигом. В YAML оставьте ssid: !secret wifi_ssid и password: !secret wifi_password.
  3. Блок UART, модель и скорости из раздела ниже вставьте в этот файл. Полный пример, если он длинный, берите по ссылке в источниках внизу страницы, а не из гайда соседней модели.
  4. Строки api: и ota: оставьте. Без api: Home Assistant устройство не увидит. Ключ шифрования Dashboard предлагает сам, его потом спросит интеграция ESPHome.

Как залить первый раз

  1. Подключите USB–UART, как в разделе «Разборка и пины»: земля переходника на землю платы, TX переходника на RX модуля, RX переходника на TX модуля. Логика 3,3 В. Имена площадок на конкретной плате — там же.
  2. Для ESP8266 и ESP32 замкните GPIO0 (IO0, BOOT) на землю и в этот момент подайте питание. Для BK72xx ltchiptool сам просит перезапустить чип, обычно кратким отключением земли.
  3. В Dashboard: Install → Plug into this computer, выберите порт переходника. Либо Install → Manual download, сохраните .bin и откройте его на web.esphome.io. Из терминала то же самое делает esphome run имя-устройства.yaml.
  4. Когда в логе появится 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. Источники