Профили плат
📦 Доступные профили
5 board profiles| Файл | Чип | Framework | Wi-Fi | Zigbee/Thread |
|---|---|---|---|---|
esp32-supermini.yaml | ESP32-WROOM-32 | arduino | ✅ | ❌ |
esp32c3-supermini.yaml | ESP32-C3 | arduino | ✅ | ❌ |
esp32c6-supermini.yaml | ESP32-C6 | esp-idf | ✅ Wi-Fi 6 | ✅ |
esp32h2-supermini.yaml | ESP32-H2 | esp-idf | ❌ нет | ✅ |
esp8266-nodemcu.yaml | ESP8266 | arduino | ✅ | ❌ |
🧩 Матрица «прошивка × плата»
| Прошивка | ESP32 | C3 | C6 | H2 | ESP8266 |
|---|---|---|---|---|---|
| 📡 Radar + Light | ✅ | ✅ | ✅ | 🐝 | 🚧 |
| 💧 Humidifier | ✅ | ✅ | ✅ | 🐝 | ✅ |
| 🪟 Smart Curtains | ✅ | ✅ | ✅ | 🐝 | ✅ |
| 🎙️ SmartStation | 🚧 | ✅ | ✅ | ❌ | ❌ |
| ⚡ Relay 2ch | ✅ | ✅ | ✅ | 🐝 | ❌ |
✅ работает · 🐝 Zigbee-каркас · 🚧 ограниченно · ❌ не поддерживается
📐 Формат файла
# Обязательныеota_channel: esp32c6 # суффикс OTA-каналаboard: esp32-c6-devkitc-1 # значение для esphome.boardchip_family: esp32 # esp32 | esp32c3 | esp32c6 | esp32h2 | esp8266framework_type: esp-idf # arduino | esp-idf
# Опциональные — только те, которые нужны прошивкамstatus_led_pin: "GPIO8"battery_pin: "GPIO4"
# UART для радараradar_uart_tx: "GPIO7"radar_uart_rx: "GPIO6"
# Реле / кнопки (массивы для многоканальных)relay_pins: ["GPIO21", "GPIO20", "GPIO19", "GPIO18"]switch_pins: ["GPIO0", "GPIO1", "GPIO2", "GPIO3"]
# ADClight_adc_pin: "GPIO4"
# I2S (SmartStation)station_i2s_lrclk: "GPIO3"station_i2s_bclk: "GPIO2"station_i2s_dout: "GPIO1"station_i2s_din: "GPIO6"
# ULN2003 (Curtains)uln2003_pin_a: "GPIO18"uln2003_pin_b: "GPIO19"uln2003_pin_c: "GPIO20"uln2003_pin_d: "GPIO21"
# Humidifiermain_tank_pin: "GPIO0"chamber_low_pin: "GPIO1"relay_humidifier_pin: "GPIO5"relay_fan_pin: "GPIO6"relay_pump_pin: "GPIO7"Шаблоны делают _bp.get("light_adc_pin", "GPIO4") — поэтому не обязательно добавлять все поля. Только те, что отличаются от defaults.
⚠️ Strapping pins и input-only
Strapping: GPIO0, GPIO2, GPIO5, GPIO12, GPIO15. Зарезервированные: GPIO6-11 (SPI flash). Input-only без pullup: GPIO34-39 — НЕ использовать для INPUT_PULLUP датчиков/кнопок!
Strapping: GPIO2, GPIO8, GPIO9. Зарезервированные: GPIO11-17 (SPI flash).
Strapping: GPIO4, GPIO5, GPIO8, GPIO9, GPIO15. Зарезервированные: GPIO24-30 (SPI flash). USB-Serial-JTAG: GPIO12/13.
Strapping: GPIO2, GPIO3, GPIO8, GPIO9, GPIO25. Зарезервированные: GPIO15-21 (SPI flash). USB-Serial-JTAG: GPIO26/27.
Strapping: GPIO0, GPIO2, GPIO15. Зарезервированные: GPIO6-11 (SPI flash).
📋 USB-Serial-JTAG vs UART0
| Чип | logger.hardware_uart |
|---|---|
| ESP32-C3 / C6 / S3 | USB_SERIAL_JTAG |
| ESP32 classic | UART0 (default) |
| ESP32-H2 | USB_SERIAL_JTAG (GPIO26/27) |
| ESP8266 | UART0 |
Шаблоны прошивок сами устанавливают logger_hardware_uart = "USB_SERIAL_JTAG" условно через Jinja if (ota_hw | string) in ("esp32c3", "esp32c6", "esp32s3"). Профилю платы это поле задавать не нужно.
🚀 Как добавить новый профиль
-
Скопируйте подходящий по чипу профиль:
Окно терминала cp firmwares/boards/esp32c6-supermini.yaml firmwares/boards/esp32c6-myboard.yaml -
Измените обязательные поля:
ota_channel:— уникальный идентификатор.board:— корректное значение из списка ESPHome boards.name:(если есть).
-
Скорректируйте пины под свою разводку. Учтите strapping и input-only ограничения для чипа (см. выше).
-
Прогоните render всех firmware:
Окно терминала for f in firmwares/ci-overrides/mihazzzold.espHome_*/*.yaml.j2; dopython scripts/flasher.py -a yaml -f "$f" --local --board-profile esp32c6-myboarddoneВсе должны дать
✅ Проверка esphome config пройдена. -
Обновите
firmwares/boards/README.md— добавьте строку в таблицу профилей и в матрицу. -
Обновите
hardware.yamlкаждой прошивки, для которой плата поддерживается (иначе UI Flet не покажет её в выборе).