Home assistant packages инструкция

Packages in Home Assistant provide a way to bundle configurations from multiple integrations. With packages, we have a way to include multiple integrations, or parts of integrations using any of the !include directives introduced in splitting the configuration.

Packages are configured under the core homeassistant/packages in the configuration and take the format of a package name (no spaces, all lower case) followed by a dictionary with the package configuration. For example, package pack_1 would be created as:

homeassistant:
  ...
  packages: 
    pack_1:
      ...package configuration here...

The package configuration can include: switch, light, automation, groups, or most other Home Assistant integrations including hardware platforms.

It can be specified inline or in a separate YAMLYAML is a human-readable data serialization language. It is used to store and transmit data in a structured format. In Home Assistant, YAML is used for configuration, for example in the configuration.yaml or automations.yaml files. [Learn more] file using !include.

Inline example, main configuration.yamlThe configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more]:

homeassistant:
  ...
  packages: 
    pack_1:
      switch:
        - platform: rest
          ...
      light:
        - platform: rpi
          ...

Include example, main configuration.yamlThe configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more]:

homeassistant:
  ...
  packages: 
    pack_1: !include my_package.yaml

The file my_package.yaml contains the “top-level” configuration:

switch:
  - platform: rest
    ...
light:
  - platform: rpi
    ...

There are some rules for packages that will be merged:

  1. Platform based integrations (light, switch, etc) can always be merged.

  2. Integrations where entities are identified by a key that will represent the entity_id ({key: config}) need to have unique ‘keys’ between packages and the main configuration file.

    For example if we have the following in the main configuration. You are not allowed to re-use “my_input” again for input_boolean in a package:

  3. Any integration that is not a platform [1], or dictionaries with Entity ID keys [2] can only be merged if its keys, except those for lists, are solely defined once.

Tip

Integrations inside packages can only specify platform entries using configuration style 1, where all the platforms are grouped under the integration name.

Create a packages folder

One way to organize packages is to create a folder named “packages” in your Home Assistant configuration directory. In the packages directory, you can store any number of packages in a YAMLYAML is a human-readable data serialization language. It is used to store and transmit data in a structured format. In Home Assistant, YAML is used for configuration, for example in the configuration.yaml or automations.yaml files. [Learn more] file. This entry in your configuration.yamlThe configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more] will load all YAMLYAML is a human-readable data serialization language. It is used to store and transmit data in a structured format. In Home Assistant, YAML is used for configuration, for example in the configuration.yaml or automations.yaml files. [Learn more]-files in this packages folder and its subfolders:

homeassistant:
  packages: !include_dir_named packages

The benefit of this approach is to pull all configurations required to integrate a system into one file—rather than keeping them spread across several files.
You can use other !include methods for packages; for example !include_dir_merge_named. However, unlike !include_dir_merge_named, the !include_dir_named method uses the same indentation as the ‘configuration.yaml’. This means that you can copy and paste elements from the config file. With !include_dir_named, the file name is used as the package name. File names must be unique.

With the !include_dir_merge_named method, the package name has to be included in the file. The configuration below then needs to be indented accordingly. This means you cannot directly copy and paste from the configuration file.

homeassistant:
  packages: !include_dir_merge_named packages/

and in packages/subsystem1/functionality1.yaml:

subsystem1_functionality1:
  input_boolean:
  ...
  binary_sensor:
  ...
  automation:

Customizing entities with packages

It is possible to customize entities within packages. Just create your customization entries under:

homeassistant:
  customize:

Important

If you are moving configuration to packages, auth_providers must stay within ‘configuration.yaml’. See the general documentation for Authentication Providers.

This is because Home Assistant processes the authentication provided early in the start-up process, even before packages are processed.

Help us improve our documentation

Suggest an edit to this page, or provide/view feedback for this page.

Edit

Provide feedback
View given feedback

С увеличением количества устройств в умном доме, возникает вопрос: как не потеряться в файле конфигурации? На помощь приходят Packages (пакеты). Они позволяют организовывать и группировать компоненты Home Assistant в один или несколько файлов.

Первые шаги

