Home Assistant: práce s dashboardem a rozšířeními HACS

21. 12. 2023
Doba čtení: 21 minut

Sdílet

 Autor: Home Assistant
Dnes probereme detailně uživatelské rozhraní, neboli Home Assistant dashboard. Podíváme se, jaké jsou k dispozici základní prvky, jak přidat další rozšíření vyvíjené komunitou a nebude chybět i několik tipů a příkladů.

Home Assistant Comunity Store

Co se dozvíte v článku
  1. Home Assistant Comunity Store
  2. Home Assistant dashboard
  3. Když karty nestačí
  4. Nejkrásnější dashboard
  5. Inspirace na závěr

HACS neboli Home Assistant Comunity Store je, jak název napovídá, další obchod s doplňky a tedy aktuálně ta nejlepší možnost, jak získat další integrace či rozšíření uživatelského rozhraní. Na rozdíl od oficiálního obchodu s doplňky, který je však k dispozici pouze ve variantách Home Assistant OS nebo Supervised, zde najdeme v zásadě vše, co kdokoliv naprogramoval (většinou z důvodu, že požadovaná funkcionalita neexistovala) a dal k volně dispozici.

Běžně se může stát, že tato rozšíření se do oficiální verze Home Assistanta dostanou později a nebo vůbec. Všechny tyto typy rozšíření jsou k dispozici na GitHubu a je možné je použít i přímo, bez HACS. Jen to není tak uživatelsky přívětivé.

Nejdříve začneme s instalací. Podobně jako v minulých dílech seriálu, uvedu postup pro jednotlivé varianty instalací Home Assistanta. Instalace spočívá v tom, že z oficiální stránky projektu stáhneme skript, který potřebujeme spustit v rámci naší instalace. Pokud používáme variantu Home Assistant OS/Supervised, nainstalujeme nejdříve doplněk, který zpřístupní SSH konzoli.

Tedy půjdeme do „Obchod s doplňky“ a nainstalujeme „Advanced SSH & Web Terminal“. Před spuštěním nesmíme zapomenout v záložce „Nastavení“ zadat buď heslo nebo veřejnou část SSH klíče, jinak se doplněk sice spustí, ale při následném otevření jeho konzole dojde k chybě „HTTP 502 Bad Gateway“ bez zjevného chybového hlášení. Poté již v této konzoli stačí spustit

wget -O - https://get.hacs.xyz | bash -

Nemusíme se bát, že se stane cokoliv škodlivého, koneckonců tento Bash skript je možné si předem prohlédnout. Stáhne totiž archiv s aktuální verzí a rozbalí do adresáře custom_components.

V ostatních variantách instalace Home Assistanta stačí buď provést totéž v rámci dockerového kontejneru, tj. přepnout se do běžícího kontejneru pomocí

docker exec -it homeassistant /bin/bash

Nebo se můžeme přesunout do adresářové struktury Home Assistanta a daný příkaz spustit přímo tam. Následně doporučuji provést restart systému.

Teď ještě zbývá provést instalaci nové integrace, půjdeme do Nastavení → Integrace → Přidat integraci a vyhledáme „HACS“. Následně musíme potvrdit, že souhlasíme se všemi body, experimentální možnosti můžeme nechat také zaškrtnuté. Je to příprava pro nadcházející verzi HACS 2, která přinese nové rozhraní a navíc například dokáže více zaintegrovat informaci o update přímo do Home Assistanta, na což jsou zvyklí převážně uživatelé variant OS nebo Supervised. Uživatelské rozhraní obou verzí je opravdu rozdílné, jak ukazují následující screenshoty.

Nyní je ještě potřeba HACS svázat se svým účtem na GitHubu. Pokud žádný nemáme, provedeme nejdříve registraci na stránkách projektu. Poté se musíme přihlásit a uvedeným kódem autorizovat aplikaci. Proč je vlastně potřeba se autentizovat? HACS používá GitHub API pro zjišťování různých informací (např. všechny evidované repozitáře, které se mají zobrazit). API má nastavené rate-limity na počet požadavků a pokud by všichni používali anonymní přístup, byly by tyto limity velice rychle vyčerpány.

