По умолчанию свеже установленный Home Assistant встречает нас с таким вот содержимым configuration.yaml:
# Configure a default setup of Home Assistant (frontend, api, etc) default_config: # Text to speech tts: - platform: google_translate group: !include groups.yaml automation: !include automations.yaml script: !include scripts.yaml scene: !include scenes.yaml
В примерах готовых конфигов большинства пользователей можно встретить такие вот вещи:
sensor: !include_dir_merge_list includes/sensors binary_sensor: !include_dir_merge_list includes/bin_sensor switch: !include_dir_merge_list includes/switches climate: !include includes/climate.yaml mqtt_statestream: !include includes/mqtt_statestream.yaml input_number: !include includes/input_number.yaml input_select: !include includes/input_select.yaml media_player: !include includes/mplayer.yaml light: !include includes/light.yaml...
Все эти include, include_dir_merge_list, include_dir_merge_named и прочее могут взорвать мозг даже бывалому адепту Home Assistant. А новичка и подавно введут в ступор и будут причиной кучи ошибок.
Но есть более простой способ формировать свой конфиг:
default_config: automation: !include automations.yaml script: !include scripts.yaml scene: !include scenes.yaml homeassistant: packages: !include_dir_named conf
Добавив в configuration.yaml строки homeassistant/packages - вы можете больше никогда не открывать этот файл и не вносить в него изменения. Файлы automations.yaml, scripts.yaml и scenes.yaml - тоже не трогайте. Они нужны для настройки автоматизаций, скриптов и сцен из GUI.
Теперь создайте папку conf в директории с конфигами и пишите ваши конфиги там.
Например, хотите добавить управление колонкой от Яндекса - создайте в папке conf файл yandex_station.yaml с примерно таким содержимым:
yandex_station: username: myuser@yandex.ru password: mypass script: yandex_tts: alias: TTS на Станции sequence: - service: media_player.play_media entity_id: media_player.yandex_station # замените на вашу станцию data: media_content_id: Проверка TTS от Яндекс.Станции media_content_type: text yandex_play_url: alias: Проигрывание медиа по ссылке sequence: - service: media_player.play_media entity_id: media_player.yandex_station # замените на вашу станцию data: media_content_id: https://music.yandex.ru/album/2150009/track/19174962 media_content_type: xxx # тип не важен, но должен быть!
Хотите добавить Яндекс Алису в Телеграм - создайте файл telegram.yaml
telegram_bot: - platform: polling api_key: TELEGRAM_BOT_API_KEY # создайте своего Телеграм бота allowed_chat_ids: - TELEGRAM_USER_ID # укажите ID своего аккаунта notify: - name: telegram # можете указать своё имя notify platform: telegram chat_id: TELEGRAM_USER_ID # укажите ID своего аккаунта automation: - trigger: platform: event event_type: telegram_text action: service: media_player.play_media entity_id: media_player.yandex_station_mini # замените на вашу станцию data_template: media_content_id: "{{ trigger.event.data.text }}" media_content_type: question - trigger: platform: event event_type: yandex_station_response action: service: notify.telegram # поменяйте, если у вас своё имя notify data_template: message: "{{ trigger.event.data.text }}"
Для каких-то общесистемных вещей можно создать файл system.yaml
sensor: - platform: dnsip start_time: script: restart: alias: Restart Home Assistant sequence: - service: homeassistant.restart speedtestdotnet:
Надеюсь идея ясна. Вы группируете ваш конфиг не по выключателям, лампочкам и автоматизациям. А по тематикам. Чтоб было легче по нему ориентироваться и управлять.
У меня, к примеру, есть конфиги: camera, clear_grass, dev, google_assistant, hubs, light_and_switch, media, purifier, system, telegram, weather, yandex_smart_home.
Новые файлы в директории conf никуда прописывать не надо. Они автоматически подхватятся при перезагрузке.
Каждый файл в директории conf может иметь свои автоматизации, скрипты, сенсоры и прочее. Они все автоматически "склеятся" с автоматизациями и скриптами из GUI.
Как только вам интеграция не нужна - можно переименовать telegram.yaml в telegram.yaml.bak и перезапустить Home Assistant. Интеграция со всеми зависимостями и автоматизациями выключиться разом.
Как-то так можно сильно упросить себе жизнь...
Забавно, несколько дней назад начал конфиги переделывать/доделывать в соответствии с тематикой поста.
Особенно актуально, когда например используешь много однотипных устройств, которые необходимо обрабатывать - например, подсчитывать энергопотребление с розеток. Раньше надо было в несколько конфигов лезть, теперь же один конф скопипастил, далее имя устройства поменял массовой заменой - вуаля, всё готово.
Include использую по комнатам, к примеру в директориях "automation", "light", "sensor" и.т.д есть файлы bedroom.yaml, hallway.yaml main.yaml и.т.д. Но для чего нибудь замороченного, к примеру того же учета электроэнергии использую packages. Всё вместе и наглядно.
Уже некоторое время думаю, а зачем использовать этот HA со старообрядной настройкой? Есть же нормальные бесплатные варианты, тот же iobroker.
Здравствуйте. Хочу навести порядок и интересует пара моментов, т.к. недавно начал заниматься HA.
Например, как перекинуть такие параметры как:
Можно просто создать в папке conf файлы с такими же именами, как тут (
frontend,
lovelace) и прописать в них соответсвующие конфиги, или все эти конфиги достаточно будет прописать в /conf/system.yaml ?
lovelace нужно перестать настраивать через yaml. Это ещё одна причина кучи проблем и ошибок
Алексей, спасибо за ответ. Уже сам к этому выводу пришёл. GUI- наше всё)
Вопрос - а как нечто подобное сотворить с "customize.yaml"?
Объясню, почему возник такой вопрос. Дело в том, что в "новой" нотации записи шаблонных объектов (простых и бинарных сенсоров и ещё кое-каких объектов) отсутствует параметр "friendly_name", с помощью которого раньше (в "старой" нотации) можно было сразу же при создании сенсора задать ему красивое имя для отображения на карточке в Lovelace. Теперь же так делать нельзя - нужно "красивое имя" либо сразу задавать в качестве "name" (и если это имя русское, то система там создаст такой entity_id, что мы потом замучаемся его искать), либо задавать как "friendly_name", но не в основном файле, а в файле customize.yaml - то есть, отдельно от основного файла с конфигурацией сенсора. Ну, еще можно красивое имя прописать непосредственно в карточке Lovelace.
Понятное дело, что все перечисленные три способа - каждый по-своему - неудобны.
В связи с этим хотелось бы в качестве "обхода проблемы" иметь возможность дописывания "кастомизационной секции" прямо в тот же самый конфигурационный файл, где прописан сенсор. Желательно, в непосредственной близости от записи для этого сенсора. Ну, или на худой конец хотя бы в конце файла сразу для нескольких сенсоров.