Da in einem anderen Thread die Frage zur Verwendung von Packages aufkam, hier der Versuch einer (bewusst kurzen) Erläuterung. Vielleicht ist das ja mal wieder ein Thema für Walter scw2wi . 
Die Gründe für mich, Packages zu verwenden, sind vielfältig. Auf Anhieb fällt mir ein:
Dies lässt sich mit Packages wie folgt erweitern, um ein zentrales 'conf' Verzeichnis einzubinden, in dem das gesamte YAML liegt. Wahlweise mit oder ohne Unterverzeichnisse - im Grunde ist ein Package eine Verdopplung der 'Haupt-Ebene' der configuration.yaml (ganz linke Seite) unter einem eigenen, frei wählbaren Namen. Damit werden die Konfigurationsmöglichkeiten massiv erweitert, und man kann sein YAML deutlich besser strukturieren, schlicht und ergreifend weil man Schlüssel wie sensor:, binary_sensor:, cover: etc erneut verwenden kann.
Im folgenden Beispiel werden folgende Packages definiert: diverser_jahreszeitbedingter_schnulli, lueftung, licht, heizung, raumklima, muell:. Der Name des Packages ist frei wählbar (siehe erstes Beispiel):
Ich hoffe, das hilft, das Grundprinzip der Packages zu verstehen - für Leute, die tief in HA eingearbeitet sind, ist diese etwas andere 'Denke' vielleicht etwas gewöhnungsbedürftig. Ich nutze Packages nun seit längerer Zeit schon sehr intensiv, um die Standardbeschränkungen der configuration.yaml zu umgehen - würde sie nicht mehr missen wollen ...
/tom

Die Gründe für mich, Packages zu verwenden, sind vielfältig. Auf Anhieb fällt mir ein:
- Ich denke gern primär in 'Geräten' oder 'Systemen' statt in Entitätstypen - Fehlermeldungen kommen meist nicht als 'Die sensors: Domain ist kaputt', sondern als 'Heizung HK1 hat den Zustand: unavailable'. Da möchte ich schnell und gezielt das YAML finden können.
- Ich möchte das gesamte YAML gern zentral unterhalb eines '/conf' Verzeichnisses ablegen, um es schnell zu finden und auch schnell sichern zu können. Ohne großes Nachdenken, was denn vielleicht sonst noch irgendwo rumlungert.
- Oft brauche ich auch einfach schnell mal ein paar 'Spielentitäten', ohne dabei die eigentlich Config und mein laufendes YAML anfassen zu wollen. Dann baue ich mir eben schnell mit ein paar Zeilen ein neues Package mit Verweis auf neue Dateien, und los geht es. Mein laufendes HA-YAML bleibt dann unverändert.
Code:
default_config: homeassistant: name: "Zu Hause" automation: !include automations.yaml script: !include scripts.yaml scene: !include scenes.yaml sensor: !include sensors.yaml rest: !include rests.yaml template: !include templates.yaml media_player: !include media_players.yaml input_select: !include input_selects.yaml input_number: !include input_numbers.yaml input_text: !include input_texts.yaml
Im folgenden Beispiel werden folgende Packages definiert: diverser_jahreszeitbedingter_schnulli, lueftung, licht, heizung, raumklima, muell:. Der Name des Packages ist frei wählbar (siehe erstes Beispiel):
Code:
default_config:
homeassistant:
name: "Zu Hause"
packages: # die Namen der Packages sind frei wählbar - sind nur Platzhalter!
# Entitäten direkt hier im Package definieren (unschön, bläht configuration.yaml auf):
diverser_jahreszeitbedingter_schnulli:
sensor:
- day_of_the_month
[...]
binary_sensor:
- is_it_xmas_already
[...]
template:
- sensor:
- name: show_happy_xmas_in_december
[...]
# alles eingerückt in einer Datei: - sensors:, - binary_sensors: etc
lueftung: !include conf/lueftung/lueftung.yaml
# mehrere Dateien - Auto-Import der gesamten Verzeichnisstruktur
licht: !include_dir_merge_list conf/licht/
# mehrere Dateien: sensors:, binary_sensors: etc manuell
heizung:
input_number: !include conf/heizung/input_numbers.yaml
input_datetime: !include conf/heizung/input_datetime.yaml
automation: !include conf/heizung/automations.yaml
template: !include conf/heizung/templates.yaml
sensor: !include conf/heizung/statistics.yaml
# mehrere Dateien: verschiedene Sensor-Dateien (nur bei einigen Domains möglich)
raumklima:
sensor: !include conf/raumklima/sensors_allgemein.yaml
sensor eg: !include conf/raumklima/sensors_eg.yaml
sensor og: !include conf/raumklima/sensors_og.yaml
sensor dg: !include conf/raumklima/sensors_dg.yaml
# das hier kennen wahrscheinlich viele
muell:
waste_collection_schedule: !include conf/muell/muellkalender.yaml
sensor waste_collection: !include conf/muell/muelltemplates.yaml
# ... und nur noch ganz kleiner Grabbelkram verbleibt hier in den Haupt-/Root-Einträgen:
automation: !include conf/automations.yaml
script: !include conf/scripts.yaml
scene: !include conf/scenes.yaml
sensor: !include conf/sensors.yaml
rest: !include conf/rests.yaml
template: !include conf/templates.yaml
media_player: !include conf/media_players.yaml
input_select: !include conf/input_selects.yaml
input_number: !include conf/input_numbers.yaml
input_text: !include conf/input_texts.yaml
/tom


Kommentar