Jednotlivé repozitáře s daným software jsou HACS rozděleny do několika kategorií: integrace, lovelace neboli rozšíření (karty pro dashboard nebo motivy) uživatelského rozhraní, šablony a AppDaemon (různé drobné aplikace, automatizace).

Zkuste se podívat, jestli tam nenajdete zrovna integraci, která vám chybí, třeba pro integraci automobilu, vířivky nebo kartu s vylepšenými grafy vybraných entit. Seznam s repozitáři se průběžně aktualizuje a automaticky se přidávají nové, které je možné navíc filtrovat – stačí zvolit ve filtru s ikonkou obráceného trojúhelníku vpravo nahoře.

Pokud byste nakonec v seznamu nenašli to, co hledáte, je možné repozitář ručně přidat. Předpokládá to, samozřejmě, že známe konkrétní URL vedoucí typicky na GitHub. V takovém případě stačí kliknout na tři svislé tečky úplně vpravo nahoře, zvolit „Vlastní repozitáře“, vložit URL a zařadit do správné kategorie. Takto přidané repozitáře je možné ve stejném dialogovém okně samozřejmě i smazat.

Všechna dostupná rozšíření pro HACS je možné do Home Assistantu nainstalovat i ručně v případě, že HACS z jakéhokoliv důvodu používat nechcete. Znamená to příslušný repozitář naklonovat či jen stáhnout do požadovaných adresářů v hlavním adresáři Home Assistanta. Integrace tedy patří do adresáře custom_components, lovelace do www/community, šablony do custom_templates a automatizace společně se skripty do adresáře appdaemon/apps. Poté stačí opět restart Home Assistanta. Tímto způsobem se ale připravíme o automatickou kontrolu, zda není dostupná nová aktualizace, a následné její jednoduché provedení.

Tím ale naše práce nekončí, tedy v případě instalace nové integrace. Kromě toho, že je vždy vyžadován restart Home Asisstanta, je potřeba integraci následně přidat standardním způsobem v menu Nastavení → Integrace → Přidat integraci. Poté s integrací pracujeme stejným způsobem, jak jsme zvyklí. V případě ostatních HACS rozšíření není potřeba restart provádět. Pokud instalujeme rozšíření uživatelského rozhraní, objeví se pak jako další karta při přidání na dashboard. Právě na tuto oblast se v dalších kapitolách zaměříme.

Home Assistant dashboard

Troufnu si řici, že alfou a omegou chytré domácnosti je právě již několikrát zmiňovaný dashboard. Tedy obrazovky, se kterými na každodenní bázi pracujeme, ovládáme zařízení, sledujeme grafy apod. Pojďme se podívat nejdříve na základní práci s rozhraním.

Ve výchozí instalaci je aktivní ovládací panel pojmenovaný Přehled. Ten je v režimu výchozí, což znamená, že zobrazuje úplně všechny entity, které jsou v Home Assistantu dostupné. Z počátku a pro první seznámení je to užitečné, protože se nemusíme o nic starat. Jen použijeme vybranou integraci, které své entity automaticky zobrazí do skupin. Buď podle typu entity (senzor, kamera, termostat apod.) nebo rovnou sdruží podle umístění, do kterého jsou dané entity přiřazené. To samozřejmě musíme provést ručně.

Nové umístění (typicky místnost) se definuje v menu Nastavení → Oblasti a zóny → Vytvořit oblast. Zadáme název, případně obrázek. Poté v detailu každého zařízení klikneme vpravo nahoře na ikonku tužky, přiřadíme jej k vytvořené oblasti. V případě přiřazení entity do nové oblasti stačí kliknout na její detail, vpravo nahoře na ikonku ozubeného kolečka a vybrat oblast. Sdružování zařízení a jejich entit do oblastí má i výhodu v tom, že po rozkliku oblasti vidíme seznam všech zařízení, automatizací a skriptů, která tato zařízení využívají a kompletní log událostí. Doporučuji tomu věnovat trochu času a postupně vše přiřadit do již vytvořených oblastí.

S jedním ovládacím panelem ve výchozím režimu nevydržíme dlouho. S přibývajícími zařízeními se tento pohled stává velice nepřehledným a často potřebujeme mít více panelů s několika pohledy. Začněme tedy s novým panelem, půjdeme do menu Nastavení → Ovládací panely → Přidat ovládací panel a zvolíme Nový ovládací panel od začátku. Pozor na volbu Výchozí ovládací panel, ta právě zajistí automatické zobrazování všech entit, jak jsem se o tom zmiňoval výše.

