Доработка скрипта резервного копирования

14 октября 2020, 20:09

В статье Простой скрипт сохранения резервной копии на флешку или удалённый сервер для HomeAssistant я описал пример создания скрипта резервного копирования, но в нём есть один существенный недостаток, после его выполнения неизвестно завершилось ли наше копирование успешно или же нет. Лёгкий гуглинг не дал результатов как можно выяснить результат выполнения команды аддоном, в документации к SSH & Web Terminal я тоже ничего подобного не нашёл, поэтому было решено задействовать для этих целей MQTT, в результате скрипт я привёл к следующему виду:

#!/bin/bash
date=`date " %F"`
echo $date
STORE_DAYS=3
SRC=/backup/
DST=/backup/remote/
# Новые переменные начало
MQTT_USER=mqtt # имя пользователя MQTT
MQTT_PASS=mqtt # пароль пользователя MQTT 
MQTT_HOST=192.168.1.1 # Адрес MQTT сервера
MQTT_TOPIC="backup/status" # Топик для публикации выполнения скрипта
# Новые переменные конец
rsync -a \
--delete \
--remove-source-files \
--exclude 'remote' \
$SRC $DST/Processing-$date \
&& cd $DST \
&& mv Processing-$date $date \
&& find . -type d -mtime  $STORE_DAYS -exec rm -rf {} \; \
> /dev/null
# Проверка статуса выполнения команды и публикация в топик
if [ $? -eq 0 ]  # Если предыдущая команда (rsync) выполнилась успешно (0) 
then
MQTT_MSG="true" # Сообщаем, что всё хорошо 
else
MQTT_MSG="false" # Сообщаем, что что-то пошло не по плану
fi
mosquitto_pub -u $MQTT_USER -P $MQTT_PASS -h $MQTT_HOST -t  $MQTT_TOPIC -m $MQTT_MSG # Публикуем сообщение в MQTT 

Затем нужно создать сенсор в Home Assistant

- platform: mqtt
  name: backup_state
  state_topic: backup/status

И доработать автоматизацию, чтобы уведомление в Telegram приходило в зависимости от статуса сенсора backup_state также после отправки уведомления, я меняю статус сенсора на unknown, это на случай того, что если вдруг что-то пойдёт не так, я об этом узнал.


- id: '1594305084220'
  alias: Бэкап на удалённый сервер
  description: ''
  trigger:
  - at: 01:50:00
    platform: time
  condition: []
  action:
  - data_template:
      name: hassio_{{now().strftime('%d.%m.%Y')}}
    service: hassio.snapshot_full
  - delay: 00:05:00
  - data:
      addon: a0d7b954_ssh
      input: bash /config/scripts/backup.sh
    service: hassio.addon_stdin
  - delay: 00:05:00
  - service: notify.telega
    data_template:
      message: > 
        {% if is_state('sensor.backup_state', 'true')%}  
        Резервное копирование выполнено
        {% elif is_state('sensor.backup_state', 'false')%}   
        ВНИМАНИЕ! Резервное копирование не выполнено 
        {% else %} 
        АХТУНГ! АХТУНГ! Что-то сломалось в резервном копировании, нужно вмешательство! 
        {%endif%}
  - service: mqtt.publish
    data:
      topic: backup/status
      payload: unknown

Пока делал это, меня посетила интересная мысль, что при помощи mosquitto_pub можно получать и статус домашнего компьютера на ОС Linux, а именно знать кто конкретно находится за компьютером (если несколько пользователей), знать активен ли сейчас пользователь и на этом настроить автоматизацию. Например у меня в "кабинете" есть датчик движения который включает свет, а вот от автоматического выключения пришлось отказаться, так как он не видит движения когда я нахожусь за компьютером. Изначально я хотел приладить какой-нибудь сонар или что-то подобное, но теперь это не нужно, достаточно просто знать активен ли пользователь за компьютером или же нет и на этом настроить выключение света. Скорее всего на Windows тоже можно провернуть что-то подобное. А может быть вы знаете какие-то другие решения? Поделитесь в комментариях.

PS Если кому-то кроме меня интересно отслеживание статуса пользователя через MQTT напишите об этом, будет повод написать статью :)



Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
К списку блогов

Похожие записи

12 сентября 2020, 20:51
Создание при помощи бесплатной программы Sweet Home 3D интерактивного плана помещения для Home Assistant.
13 февраля 2019, 22:00
Подключение радио на Xiaomi Gateway к Home Assistant c дальнейшим использованием в автоматизациях
16 июля 2020, 15:13
Удобная настройка Home Assistant с помощью packages.
19 апреля 2019, 20:53
Требуется ваше мнение!
06 февраля 2019, 12:02
Автоматизированное открытие/закрытие окна
04 апреля 2019, 12:45
Самое важное из апдейта Home Assistant 0.91-0.91.4 от 03.04.19.
21 марта 2019, 11:59
Самое важное из апдейта Home Assistant 0.9 от 20.03.19.
21 февраля 2019, 21:12
Самое важное из апдейта Home Assistant 0.88 от 20.02.19.
19 января 2019, 20:49
Делюсь новостями по проекту.