Zaadoptowałem fragment Twojego kodu na kartę button-card
, niestety również bez sukcesu. Wciąż wywala ten sam błąd… Wnioskuję z tego, że moja pierwotna składnia jest OK co do zasady, ale z jakiegoś powodu sama karta nie przetwarza jej poprawnie… lub po prostu jej nie rozumie.
Ale przyszedł mi do głowy pewien workaround w postaci zdefiniowania templatki w następujący sposób:
- name: Dostępność Philips
state: "{{ states('media_player.philips_tam8905') is defined }}"
W kodzie karty button-card, zamiast sprawdzać stan media_player.philips_tam8905
(kóra w pewnych sytuacjach może w ogóle nie istnieć), będę chciał sprawdzać stan sensora sensor.dostepnosc_philips
, który, dzięki templatce, powinien ZAWSZE istnieć i przyjmować jedną z dwóch wartości logicznych: true
lub false
.
Nie wiem jeszcze tylko, czy ten pomysł się sprawdzi…
…Z ostatniej chwili: TADAAAM! Mój pomysł zadziałał! Karta poprawnie reaguje na dostępność media_player
’a i wyświetla jego ikonę dokładnie w kolorach, jakie zadałem i w warunkach, jakie określiłem w swoim pierwotnym kodzie. Ostatecznie wygląda on tak:
icon:
- color: |
[[[
if (states["sensor.dostepnosc_philips"].state == 'True')
{
if (states["media_player.philips_tam8905"].state == 'playing') return 'lime'
else return 'dimgray'
}
else return 'var(--primary-background-color)'
]]]
- animation: |
[[[
if (states["sensor.dostepnosc_philips"].state == 'True')
{
if (states["media_player.philips_tam8905"].state == 'playing') return 'rotating 2.5s linear infinite'
else return 'null'
}
else return 'null'
]]]
Gdy player jest dostępny => jeśli odtwarza - kolor ikony ‘lime’ z obracającą się ikoną, lub jeśli nie odtwarza - kolor ‘dimgray’ z ikoną nieruchomą, w zależności od funkcji realizowanej w danej chwili przez media_player’a;
Gdy player jest niedostępny => ikona staje się niewidoczna.
Pomysł do wykorzystania!