Nový ovládací panel vhodně pojmenujeme a nastavíme ikonku. V tomto kroku můžeme ještě definovat, jestli je určen pouze pro uživatele s právy administrátora či pro všechny a zda má být viditelný v postranní liště. V tomto novém panelu pak nejprve klikneme v pravém horním rohu na tři svislé tečky a zvolíme Upravit ovládací panel. V tomto editovacím režimu provádíme typicky dvě akce. První je přidání pohledu, který můžeme připodobnit k záložce. Cílem je rozdělit si jednotlivé funkční celky do různých obrazovek, typickým příkladem může být rozdělení podle místností v domě. Tou druhou je pak přidání nové karty, který typicky zobrazuje konkrétní hodnoty entit, umožňuje ovládat tlačítka, vykreslovat grafy apod. Pojďme si projít základní obrazovky obou voleb.

Pohledy a karty

Nejdříve začneme pohledem. Klikneme na znak + v horní liště, zvolíme jeho název, případně ikonu a typ zobrazení. Výchozí typ Vyzdění značí, že se jednotlivé karty budou umisťovat automaticky pod a vedle sebe. Zkrátka budou co nejvhodněji vyplňovat celý prostor obrazovky.

Typ Postranní panel naopak umísti všechny karty pouze pod sebou s délkou přibližně do tří čtvrtin obrazovky. Konečně při použití typu Panel se zobrazí pouze jedna entita, maximalizovaná na celou délku obrazovky. Toto zobrazení je ideální třeba pro komplexnější grafy, které jsou vizualizovány spíše do délky, než do šířky.

Poslední volbou je Dílčí pohled, kdy bude pohled v horním menu skrytý a zobrazit jej bude možné pouze zadaním odkazu. Konkrétní použití si ukážeme později v příkladech. Jednotlivým pohledům je dále možné pomocí šipek vpravo a vlevo měnit jejich pořadí.

Novou kartu vložíme kliknutím na + Přidat kartu. V základní instalaci (tj. zatím nemáme přidané žádné rozšíření z HACS) je k dispozici přibližně 30 různých typů karet. Většina z nich má k dispozici vizuální editor, ve kterém postačí vyplnit entitu a doplnit název či další specifické možnosti. Pokročilejší uživatelé pak mohou využít přímo editor kódu, ke kterému se vrátím ještě později.

