ESP Home - wgrywanie softu na ESP32

  1. j/w logi mogą być ilustrowane obrazkiem pod warunkiem, że będzie ich pełna wersja wklejona jako kod, może być z wyciętymi fragmentami gdzie nie ma istotnych informacji (jeśli to się skompiluje to wrzucę przykład niżej)
  2. Zastępowanie danych, które nie są danymi wrażliwymi (bo jak zgaduję to automatycznie wygenerowane przez Builder losowe ciągi) zakichanymi iksami utrudnia nam próby odtworzenia problemu
INFO ESPHome 2026.3.2
INFO Reading configuration /config/esphome/esp32-test.yaml...
INFO Generating C++ source...
INFO Setting CONFIG_LWIP_MAX_SOCKETS to 12 (TCP=6 [api=3, captive_portal=3], UDP=3 [captive_portal=1, mdns=2], TCP_LISTEN=3 [api=1, ota=1, web_server_base=1])
INFO Compiling app... Build path: /data/build/esp32-test
Processing esp32-test (board: esp32dev; framework: espidf; platform: https://github.com/pioarduino/platform-espressif32/releases/download/55.03.37/platform-espressif32.zip)
--------------------------------------------------------------------------------
Created pioarduino Python virtual environment using uv: /root/.platformio/penv
Installed esptool from tl-install path: /data/cache/platformio/packages/tool-esptoolpy
Tool Manager: Installing https://github.com/pioarduino/esp-idf/releases/download/v5.5.3.1/esp-idf-v5.5.3.1.tar.xz
INFO Installing https://github.com/pioarduino/esp-idf/releases/download/v5.5.3.1/esp-idf-v5.5.3.1.tar.xz
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%          
Tool Manager: framework-espidf@3.50503.0 has been installed!
INFO framework-espidf@3.50503.0 has been installed!
Library Manager: Installing esphome/noise-c @ 0.1.11
INFO Installing esphome/noise-c @ 0.1.11
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
Library Manager: noise-c@0.1.11 has been installed!
INFO noise-c@0.1.11 has been installed!
Library Manager: Resolving dependencies...
INFO Resolving dependencies...
Library Manager: Installing esphome/libsodium @ 1.10021.0
INFO Installing esphome/libsodium @ 1.10021.0
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
Library Manager: libsodium@1.10021.0 has been installed!
INFO libsodium@1.10021.0 has been installed!
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
 - contrib-piohome @ 3.4.4 
 - framework-espidf @ 3.50503.0 (5.5.3) 
 - tool-cmake @ 4.0.3 
 - tool-esp-rom-elfs @ 2024.10.11 
 - tool-esptoolpy @ 5.1.2 
 - tool-ninja @ 1.13.1 
 - tool-scons @ 4.40801.0 (4.8.1) 
 - toolchain-xtensa-esp-elf @ 14.2.0+20251107
Creating a new virtual environment for IDF Python dependencies using uv
Using Python 3.12.10 environment at: /root/.platformio/penv/.espidf-5.5.3
Installing ESP-IDF's Python dependencies with uv
Using Python 3.12.10 environment at: /root/.platformio/penv/.espidf-5.5.3
Resolved 27 packages in 1.30s
Downloading pydantic-core (2.0MiB)
Downloading cryptography (4.0MiB)
 Downloaded pydantic-core
 Downloaded cryptography
Prepared 27 packages in 1.65s
Installed 27 packages in 59ms
 + annotated-types==0.7.0
 + certifi==2026.2.25
 + cffi==2.0.0
 + charset-normalizer==3.4.7
 + click==8.3.1
 + colorama==0.4.6
 + cryptography==44.0.3
 + esp-idf-kconfig==2.5.3
 + idf-component-manager==2.4.9
 + idna==3.11
 + jsonref==1.1.0
 + psutil==7.2.2
 + pycparser==3.0
 + pydantic==2.12.5
 + pydantic-core==2.41.5
 + pydantic-settings==2.13.1
 + pyparsing==3.3.2
 + python-dotenv==1.2.2
 + requests==2.33.1
 + requests-file==3.0.1
 + requests-toolbelt==1.0.0
 + ruamel-yaml==0.19.1
 + tqdm==4.67.3
 + truststore==0.10.4
 + typing-extensions==4.15.0
 + typing-inspection==0.4.2
 + urllib3==1.26.20
Reading CMake configuration...
Generating assembly for certificate bundle...
Dependency Graph
|-- noise-c @ 0.1.11
Compiling .pioenvs/esp32-test/src/esphome/components/api/api_buffer.cpp.o
Compiling .pioenvs/esp32-test/src/esphome/components/api/api_connection.cpp.o
…
tu wywaliłem wszystko, co nie było istotne, tj. nie było związane z twoim końcowym błędem (u mnie nie wystąpił)
nie było żadnych ostrzeżeń ani innych błędów z kategorii tych nie przerywających kompilacji (więc to trzeba przeczytać zanim się ewentualnie wywali, lepiej jednak zamieścić wszystko jeśli się mieści w poście lub od biedy załączyć jako plik tekstowy)

edit

UWAGA, jednak chciałem szybko i wywaliłem za dużo, a tymczasem ważne mogły być wszystkie linijki zawierające esp_hw_support
więc choćby to
Compiling .pioenvs/esp32-test/bootloader/esp_hw_support/cpu.c.o
Archiving .pioenvs/esp32-test/bootloader/esp-idf/esp_common/libesp_common.a
Indexing .pioenvs/esp32-test/bootloader/esp-idf/esp_common/libesp_common.a
Compiling .pioenvs/esp32-test/bootloader/esp_hw_support/port/esp32/esp_cpu_intr.c.o
Archiving .pioenvs/esp32-test/bootloader/esp-idf/efuse/libefuse.a
Indexing .pioenvs/esp32-test/bootloader/esp-idf/efuse/libefuse.a
Compiling .pioenvs/esp32-test/bootloader/esp_hw_support/esp_memory_utils.c.o
Compiling .pioenvs/esp32-test/bootloader/esp_hw_support/port/esp32/cpu_region_protect.c.o
Compiling .pioenvs/esp32-test/bootloader/esp_hw_support/port/esp32/rtc_clk.c.o
Compiling .pioenvs/esp32-test/bootloader/esp_hw_support/port/esp32/rtc_clk_init.c.o
Compiling .pioenvs/esp32-test/bootloader/esp_hw_support/port/esp32/rtc_init.c.o
Compiling .pioenvs/esp32-test/bootloader/esp_hw_support/port/esp32/rtc_sleep.c.o
Compiling .pioenvs/esp32-test/bootloader/esp_hw_support/port/esp32/rtc_time.c.o
Compiling .pioenvs/esp32-test/bootloader/esp_hw_support/port/esp32/chip_info.c.o
…
Archiving .pioenvs/esp32-test/bootloader/esp-idf/spi_flash/libspi_flash.a
Indexing .pioenvs/esp32-test/bootloader/esp-idf/spi_flash/libspi_flash.a
Generating partitions .pioenvs/esp32-test/partitions.bin
Generating an empty partition .pioenvs/esp32-test/ota_data_initial.bin
Archiving .pioenvs/esp32-test/bootloader/esp-idf/micro-ecc/libmicro-ecc.a
Indexing .pioenvs/esp32-test/bootloader/esp-idf/micro-ecc/libmicro-ecc.a
Linking .pioenvs/esp32-test/bootloader.elf
Building .pioenvs/esp32-test/bootloader.bin
Creating ESP32 image...
Successfully created ESP32 image.
Linking .pioenvs/esp32-test/firmware.elf
                            Memory Type Usage Summary                             
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Memory Type/Section ┃ Used [bytes] ┃ Used [%] ┃ Remain [bytes] ┃ Total [bytes] ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ Flash Code          │       652220 │          │                │               │
│    .text            │       652220 │          │                │               │
│ Flash Data          │       148064 │          │                │               │
│    .rodata          │       147808 │          │                │               │
│    .appdesc         │          256 │          │                │               │
│ IRAM                │        80155 │    61.15 │          50917 │        131072 │
│    .text            │        79127 │    60.37 │                │               │
│    .vectors         │         1028 │     0.78 │                │               │
│ DRAM                │        34988 │    19.36 │         145748 │        180736 │
│    .bss             │        18808 │    10.41 │                │               │
│    .data            │        16096 │     8.91 │                │               │
│    .noinit          │           84 │     0.05 │                │               │
└─────────────────────┴──────────────┴──────────┴────────────────┴───────────────┘
Total image size: 896535 bytes (.bin may be padded larger)
Note: The reported total sizes may be smaller than those in the technical reference manual due to reserved memory and application configuration. The total flash size available for the application is not included by default, as it cannot be reliably determined due to the presence of other data like the bootloader, partition table, and application partition size.
RAM:   [=         ]  10.7% (used 34988 bytes from 327680 bytes)
Flash: [=====     ]  48.8% (used 896279 bytes from 1835008 bytes)
Building .pioenvs/esp32-test/firmware.bin
Creating ESP32 image...
Successfully created ESP32 image.
merge_factory_bin([".pioenvs/esp32-test/firmware.bin"], [".pioenvs/esp32-test/firmware.elf"])
Info: bootloader.bin not found - skipping
Info: partition-table.bin not found - skipping
Info: ota_data_initial.bin not found - skipping
Info: esp32-test.bin not found - skipping
Using FLASH_EXTRA_IMAGES from PlatformIO environment
Merging binaries into /data/build/esp32-test/.pioenvs/esp32-test/firmware.factory.bin
Merging binaries with esptool
SHA digest in image updated.
Wrote 0xeaeb0 bytes to file '/data/build/esp32-test/.pioenvs/esp32-test/firmware.factory.bin', ready to flash to offset 0x0.
Successfully created /data/build/esp32-test/.pioenvs/esp32-test/firmware.factory.bin
esp32_copy_ota_bin([".pioenvs/esp32-test/firmware.bin"], [".pioenvs/esp32-test/firmware.elf"])
Copied firmware to /data/build/esp32-test/.pioenvs/esp32-test/firmware.ota.bin
======================== [SUCCESS] Took 540.87 seconds ========================
INFO Build Info: config_hash=0x26c1dbaf build_time_str=2026-04-03 20:52:22 +0200
INFO Successfully compiled program.

a tu mój YAML (taki uzupełniony o to co niepotrzebnie wywaliłeś)

esphome:
  name: esp32-test
  friendly_name: ESP32-test

esp32:
  board: esp32dev
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "dggf59EjT6m9hnVW2LQrAtS2CSlczir2k6/PEHQe0Y8="

ota:
  - platform: esphome
    password: "68b1056ca38e470e578cb3e986a0f848"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-Test Fallback Hotspot"
    password: "TgMSLQ8QpMgQ"

captive_portal:

 # Magistrala I2C (SDA na IO16, SCL na IO17)
i2c:
  sda: 16
  scl: 17
  scan: true

# Magistrala 1-Wire (na IO32)
one_wire:
  - platform: gpio
    pin: 32

# Konfiguracja UART (TX na IO1, RX na IO3)
uart:
  tx_pin: 1
  rx_pin: 3
  baud_rate: 9600

switch:
  - platform: gpio
    pin: 22
    name: "Przekaźnik 1"
    id: relay_1

  - platform: gpio
    pin: 21
    name: "Przekaźnik 2"
    id: relay_2

  - platform: gpio
    pin: 19
    name: "Przekaźnik 3"
    id: relay_3

  - platform: gpio
    pin: 18
    name: "Przekaźnik 4"
    id: relay_4

binary_sensor:
  - platform: gpio
    pin: {number: 4, mode: INPUT_PULLUP, inverted: true}
    name: "Przycisk 1"
    on_press:
      then:
        - switch.toggle: relay_1

  - platform: gpio
    pin: {number: 13, mode: INPUT_PULLUP, inverted: true}
    name: "Przycisk 2"
    on_press:
      then:
        - switch.toggle: relay_2

  - platform: gpio
    pin: {number: 14, mode: INPUT_PULLUP, inverted: true}
    name: "Przycisk 3"
    on_press:
      then:
        - switch.toggle: relay_3

  - platform: gpio
    pin: {number: 23, mode: INPUT_PULLUP, inverted: true} 
    name: "Przycisk 4"
    on_press:
      then:
        - switch.toggle: relay_4

# --- Wejścia: Sensory (Sensors 1-4) ---
  - platform: gpio
    pin: {number: 33, mode: INPUT_PULLUP}
    name: "Sensor 1 (IO33)"

  - platform: gpio
    pin: {number: 25, mode: INPUT_PULLUP} 
    name: "Sensor 2 (IO25)"

  - platform: gpio
    pin: {number: 26, mode: INPUT_PULLUP}
    name: "Sensor 3 (IO26)"

  - platform: gpio
    pin: {number: 27, mode: INPUT_PULLUP}
    name: "Sensor 4 (IO27)"
  1. Mój mini komentarz - nie wydaje mi się, aby ten YAML był niepoprawny (linter ESPHome sprawdza też wybrane kwestie sprzętowe i nie wygenerował ostrzeżeń) o ile tylko w miejscach, które zamieniłeś na iksy nie wstawiłeś totalnych bzdur (a tu masz losowe ciągi które zadziałają).

  2. Natomiast UART, który sobie zdefiniowałeś, a pozostaje niewykorzystany, pewnie taki zostanie na zawsze (bo używasz pinów UART0, które są na stałe zlutowane z mostkiem USB na tej płytce więc są zasadniczo bezużyteczne - srogo odradzam używanie już użytego sprzętu do innych celów).

  3. Tak samo masz niewykorzystane magistrale 1-wire i I2C (ale tu to mocno nie rzutuje, bo te piny wydają się być wolne na większości prostych płytek prototypowych), ale jeśli nie zamierzasz używać tych magistral, to chociaż zakomentuj te bloki przynajmniej do czasu gdy będziesz chciał dodać jakiś sprzęt z nich korzystający (kompilacja będzie nieznacznie szybsza i mniej zasobożerna, a uzyskany wsad binarny będzie nieco “lżejszy” pod względem każdego z wykorzystywanych zasobów - flasha RAMu i procka).


  1. i do clou

Natomiast pierwsze co bym zrobił to odświeżył środowisko, tj. z menu kafelka
CLEAN BUILD FILES
a jeśli to mało by komilacja się udała, to także
CLEAN ALL FILES
(i uzyskasz sytuację gdy całe środowisko będzie się musiało zbudować od nowa, więc się dowiemy czy nie masz z tym problemu)

oraz ewentualnie pozbył się innych zbędnych kafelków jeśli wcześniej kombinowałeś zanadto (warto zrobić chociaż CLEAN BUILD FILES w menu zbędnego kafelka przed każdym usunięciem takiego zbędnego kafelka)

1 polubienie