Альтернатива HACS. Загружаем или обновляем интеграции автоматически
Это легкая альтернатива HACS и данная интеграция Updater позволит загрузить необходимую интеграцию или обновить установленную интеграцию, которые указаны в файлике updater.txt
- Создаем в
configuration.yaml
или, если у вас настроен packages, то просто закидываем в packages. Про удобную конфигурацию читаем здесь
switch:
- platform: command_line
switches:
updater:
friendly_name: Update integration
command_on: python /etc/homeassistant/updater.py update
command_off: python /etc/homeassistant/updater.py
command_state: |
python -B -c "exec('''try: import updater\nexcept ModuleNotFoundError: from urllib.request import urlretrieve; urlretrieve('https://raw.github.com/AlexxIT/Updater/master/updater.py', '/etc/homeassistant/updater.py'); import updater'''); updater.run(interval=3600)"
command_timeout: 1800
- Файлик
updater.txt
создать вручную и закинуть в/etc/homeassistant/
- В файлик добавляем ссылки на интеграции, которые желаем загрузить в папку
custom_components
или обновить установленные интеграции в папкеcustom_components
. Добавляем ссылки с github на нужные нам интеграции, которые будут скачаны и загружены в папкуcustom_components
или обновлены до последней версии
Пример файлика updater.txt
https://github.com/AlexxIT/YandexStation
https://github.com/dmitry-k/yandex_smart_home
https://github.com/dext0r/ha-yandex-station-intents
https://github.com/custom-components/ble_monitor
- Перезагружаем Home Assistant
- Выводим в lovelace выключатель и включаем его
- Если все сделано правильно, то в папке
custom_components
должны появиться интеграции, которые мы указали в файликеupdater.txt
и в/etc/homeassistant/
появятся два файлика + созданный нами файликupdater.txt
. В итоге должно быть 3 файлика
- updater.json
- updater.py
- updater.txt
Сенсор
При желании можно вывести сенсор установленной версии пользовательской интеграции. Для этого мы будем использовать интеграцию File. Для работы нам необходимо добавить внешний путь /etc/homeassistant/
в исключение
В configuration.yaml
добавляем строку
homeassistant:
allowlist_external_dirs:
- /etc/homeassistant
Cоздаем сенсор для каждой интеграции, который, либо прописываем в configuration.yaml
, либо закидываем в packages. Сенсор будет считывать с файлика version.txt
версию интеграции, который создает интеграция Updater for Home Assistant при запуске. Важно указывать полный путь к файлику version.txt
.
Важно! Указывать нужно путь к установленным интеграциям и в папке с интеграции должен быть файлик
version.txt
, создаем его сами и он может быть совершенно пустым. Но если этого не сделать, то при проверке конфигурации в Home Assistant получим такую ошибку
Invalid config for [sensor.file]: not a file for dictionary value @ data[‘file_path’]. Got ‘/etc/homeassistant/custom_components/yandex_smart_home/version.txt’. (See ?, line ?).
Пример сенсора для интеграции Yandex Station
sensor:
- name: "Integration Yandex Station"
platform: file
file_path: /etc/homeassistant/custom_components/yandex_station/version.txt
Пример сенсора для интеграции Yandex Smart Home
sensor:
- name: "Integration Yandex Smart Home"
platform: file
file_path: /etc/homeassistant/custom_components/yandex_smart_home/version.txt
Пример сенсора для интеграции Yandex Station Intents
sensor:
- name: "Integration Yandex Station Intents"
platform: file
file_path: /etc/homeassistant/custom_components/yandex_station_intents/version.txt
Пример сенсора для интеграции Passive BLE Monitor
sensor:
- name: "Integration Passive BLE Monitor"
platform: file
file_path: /etc/homeassistant/custom_components/ble_monitor/version.txt
Я создал один файлик updating_custom_components.yaml
и добавил в него выключатель для загрузки\обновления интеграции и сенсоры
switch:
- platform: command_line
switches:
updater:
friendly_name: Updater
command_on: python /etc/homeassistant/updater.py update # run updates process
command_off: python /etc/homeassistant/updater.py # force reload witout timeout
command_state: |
python -B -c "exec('''try: import updater\nexcept ModuleNotFoundError: from urllib.request import urlretrieve; urlretrieve('https://raw.github.com/AlexxIT/Updater/master/updater.py', '/etc/homeassistant/updater.py'); import updater'''); updater.run(interval=3600)"
command_timeout: 1800 # this is timeout, not update interval!
sensor:
- name: "Integration Yandex Station"
platform: file
file_path: /etc/homeassistant/custom_components/yandex_station/version.txt
- name: "Integration Yandex Smart Home"
platform: file
file_path: /etc/homeassistant/custom_components/yandex_smart_home/version.txt
- name: "Integration Yandex Station Intents"
platform: file
file_path: /etc/homeassistant/custom_components/yandex_station_intents/version.txt
- name: "Integration Passive BLE Monitor"
platform: file
file_path: /etc/homeassistant/custom_components/ble_monitor/version.txt