Pro zjednodušení uvedu jen některé z karet, se kterými se pravděpodobně setkáme nejčastěji:

  • Entita zobrazuje právě jedno zařízení, hodnotu, ovládací prvek. Můžeme tedy zobrazit světlo, zásuvku, roletu nebo jen stav jakéhokoliv senzoru. Tato karta je zkrátka určená pro jakoukoliv entitu.
  • Entity na rozdíl od předchozí možnosti zobrazuje více entit, každou na jednom řádku. Karta je rozdělena do dvou sloupců, v prvním je název entity, ve druhém hodnota. V případě, že se nejedná o entitu poskytující pouze hodnotu, v druhém sloupci se zobrazí přímo i ovládací prvek. Můžeme tak rovnou rozsvítit žárovku či zatáhnout roletu.
  • Tlačítko se vlastně chová podobně jako karta entita, jen jiným způsobem entitu zobrazí a chová se jinak na kliknutí. Navíc je možné použít jakoukoliv entitu, tedy nejen tlačítko, což může být z názvu trochu matoucí. Tedy ano, do karty tlačítko je možné vložit i žárovku. Rozdíl mezi kartou entita je právě v následné akci. Pokud klikneme na kartu entita, otevře se detail entity. Pokud však na kartu tlačítko, spustí se akce „přepínač“, tedy např. již zmíněné světlo se rovnou rozsvítí. Současně je možné přímo definovat, co se má stát při kliknutí a při dlouhém stisku.
  • Světlo má vlastně stejnou funkci jako tlačítko, jen přidává možnost přímo nastavovat úroveň jasu.
  • Senzor zobrazí kromě své hodnoty i jednoduchý graf, včetně možnosti zobrazit několik hodin zpětně.
  • Ručičkový ukazatel, jak název napovídá, vykresluje hodnotu senzoru do podoby jakéhosi tachometru. Umožňuje definovat minumum, maximum a pro tři zadané úrovně zobrazit jinou barvu.
  • Graf historie umožňuje pro jeden a více senzorů vykreslit graf uložených hodnot a současně také definovat počet hodin k zobrazení.
  • Statistický graf vykresluje také grafy pro více senzorů, ale s tím rozdílem, že umožňuje data vizualizovat např. po dnech a definovat různý typ, např. průměr, maximum, součet apod. Toto je vhodná karta např. pro zobrazení spotřeby plynu za poslední měsíc.
  • Termostat umožňuje pouze pro zařízení typu „climate“ (tedy termostat nebo termostatické hlavice) ovládat teplotu, naprogramované režimy, vypínat topení a další funkce. Současně umožňuje také proklik ke grafům teploty a vytápění.
  • Ovládání médií pak v závislosti na konkrétním zařízení typu media_player umožňuje např. ovládat chytrou televizi či jiné multimediální zařízení.
  • Dlaždice je karta představená teprve nedávno. Je to vlastně vylepšená karta entita, která umožňuje navíc vložit specifickou funkci (např. ukazatel jasu nebo ovládací tlačítka), podrobnější informace o svém stavu, rozbrazit minimalistickou ikonku a upravit akci při kliknutí.
  • Podmínka umožní zobrazit nebo naopak nezobrazit zvolenou kartu buď na základě číselného stavu, stavu entity nebo např. podle přihlášeného uživatele či podle typu zařízení z pohledu použitého rozslišení. Samozřejmě nabízí i logické operátory AND/OR. Můžeme tak např. jednoduše zobrazit kartu Dlaždice s teplotou v garáži za předpokladu, že je vyšší než 10°C.
  • Filtr entit jako jedna z mála základních karet nenabízí vizuální editor. Nabízí podobnou funkcionalitu jako karta Podmínka, ale umí pracovat pouze se stavem (vypnuto/zapnuto, otevřeno/zavřeno). Rozdíl je však v tom, že na základě společného stavu se rozbrazí více entit. Typickým příkladem je zobrazení jen rozsvěcených světel, jak je patrné na ukázce níže. Má to však jednu negativní vlastnost. Je potřeba vždy uvést všechny požadované entity a udržovat tak seznam aktuální. Jak takový případ řešit efektivněji, si ukážeme později.
    type: entity-filter
    entities:
      - light.svetlo_obyvak
      - light.svetlo_loznice
      - light.svetlo_vstup
      - light.svetlo_predsin
    state_filter:
      - 'on'
    card:
      type: glance
  • Mřížka dokáže jednotlivé karty uspořádat do více sloupců. To je velice šikovné pro úsporu místa na obrazovce, protože typicky karty typu Entita, Dlaždice nebo Tlačítko jinak zabírají zbytečně volného místa. Rozdíl mezi použitím mřížky se dvěma sloupci a třemi entitami versus využitím jen jedné entity pěkně ukazuje následující obrázek.
  • Svislé a horizontální uskupení fungují na podobném principu jako mřížka. Také umožňuje uspořádat více karet, ale zobrazí je buď striktně svisle (karty pod sebou) nebo horizontálně (karty vedle sebe). Svislé uskupení je užitečné, pokud vytvoříme nový pohled jako „Vyzdění“ a pak víme, že se jednotlivé karty automaticky rozmístí pod či vedle sebe. Je sice možné definovat jejich pořadí (číslo v kroužku v editovacím režimu), ale často potřebujeme, aby několik karet, které spolu souvisejí, byly zkrátka vždy umístěné pod sebou. Horizontální uskupení tedy tyto karty umístí do sloupců, což se dosti podobá kartě Mřížka. Rozdíl je však v tom, že se zde nedefinuje počet sloupců, po kterých se má zalomit nový řádek. Pokud tedy máme monitor s velkou uhlopříčkou a chceme umístit větší množství karet vedle sebe, je toto ta pravá volba.

Když karty nestačí

