Kolor ikony buttonu w przypadku lokalnego załączenia urządzenia

Witam i z góry przepraszam, za najprawdopodobniej powielony temat.
Jestem elektronikiem i hobbystą co chodzi o programowanie. Ok do rzeczy.
A i jestem zielony z HA - mój pierwszy raz:)
Zbudowałem kilka urządzeń opartych o ESP oraz protokół MQTT (nie są kopią z internetu)
Do tej pory całe sterowanie oraz interfejs graficzny mam zbudowane w oparciu o NODE-RED. Wszystko działa fajnie ale są pewne problemy z BLE, więc postanowiłem spróbować czegoś innego i trafiłem na Home Assistant.

Zainstalowałem HA, brokera mqtt, dodałem bistabilny button (w helpers) i tak po wciśnięciu buttonu zmienia się jego kolor a urządzenie się załącza, wcisnę drugi raz - zmienia się kolor a urządzenie się wyłączy. Super ale czuję niedosyt.
W przypadku manualnego włączenia lub wyłączenia urządzenia (przyciskiem na urządzeniu) chciałbym aby zmienił się stan oraz kolor ikony na owym buttonie. I zupełnie nie wiem jak to ugryźć. Dodam, że urządzenie w przypadku danego zachowania publikuje w jakim jest stanie i kto ten stan wywołał (lokalnie/zdalnie)

Jeszcze raz dziękuję za pomoc i prosiłbym aby nie szydzić z mojej niewiedzy. Próbuję rozwiązać, zapewne banalny problem, od kilku dni bezskutecznie.
Pozdrawiam

Zapraszam do lektury na drugim forum, równie bogatym w podstawowe informacje:

Bardzo dziękuję za szybką odpowiedź. Zaraz zabieram się do lektury. Dam znać jak mi poszło. Pozdrawiam

1 polubienie

Kolega @bartik22 ma rozpracowany ten temat. Może pomoże , bo jest obecny czasem również na tym forum.

Hej
ja używam card-mod:

i wtedy sobie warunkuje buttona:

type: button
tap_action:
  action: toggle
entity: switch.gniazdko6
hold_action:
  action: more-info
show_name: false
icon: 'mdi:pine-tree'
show_icon: true
show_state: false
style: |
  ha-card {    
    background: 
      {% if is_state('switch.gniazdko6', 'on') %} 
        Orange
      {% endif %};
  }
1 polubienie

Witam.
Dołożyłem card-mod do HA i popełniłem a w zasadzie skopiowałem skrypt jak powyżej. Niestety efekt mizerny. Ikonka zamiast na zielono podświetla się na zółty (czy też pomarańczowy) - jak ikona encji bazowej.


Na pewno coś robię nie tak. YAML jest dla mnie nowością różniącą się bardzo od C++, C#, czy też C, w których sobie radzę.
Tu trochę mało logiczne.
Np nie rozumiem, dlaczego jak chcę stworzyć encję, to muszę wskazać encję bazową?
Widzę, że czeka mnie ciężka przeprawa.

Stan gniazda, jest odpowiedzią z urządzenia (reakcja na akcję np załączenia)

Efekt mizerny bo nie odczytujesz żadnego stanu, REMOTE_OUT_ON nie jest stanem przełącznika
Tu masz prawidłowy kod

W podanym kodzie podmieniasz tylko encje  switch.gniazdko6

Widzę że masz imput_boolean,
czyli w NR sobie ustaliłeś że zapisujesz sobie stan, tak?
Napisz jakie stany sie pojawiają,
u mnie przy imput_boolean to wyglda tak:

type: entity-button
entity: input_boolean.wlacz_telewizor
tap_action:
  action: none
hold_action:
  action: toggle
show_state: false
show_name: false
style: |
  :host {
  --paper-item-icon-color: 
   {% if is_state('input_number.stan_telewizora', '1.0') %} 
     YellowGreen
   {% else %}
     lightgray
   {% endif %}
   ;
   }

EDIT
źle mówię, masz przełacznik którym wyzwalasz tak? ten imput boolean?
to robisz drugiego pomocnika, np. number jak wyżej, i w NR zapisuje w tym pomocniku aktualny stan jako 1/0 i potem na podstawie tego co ma wpisane zmieniam kolor ikony
Chyba ze masz jeszcze inaczej to musisz dokładnie to przedstawić

Witam.
Całość wygląda tak:
Ma helpera - input_boolean.smartplugswitch - typu przełącznik. Jedyne co robi to zmienia stan “on” lub “off”. Jego stan jest monitorowany przez “state node” w Node–Red. W chwili, gdy zmieni się stan helpera funkcja w “function node” sprawdza czy ustawiono “on” czy “off” i do MQTT publikuje odpowiednio “OUT_ON” lub “OUT_OFF”.
Gniazdo reaguje na rozkaz i się załączy, bądź wyłączy.
Każda zmiana stanu gniazda skutkuje publikowaniem przez nie do MQTT “kto spowodował zmianę stanu”. I tak: dla zdalnego mam odpowiedź “REMOTE_ON” lub “REMOTE_OFF” a dla manualnego (przyciskiem na obudowie) “LOCAL_ON” lub “LOCAL_OFF”;
I cały szkopuł w tym, że jeśli włączę gniazdo lokalnie, to chciałbym aby mój input_boolean.smartplugswitch podświetlił się wtedy.

Myślę, że lepiej było by zrobić encję MQTT Switch. Pozwoliła by na śledzenie stanu bezpośrednio po MQTT w HA, bez pomocnika i pośrednika w postaci NR. Komendy również możesz wysyłać wówczas bezpośrednio do urządzenia po MQTT.

Z tego co piszesz to efekt osiągniesz jak zrobisz tak:
w NR zrób że jak MQTT dostanie local-on to ma sie zmienic input_boolean.samrtplugswitch na on, a jak mqtt dostanie local-off to input dostanie off i masz dokładnie to: “jeśli włączę gniazdo lokalnie, to chciałbym aby mój input_boolean.smartplugswitch podświetlił się wtedy”

Jeżeli tylko chcesz zmienić stan input_boolean to w nodered użyj call service node i domeny input_boolean
on/ off/ toogle

Witam.
No i jest sukces.
Na samym początku robiłem dokładnie tak jak pokazał Pan powyżej. Jednak nie działało, a ja nie raczyłem do debugu zaglądnąć.
Dzisiaj zajrzałem i okazało się, że jest info - “Connection Error”. Wystarczyło poczekać jakieś 2-3s aby usługa state node i service node połączyła się z HA.
Tak więc bardzo dziękuję za cierpliwość i wyrozumiałość.
Problem rozwiązany. Temat do zamknięcia