Niedawno opublikowałem artykuł o tym, jak to kwietniowa aktualizacja Home Assistant i/lub ESPHome (niepotrzebne skreślić) popsuła odtwarzacz mediów uruchomiony na ESP32 z komponentem I2S w Arduino, w kontekście komunikatów TTS. Od tego czasu minęło już kilka miesięcy i problem, jak występował, tak występuje i zaczynam mieć wątpliwości, czy kiedykolwiek się tym zajmą. W międzyczasie przeszedłem na ESP-IDF, bo tam wszystko działa, choć wymaga mocniejszego ESP32 (np. ESP32 S3 N16R8) i… dźwięk jest jakby dużo cichszy. Ale to, że sparzyłem się na tych aktualizacjach, nie znaczy, że zapisałem się do drużyny „nie aktualizuję, skoro działa, bo przestanie”. Wręcz przeciwnie. Bo jak już wielokrotnie pisałem – tak, aktualizacja potencjalnie może coś zepsuć, ale najczęściej jednak naprawia, a czasem dodaje też nowe funkcje.

Menu boczne i kolory (motyw) w Home Assistant

I tak dochodzimy do świeżutkiego Home Assistant 2025.6 (Home Assistant Core Update 2025.6), w którym postanowiono zabrać się – choćby częściowo – za problem, nad którym sam ostatnio chwilę siedziałem, czyli ujednolicenie wyglądu Home Assistant na wielu urządzeniach, również nowych.

Bo tak sobie to dziwnie wymyślili, że ustawienia kolorów i – co gorsze – głównego menu (te boczne) w Home Assistant dotychczas były trzymane lokalnie, w ramach przeglądarki internetowej. Więc właściwie na każdym urządzeniu, a nawet w każdej przeglądarce, po pierwszym logowaniu – o ile nie było to logowanie tymczasowe – pierwsze co robiłem, to żmudnie ustawiałem domyślne kolory, oraz pozycje w menu.

Na szczęście od wersji 2025.6 koniec z tym. Przynajmniej jeśli chodzi o menu boczne. Kolory? Może kiedyś tu też pójdą po rozum do głowy, a do tego czasu zostaje wspomagać się motywami.

Menu boczne (sidebar) w Home Assistant

A trzeba dodać, że ustawianie od nowa menu głównego (bocznego) na każdym urządzeniu nie tylko było upierdliwe, bo trzeba było to robić, ale upierdliwy był też sposób, w jaki to się robiło. Zwłaszcza na urządzeniach mobilnych.

Teraz mamy nie tylko nowe okno, gdzie bardziej standardowo ustawiamy wszystkie pozycje, ale co istotne, po zapisaniu zmian, są one przypisywane do profilu użytkownika i stosowane na każdym urządzeniu, na którym jesteśmy zalogowani, lub się zalogujemy:

Po pierwszej edycji, przy zapisywaniu zmian pojawi się nawet odpowiedni komunikat:

Jesteś pewny?

To zmieni panel boczny na wszystkich urządzeniach, na które jesteś zalogowany. Aby utworzyć panel boczny dla każdego urządzenia osobno, powinieneś użyć innego użytkownika dla tego urządzenia

Bo od teraz pozycja „zmień kolejność i ukryj elementy na pasku bocznym” nie znajduje się w profilu użytkownika w sekcji „ustawienia przeglądarki” (sic!), a „ustawienia użytkownika”. I w tym momencie mogę tylko napisać: wreszcie, i dlaczego aż tyle trzeba było na to czekać?!?

Kolor podstawowy i kolor akcentu, czyli motyw

Natomiast nadal (dlaczego?!?) w sekcji „ustawienia przeglądarki” mamy opcje związane z kolorystyką, jaka jest używana w Home Assistant. Nadal ustawione tu kolory (kolor podstawowy i kolor akcentu), czy nawet wybrany motyw nie podążają za użytkownikiem, tylko są przypisane do sesji przeglądarki (dlaczego?!?).

Kiedyś każdorazowo ustawiałem sobie ręcznie kolory, jeśli zaszła taka potrzeba. Zwłaszcza że przy zabawie z ustawianiem menu, to była igraszka. Ale gdy wraz z pojawieniem się jeszcze nieoficjalnej wersji 2025.6 Home Assistant zobaczyłem, że rozwiążą problem menu (w końcu!), uznałem, że trzeba sobie i z kolorami ułatwić życie. Przynajmniej do momentu, aż i one będą powiązane z kontem użytkownika, co wydaje się logiczne, ale nie dla każdego jak widać.

Tak więc zamiast każdorazowo „w takiej sytuacji” ustawiać ręcznie kolor podstawowy i akcentu, postanowiłem przygotować plik motywu, by na każdym nowym urządzeniu po prostu go szybko wczytać w ustawieniach użytkownika (a można nawet spróbować zautomatyzować wybór/aktywację motywu):