Ukázali jsme si několik nejčastěji používaných karet, které jsou k dispozici v základní instalaci. Ale co když nám chybí nějaká funkcionalita, nějaký drobný detail, nebo se nám zkrátka nelíbí grafický vzhled? Ano, podíváme se do HACS, nicméně neznaje konkrétní rozšíření nám nezbude nic jiného, než buď projít všechny dostupné a nebo zkusit štěstí a hledat podle klíčového slova.

Abych vám hledání trochu ulehčil, připravil jsem několik tipů na rozšíření, které sám používám, samozřejmě včetně konkrétních příkladů. Jakým způsobem poznáme, že se jedná o rozšíření z HACS? Všechny se definují v editoru kódu jako type: custom:NAZEV, případně přímo ve formuláři při vložení nové karty obsahují v názvu Vlastní.

Entity s více sloupci

Kartu Entity rád využívám pro jakékoliv souhrnné informace, ale bohužel neumožňuje zobrazit více údajů v jednom řádku, čímž se zbytečně plýtvá s volným místem. Řešením je rozšíření Multiple entity row. Nejedná se tedy přímo o novou kartu rozšíření, jen přidává podporu sloupů právě kartě Entity. Navíc pouze v editoru kódu, takže ty řádky, které mají obsahovat sloupce, musíme připravit ručně.

Je to jednoduché a ukážeme si to na níže uvedeném příkladu integrace automobilu, který bude vizualizovat stav nahuštění pneu ve sloupcích a pak dále už standardní jednořádkové entity s informací, za kolik dnů jet do servisu a spínač na nastartování.

Využívá se tedy karta Entity, kde u první definice entity přidá parametr type: custom:multiple-entity-row a následně seznam všech požadovaných dat, které se mají vykreslit do sloupců. Zbytek zápisu je již standardní a teď vizuální editor dokáže zobrazit.

type: entities
entities:
  - entity: sensor.auto_tirepressure
    type: custom:multiple-entity-row
    name: Pneumatiky
    show_state: false
    entities:
      - entity: sensor.auto_tirepressure
        name: Levá přední
        attribute: FRONT_LEFT
      - entity: sensor.auto_tirepressure
        name: Pravá přední
        attribute: FRONT_RIGHT
      - entity: sensor.auto_tirepressure
        name: Levá zadní
        attribute: REAR_LEFT
      - entity: sensor.auto_tirepressure
        name: Pravá zadní
        attribute: REAR_RIGHT
  - type: section
  - entity: sensor.auto_oil_inspection_days
    name: Servis olej
  - entity: switch.auto_ignition_switch
    name: Nastartovat
title: Auto

Auto-entities

V předchozích kapitolách jsem se zmiňoval o kartě Filtr entit a konstatoval její nedokonalost v tom směru, že je nutné všechny požadované entity pro aplikaci filtru vyjmenovat. Potřeboval jsem totiž konkrétně řešit dva z mého pohledu poměrně časté případy. Tím prvním bylo zobrazit všechna zařízení, kterým klesl stav baterie pod určitou mez, abych včas zajistil výměnu. Tím druhým je pak výpis všech prvků v domácnosti, které jsou zapnuté. Často se přece stává, že někde zůstane rozsvícené světlo nebo zapnutá řiditelná zásuvka.

S každým novým zařízením myslet na to, že musím tuto entitu přidat do seznamu, je velice otravné a nespolehlivé. Řešením je rozšíření Auto-entities. Jedná o standardní kartu s vizuálním editorem, přidáme tedy kartu Vlastní: Auto Entities a zkusíme vytvořit seznam všech zařízení, která mají stav baterie nižší než 75 %.

Nejdříve přidáme novou skupinu filtru + Add filter group a ihned se začnou zobrazovat úplně všechny entity. Potřebujeme je tedy omezit jen na ty, které skutečně potřebujeme. Jelikož údaj o baterii je ve většině případů uveden v atributu senzorů, zvolíme v poli Property hodnotu Entity Domain a do pole Value vložíme hodnotu  sensor.

V dalším poli Property vybereme hodnotu Attribute a v textovém poli Value třídu zařízení device_class: battery. Nyní již stačí přidat poslední pole Property s hodnotou Entity state a zadat číslo v procentech s vhodným operátorem, tedy například  <= 70. Zbývá záložka Sorting a případně vhodně seřadit podle Entity state. Vizuální editor bohužel nenabízí volbu pro vyloučení některých entit, které nakonec chceme z výběru odstranit. Je tedy potřeba se přepnout do editoru kódu a sekci exclude: přidat ručně.

