1. Название и модель
DXCF10 — напольный вентилятор Duux. На плате модуль ESP8266 (в карточке плата esp07), команды уходят в Tuya MCU по UART 9600. Каталог ESPHome ставит сложность 3/5: корпус надо вскрыть, отдельной пайки «как у Levoit» карточка не описывает.
В каталоге есть только фото изделия. Подписей площадок нет, поэтому ниже не названы точки на плате. Для первой записи ESP8266 обычно замыкают GPIO0 на землю, но где эта площадка на вашей ревизии — смотрите по шелкографии модуля, не по чужому вентилятору.
DXCF14 — другая модель: другое число скоростей и другие коды качания. YAML от DXCF10 туда не копируют.
2. Что даёт перепрошивка
- Питание вентилятора (datapoint 1) и скорость (datapoint 3, 26 ступеней)
- Горизонтальное качание datapoint 4
- Вертикальное качание через enum datapoint 5: выкл / вкл
- Режим datapoint 2: ручной, естественный, сон
- Таймер datapoint 6, от выключено до 12 часов
3. Что теряется
- Приложение Duux и облако Tuya перестают управлять вентилятором
- Штатные сценарии приложения нужно собрать заново в Home Assistant
- Гарантия после разбора обычно заканчивается
- Фото «куда паять» открытого источника нет, разбор придётся сверять с модулем на своей плате
4. Что понадобится
- Отвёртка под винты стойки и корпуса блока
- USB–UART 3,3 В, если модуль ещё не в загрузчике по воздуху
- Карточка DXCF10 как полный конфиг, не сокращение ниже
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.
Каталог не публикует разбор. Ищите модуль ESP8266 в блоке управления стойки. UART к MCU уже разведён на GPIO15 (передача) и GPIO13 (приём). Эти пины не надо перепаивать на другие: их указывает карточка.
Для программатора нужны земля, TX модуля, RX модуля и способ удержать GPIO0 на земле в момент включения. Имена площадок на пластике Duux в открытой карточке не подписаны.
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, паяльник больше не нужен.
Дальше — только то, чем эта модель отличается от общей схемы.
Каркас линии. Сущности вентилятора берите целиком из карточки, там же вертикальное качание и таймер.
speed_count: 26 — именно DXCF10. У Ultimate стоит 30.
Базовый конфиг этой модели с карточки или из репозитория компонента. Wi-Fi, пароль и OTA задайте как в общем разделе выше. Пароли из исходника сюда не перенесены.
substitutions:
devicename: "smart-fan"
esphome:
name: $devicename
comment: "Duux Whisper Flex Smart Fan (DXCF10)"
friendly_name: "Duux Whisper Flex Smart Fan"
project:
name: "Duux.Whisper-Flex-Smart-Fan"
version: "1.0.0"
esp8266:
board: esp07
restore_from_flash: true
# Enable logging
logger:
# Enable Home Assistant API
time:
- platform: homeassistant
id: homeassistant_time
# Enable Web server
uart:
tx_pin: GPIO15
rx_pin: GPIO13
baud_rate: 9600
# Register the Tuya MCU connection
tuya:
fan:
- platform: "tuya"
name: None
switch_datapoint: 1
speed_datapoint: 3
speed_count: 26
oscillation_datapoint: 4
switch:
- platform: template
name: "Oscillate vertically"
icon: mdi:arrow-up-down
turn_on_action:
then:
- select.set:
id: "vertically"
option: "on"
turn_off_action:
then:
- select.set:
id: "vertically"
option: "off"
lambda: |-
if (id(vertically).state == "on") {
return true;
} else {
return false;
}
select:
- platform: "tuya"
id: "vertically"
internal: true
name: "Oscillate vertically"
enum_datapoint: 5
optimistic: true
options:
0: "off"
1: "on"
- platform: "tuya"
name: "Mode"
enum_datapoint: 2
optimistic: true
options:
0: "Manual Mode"
1: "Natural Mode"
2: "Sleep Mode"
- platform: "tuya"
name: "Timer"
icon: mdi:fan-clock
enum_datapoint: 6
optimistic: true
options:
0: "off"
1: "1h"
2: "2h"
3: "3h"
4: "4h"
5: "5h"
6: "6h"
7: "7h"
8: "8h"
9: "9h"
10: "10h"
11: "11h"
12: "12h"
sensor:
- platform: wifi_signal
name: "Wifi Signal"
update_interval: 60s
icon: mdi:wifi
- platform: uptime
name: "Uptime"
update_interval: 60s
icon: mdi:clock-outline
text_sensor:
- platform: wifi_info
ip_address:
name: "IP Address"
ssid:
name: "Wi-Fi SSID"
bssid:
name: "Wi-Fi BSSID"
- platform: version
name: "ESPHome Version"
hide_timestamp: true
7. Настройка в Home Assistant
Вентилятор, выбор режима и таймер появятся отдельными сущностями. Вертикальное качание в карточке сделано шаблоном поверх внутреннего select, потому что у Tuya это enum, а не простой флаг.
8. Известные баги и как их обойти
- GPIO0 на ESP8266 ещё и вывод прошивки. Если оставить его на земле после записи, модуль снова уйдёт в загрузчик
- 26 и 30 скоростей — разные модели. Пульт DXCF14 на этом YAML поедет не туда
- Логгер на ESP8266 иногда занимает UART. Если MCU молчит, в
loggerставятbaud_rate: 0, как на других Tuya-модулях, где TX сидит на GPIO1. Здесь TX на GPIO15, но проверить лог всё равно стоит
9. Источники
- Каталог DXCF10 на devices.esphome.io https://devices.esphome.io/devices/Duux-Whisper-Flex-Smart-Fan-DXCF10/
- GitHub Исходник карточки DXCF10 https://github.com/esphome/esphome-devices/blob/main/src/docs/devices/Duux-Whisper-Flex-Smart-Fan-DXCF10/index.md