Package w Home Assistant

Konfiguracja HA wraz ze wzrostem liczby urzadzeń i automatyzacji w pewnym momencie staje się mało czytelna, rozwiązaniem tego jest uzupełnienie konfiguracji o tzw. package. Najprościej to opisać jako zbiór osobnych plików konfiguracyjnych HA, które razem tworzą całość. Każdy plik musi spełniać zasady konfiguracji pliku configuration.yaml.
Mój plik konfiguracyjny configuration.yaml po zakończeniu migracji na package (bo to chciałem osiągnąć) zawiera tylko to:

homeassistant:
# In the packages directory you can store any number of packages in a YAML file but not subfolders (use: packages: !include_dir_merge_named packages/)
  packages: !include_dir_named packages
# List of folders that can be used as sources for sending files.  
  allowlist_external_dirs:
    - /config

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Text to speech
tts:
  - platform: google_translate

# -- start default config 
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
# -- stop default config 

# https://www.home-assistant.io/integrations/time_date/
sensor:
  - platform: time_date
    display_options:
      - 'date'
      - 'time'
      - 'date_time'
      - 'date_time_utc'
      - 'date_time_iso'
      - 'time_utc'

python_script:

# https://www.home-assistant.io/integrations/logger/
logger:
  default: info

reszta jest w osobnych plikach yaml w katalogu \config\packages\. Jak widać nadal korzystam z plików groups.yaml, automations.yaml.

W ten sposób każdy nowy pomysł w HA realizuje od stworzenia nowego pliku z testową konfiguracją np. printer_test.yaml, dopiero po testach i akceptacji rozwiązania zmieniam nazwę pliku na printer.yaml. W przypadku problemów lub porzucenia tematu usuwam plik testowy, w prosty sposobów usuwam wszystkie testowe zmiany w HA.

Jeden z wielu przykładów takiego podejścia do konfiguracji HA:

Gorąco polecam skorzystanie z takiej konfiguracji Home Assistanta.

7 Likes

@macek jeśli chodzi o strukturę plików trafiłem właśnie na coś takiego:

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

script:             !include_dir_merge_named ./configuration/scripts

input_number:       !include_dir_merge_named ./configuration/input_number
input_select:       !include_dir_named ./configuration/input_select

# Text to speech
tts:
  - platform: google_translate

group: !include groups.yaml
automation: !include automations.yaml
scene: !include scenes.yaml

można tworzyć katalogi a następnie mapować je w całości, a nie jako pojedyncze pliki, oczywiście twoje rozwiązanie też jest do rozpatrzenia.

EDIT:
w package: też jest opisane merge.

Rozwiązanie z użyciem packages jest moim zdaniem nie do przebicia. Szczególnie gdy masz rozbudowaną konfigurację, korzystasz często z templates i tym podobne. Dodając cokolwiek nowego do HA tworzysz po prostu kolejny plik yaml nadając mu charakterystyczną nazwę i w nim zawierasz wszystko co nowego dotyczy. Niezwykle łatwo się w tym wszystkim jest później odnaleźć i w razie potrzeby dokonywać zmian.

1 Like

Wolę wszystko co dotyczy np. pralki np. input_select, sensor, utility_meter, automation, notify umieścić w jednym pliku pralka.yaml niż “skakać” między kilkoma plikami. Dokonując zmian, robię to w jednym pliku, jak coś nie działa przywracam z kopii tylko jeden plik. Nic i nikt nie przekona mnie do innej konfiguracji HA :grin:.

3 Likes

@macek o i to jest argument który kieruje mnie do twojego rozwiązania.

mam problem z tym elementem,
otóż wyskakuje mi:

String does not match the pattern of “DEPRECATED)


odpowiedź znalazłem, trzeba zmienić:

whitelist_external_dirs:

na
allowlist_external_dirs:

1 Like

Dodam od siebie, moja konfiguracja Packages
Screenshot - 03.03.2022 , 21_13_26

automation split: !include_dir_list ../automations
input_boolean: !include_dir_merge_named ../entities/input_booleans
binary_sensor: !include_dir_list ../entities/binary_sensors
itd.

Screenshot - 03.03.2022 , 21_09_33

Screenshot - 03.03.2022 , 21_12_19

2 Likes