Výsledná karta bude vypadat takto:

type: custom:auto-entities
card:
  type: entities
filter:
  include:
    - domain: sensor
      attributes:
        device_class: battery
      state: <= 70
  exclude:
    - name: /[Ss]tate of [Cc]harge/
sort:
  method: state
  reverse: false
  ignore_case: false
  numeric: false

Sloupcové grafy

Další rozšíření, které jsem hledal, byly jednoduché sloupcové grafy. Ano, existuje karta Statistický graf, ale ta předpokládá, že entita má historická data, které pak vizualizuje. Já jsem potřeboval pro každý sloupec data z jiné entity, a to včetně zobrazení různé barvy podle dosažené hodnoty.

To vše splňuje rozšíření Bar-card. Použití si ukážeme na příkladu zobrazení vybraných teplot. Přidáme novou kartu Vlastní: Bar Card a otevře se vizuální editor. Ten bohužel není kompletně naprogramovaný a obsahuje několik chyb. Rozšíření není bohužel již tři roky vyvíjené, proto doporučuji alespoň základ doplnit ručně v editoru kódu a pak případné drobnosti zkusit dořešit ve vizuálním editoru. Níže uvedený příklad definuje tři vodorovné grafy tří entit s teplotami a v sekci severity definuje rozsah teplot, pro které zobrazí graf v jiné barvě.

type: custom:bar-card
title: Teploty
icon: mdi:thermometer
severity:
  - color: Red
    from: 0
    to: 10
  - color: Orange
    from: 10
    to: 20
  - color: Green
    from: 20
    to: 35
entities:
  - entity: sensor.bojler_temperature
  - entity: sensor.obyvak_temperature
  - entity: sensor.venku_temperature

V souvislosti s těmito jednoduchými grafy mám připravený ještě jeden tip. V kartě Auto entities je možné využít nejen základní Entity pro zobrazení entit, které odpovídají zadanému filtru. Stačí změnit typ karty a namísto obyčejné textové interpretace zobrazit výstup např. právě ve sloupcovém grafu. Upravená karta pro zobrazení stavu baterií v jednotlivých zařízeních vypadá následovně a myslím, že je to velice zdařilé.

type: custom:auto-entities
card:
  type: custom:bar-card
  severity:
    - color: Red
      from: 0
      to: 20
    - color: Orange
      from: 21
      to: 49
    - color: green
      from: 50
      to: 100
  columns: 1
  square: false
  state_color: true
  show_header_toggle: false
filter:
  include:
    - domain: sensor
      attributes:
        device_class: battery
      state: <= 70
      options:
        icon: mdi:battery-low
        type: entity
  exclude:
    - name: /[Ss]tate of [Cc]harge/
sort:
  method: state
  reverse: false
  ignore_case: false
  numeric: false

Mini grafy

Aby těch grafů nebylo málo, přináším ještě jedno rozšíření spíše klasického charakteru: Mini Graph Card. Oproti základnímu grafu pomocí karty Sensor je zde několik vylepšení. Můžeme zvolit barvu grafu, přímo na grafu pohybem myši zobrazit několik hodnot, v jednom grafu definovat více entit, včetně legendy a máme spoustu dalších možností.

Nejvíce se mi líbí jejich minimalistický vzhled a že je tak možné umístit několik grafů vedle sebe, což využívám např. na zobrazení grafů teploty, vlhkosti a případně tlaku. Kartu nalezneme pod názvem Vlastní: Mini Graph Card a bohužel nemá vizuální editor, proto uvedu přímo konkrétní kód. Je však k dispozici poměrně rozsáhlá dokumentace, doporučuji prostudovat. Následující ukázka používá navíc kartu Horizontal stack, díky které budou tři použité mini grafy umístěné pěkně vedle sebe.

type: horizontal-stack
cards:
  - type: custom:mini-graph-card
    entities:
      - sensor.venku_temperature
    name: Teplota
    line_color: 'blue'
    font_size: 75
  - type: custom:mini-graph-card
    entities:
      - sensor.venku_humidity
    name: Vlhkost
    line_color: '#e74c3c'
    font_size: 75
  - type: custom:mini-graph-card
    entities:
      - sensor.venku_pressure
    name: Tlak
    line_color: 'lightgreen'
    font_size: 75

