В данной статье рассмотрена настройка создания автоматических резервных копий Home Assistant и сохранение их на облачное хранилище Google Drive. Крайне рекомендую сделать это сразу после установки системы, особенно если Вы используете MicroSD карточки для разворачивания системы, выход из строя которых просто вопрос времени.
Все, что нужно для решения данной задачи – установить и настроить расширение Home Assistant Google Drive Backup.
Установка расширения
- Открываем раздел Supervisor и переходим в Add-on Store. Далее нажимаем на троеточие справа вверху и выбираем Repositories.
- В появившееся окно добавляем следующий адрес https://github.com/sabeechen/hassio-google-drive-backup, нажимаем ADD и закрываем, нажав CLOSE.
- После добавления внизу страницы появится новый аддон. Для установки – нажимаем на него, кликаем на INSTALL и ждем несколько минут.
- После установки будут доступны 3 переключателя:
-
- автозапуск при загрузке;
- Watchdog, позволяющий автоматически перезапустить аддон при его краше;
- добавление аддона в сайдбар для быстрого доступа.
- Осталось привязать его к Google Drive. Для этого нажимаем START, далее OPEN WEB UI и AUTHENTICATE WITH GOOGLE DRIVE, после чего нас перебросит на страницу входа в Google Drive. Логинимся с предоставлением разрешений. На следующем окне копируем текст с нижнего окна, он может пригодиться, если при автоматической привязке выскочит ошибка и нажимаем SEND CREDENTIALS. Если выдало ошибку, то возвращаемся в аддон и вставляем скопированный ранее код. SAVE. Все готово.
Настройки резервного копирования
Чтобы перейти в настройки: в левом сайдбаре выбираем Snapshots и в открывшемся окне – Settings. Если Вы не выносили меню в сайдбар, то переходим в раздел с аддонами, заходим в Home Assistant Google Drive Backup, далее Open Web UI и оттуда уже в настройки.
Основные пункты, которые может потребоваться изменить:
- Количество снапшотов, которое необходимо хранить на сервере и на Google Drive. При превышении данного значения, самые старые будут удаляться.
- В какое время и как часто (в днях) создавать снапшоты.
- При желании все резервные копии можно сохранять в созданную вручную папку на Гугл Диске. Для этого включаем Manually specify the snapshot folder, нажимаем CHOOSE FOLDER, выбираем папку, копируем появившейся ниже ID и вставляем его в поле Snapshot Folder ID.
После завершения настройки нажимаем SAVE.
Создание карточки на главном экране
И последнее, что стоит сделать – создать карточку со всей информацией на главном экране. В первом уроке мы уже вынесли различную техническую информацию на главный экран, так что теперь туда можно добавить информацию о создаваемых бэкапах.
Добавление сенсоров
Первым делом создаем в папке sensor (про вынос в нее файлов было рассказано в прошлом уроке) новый файл и называем его, например, GoogleBackup.yaml. В нем мы создадим сенсоры на основе атрибутов sensor.snapshot_backup.
Открываем созданный GoogleBackup.yaml и прописываем в него следующий код:
- platform: template sensors: snapshots_in_google_drive: friendly_name: 'Резервных копий на Googe Drive' value_template: "{{ state_attr('sensor.snapshot_backup', 'snapshots_in_google_drive') }}" icon_template: mdi:folder-google-drive snapshots_in_ha: friendly_name: 'Резервных копий на сервере' value_template: "{{ state_attr('sensor.snapshot_backup', 'snapshots_in_home_assistant') }}" icon_template: mdi:home-assistant last_snapshot: friendly_name: 'Последняя резервная копия была создана' value_template: "{{ as_timestamp(state_attr('sensor.snapshot_backup', 'last_snapshot')) | timestamp_custom('%d.%m.%Y %H:%M') }}" icon_template: mdi:calendar-clock
Небольшие пояснения:
- Сначала мы задаем тип платформы – template, далее начинаем перечислять сенсоры (в примере их 3).
- Каждый сенсор начинается с имени. Оно может быть любое, только без заглавных букв, а вместо пробелов используем нижнее подчеркивание. После имени ставим двоеточие и прописываем атрибуты. Соблюдаем вложенность: после sensors: каждый сенсор должен начинаться со сдвигом на два пробела относительно sensors:, а все его атрибуты – со сдвигом на два пробела относительно имени сенсора.
- friendly_name: – задает имя, которое будет отображаться на главном экране. Можете написать любое.
- value_template: – значение создаваемого сенсора. Тут мы прописываем откуда ему брать данные. Вся информация есть в панели разработчика на вкладке “Состояния”:
- Разберем значение третьего сенсора:
-
- as_timestamp – конвертируем значение в UNIX timestamp (необходимо для выполнения следующего пункта).
- timestamp_custom – прописываем какая информация и в каком формате будет выводиться.
- Последняя строчка в атрибутах сенсора – его иконка.
При желании, на основе данных сенсоров можете создать и другие, например, сенсор занимаемого бэкапами места.
Правильность прописанных в value_template: значений можно проверить в редакторе шаблонов по пути: Панель разработчика – Шаблоны. Вставляем в окно код после двоеточия и получаем результат в окошке рядом:
Проверяем конфигурацию: Настройки – Сервер – Начать проверку. Если все ОК, то перезапускаем сервер и открываем панель разработчика. В ней должны появиться все созданные нами сенсоры.
Настройка интерфейса
Открываем ui-lovelace.yaml и создаем там карточку с сенсорами (или добавляем сенсоры в существующую карточку):
- type: entities show_header_toggle: false entities: - entity: sensor.last_snapshot - entity: sensor.snapshots_in_google_drive - entity: sensor.snapshots_in_ha
У меня не работает, по трем пунктом пишет (неизвестно)
до восстановления бэкапа все работало, а сейчас не работает эти три функции, куда копать как чинить без понятия
Три пункта, это кол-во бекапов и время последнего? Если зайти в «Панель разработчика» и найти там sensor.snapshot_backup, у него есть данные значения в атрибутах?
sensor.snapshot_backup пуст в панели разработчика, атрибутов нет
Название сенсора поменялось, актуальный код для GoogleBackup.yaml:
— platform: template
sensors:
snapshots_in_google_drive:
friendly_name: ‘Резервных копий на Googe Drive’
value_template: «{{ state_attr(‘sensor.backup_state’, ‘backups_in_google_drive’) }}»
icon_template: mdi:folder-google-drive
snapshots_in_ha:
friendly_name: ‘Резервных копий на сервере’
value_template: «{{ state_attr(‘sensor.backup_state’, ‘backups_in_home_assistant’) }}»
icon_template: mdi:home-assistant
last_snapshot:
friendly_name: ‘Последняя резервная копия была создана’
value_template: «{{ as_timestamp(state_attr(‘sensor.backup_state’, ‘last_backup’)) | timestamp_custom(‘%d.%m.%Y %H:%M’) }}»
icon_template: mdi:calendar-clock