Перейти к содержимому

Профили плат

📦 Доступные профили

5 board profiles
ФайлЧипFrameworkWi-FiZigbee/Thread
esp32-supermini.yamlESP32-WROOM-32arduino
esp32c3-supermini.yamlESP32-C3arduino
esp32c6-supermini.yamlESP32-C6esp-idf✅ Wi-Fi 6
esp32h2-supermini.yamlESP32-H2esp-idf❌ нет
esp8266-nodemcu.yamlESP8266arduino

🧩 Матрица «прошивка × плата»

ПрошивкаESP32C3C6H2ESP8266
📡 Radar + Light🐝🚧
💧 Humidifier🐝
🪟 Smart Curtains🐝
🎙️ SmartStation🚧
⚡ Relay 2ch🐝

✅ работает · 🐝 Zigbee-каркас · 🚧 ограниченно · ❌ не поддерживается

📐 Формат файла

# Обязательные
ota_channel: esp32c6 # суффикс OTA-канала
board: esp32-c6-devkitc-1 # значение для esphome.board
chip_family: esp32 # esp32 | esp32c3 | esp32c6 | esp32h2 | esp8266
framework_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"]
# ADC
light_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"
# Humidifier
main_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 датчиков/кнопок!

📋 USB-Serial-JTAG vs UART0

Чипlogger.hardware_uart
ESP32-C3 / C6 / S3USB_SERIAL_JTAG
ESP32 classicUART0 (default)
ESP32-H2USB_SERIAL_JTAG (GPIO26/27)
ESP8266UART0

Шаблоны прошивок сами устанавливают logger_hardware_uart = "USB_SERIAL_JTAG" условно через Jinja if (ota_hw | string) in ("esp32c3", "esp32c6", "esp32s3"). Профилю платы это поле задавать не нужно.

🚀 Как добавить новый профиль

  1. Скопируйте подходящий по чипу профиль:

    Окно терминала
    cp firmwares/boards/esp32c6-supermini.yaml firmwares/boards/esp32c6-myboard.yaml
  2. Измените обязательные поля:

    • ota_channel: — уникальный идентификатор.
    • board: — корректное значение из списка ESPHome boards.
    • name: (если есть).
  3. Скорректируйте пины под свою разводку. Учтите strapping и input-only ограничения для чипа (см. выше).

  4. Прогоните render всех firmware:

    Окно терминала
    for f in firmwares/ci-overrides/mihazzzold.espHome_*/*.yaml.j2; do
    python scripts/flasher.py -a yaml -f "$f" --local --board-profile esp32c6-myboard
    done

    Все должны дать ✅ Проверка esphome config пройдена.

  5. Обновите firmwares/boards/README.md — добавьте строку в таблицу профилей и в матрицу.

  6. Обновите hardware.yaml каждой прошивки, для которой плата поддерживается (иначе UI Flet не покажет её в выборе).

📚 Дальше