- group.salon_lampy_boczne - to grupa dwóch smartnych żarówek RGB WiFi - light.sterownik_led_salon_sufit - to taśma LED RGB napędzana smartnym sterownikiem Zigbee
Przy pomocy button-card chcę przełączać barwę światła z jednego źródła na drugie tak, aby w razie potrzeby uzyskiwać efekt jednolitej barwy oświetlenia na wszystkich źródłach:
tap_action: - aktualna barwa żarówek RGB kopiuje się na taśmę LED double_tap_action: - aktualna barwa taśmy LED kopiuje się na żarówki RGB
W Developerze widzę, że stany sensorów przechowujących informacje o aktualnych kolorach (sensor.kolor_lampy_salon_okno i sensor.kolor_tasmy_led_salon_sufit) zawierają poprawne dane.
Lampa ‘w oknie’ oraz lampa ‘na parapecie’ pracują zawsze w parze (group.salon_lampy_boczne) i mają zawsze te same ustawienia, co z resztą widać powyżej.
Niestety, mój kod nie działa… wyświetlając błąd, że "Nie udało się wywołać usługi light/turn_on. Must contain at least one of entity_id, device_id, area_id." Nie rozumiem tego żądania, skoro entity_id jest w kodzie zdefiniowany.
Ślęczę nad tym błędem już od kilku dni i nie mogę sobie z tym poradzić… Przewaliłem dziesiątki forów, oficjalne dokumentacje HA, nigdzie jednak nie znalazłem rozwiązania…
Wtedy: tap_action: nie wywala żadnego błędu ale też nic nie robi (kolory pozostają bez zmian) double_tap_action: wywala błąd: "Nie udało się wywołać usługi light/turn_on. None for dictionary value @ data['rgb_color']"
Bo kod jest teraz prawidłowo sformatowany. Niestety nie potrafię pomóc więcej (rgb_color) bo nie znalazłem w dokumentacji karty aby obsługiwał taki parametr. Choć z drugiej strony dokumentacja call -service podaje …
Tak, ale wtedy parametry podajesz w kodzie a nie w zmiennych.
Spróbuję powalczyć z zamianą nawiasów z (…) na […] w definicji rgb_color.. Może to jest przyczyną…
Teoretycznie skrypt jest OK, ale u mnie to nie chce działać…
Wygląda na to, że problemem jest… konwersja z xy_color (tego standardu używa mój sterownik LED light.sterownik_led_salon_sufit) na rgb_color (tego z kolei używają żarówki group.salon_lampy_boczne).
Ani ten, ani poprawiony poprzedni skrypt, nie wywalają żadnych błędów, czyli format kodu jest ok.
Ale jego uruchomienie nie daje żadnego efektu wizualnego, stąd przypuszczenie, że to problem konwersji a nie syntaktyki kodu…
alias: Twoja nazwa
sequence:
- service: light.turn_on
data_template:
rgb_color: >
{% set xy_color_str = states("light.xxxx") %} # do podmiany
{% set xy_color_list = xy_color_str.split(",") %}
{% set xy_color = [0.0, 0.0] %}
{% if xy_color_list | length == 2 %}
{% set x = xy_color_list[0] | float %}
{% set y = xy_color_list[1] | float %}
{% set xy_color = [x, y] %}
{% endif %}
{% set z = 1.0 - xy_color[0] - xy_color[1] %}
{% set Y = 1.0 %}
{% set X = (Y / xy_color[1]) * xy_color[0] %}
{% set Z = (Y / xy_color[1]) * z %}
{% set r = X * 3.2406 - Y * 1.5372 - Z * 0.4986 %}
{% set g = -X * 0.9689 + Y * 1.8758 + Z * 0.0415 %}
{% set b = X * 0.0557 - Y * 0.2040 + Z * 1.0570 %}
{% set r = 12.92 * r if r <= 0.0031308 else 1.055 * r ** (1.0 / 2.4) - 0.055 %}
{% set g = 12.92 * g if g <= 0.0031308 else 1.055 * g ** (1.0 / 2.4) - 0.055 %}
{% set b = 12.92 * b if b <= 0.0031308 else 1.055 * b ** (1.0 / 2.4) - 0.055 %}
[{{ (r * 255) | round(0) }}, {{ (g * 255) | round(0) }}, {{ (b * 255) | round(0) }}]
target:
entity_id: light.sterownik_led_salon_sufit
mode: single