Hledáte-li ještě komplexnější grafy, doporučím ApexCharts Card, které jsou např. často používány pro sledování spotových cen na trhu s elektřinou a nebo Plotly Graph Card. Obě rozšíření jsou ale opravdu složitá, a proto další zkoumání nechávám s dovolením spíše na každém zájemci.

Nejkrásnější dashboard

Pokud toužíte po opravdu nejkrásnějším dashboardu, jsem přesvědčen, že stejně jako já vyzkoušíte Mushroom a už nebudete chtít používat nic jiného. Tvůrce tímto rozšířením cílí na obě skupiny typických uživatelů. Ti z první skupiny preferují vizuální editor, protože si chtějí vše jednoduše naklikat a o nic dalšího se nestarat. Zkrátka úplně stejným způsobem jako při použití základních karty obsažených v Home Assistantu, o kterých jsem psal na začátku. Naopak druhá skupina preferuje editor kódu v YAML, což jim umožní společně s maximální kontrolou nad výsledkem také nepřeberné množství dalších nastavení.

Takže neváhejme a pojďme si v HACS přidat toto rozšíření. Když teď na dashboardu klikneme na přidání nové karty a vyhledáme klíčové slovo Mushroom, objeví se 17 různých karet. Namátkou to jsou karty pro světla, rolety, jakoukoliv entitu, zámek, termostat, osobu a další.

Nejdříve si zkusíme přidat několik položek pomocí vizuálního editoru. Využijeme svislé uskupení a mřížku, aby se entity poskládaly pěkně pod a vedle sebe a zkusíme přidat pár světel, entity, termostat, roletu a media card. Pro každou kartu vybereme vhodnou entitu, vložíme název a dále můžeme zakliknout specifické možnosti jako např. ovládání jasu a barvy u světla, ovládací tlačítka rolety, cílovou teplotu termostatu apod. Je to velice jednoduché, že?

Na první pohled, když srovnáme základní karty pro běžná zařízení s kartami Mushroom, je ten rozdíl myslím velice znát. Tato konkrétní ukázka vypadá takto – využil jsem k tomu skutečně jen vizuální editor.

Ještě určitě zmíním kartu Chips card, kterou mám velice rád, převážně pro její minimalistický vzhled. Nabízí zobrazení drobných informací (např. zda světlo svítí či nějakou hodnotu ze senzoru) v malém obdélníčku společně s ikonkou, což velice šetří místem. Často jsou totiž k vidění úplně nahoře na obrazovce právě pro rychlý přehled. 

Každá tato karta je ve skutečnosti považována za tlačítko, takže reaguje navíc na zvolenou akci různým typem kliknutím. Pro některý případ můžeme nastavit jen provedení standardní akce (rozsvícení světla nebo přepnutí přepínače), pro jiný pak zobrazení podrobností včetně grafu a nebo dokonce přejít na jiný pohled dashboardu. Přidáním karty Vlastní: Mushroom Chips Card můžeme opět velice jednoduše pomocí vizuálního editoru přidat přímo světlo, libovolnou entitu, podmínku, libovolnou akci apod. Ukázkové karty pak mohou vypadat např. takto:

Šablony

Abych nezapomněl na uživatele, kteří si rádi vše co nejvíce přizpůsobí a je jim bližší právě režim editoru kódu v YAML, podíváme se ještě na jednu kartu Mushoom, kterou jsem zatím záměrně nezmínil. Tou je obecná karta Mushroom template, se kterou se fantazii meze nekladou a je možné definovat, cokoliv nás napadne. Pro zjednodušení si ukážeme konkrétní příklad přímo v editoru kódu.

Představme si tedy následující scénář. Rádi bychom vytvořili přehledový dashboard pro zobrazení jednotlivých místností v domácnosti, u každé bude uvedena informace o teplotě a vlhkosti, po kliknutí se rozsvítí nebo zhasne světlo a při dlouhém stisku se zobrazí dílčí pohled na danou místnost.

Začneme tím, že vytvoříme další pohled, pojmenovaný podle místnosti (např. kuchyně) a zaškrtneme položku Dílčí pohled. Tím, jak jsme si již vysvětlili, nebude pohled viditelný přímo v menu, ale bude dostupný při zadání URL. Nyní přidáme kartu Mushroom template a přepneme do editoru kódu.

