Witam.
Na biurku mam lampkę składająca się z pierścienia diod WS2812b jako światło RGB i diody Power led - jako źródło światła białego.
Do tej pory miałem napisany program w Arduino i to działało.
Postanowiłem przenieść to na ESPHome.
“Postawiłem” lampę RGBW widzianą w H.A. a wewnątrz ESP dwie wewnętrzne lampy jedna RGB dla pierścienia, drugą monochromatyczną dla światła białego.
Podczas zmiany ustawień tej widocznej w H.A. pobieram dane RGBW i przepisuję to na pierścień i białą Led.
Ale mam problem z pierścieniem RGB. Zamiast ustawiać pobrany kolor na całym pierścieniu, świeci się sekwencja kolorów na poszczególnych ledach:
Led 1 zielony.
Led 2 czerwony,
Led 3 niebieski,
Led 4 zgaszony,
Led 5 zielony,
itd… Na całym pierścieniu.
Reguluje się tylko poziom jasności i włącz/wyłącz…
Konfiguracja świateł wygląda tak:
- Co tu robię złe, czego nie rozumiem?
light:
- platform: neopixelbus
name: "Lampka Nocna"
id: lampka
type: GRBW
variant: sk6812
pin: 5
num_leds: 16
restore_mode: RESTORE_AND_OFF
default_transition_length: 0s
on_turn_on:
then:
- light.turn_on: swiatlo_rgb
- light.turn_on: swiatlo_biale
on_turn_off:
then:
- light.turn_off: swiatlo_rgb
- light.turn_off: swiatlo_biale
on_state:
then:
- light.control:
id: swiatlo_rgb
red: !lambda return id(lampka)->current_values.get_red();
green: !lambda return id(lampka)->current_values.get_green();
blue: !lambda return id(lampka)->current_values.get_blue();
brightness: !lambda return id(lampka)->current_values.get_brightness();
- light.control:
id: swiatlo_biale
brightness: !lambda |-
int br = id(lampka)->current_values.get_brightness() * 100;
int wh = id(lampka)->current_values.get_white() * 100;
int cur = map(wh, 0, 100, 0, br );
return (float)cur / 100;
- platform: monochromatic
id: swiatlo_biale
output: output_component1
internal: True
- platform: neopixelbus
id: swiatlo_rgb
type: GRB
variant: sk6812
pin: 3
num_leds: 16
internal: True