Блог

Удобная настройка (конфигурация) Home Assistant

По умолчанию свеже установленный 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.

Например, как перекинуть такие параметры как:

homeassistant:
name: My Smart Home
latitude:
longitude:
elevation:
unit_system: metric
time_zone: Europe/Moscow
customize: !include includes/customize.yaml
packages: !include_dir_merge_named includes/packages

frontend:
themes: !include_dir_merge_named themes

lovelace:
mode: yaml
resources:
- url: /local/vacuum-card.js
type: module
- url: /local/custom_lovelace/xiaomi_vacuum_map_card/xiaomi-vacuum-map-card.js
type: module
- url: /hacsfiles/lovelace-xiaomi-vacuum-card/xiaomi-vacuum-card.js
type: module
- url: /local/community/mini-graph-card/mini-graph-card-bundle.js?v=0.10.0
type: module

Можно просто создать в папке conf файлы с такими же именами, как тут (

frontend, 

lovelace) и прописать в них соответсвующие конфиги, или все эти конфиги достаточно будет прописать в /conf/system.yaml ?

lovelace нужно перестать настраивать через yaml. Это ещё одна причина кучи проблем и ошибок

Алексей, спасибо за ответ. Уже сам к этому выводу пришёл. GUI- наше всё)

Вопрос - а как нечто подобное сотворить с "customize.yaml"? 

Объясню, почему возник такой вопрос. Дело в том, что в "новой" нотации записи шаблонных объектов (простых и бинарных сенсоров и ещё кое-каких объектов) отсутствует параметр "friendly_name", с помощью которого раньше (в "старой" нотации) можно было сразу же при создании сенсора задать ему красивое имя для отображения на карточке в Lovelace. Теперь же так делать нельзя - нужно "красивое имя" либо сразу задавать в качестве "name" (и если это имя русское, то система там создаст такой entity_id, что мы потом замучаемся его искать), либо задавать как "friendly_name", но не в основном файле, а в файле customize.yaml - то есть, отдельно от основного файла с конфигурацией сенсора. Ну, еще можно красивое имя прописать непосредственно в карточке Lovelace.

Понятное дело, что все перечисленные три способа - каждый по-своему - неудобны.

В связи с этим хотелось бы в качестве "обхода проблемы" иметь возможность дописывания "кастомизационной секции" прямо в тот же самый конфигурационный файл, где прописан сенсор. Желательно, в непосредственной близости от записи для этого сенсора. Ну, или на худой конец хотя бы в конце файла сразу для нескольких сенсоров.


Вернуться назад
Вернуться назад