25.01.2024: Зачётный четверг

Кажется я словил депрессию. Такое… липкое, знобливое, мерзотное ощущение, словно душа скушала какую-то пакость и теперь её плохо.

Тем временем, сервер с Home Assistant («коробочка») пережил ночь и включил освещение утром. Не зря я его настраивал в третьем часу.

Но он ведь будет и дальше падать, как падал до этого? Или нет?

Вчера выяснил, что Home Assistant запускается на моей машине в нескольких docker-контейнерах. Самый висючий и бисючий как раз имеет имя «homeassistant». Иногда он просто исчезает из списка запущенных, а иногда в статусе пишется «Exited» и подниматься обратно он не собирается.

И как рестартовать контейнер «homeassistant» автоматически?

В сети описаны способы, например для случаев, когда home assistant установлен и прописан в docker-compose.yaml, но это не мой случай.

Кто-то предложил проверять запущен-ли контейнер и рестартовать его с помощью crontab раз в минуту. Но во-первых, как по мне, это слишком часто. Во-вторых, это никак не поможет от «Exited».

А что если… Погоди! Вот оно решение! Итак! Захожу под рутом (по SSH) в систему и ввожу команду:

crontab -e

Открывается файл с расписаниями для cron.

Вписываю туда вот такую строку.

*/30 * * * * docker ps --filter name=^homeassistant$ | grep -q Up || docker start homeassistant

Нажимаю Enter (чтобы после неё был отступ, иначе не сохранит), сохраняю. Можно ещё перезагрузиться.

Как это работает?

  1. Команда docker ps —filter name=^homeassistant$ фильтрует все запущенные контейнеры по имени и выводит только те, чьё имя «homeassistant».
  2. Команда grep -q Up ищет «Up» в этом выводе. «Up» должен быть в статусе контейнера, если он работает. Параметр -q означает, что результат не нужно показывать в консоли.
  3. Команда || docker start homeassistant запустит контейнер «homeassistant», если ничего не нашлось.

Соответственно, если нам нужно убедиться, что наш контейнер запущен и здоров, вводим в консоль docker ps —filter name=^homeassistant$ | grep Up и смотрим. Если контейнер вывелся, то всё ОК. Если пусто, то у нас проблемы.Надеюсь это поможет. А ещё надеюсь, что мне не придётся поступать так с остальными контейнерами.

Впрочем, их можно будет контролировать не кроном, а через автоматизацию. Ну или нет.

Тем не менее, восстанавливать уничтоженное вчера предстоит ещё долго. Ну а пока засчитаю себе маленькое достижение. Всё-таки новый для меня вариант автоматизации через cron и grep. Обычно я подобные вещи делал скриптами.

Восстанавливаю функцию проговаривания сообщений через колонку с Алисой.

До этого использовал способ проще, но он работать перестал. Пришлось вернуться к предыдущему.

service: media_player.play_media
entity_id: media_player.yandex_station_ID_КОЛОНКИ_В_ХОУМ_АССИСТЕНТЕ
data:
  media_content_id: "{{ trigger.data.mess }}"
  media_content_type: text

Проверил, работает.

Не работает проговаривание количества оставшихся приседаний. Они функционировали через свитч, но похерились на вчерашнем вайпе.

Обеденный перерыв. Налаживаю проговаривание приседаний и уведомления о старте HA в Телеграм.

С проговариванием всё как писал в одном из предыдущих постов. Там довольно сложная конструкция, упиханная в php-скрипт на одном сервере. Нужно лишь настроить говорилку (это делал выше) и создать кнопку без статуса.

command_line:
  # ********* тут куча свитчей, а уже дальше сенсоры
  # Счётчик приседаний
  - switch:
      name: 'Голосовой счётчик приседаний'
      icon: 'mdi:diving'
      command_on: '/usr/bin/curl -X GET https://сайт/путь_к_скрипту_генерации_фразы/squats/'
      command_off: '/usr/bin/curl -X GET https://сайт/путь_к_скрипту_генерации_фразы/squats/'
      unique_id: 'Squats_on_Day_http'

С Телеграмом ещё проще.

# Telegram
telegram_bot:
  - platform: polling
    api_key: АПИ_БОТА
    allowed_chat_ids:
      - ID_ЧАТА1
      - ID_ЧАТА2

notify:
  - name: jeeves
    platform: telegram
    chat_id: ID_ЧАТА1

Здесь делается служба, а затем вызывается в автоматизации как… служба. Имя службы, в данном случае, jeeves.

Таких notify можно сделать несколько, на разные чаты (читай — пользователи/каналы).

Обед продолжается, и раз сегодня 0°C, то полез чистить окна на потолке. Открыл, завалил снегом весь чердак, закрыл, убрал бардак.

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

А так-ли теперь (после манипуляций с кроном) коробочке нужен вотчдог?

С одной стороны вроде как и нет, но с другой, его можно приспособить ещё и для включения системы охлаждения. Скажем, если температура процессора скакнёт выше 55°C.

Вечер. Попробовал перепрошить ESP8266 с помощью ESPHome. Несколько раз! И всякий раз попытка завершалась ошибками.

С горя засел играть в Palworld и залип до глубокой ночи.

Напишите комментарий

Введите имя

Введите адрес электронной почты

Введите адрес вашего сайта

Нажмите эту кнопку, чтобы отправить комментарий.

Введите текст комментария