Для начала необходимо создать папку packages в корне директории, где храниться файл configuration.yaml!
Затем добавьте в configuration.yaml следующие строки, указанные ниже! (пример использования на картинке).

homeassistant: packages: !include_dir_named packages

Готово! Вам осталось придумать, как вы назовёте папки и файлы в которых будут храниться switch, light, sensor и другие компоненты.

К примеру, чтобы перенести все switch из configuration.yaml в отдельный файл, создайте в папке packages файл с названием — названиеФайла.yaml и поместите в него ваш код!

Стандартная структура файла

Для использования компонента, укажите название интеграции и поставьте двоеточие. После этого вы можете добавлять свои устройства! Также, можно кастомизировать устройства прямо в пакетах, пример ниже.

binary_sensor: — platform: workday name: tools_workday country: ‘RU’ — platform: rest name: hall_doorbell device_class: sound resource: http://0.0.0.0/sec/?pt=10&cmd=get scan_interval: 1 # Кастомизация устройств в пакетах (не обязательно) homeassistant: customize: binary_sensor.tools_workday: friendly_name: Рабочий день

Еще можно объединять несколько компонентов в один файл:

### Очиститель воздуха Philips ### # Настройки интеграции fan: platform: philips_airpurifier host: !secret host_philips_airpurifier # Внешний вид homeassistant: customize: sensor.philips_pre_filter: friendly_name: ‘Предв. фильтр’ # Датчики sensor: — platform: template sensors: philips_pre_filter: unit_of_measurement: ‘ч’ value_template: «{{ state_attr(‘fan.philips_airpurifier’, ‘pre_filter’) }}»

Примеры

В заключении, я покажу личный пример использования пакетов конфигурации…

В папке packages еще 4 подпапки для автоматизаций, компонентов, интеграций и сцен.

В папке components находится множество файлов для соответствующих компонентов.

Содержание файла component_cover.yaml (шторы)

  • Работа
  • Home Assistant
  • Home Assistant пакеты

Пакеты в Home Assistant это ну очень удобная штука. Можно например все скрипты, автоматизации сцены и прочее из одной комнаты прописать в одном пакете. Для подключения пишем в configuration.yaml

homeassistant:
  packages: !include_dir_merge_named myconfig/packages

Далее создаем файл (это просто пример из моего сервера) myconfig/packages/toilet.yaml

toilet:
    binary_sensor:
      - platform: template
        sensors:
          toilet_light_no_motion:
            friendly_name: "Свет в туалете без движения"
            delay_on:
                minutes: 15
            value_template: >-
              {{ is_state('binary_sensor.koridor_motion', 'off') 
              and is_state('switch.toilet_light', 'on') }}    
            icon_template: mdi:lightbulb-on-outline

    automation:
        - alias: Свет в туалете вкл авто
          trigger:
          - platform: state
            entity_id: binary_sensor.koridor_motion
            to: "on"
          action:
          - service: switch.turn_on
            entity_id: switch.toilet_light

        - alias: Свет в туалете выкл авто
          trigger:
            - platform: state
              entity_id: binary_sensor.koridor_motion
              to: 'off'
              for:
                minutes: 3
            - platform: state
              entity_id: binary_sensor.toilet_light_no_motion
              to: 'on'
          action:
          - service: switch.turn_off
            entity_id: switch.toilet_light

[ Править ]

As time goes by and more integrations are added to a Home Assistant server, you can see how the configuration files become more complicated and big, and even if you try to split them into different files according to the type of integration, each new device modifies several files and any update can be a real headache. It is necessary to give a twist to the organization of the YAML configuration files with the help of the Packages.

Packages

The idea behind the Packages is to group the integrations of “things” that are related to each other, being able in this case to repeat types of integration between the different packages (as opposed to other alternatives). In addition, you can take advantage of everything you have already learned, such as the !include definition.

In a simple way, you can distribute the integrations related to the same topic in one or several files and improve the maintenance and reading of these integrations. You can even share them with other people without having to make many changes.

You can also include customizations, scripts, automations…

Here is an example dividing different integrations by rooms using packages:

######################
# configuration.yaml #
######################

homeassistant:
  ...
  packages:
    - room1: !include room_1.yaml
    - room2: !include room_2.yaml