Vidíme zde několik předvolených proměnných. Do proměnné Primary vložíme název místnosti, do Secondary doplníme informaci ze senzorů pomocí šablony. Jak se pracuje s Jinja2 template jsme si vysvětlovali v předchozích dílech, použití je tedy stejné. Následně si ještě zvolíme vhodnou ikonku a její barvu.

Dále musíme ještě zajistit, že pokud se rozsvítí světlo, změní se i barva ikony, protože jinak nepoznáme, zda-li je rozsvíceno či nikoliv. Na závěr doplníme ještě proměnnou tap_action, tedy co se má stát při různé akci na kliknutí či podržení.

Výsledek bude vypadat takto:

type: custom:mushroom-template-card
primary: Kuchyně
secondary: |-
  {{ states('sensor.kuchyne_temperature') }}°C -
  {{ states('sensor.kuchyne_humidity') }}%
icon: mdi:knife
entity: light.svetlo_kuchyne
icon_color: |-
  {% if is_state(config.entity, 'on') %}
    red
  {% else %}
    grey
  {% endif %}
tap_action:
  action: toggle
hold_action:
  action: navigate
  navigation_path: kuchyne

Tato ukázka je navíc rozšířená o Mushroom chips, které zobrazují malé ikonky (žárovky, rolety, termostat a další zařízení) ve své dolní části. Aby bylo možné tímto způsobem zkombinovat obě karty, využívají se ještě další dvě rozšíření. První je Stack in card, které právě kombinuje více rozšíření s pozicí vedle sebe nebo pod sebou bez toho, aby tam byla jakákoliv mezera. Druhým rozšířením je Card-mod, které umožní nastavit pro jakýkoliv element vlastní CSS styly, např. odstranění rámečku. Konkrétní příklad vypadá následovně:

type: custom:stack-in-card
cards:
  - type: custom:mushroom-template-card
    card_mod:
      style: |
        ha-card {
           border: 0px; box-shadow: none;
         }
    ...
  - type: custom:mushroom-chips-card
    chips:
      - type: template
        style: |
          ha-card {
           border: 0px; box-shadow: none;
          }
        ...
      - type: template
        style: |
          ha-card {
           border: 0px; box-shadow: none;
             }
        ...
    alignment: center
    card_mod:
      style: |
        ha-card {
          margin: 0px 5px 5px;
          --chip-background: rgba(var(--rgb-disabled), 0.15);
          --chip-border-width: 0;
          --chip-box-shadow: none;
          --chip-border-radius: 12px;
          --chip-height: 35px;
        }

Inspirace na závěr

Nezmínil jsem jednu velkou část rozšíření a integrací, které používám pro sledování stavu a řízení fotovoltaické elektrárny. K tomu se zkusím, pokud bude zájem, vrátit v některém z příštích dílů. Pokud máte nějaké zajímavé tipy na rozšíření z HACS, budu rád za případné komentáře.

Na závěr jsem si nechal ukázku mého hlavního dashboardu, který používám pro rychlou orientaci, co se v domě děje, včetně základních ovládacích prvků. Pokud si Mushroom zamilujete stejně jako já a nechcete se trápit s přípravou vlastního dashboardu, doporučuji alespoň vyzkoušet rozšíření Mushroom strategy. To dokáže vygenerovat poměrně hezký dashboard automaticky, ale předpokládá, že budeme mít všechna zařízení a entity přiřazené do jednotlivých oblastí. Současně je pak možné některé z těchto pohledů vyjmout, o čemž se autor ve svém projektu také zmiňuje.

bitcoin školení listopad 24

Jelikož téma tohoto dílu bylo méně technické, příště se podíváme na zařízení ESP, oblíbené právě ve světě IoT. Zkusíme si něco jednoduchého zbastlit a pomocí produktu ESPHome výsledné zařízení následně zaintegrujeme přímo do Home Assistanta.

(Autorem obrázků je Václav Steiner.)

Autor článku

V minulosti vedl týmy systémových administrátorů ve společnosti IGNUM nebo sdružení CZ.NIC, nyní působí ve společnosti VSHosting.