Opiekunowie ESPHome opisali 14 października 2026 zmianę niezgodną wstecz, która wejdzie w wersji 2026.10.0. Metody protokołów w komponencie remote_base przestają być wirtualne, listy odbiorców i modułów zrzutu w odbiorniku mają stały rozmiar wyliczany podczas generowania kodu, a plik .cpp danego protokołu trafia do kompilacji tylko wtedy, gdy konfiguracja naprawdę z niego korzysta. Zwykłe konfiguracje YAML pilotów działają bez zmian. Poprawek wymagają zewnętrzne komponenty i niektóre bardziej zaawansowane wyrażenia lambda.

Dlaczego bez okresu przejściowego

Do tej pory każdy protokół podczerwieni i radia w remote_base obciążał każdą kompilację z odbiornikiem albo nadajnikiem, nawet jeśli konfiguracja z niego nie korzystała. Wirtualne metody encode(), decode() i dump() zostawiały w obrazie tablice metod wirtualnych i kod funkcji, a odbiornik przy starcie powiększał na stercie listy, których długość generator kodu znał od początku. Według raportu pamięci z testów automatycznych przy tej zmianie testowa kompilacja ESP8266 z odbiornikiem i platformami ir_rf_proxy zajmuje około 14,6 KB mniej pamięci flash, a kompilacja ESP32 w środowisku IDF około 11,9 KB mniej. Tablica protokołu rc_switch przenosi się przy tym z pamięci RAM do flash. W drzewie jest 35 protokołów i w każdym wydaniu przybywają nowe. Słowo override przy metodzie, która nie jest już wirtualna, kończy się błędem kompilacji, więc łagodne wycofywanie starego mechanizmu nie wchodziło w grę.

Kto musi poprawić kod

Sprawdź swój zewnętrzny komponent, jeśli dziedziczy po RemoteProtocol i oznacza metody słowem override, rejestruje odbiorców albo moduły zrzutu z poziomu C++ w setup(), używa z C++ wbudowanej klasy protokołu, choć w konfiguracji nie ma dla niej zrzutu, wyzwalacza ani akcji nadawania, albo wywołuje dawne osobne funkcje call_listeners_() i call_dumpers_(). Migracja jest prosta: usuń override, rejestruj odbiorców z Pythona przez remote_base.attach_receiver lub register_listener, a jeśli potrzebujesz wbudowanego protokołu z C++, wywołaj remote_base.request_protocol("nec") z nazwą pliku źródłowego bez przyrostka. Zamiast dwóch starych funkcji użyj call_listeners_dumpers_(). Dla komponentów, które muszą się dalej kompilować na 2026.9, dokumentacja pokazuje warunki zależne od wersji.

Użytkownikom samego YAML zmiana nie grozi, chyba że wyrażenie lambda nadaje konkretny protokół, na przykład id(tx).transmit<remote_base::NECProtocol>(data), a w konfiguracji nie ma innego odwołania do tego protokołu. Wtedy dodaj wpis dump, wyzwalacz on_nec albo akcję transmit_nec, żeby plik źródłowy został w kompilacji. Czwarta beta wersji 2026.10.0 wyszła 13 października, a stabilne wydanie wciąż jest zaplanowane na 21 października. Jeśli utrzymujesz własny komponent podczerwieni, skompiluj go na becie 2026.10 jeszcze przed premierą.