###############
# room_1.yaml #
###############

binary_sensor:
  - platform: template
    sensors:
      temp_room1:
        ...
light:
  - platform: hue
    ...
climate:
  - platform: generic_thermostat
    name: "Room Thermostat 1"
    ...
###############
# room_2.yaml #
###############

binary_sensor:
  - platform: template
    sensors:
      temp_room2:
        ...
light:
  - platform: hue
    ...
automation:
  - id: turnon_light
    ...

It should be noted that although Packages are grouped in a similar way to the Group integration, their use is relegated to the organization of the configuration. Home Assistant will only use the content found within each package.

Packages folder

You can even go a step further and create a folder in the root of your configuration called packages where you can save each of the YAML files you create, and instead of declaring them one by one in the configuration.yaml file, you can write the next line:

homeassistant:
  ...
  packages: !include_dir_named packages
...

An example of a configuration following this pattern can be seen in the repository with my server configuration.

Now you only must create each of the files and include all the integrations, automations, scripts… that you want to group.

Conclusion

As the number of configuration lines grows, it is time to reorganize everything a little. Packages offers a much more sustainable and scalable alternative.

This and other articles complement the documentation of the GitHub repository where all the configuration of my house is available.

В предыдущей статье я рассказал как установить Home Assistant на виртуальную машину в Synology NAS. Сейчас произведем первоначальную настройку Home Assistant с нуля.

Первый запуск Home Assistant

Для настройки умного дома нам нужно перейти по внутреннему ip адресу который отображается в окне виртуальной машины или по локальному url: http://homeassistant.local:8123 Откроется окно, жмем «Создать умный дом»

image 14

В первую очередь необходимо создать учетную запись: придумайте имя пользователя и сложный пароль (сохраните эти данные)

image 15

Далее выберите свое местоположение, удобнее воспользоваться поиском. Это необходимо для корректной работы умного дома. После выбора местоположения жмем «Далее»

image 16

Следующее окно предлагает поделиться Данными для статистики. Выбирайте пункты на свое усмотрение, я же все оставлю без изменений и нажму далее.

image 17

На следующем окне Home Assistant сообщает что нашел уже несколько устройств которые находятся в сети и предлагает завершить настройку — жмем «Готово»

image 18

На этом первоначальная настройка Home Assistant завершена. Откроется веб интерфейс пока еще «не умного дома» в котором уже отображается погода, уведомления, пункты меню и другая информация.

image 19

Первоначальная настройка Home Assistant

Для удобного взаимодействия с Home assistant рекомендую выполнить некоторые настройки.

Первым делом нам необходимо включить расширенный режим. Для этого переходим в настройки пользователя http://homeassistant.local:8123/profile и включаем «Расширенный режим»

image 20

Установка дополнений в Home Assistant

Далее переходим в магазин дополнений по ссылке http://homeassistant.local:8123/hassio/store либо через пункт «Настройки» в боковом меню и там ищем пункт «Дополнения»

Установка других аддонов в дальнейшем происходит по такому же принципу как описано ниже.

Так как у меня чистая установка «Home Assistant», то в разделе дополнения у меня ничего не отображается за исключением предложения скачать новые дополнения — кликаем по одной из кнопок расположенной на экране.

image 21

image 22

Мы попадем в магазин дополнений (хотя по ссылке, что я разместил выше попасть в магазин дополнений быстрее). Нам предлагается множество различных вариантов для установки, но не торопитесь устанавливать все что кажется необходимым.

Установка «File editor» в Home Assistant

Первым делом установим дополнение текстового редактора «File editor», кликаем по плашке.

image 23

В открывшемся окне жмем по кнопке «Установить».

image 24

После установки не запускаем его, а переходим во вкладку «Конфигурация» в верхнем меню.

image 25

Там отключаем пункт «Enforce Basepath» и из пункта «Git» удаляем плашку «.storage», что позволит в дальнейшем получать доступ к системным файлам, редактированию аддонов, бекапов и т.д. Не забываем сохранить изменения нажав соответствующую кнопку в этом окне.

image 26

