Długa taśma WS2812 świecąca pełną bielą potrafi pobrać dużo więcej prądu, niż wytrzyma dobrany do niej zasilacz. ESPHome nauczy się ten pobór szacować, a jeśli zechcesz, także go ograniczać. Zgłoszenie zmian otworzył w kwietniu użytkownik GitHuba mvoss96. Napisał w nim, że chciał utrzymać swoje taśmy w granicach możliwości zasilacza, tak jak robi to WLED. J. Nick Koston (bdraco) scalił zmianę do gałęzi rozwojowej 18 października o 20:08 czasu polskiego, a minutę później trafiła tam dokumentacja. Nowość jest przewidziana na ESPHome 2026.11.
Ustawienie na taśmie, bez zmian w sterownikach
Nowa sekcja power_estimation: działa na każdej platformie adresowalnych świateł, między innymi esp32_rmt_led_strip, neopixelbus i fastled. Sterowników nie trzeba było przerabiać, bo obliczenia odbywają się we wspólnym kodzie świateł, po kroku efektu, a przed wysłaniem klatki do diod.
light:
- platform: esp32_rmt_led_strip
id: my_leds
pin: GPIO16
num_leds: 60
chipset: WS2812
rgb_order: GRB
name: "My LED Strip"
power_estimation:
ma_per_led_red: 16.0
ma_per_led_green: 11.0
ma_per_led_blue: 15.0
idle_ma_per_led: 0.5
max_current_ma: 1000.0
Przed każdą klatką, także w trakcie efektów i przejść, ESPHome sumuje surowe wartości kanałów wszystkich diod i przelicza je na miliampery według podanych współczynników. Jeśli ich nie podasz, każdy kanał przy pełnej jasności liczy się jako 20 mA, a każda dioda dokłada 1 mA poboru spoczynkowego. Po ustawieniu max_current_ma cała taśma jest równomiernie przyciemniana, aż szacunek zmieści się w limicie. Home Assistant nadal pokazuje jasność i kolor, które wybrałeś, przygasa tylko światło z diod. Bez max_current_ma ESPHome wyłącznie szacuje pobór i niczego nie ogranicza.
Pobór spoczynkowy jest najpierw odejmowany od limitu, bo przyciemnianie go nie zmniejszy. Jeśli limit nie wystarcza nawet na niego, ESPHome ostrzeże o tym przy starcie i utrzyma diody na najniższym poziomie jasności.
Odczyt szacunku
Wartość można odczytać w lambdzie jako id(my_leds).get_estimated_current_ma(). Dokumentacja radzi robić to w czymś, co odpytuje okresowo, na przykład w czujniku szablonowym, a nie w każdym przebiegu pętli. Przy włączonym limicie odczyt trzyma się limitu albo jest blisko niego, bo pokazuje klatkę, która naprawdę trafiła do diod, a nie tę, której zażądał efekt.
Jak bardzo jest to dokładne
Limit jest dotrzymywany z dokładnością do jednego poziomu sprzętowego na każdy świecący kanał. Według dokumentacji przy 300 diodach RGB i 20 mA na kanał daje to około 70 mA. Szacunek pozostaje jednak rachunkiem, a nie pomiarem, więc o jego trafności decydują współczynniki. Dokumentacja podaje orientacyjne wartości dla popularnych układów: 16, 11 i 15 mA (czerwony, zielony, niebieski) dla WS2812B, po 12 mA na kanał dla SK6812 oraz 16, 14 i 12 mA dla APA106. Lepiej jednak zmierzyć własną taśmę. Wepnij multimetr w przewód zasilający i odczytaj pobór przy wszystkich diodach wyłączonych, a potem przy pełnej czerwieni, zieleni i niebieskim. Od wyników dla kolorów odejmij pobór spoczynkowy, a każdą z wartości podziel przez liczbę diod.
Przed konfiguracją warto znać jeszcze dwa szczegóły. Sekcję wpisuje się przy taśmie, a nie przy jej fragmencie (partition), a limit taśmy obejmuje wszystkie fragmenty na niej wydzielone. FastLED przy wysyłaniu danych drugi raz przelicza jasność, więc z tym sterownikiem rzeczywisty pobór jest mniejszy od szacunku.