28 października 2026 o 1:48 czasu polskiego do gałęzi rozwojowej ESPHome trafiła zmiana, dzięki której polecenie esphome upload wysyła gotowy obraz oprogramowania na urządzenie bez pliku konfiguracyjnego YAML. Autorem jest Nate Clark, a zmianę sprawdził J. Nick Koston (bdraco). Zmiana jest przeznaczona dla właścicieli gotowych produktów z ESPHome, których konfiguracja należy do producenta. Z wiersza poleceń dotąd trudno było takie urządzenia aktualizować.

Jaki problem rozwiązuje

Wiele urządzeń z ESPHome trafia do sprzedaży jako gotowe produkty. Producent pisze i utrzymuje konfigurację, a przy każdym wydaniu publikuje skompilowany obraz. Klient nigdy nie miał pliku YAML. Do tej pory polecenia esphome upload nie dało się bez niego uruchomić, nawet przy podanych --file i --device. Obejściem była zaślepka konfiguracji, potrzebna tylko do przejścia walidacji. Musiała pasować do rodziny układu, zawierać komponent sieciowy i tak dalej. Autor opisuje to jako coś „trudnego do wytłumaczenia klientom i łatwego do zepsucia”.

Jak to działa

Argument z konfiguracją jest teraz opcjonalny. Bez niego wymagane są --file i co najmniej jedno --device, a obraz od razu trafia do mechanizmu aktualizacji przez sieć (OTA). Nic nie jest odczytywane, sprawdzane ani kompilowane. Przykłady ze zgłoszenia:

esphome upload --file firmware.bin --device 192.168.1.50
ESPHOME_OTA_PASSWORD=secret esphome upload --file firmware.bin --device 192.168.1.50
ESPHOME_OTA_KEY=<base64 key> esphome upload --file firmware.bin --device 192.168.1.50

Port OTA jest odczytywany z nagłówka obrazu, który wskazuje platformę docelową. Rozpoznawane są obrazy ESP32 i ESP8266, pliki UF2 dla BK72xx, RTL87xx i LN882x oraz obrazy RP2040 i RP2350. Autor pisze, że sprawdził rozpoznawanie na 179 własnych kompilacjach i na oficjalnym przykładzie migania diodą dla RP2040/RP2350. Jeśli z nagłówka nie wynika platforma, na przykład w oryginalnym obrazie fabrycznym ESP32, który zaczyna się od wypełnienia, wysyłka jest odrzucana i trzeba podać --ota-port. Port nie jest zgadywany.

Doszły nowe opcje --ota-port i --ota-password. Hasło można też podać w zmiennej środowiskowej ESPHOME_OTA_PASSWORD. Po odczytaniu jest ona usuwana ze środowiska, więc hasło nie zostaje w historii powłoki ani na liście procesów. Klucz szyfrowania nadal pochodzi z ESPHOME_OTA_KEY albo z --prompt-ota-key i jest sprawdzany przed połączeniem, więc błędny klucz nigdy nie kończy się wysyłką bez szyfrowania. Brakujący albo nieczytelny plik powoduje błąd jeszcze przed połączeniem z urządzeniem.

Ograniczenia

Ta ścieżka tylko wysyła istniejący obraz przez sieć. Wgrywanie przez port szeregowy, wysyłka przez MQTT, tryb BOOTSEL w RP2040 i aktualizacje przez platformę OTA web_server nadal wymagają konfiguracji i kończą się czytelnym komunikatem o błędzie. Przy podanej konfiguracji nowe opcje portu i hasła są odrzucane, a nie po cichu pomijane, bo obowiązują ustawienia z konfiguracji. Wysyłka z konfiguracją działa dokładnie tak jak wcześniej.

Zmiana jest w gałęzi dev i ma etykietę oczekiwania na akceptację dokumentacji. Wydania nie wskazano, ale zmiany scalane teraz zwykle trafiają do kolejnej miesięcznej wersji, 2026.11.