После того как выполнили предыдущий пункт, возвращаемся на вкладку информация и активируем 2 переключателя:

  • Watchdog — делает перезапуск дополнения при сбоях и зависаниях.
  • Показ на боковой панели — позволит быстро открывать данное дополнение.

Нажимаем кнопку «запустить»

image 27

Установка «MariaDB» в Home Assistant

Второе дополнение которое установим, называется «MariaDB». Устанавливаем так же как и предыдущее дополнение, и перед запуском так же переходим в верхнюю вкладку «Конфигурация»

image 36

Там изменяем данные для локального использования на свое усмотрение, я же вставил следующие данные:

- username: hass
  password: hass

PHP

- username: hass
  database: homeassistant

PHP

Не забываем нажать кнопку «Сохранить» в правом нижнем углу этого блока. В итоге получилось вот так:

image 48

После чего возвращаемся на первую вкладку из верхнего меню, активируем «Watchdog» и нажимаем кнопку «Запустить«

image 38

Для замены стандартной базы данных нужно будет перейти в «File Editor» открыть файл который расположен в корневой директории. Полный путь до файла будет выглядеть так: /config/secrets.yaml

image 39

В этом файле необходимо будет добавить изменить и добавить пусть к новой базе данных, где «hass:hass» — это логин и пароль который я указывал в конфигурации аддона, если вы меняли на другие значения, то так же замените их и в этой строке.

db_link: mysql://hass:hass@core-mariadb/homeassistant?charset=utf8

PHP

В конечном варианте у меня получилось так (не забываем сохранить файл после внесения изменений):

image 40

Работа в File Editor

В левом меню появится кнопка «File Editor» — переходим в этот раздел. В открывшемся окне (левый верхний угол) видим иконку папки — кликаем на нее.

image 28

Откроется дополнительное меню, которое содержит файлы и папки. Выберите пункт «configuration.yaml»

image 29

По умолчанию в данном файле имеется несколько строк:

  • «default_config» — комплексная настройка стандартных функций системы.
  • «frontend» — интерфейс Home Assistant.
  • «automation» — путь в файл автоматизаций

Добавим несколько строк в данный файл:

homeassistant:
  packages: !include_dir_merge_named includes/packages

PHP

«packages» — заменяет основные интеграции: сенсоры, бинарные сенсоры, MQTT — для того чтобы не прописывать все тут по отдельности.

panel_custom:
  - name: server_state
    sidebar_title: 'Система'
    sidebar_icon: mdi:server
    js_url: /api/hassio/app/entrypoint.js
    url_path: 'hassio/system'
    embed_iframe: true
    require_admin: true
    config:
      ingress: core_configurator 

PHP

Этот блок добавит в главное меню Home Assistant новый раздел «Система», который будет вызывать странницу с системной информацией и журналом (эта страница была по умолчанию активирована в предыдущих версиях HA и доступна из меню настроек, но в новых версиях ее убрали)

После добавления нажимаем на иконку сохранить (в правом верхнем углу). Должно получиться вот так:

image 31

Для применения настроек необходимо в левом меню выбрать пункт «Панель разработчика». В первом блоке нажать кнопку «Перезапустить», а уже в открывшемся окне нажать «Перезапуск Home Assistant». Выйдет еще одно предупреждение — соглашаемся на перезапуск еще раз. После чего ждем завершения перезагрузки.

image 30

После применения настроек в главном меню появится раздел «Система». В нем отображаются актуальные данные по версии ядра и супервайзера, данные Хоста операционной системы, вывод ошибок операционной системы (если такие появятся). Возможность перезагрузки Ядра, Supervisor и Хоста. Так же отображается журнал событий.

image 32

Создание packages в Home Assistant

Для того чтобы не загромождать корневую директорию config, создадим первый packages (пакадж), который будет содержать в себе базовые системные сенсоры. До этого в конфигурации мы добавляли такую строчку: packages: «!include_dir_merge_named includes/packages» которая содержит путь и по этому сейчас необходимо создать новую папку по такому же пути и назвать ее «includes«. Для этого опять переходим в текстовый редактор и в корневой директории «config» создаем новую папку и даем ей название «includes«

image 33