Zwłaszcza że przygotowanie takiego motywu w wersji podstawowej, czyli z ustawieniem koloru podstawowego i akcentu, to dosłownie kilka linijek kodu:

Webinsider.pl:
  modes:
    light:
      primary-color: "#88b15b"
      accent-color: "#a8cd60"
    dark:
      primary-color: "#88b15b"
      accent-color: "#a8cd60"

Kod zapisujemy w pliku o wybranej nazwie z rozszerzeniem „yaml” (np. motyw.yaml) w podkatalogu „themes” głównej lokalizacji plików Home Assistant. W przypadku Home Assistant OS będzie to:

/mnt/data/supervisor/homeassistant/themes

Ogólnie znajdujemy katalog m.in. z plikiem configuration.yaml i w podkatalogu tej lokalizacji zapisujemy plik z motywem. Zresztą właśnie na taką lokalizację domyślnie wskazuje wspomniany plik „configuration.yaml”:

frontend:
  themes: !include_dir_merge_named themes

Natomiast jak ktoś bardzo chce, to oczywiście można zmienić w tym miejscu lokalizację, gdzie motywy mają być szukane. Nie wiem po co, ale jest taka możliwość.

Wariant ciemny i jasny

Umieszczony powyżej kod motywu, choć jest dość podstawowy, to rozbiłem go na wariant jasny i ciemny, bo o ile u mnie w obu przypadkach te 2 podstawowe kolory są identyczne, to zapewne nie u każdego tak będzie.

Nie tylko kolor podstawowy i akcentu

Ale kolor podstawowy i akcentu, to nie jedyne, co można za pomocą pliku motywu ustawić. Bo możliwości jest znaczenie, ale to znacznie więcej… Np.:

text-primary-color: "#212121"
app-header-text-color: "#212121" # Nagłówek - tytuły kart
state-icon-color: "#888888" # Nieaktywna ikona
state-icon-active-color: "#88b15b" # Aktywna ikona

Ale to nadal nie wszystko, bo można np. ustawić kolory ikon dla różnych sensorów i ich stanów. Kilka przykładów:

state-binary_sensor-motion-on-color: "#fdd835"
state-binary_sensor-motion-off-color: "#88b15b"
state-binary_sensor-door-on-color: "#fdd835"
state-binary_sensor-door-off-color: "#88b15b"
state-binary_sensor-gas-on-color: "#fdd835"
state-binary_sensor-gas-off-color: "#88b15b"
state-binary_sensor-lock-on-color: "#fdd835"
state-binary_sensor-lock-off-color: "#88b15b"
state-binary_sensor-moving-on-color: "#fdd835"
state-binary_sensor-moving-off-color: "#88b15b"
state-binary_sensor-occupancy-on-color: "#fdd835"
state-binary_sensor-occupancy-off-color: "#88b15b"
state-binary_sensor-presence-on-color: "#fdd835"
state-binary_sensor-presence-off-color: "#88b15b"
state-binary_sensor-smoke-on-color: "#fdd835"
state-binary_sensor-smoke-off-color: "#88b15b"
state-binary_sensor-window-on-color: "#fdd835"
state-binary_sensor-window-off-color: "#88b15b"
state-binary_sensor-moisture-on-color: "#fdd835"
state-binary_sensor-moisture-off-color: "#88b15b"
state-binary_sensor-carbon_monoxide-on-color: "#fdd835"
state-binary_sensor-carbon_monoxide-off-color: "#88b15b"
state-binary_sensor-tamper-on-color: "#fdd835"
state-binary_sensor-tamper-off-color: "#88b15b"
state-automation-active-color: "#88b15b"
state-automation-inactive-color: "#888888"
state-switch-active-color: "#88b15b"
state-switch-inactive-color: "#888888"
state-input_boolean-active-color: "#88b15b"
state-input_boolean-inactive-color: "#888888"

Dzięki temu można np. skorygować to, że sensory związane z dostępnością urządzenia przestają się świecić alarmowym żółtym kolorem, gdy urządzenie jest podłączone (sic!), a będą się tak świecić w sytuacji bardziej sensownej, czyli gdy urządzenie nie będzie podłączone:

state-binary_sensor-connectivity-on-color: "#88b15b"
state-binary_sensor-connectivity-off-color: "#fdd835"

Tak więc niezależnie od tego, czy motyw nadal będzie przypisany do urządzenia, czy docelowo – tak jak wygląd menu od teraz – do użytkownika, to i tak warto przygotować sobie motyw. Nie tylko po to, by skorygować dziwną sygnalizację kolorystyczną, jaka jest w standardzie… ;-)

Pamiętaj o restarcie lub ponownym wczytaniu konfiguracji

Po zapisaniu motywu do pliku, zanim pojawi się na liście motywów, należy albo zrestartować Home Assistant, albo przynajmniej zrobić „miękki restart”, czyli wczytać zawartość plików konfiguracyjnych.

Tak samo w momencie, gdy w już ustawionym motywie (pliku definiującym motyw) dokonamy zmian.

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk