Button-card - call-service - problematyczna zamiana barw świateł

Mam dwa źródła światła RGB:

- 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 tym celu napisałem kod:

...
tap_action:
  action: call-service
  service: light.turn_on
  entity_id: group.salon_lampy_boczne
  data:
    rgb_color: |
      [[[
        return states["sensor.kolor_tasmy_led_salon_sufit"].state
      ]]]
  confirmation:
    text: Barwa oświetlenia LED ==► Kolor światła lamp bocznych?
# ---------------------------------------------------------
double_tap_action:
  action: call-service
  service: light.turn_on
  entity_id: light.sterownik_led_salon_sufit
  data:
    rgb_color: |
      [[[
        return states["sensor.kolor_lampy_salon_okno"].state
      ]]]
  confirmation:
    text: Barwa światła lamp bocznych ==► Kolor oświetlenia LED?
...

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…

Proszę, pomóżcie mi…

A tak ?

tap_action:
  action: call-service
  service: light.turn_on
  data:
    entity_id: group.salon_lampy_boczne
  ...........

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']"

Mam automatyzacje do synchronizowania kolorów RGB

alias: "Synchronizacja Led z TV "
description: ""
trigger:
  - platform: state
    entity_id:
      - light.ledy
action:
  - service: light.turn_on
    data_template:
      entity_id: light.lamp
      rgb_color: "{{ state_attr('light.ledy', 'rgb_color') }}"

Kiedy zmiennie kolor w “light.ledy” to automatycznie zmieni się w “light.lamp”
:thinking:
Może i u ciebie zadziała na takiej zasadzie

tap_action:
  action: call-service
  service: light.turn_on
  target:
    entity_id: group.salon_lampy_boczne
  data:
    rgb_color: "{{ state_attr('sensor.kolor_tasmy_led_salon_sufit', 'rgb_color') }}"
  confirmation:
    text: Barwa oświetlenia LED ==► Kolor światła lamp bocznych?

double_tap_action:
  action: call-service
  service: light.turn_on
  target:
    entity_id: light.sterownik_led_salon_sufit
  data:
    rgb_color: "{{ state_attr('sensor.kolor_lampy_salon_okno', 'rgb_color') }}"
  confirmation:
    text: Barwa światła lamp bocznych ==► Kolor oświetlenia LED?
2 polubienia

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 …

service: light.turn_on
entity_id: group.living_room
data:
  brightness: 120
  rgb_color: [255, 0, 0]

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ą…

Sprawdź czy to nie jest problem użycia usługi light.turn_on do entity_id: group.salon_lampy_boczne
grupa świateł pomocnik w HA wygląda tak:

Cześć,
Spróbuj:

tap_action:
  action: call-service
  service: light.turn_on
  data_template:
    rgb_color:
      - '{{ states("sensor.kolor_lampy_salon_okno")[0] }}'
      - '{{ states("sensor.kolor_lampy_salon_okno")[1] }}'
      - '{{ states("sensor.kolor_lampy_salon_okno")[2] }}'
  target:
    entity_id: light.sterownik_led_salon_sufit

Przeprowadziłem mnóstwo prób wg Waszych sugestii. Niestety, żadna z nich nie zadziałała, pomimo braku jakichkolwiek komunikatów o błędzie.

Utwórz nowy skrypt:

alias: *Twoja nazwa*
sequence:
  - service: light.turn_on
    data_template:
      rgb_color:
        - '{{ states("sensor.kolor_lampy_salon_okno")[0] }}'
        - '{{ states("sensor.kolor_lampy_salon_okno")[1] }}'
        - '{{ states("sensor.kolor_lampy_salon_okno")[2] }}'
    target:
      entity_id: light.sterownik_led_salon_sufit
mode: single

Z poziomu Button card wywołaj skrypt:

type: button
tap_action:
  action: call-service
  service: script.turn_on
  data:
    entity_id: script.***

W ten sposób musi zadziałać - sprawdzone w Narzędzia deweloperskieUsługi:

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…

:thinking:
Niesprawdzone, konwersja z xy_color na rgb_color

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