Здравия всем! В этой статье я расскажу про пакеты или packages в Home Assistant. Для чего они нужны и как ими пользоваться.
Введение
Что же такое пакеты Home Assistant? Пакеты — это объединение конфигурационных файлов различного типа в одном файле. К примеру в одном файле можно описать автоматизации, выключатели, светильники и т.д. После того как я настроил пакеты я перестроил свою конфигурацию так, что все объекты и автоматизации у меня только в пакетах. Я их группирую как мне хочется, и по комнатам и по назначению.
Настройка
У меня структура такая в корне папки там же где и конфигурационный файл configuration.yaml я создал папку packages, а уже в ней структура папок и файлов группируется как душе угодно! Для того чтобы Home Assistant умел работать с пакетами нужно добавить об этом в файл configuration.yaml. Делается это в секции homeassistant нужно добавить строку
# Пример configuration.yaml файла
homeassistant:
packages: !include_dir_merge_named packages
После перезагрузки конфигурации Home Assistant будет читать любой файл YAML и ждать, что там будет конфигурация для packages. При этом не важна глубина этого залегания файла внутри структуры папок.
Покажу какая структура у меня папке packages
packages
system
system_automation.yaml
system_sensors.yaml
...
rooms
kitchen
kitchen_cookerhood.yaml
kitchen_light.yaml
kitchen_sensors.yaml
...
Конфигурация
Теперь пора создать файл внутри папки packages. Пусть это будет файл с названием cabinet_light.yaml. Каждый файл пакета должен начинаться с уникальной секции. Я для этого использую название файла. Файлы стараюсь называть понятно. Сами же объекты находятся внутри своих секций. Давайте создадим в одном файле парочку различных структур.
# пример файла cabinet_light.yaml
cabinet_light:
# Виртуальный переключатель
input_boolean:
cabinet_lamp_auto:
name: Кабинет - автоматика
icon: mdi:lightbulb-on
# Бинарный сенсор
binary_sensor:
- platform: tod
name: cabinet_day
after: "07:00"
before: "21:05"
# Светильник mqtt
mqtt:
light:
- name: cabinet_light
state_topic: "home/cabinet/switch1"
command_topic: "home/cabinet/switch1/set"
payload_on: "ON"
payload_off: "OFF"
#автоматизации
automation:
#Включение света в кабинете по расписанию
- alias: cabinet_light_on
initial_state: true
trigger:
- platform: state
entity_id: binary_sensor.cabinet_day
from: "off"
to: "on"
condition:
- condition: state
entity_id: input_boolean.cabinet_lamp_auto
state: "on"
action:
- service: light.turn_on
entity_id: light.cabinet_light
#Выключение света в кабинете по расписанию
- alias: cabinet_light_off
initial_state: true
trigger:
- platform: state
entity_id: binary_sensor.cabinet_day
from: "on"
to: "off"
condition:
- condition: state
entity_id: input_boolean.cabinet_lamp_auto
state: "on"
action:
- service: light.turn_off
entity_id: light.cabinet_light
Как видно из примера мы в одном файле описали все структуры которые нам были нужны, чтобы автоматизировать включение/выключение света в кабинете.
Перезагрузим конфигурацию Home Assistant и все наши новые объекты появятся в системе
Заключение
Пакеты в Home Assistant это очень мощная настройка конфигурации, позволяющая структурировать конфигурацию Home Assistant. После того как я ознакомился пакетами, я стал пользоваться только ими. Чтобы описать новый объект я просто создаю новый файл внутри папки packages и описываю нужные объекты там. После перезагрузки конфигурации они в системе. Тк структура внутри папки packages может быть любой, это очень удобно для сортировки объектов по комнатам.