По аналогии с предыдущим шагом теперь создаем папку «packages» внутри ранее созданной папки «includes»

image 34

Далее переходим в эту папку и создаем новый файл «system_sensors.yaml» который в дальнейшем будет содержать системные сенсоры.

image 35

Откроем, только что, созданный файл и первая строка в данном файле должна содержать уникальное имя, например назовем его так же как и название файла (без расширения .yaml) «system_sensors:» (без пробелов)

Далее создадим запись для интеграции «recorder», с помощью которой, будет осуществляться работа с базой данных «MariaDB» созданной ранее. Данная запись содержит:

  • db_url: — путь к базе данных(который мы ранее указывали в файле /config/secrets.yaml),
  • purge_keep_days: — количество дней для хранения записей
  • auto_purge: — автоматическое сжатие
    recorder:
      db_url: !secret db_link
      purge_keep_days: 10
      auto_purge: true

PHP

Ниже добавим сенсоры которые покажу чуть позже.

    sensor:    
    - platform: systemmonitor
      resources:
      - type: processor_use
      - type: disk_use_percent
        arg: /
      - type: memory_use_percent
      - type: last_boot
      - type: disk_free
        arg: /
      - type: processor_temperature

PHP

В итоге на этом этапе мой файл «system_sensors.yaml» выглядит как на скриншоте ниже (не забываем кнопку сохранить). В дальнейшем в этот файл можно будет добавлять и другие сенсоры.

image 41

Далее проверяем конфигурацию (если все сделали правильно, то проверка конфигурации не выдаст ошибок) и осуществляем перезагрузку Home Assistant, как делали это ранее.

image 42

После перезагрузки Home Assistant, на вкладке «Обзор» появится новый виджет который содержит информацию с добавленными ранее сенсорами: Свободное место на диске (ранее мы выделали 32 гигабайта) в гигабайтах и процентах, время последней загрузки Home Assistant на уровне хоста, процент занятой оперативной памяти и загрузка процессора в процентах.

image 43

Для отображения объема базы данных, необходимо добавить сенсор при помощи интеграции «SQL»
Для добавления интеграции, необходимо перейти в настройки и выбрать пункт «Устройства и службы»

image 44

Откроется окно, которое содержит в себе интеграции Home Assistant. Пока делаем вид, что не видим что обнаружены новые устройства, которые система предлагает нам настроить, на данном этапе нас интересует другое. На странице интеграций необходимо нажать на кнопку в правом нижнем углу «+ добавить интеграцию»

image 45

Откроется окно интеграций доступных для установки, в поисковой строке вводим «SQL» и после того как поиск завершиться кликаем по найденной интеграции с аналогичным названием.

image 46

Сразу откроется окно настроек интеграции, которое по умолчанию будет выглядеть так:

image 47

Нам необходимо изменить параметры заполнив соответствующие поля. В первом поле пишем «MariaDB». В поле столбец пишем «value».

В поле запрос — добавляем этот код:

SELECT table_schema "database", Round(Sum(data_length + index_length) / 1048576, 2) "value" FROM information_schema.tables WHERE table_schema="homeassistant" GROUP BY table_schema;

PHP

В поле единица измерения пишем «MB»

Другие поля я не трогаю и нажимаю кнопки «подтвердить» расположенную внизу текущего окна.

У меня получилось так:

image 37

Если все сделано правильно, то появится окно подтверждающее создание нового сенсора

image 49

Теперь мы можем видеть еще один сенсор во вкладке обзор. Он отображает объем базы данных «MariaDB». У меня данные появились не сразу, а только после перезагрузки Home Assistant.

image 50

На этом этапе первоначальная настройка умного дома на базе Home Assistant закончена. В следующих статьях установим магазин дополнений HACS и подключим Координатор «SONOFF ZB Dongle-E Zigbee 3.0 USB Dongle Plus E» для подключения к нему Zigbee устройств напрямую (в обход хаба AQARA).

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Винизоль спрей инструкция по применению
  • Программирование пульта nice flor s инструкция
  • Red ginseng для набора веса инструкция по применению
  • Церебролизин инструкция по применению уколы внутримышечно взрослым от чего
  • Линкас сироп детский инструкция по применению