24.01.2024: Среда оптимизации

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

Вчера я ещё мог списать этот глюк на случайность или на магнитную бурю, тем более, что таковая была, но сегодня могу думать только в сторону кривого софта или оборудования.

И да, коробочка с HA под подобные издевательства изначально не была приспособлена. Но с другой стороны, ей-то не всё ли равно какой софт крутить на борту? Тем более, что у неё нет ни кнопки выключения, ни ресета, что как бы намекает на безотказность. Или нет?

Нужен вотчдог! Мне не хочется просыпаться в потёмках.

Начнём решать вопросы по порядку.

Первым делом, нужно рестартануть сервер. Сделано. Работает.

А ещё, придумать под это дело адекватную кнопку ручного перезапуска. Или разобрать корпус и отыскать таковую на плате. Ну а вдруг?

Затем, избавиться от сообщения о необходимости обновить прошивку в единственном пока тестовом ESP-устройстве.

Это заготовка под мониторинг счётчика воды.

Раз обновление, в этот раз, никак не идёт «по воздуху», то закинул обновлённую прошивку через флешер.

И это тоже неприятный звоночек. Предполагалась производить прошивку подобных устройств исключительно по Wi-Fi. Однако, последние события показали, что на firmware тоже выходят обновления, и эти обновления, иногда, прошиться таким способом тупо не могут. А значит что? А значит, придётся тащить устройство к рабочему столу, втыкать USB, прошивать флешером.

Из этого следует два момента.

  • Устройства должны быть мобильными. Т.е. их нельзя прикручивать к стене намертво.
  • Разъём USB должен быть доступен. Т.е. его нельзя заделывать корпусом, выпаивать из контроллера и т.п.

Теперь к вопросу постоянных зависаний HA-сервера (на базе RK3318).

«Покурив форум» 4pda.to, обнаружил, что с подобным сталкиваются и другие пользователи приставки. А причина в блоке питания.

Вытащил из закромов пятивольтовый питальник на 5V 1.3A (от какого-то давным-давно издохшего роутера). Напруга почти вдвое меньше чем на штатном блоке питания, но попробую его.

Коробочка запустилась. Повторная перезагрузка прошла успешно.

Ждём до выходных. Если перестанет отрубаться, будем считать что «шалость удалась». Однако, вотчдог всё-равно нужен.

Однако прежде чем ваять вотчдог для HA-сервера, нужно решить вопрос с возможным зависанием роутера. Чисто теоретически, для роутера можно сделать отдельный вотчдог.

Тут вроде всё просто. Берём ESP, зашиваем любой скетч, который подключается к Wi-Fi. Если Wi-Fi отрубился, то стартует счётчик. Через 5-15 минут счётчик доходит до нуля и подаёт напряжение на реле, разрывающее контакт питания роутера секунд на 15. Затем счётчик начинает работать заново.

Если перезагрузка роутера проходит штатно, то соединение восстановится через 1-2 минуты.

Но есть проблема. Дело в том, что иногда после перезагрузки роутер не подключается к интернет-провайдеру. Нужно заходить в панель управления и прожимать кнопочку.

Впрочем, работе локальной сети это не помешает. Проблемы возникнут только с доступом во внешку.

Так! Нужно раздобыть парочку контроллеров ESP32! Запитать попробую от питальников перезагружаемых устройств.

Свершилось! Штуковины для отжиманий наконец прогрузились.

Не знаю где они были. Перерыл всю кладовку несколько дней назад, но так и не нашёл. А сегодня глянул — стоят в кладовке на полке.

Ну вот и отлично. Вот и хорошо.

Релил мониторить температуру процессора на сервере Home Assistant.

Как это сделать?

Народ в сети советует поставить System Monitor, но у меня он «из коробки» показывает многозначительное ничего. После настройки — тоже.

Значит создаю сенсор в command_line. Для этого лезу в /homeassistant/configuration.yaml (с помощью File Editor). Код конфига вот такой.

command_line:
# ...........
# Тут идёт куча других устройств
# ...........
  # Температура процессора сервера HA
  - sensor:
      name: Температура процессора (HA)
      command: 'cat /sys/class/thermal/thermal_zone0/temp'
      unique_id: 'ha_cpu_temperature'
      unit_of_measurement: '°C'
      value_template: '{{ value | multiply(0.001) | round(1) }}'
      scan_interval: 90

Проверил.

Под armbian работает вполне уверенно.

Ура! Завершил первую 1000 приседаний в текущем году!

