Splitting - Rozdělení konfigurace - include

config.yaml
Odpovědět
Uživatelský avatar
Lion®
Administrátor fóra
Administrátor fóra
Příspěvky: 1604
Registrován: 28. září 2020, 14:07
Bydliště: podkrkonoší
Dal poděkování: 144 poděkování
Dostal poděkování: 193 poděkování
Kontaktovat uživatele:

Splitting - Rozdělení konfigurace - include

Příspěvek od Lion® »

Jak upravit soubor configuration.yaml na lépe čitelný a více přehledný?
Tam kde se stává soubor configuration.yaml nepřehledným v částech:

Kód: Vybrat vše

default_config:
automation:
zone:
sensor:
switch:
device_tracker:
a_tak_podobne:

Tyto jeho části lze uložit do samostatného souboru a zahrnout je do konfigurace pomocí include.
V adresáři config vytvoříme soubory s s vlastními názvy file_name.yaml, naplníme je odpovídajícím obsahem z configuration.yaml a zahrneme je do konfigurace:

Kód: Vybrat vše

default_config:
automation: !include vlastni_nazev_souboru_pro_automatizace.yaml
zone: !include zones.yaml
sensor: !include sensors.yaml
switch: !include switchs.yaml
device_tracker: !include device_trackers.yaml
group: !include groups.yaml
Nahradíme tím tak například desítky, stovky,.... řádků v configuration.yaml s definicí senzorů, helperů atd. řádkem jedním.
!include filename.yaml je příkaz, který říká Home Assistant, aby zahrnul obsah souboru filename.yaml.
Takto zpřehledníme jednolitý a těžko čitelný soubor (až se zvětší) na lépe čitelný.
Dokonce bude fungovat i !include v souboru který je sám !include

Ukázka části mého rozdělení pro skupiny:

Kód: Vybrat vše

default_config:
group !include skupiny.yaml
Soubor v adresáři config s názvem skupiny.yaml obsahuje mimo jiné například:

Kód: Vybrat vše

#group:
  
  climate:
    name: Termostaty topení 
    entities:
      - climate.kuchyn
      - climate.koupelna
      - climate.obyvak
      - climate.loznice
Všimněte si prosím, že v souboru je # zakomentovaný první řádek s obsahem group:
Tento řádek HA již v souboru totiž neočekává, předpokládá totiž, že celý soubor se týká jen a pouze group:
________________
🍻 Přispěj a získej přístup do obsahu fóra pro dárce. :thx:
Oficiální sada s Raspberry Pi 4B/4GB, černá +Argon NEO Raspberry Pi 4 Case
Patriot Burst 2.5" SATA SSD 120GB + AXAGON EE25-XA6 ALINE box

Galerie realizací

mamonick
Dárce - Donátor
Dárce - Donátor
Příspěvky: 187
Registrován: 20. září 2021, 13:47
Bydliště: Třebechovice p. O.
Dal poděkování: 23 poděkování
Dostal poděkování: 22 poděkování

Re: Splitting - Rozdělení konfigurace - include

Příspěvek od mamonick »

A když i vlastní includovaný soubor je obsáhlý, jako třeba můj se sensory, pak se dá includovat adresář

Kód: Vybrat vše

sensor: !include_dir_merge_list sensor
v tomto případě s názvem "sensor",
a v adresáři jsou pak jednotlivé soubory.
Přílohy
include sensor.png

Uživatelský avatar
acerot
Pokročilý
Pokročilý
Příspěvky: 118
Registrován: 12. prosinec 2022, 15:44
Dal poděkování: 2 poděkování
Dostal poděkování: 24 poděkování

Re: Splitting - Rozdělení konfigurace - include

Příspěvek od acerot »

Jen doplním.
Například zmíněná integrace sensor požaduje vložit pod sebe definici jednotlivých senzorů jako YAML list, proto se použije při vkládání podadresářové struktury s definičními YAML soubory senzorů direktiva !include_dir_merge_list a vnitřky jednotlivých YAML souborů pak vypadají takto:

Kód: Vybrat vše

- platform: XXXXX
  name: XXXXX
  entity_id: XXXXX

- platform: XXXXX
  name: XXXXX
  entity_id: XXXXX

- platform: XXXXX
  name: XXXXX
  entity_id: XXXXX
Ale například integrace utility_meter požaduje vložení jednotlivých utility_meterů jako pojmenovaný seznam (či co to v YAMLu je, nevím přesně), takže u ní musíme při rozpadu konfigurace na podsložky/podsoubory použít direktivu !include_dir_merge_named,
např.: utility_meter: !include_dir_merge_named utility_meter/
) a vnitřky jednotlivých YAML souborů pak vypadají takto (zkraje na začátku nejsou pomlčky ani žádné odsazení):

Kód: Vybrat vše

XXXXX_hodinovy:
  name: XXXXX
  source: XXXXX
  cycle: hourly
  net_consumption: false
  tariffs:
    - VT
    - NT

XXXXX_denni:
  name: XXXXX
  source: XXXXX
  cycle: daily
  net_consumption: false
  tariffs:
    - VT
    - NT
Čili je potřeba vědět, která integrace potřebuje list a která named.

Pod vkládanou složkou může být podsložek do kolika úrovní chcete a YAML souborů, kolik chcete. Jejich názvy nehrají roli.
vkladani.jpg
vkladani.jpg (23.31 KiB) Zobrazeno 514 x
Ty vkládací direktivy udělají vlastně jen to, že všechny ty podsložky a jejich soubory textově načtou a ten text vloží na místo, kde samy stojí v souboru configuration.yaml, takže vytvoří jeden obrovský configuration.yaml podobně, jako byste ho udělali vy sami, kdybyste to všechno měli jen v něm. A pak ho teprve celý předhodí kompilátoru.

A ještě jedna věc. Pokud chcete například zachovat soubor automations.yaml, do kterého HA strká automatizace vytvořené přes GUI, ale zároveň si chcete vytvořit svoji vkládanou strukturu podsložek s YAML soubory s automatizacemi, můžete vložit obojí tak, že další direktivu automation: nějak pojmenujete:

Kód: Vybrat vše

automation: !include automations.yaml
automation moje: !include_dir_merge_list automation_moje/
Důležité je to slovo moje za slovem automation na začátku druhého řádku. Tím zabezpečíte, že direktiva automation: může být v souboru configuration.yaml vícekrát (jinak by to kompilátorem neprošlo).

Odpovědět

Zpět na „Konfigurace HA“