Осталось около 19 000.

Уфф! Устал. Нужно сделать перерыв.

Во время перерыва пью чай с шоколадкой и устанавливаю в Ариену новую кнопку.

У Ариены в корпусе пока нету ни одного кулера, а потому, после включения, непонятно активировалась она или нет.

Теперь видно.

Покупал здесь.

Вечер. Вышли с Эль прогуляться. На улице слякоть и лужи. Глубокие лужи! Поэтому не стали долго ходить. Закупились картошкой, зашли в пару пунктов выдачи да и убрались домой.

А дома засел прошивать ESP32. Но перед этим, заменил блок питание для HA-сервера. На этот раз на трёхамперный.

Предыдущий, на 1.3, похоже не тянет, но это не точно.

А потом я психанул, поскольку ESP упорно отказывалось прошиваться с помощью ESPHome. Вот прям наотрез.

Я уже и радиатор на процессоре переклеил на термопасту, и отверстия для вентиляции на корпусе насверлил, и временный кулер сверху поставил. И даже добился снижения температуры процессора градусов на 20. Вот только это вообще никак не помогло.

Ну а кончилось всё тем, что я угробил Home Assistant так, что не поднять.

Восстанавливаю Home Assistant. Точнее — накатываю заново.

В качестве инструкции — http://psenyukov.ru/установка-armbian-и-home-assistant-на-tv-box-h96-max-на-процессоре-rockchip-rk33/

Но тут с отличиями.

Во-первых, Armbian_23.08.0-trunk_Rk3318-box_bookworm_edge_6.3.13_minimal.img.xz у меня тупо отказался стартовать на моей коробочке, а потому накатил образ Armbian_22.08.0-trunk_Rk3318-box_bullseye_edge_5.18.10_minimal.img.xz , что лежал в https://users.armbian.com/jock/rk3318/

Во-вторых, во время накатываения образа подключил коробочку (rk3318) к монитору по HDMI и воткнул в неё клавиатуру. Пароль рута устанавливал именно так.

Пока это не сделал, по SSH не пускало, требовало пароль.

В-третьих, после того как всё накатил и вошёл по SSH, отправился в /etc/apt/sources.list.d/armbian.list (с помощью mc и его встроенного редактора), закомментировал единственную строку (значком в начале строки #) и добавил вот это.

deb https://mirror.yandex.ru/mirrors/armbian/apt/ bullseye main bullseye-utils bullseye-desktop

Иначе при апдейтах/апгрейдах армбиан лезет на зеркало, закрытое для РФ. Только после этого сделал sudo apt-get upgrade, а затем sudo apt-get update.

Раздел «Установка Home Assistant» прошёл как в инструкции.

Настроил Wi-Fi, отключил бисючее мигание диодов, установил блютус.

Всё как в инструкции.

IP для mac-адреса «коробочки» у меня уже был зарезервирован на роутере, так что здесь ничего нового делать не стал, а сразу зашёл по адресу http://ЗАРЕЗЕРВИРОВАННЫЙ_IP:8123 и стал ждать когда всё настроится.

Настраивалось не быстро. Включил музыку (непременно в наушниках, ибо на часах 0:30). Смотрю на лоадер.

Но вот ожидание закончилось.

Как жаль, что у меня нет резервной копии((

При попытке создать нового пользователя, HA вылетел.(( Пришлось ребутить коробочку.

Пользователей настроил. Ставлю дополнения.

1. File editor (чтобы добавлять кастомные устройства)
2. RPC Shutdown (чтобы включать/выключать компьютеры)
3. Samba share (чтобы выкачать бэкап)
4. Поставил HACS

Там не совсем однозначно, но вот эти команды помогут.

docker exec -it homeassistant bash
wget -O - https://get.hacs.xyz | bash -

А дальше нужно зайти в магазин интеграций и HACS там появятся.

Но это только если HA работает в контейнере докера, как у меня.

И ещё! Для установки понадобится учётка на гитхабе.

5. Через HACS ставлю Yandex.Station, Yandex Smart Home, Sonoff.
6. Ставлю дополнение ESPHome.

Настроил значки, добавил автоматизацию, чтобы утром включился свет. Компик придётся включать вручную.

Сделал бэкап всего того немногого, что удалось восстановить и пошёл спать. Третий час ночи на циферблате.

Ах да! Добавил ещё включалку/отключалку компьютера и засунул в автоматизацию.

В общем, оптимизм без бэкапа это хрень какая-то.

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

Введите имя

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

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

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

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