Привет Пикабу!
В предыдущем посте я уже рассказал, как установить MQTT брокер Mosquitto на роутер Xiaomi Mi WiFi Router 3G, но судя по практически отсутствующей нагрузке брокера на процессор и ОЗУ роутера, эта задачка оказалась для него не серьёзной. Что ж, нагрузим его как следует и установим на него Debian в chroot среду, ну а в Debian уже установим "полноценную" систему "Умного дома" - Home Assistant Core :-))) Как она будет там работать (тормозить), это уже второй вопрос (см. ниже характеристики роутера) - мне же был интересен только сам процесс и факт запуска ;-)))
Напомню, что есть у меня в коллекции Wi-Fi роутер "Xiaomi Mi Wi-Fi Router 3G" с прошивкой от Padavan, который после покупки роутера MikroTik остался не у дел. Точнее не работает больше, как полноценный роутер, стоя на страже интернета, а выполняет свою функцию как дополнительная точка доступа Wi-Fi, маршрутизатор на 2-а порта и сетевое файловое хранилище с диском на 500 Гб. Есть у этого роутера такая замечательная штука, как Entware — это репозиторий (хранилище), которая позволяет "проводить много экспериментов с ним" )))
Сначала я решил "покурить тему" в сети интернет на предмет наличия у кого-либо опыта и мануалов, описанного у меня в посте "баловства", но каких-либо толковых гайдов на эту тему не нашёл. Встретил только на
4pda такое сообщение:
Но способ описанный по ссылке из этого сообщения, мне показался уж очень "замысловатым" и есть подозрение, что он уже устарел на текущий момент. Хотя если в Entware сейчас есть пакеты python 3.8 и выше, которые требуются для установки Home Assistant Core с декабря 2020 года, то способ тоже может быть рабочим. Я не проверял.
Итак, много слов - ближе к делу)))
Алгоритм (последовательность) установки на роутер Xiaomi Mi WiFi Router 3G операционной системы Debian в chroot среду, а затем системы "Умного дома" - Home Assistant Core, у нас такая:
Компилируем (собираем) скриптом PROMETHEUS самую свежую прошивку от Padavan. Я выбрал репозитарий Alxdm.
После прошивки и настройки роутера, развёртываем Entware на своём внешнем носителе. (Рекомендую использовать жесткий диск, ибо ресурс флеш-карт не большой. У меня флешка на 128 Гб прожила только три года).
Подключаемся через PuTTY по SSH к роутеру.
Для получения списка и обновления новых пактов, выполните:
# opkg update
# opkg upgrade
Запускаем скрипт установки службы Debian 8 на маршрутизаторы MIPS замечательного человека (нашего соотечественника) Александра Рыжова. Судя по всему он специализируется на Keenetic, но его скрипт замечательно отрабатывает и на Xiaomi Mi WiFi Router 3G. Среду Debian 8 - debian_clean.tgz устанавливающуюся в скрипте, собирал он сам и расположена она на его сетевом ресурсе. Если не доверяете, то можете собрать свою, например уже среду Debian 10 по его же инструкции. ;-)
Я не заморачивался и пошёл следующим простым путём:
Теперь у вас на роутере есть Debian 8 - радуйтесь и хвалитесь друзьям )))
Если что-то пошло в установленной системе Debian у вас нет так, то не переживайте - это легко поправимо - ваш роутер не пострадает от лёгких экспериментов )))
# cd /opt
# /opt/etc/init.d/S99debian stop
# rm -fr debian
# rm /opt/etc/init.d/S99debian
# sh install.sh
Теперь подключаемся через PuTTY по SSH к Debian:
IP - локальный адрес вашего роутера
Порт: 65022 (потом можете сменить)
Логин: root
Пароль: debian (потом можете сменить)
Обновим систему Debian::
Для получения списка новых пактов, выполните:
# apt-get update
Для выполнения обновления пакетов, выполните:
# apt-get upgrade
# apt-get install transmission-daemon
# echo 'transmission-daemon' >> /chroot-services.list
Последняя команда (в качестве примера) добавляет передачу в список служб Debian, которая запускается во время загрузки. transmission-daemon это имя сценария из /etc/init.d/<name>.
Переходим к установке Home Assistant Core.
Если вы это делаете сейчас, то надеюсь для эксперимента, как я, а не на полном серьёзе, ибо "Умный дом" на роутере, ну такое себе ; -)) Ресурсов хватит на мониторинг десятка датчиком и управления несколькими выключателями..., что-то серьёзное не получится или будет работать с жёсткими тормозами. Имейте это ввиду!
Устанавливаем необходимые нам пакеты для питона стандартным способом:
# apt-get install python3 python3-dev python3-venv python3-pip libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5
Проверяем версию python:
# python3 --version
Не порядок! Так дело не пойдёт, с декабря 2020 года для установки Home Assistant Core нужен python3.8 или версии порядком выше, устанавливаем его любым удобным вам способом, например:
Устанавливаем недостающие библиотеки:
# apt install build-essential libncurses5-dev libgdbm-dev libnss3-dev libsqlite3-dev libreadline-dev curl libbz2-dev
Ставим пакет wget:
# apt install wget
Скачиваем последую версию Python с официального сайта:
# wget https://www.python.org/ftp/python/3.9.1/Python-3.9.21.tgz
Распаковываем архив:
# tar xzf Python-3.9.1.tgz
Устанавливаем (собираем):
# cd Python-3.9.1
# ./configure --enable-optimizations
# make altinstall
Долго ждём завершения.... (~ 01:30 часа)
Здесь на пару часиков можно идти пить чай.... :-D
И ещё раз подумать - действительно ли вам это нужно...? Может просто купить "Raspberry Pi 4 b" или поставить "простенький сервер" для своего "Умного дома"? Кстати в качестве него может выступать например Nettop, как у меня:
Почитайте пока на эту тему мой пост "Установка Home Assistant Supervised в систему Kali Linux (Debian) на неттоп (домашний сервер), ноутбук, десктоп... или даже VirtualBox"
Если хотите просто протестировать систему, то можно поставить Home Assistant Core или Home Аssistant Supervised на бесплатный VPS - сервер от Oracle, вариантов, отличных от описанного в этом посте, в лучшую сторону - множество...
А тем временем роутер у меня стойко держал нагрузку:
И за один час + 25 минут у меня наконец собрался Python-3.9.1:
Устанавливаем Home Assistant Core:
# cd
Создаём пользователя homeassistant:
# useradd -rm homeassistant
Создадим папку homeassistant в папке srv:
# cd /srv
# mkdir homeassistant
и назначим её владельцем пользователя homeassistant:
# chown homeassistant:homeassistant homeassistant
Создание и изменение виртуальной среды (вводите лучше построчно):
# cd /srv/homeassistant
# python3.9 -m venv . (пробел и точка нужна)
# source bin/activate
Устанавливаем необходимый пакет Python:
# python3 -m pip install wheel
Устанавливаем Home Assistant Core:
# pip3 install homeassistant
Опять идём пить чай или кофе :-D
Где-то через час возвращаемся к терминалу и вводим последнюю команду, которая создаёт каталог конфигурации и установит все основные зависимости:
# hass
Ещё где-то через час... :-D :-D :-D пробуем зайти по адресу ipaddress:8123 (ipaddress вашего роутера) в браузере, где должна открыться такая страничка. Вводим свои данные (регистрируемся) и настраиваем/тестируем систему....
Проверяем, что у нас установилась свежая версия системы Home Assistant Core (http://ipaddress:8123/config/info):
Папка с конфигами лежит по пути - /opt/debian/root/.homeassistant
Можно открывать и редактировать, например через WinSCP
Закинем в конфиг несколько сенсоров для проверки работоспособности с рабочей системы Home Assistant:
Перезапустим Home Assistant и понаблюдаем за поведением ЦП и ОЗУ нашего роутера.
"Пациент скорее жив, чем мёртв" :-D
Ну что ж, оставим систему для экспериментов на недельку другую и посмотрим, как она там будет жить ))
В заключении несколько примечаний, которые могут пригодится в дальнейшем:
Для обновления Home Assistant (а они выходят регулярно) нужно ввести в терминале Debian эти команды:
# cd /srv/homeassistant
# source bin/activate
# python3 -m pip install --upgrade homeassistant
И набраться терпения на пару часиков :-D
После установки обновления и/или правки конфигов нужно перезапустить сервер, например из веб-интерфейса: Настройки → Сервер → Перезапустить
Если после перезапуска роутера у вас "не стартует Debian", то добавляем задержку в веб-интерфейсе роутера, следуя по пути: "Персонализация" - "Скрипты" - "Выполнить после полного запуска маршрутизатора", например 20 секунд:
sleep 20
/opt/etc/init.d/S99debian start
Спасибо Дмитрию за эту подсказку ;-)
Ну, и само собой, необходимо добавить Home Assistant в автозапуск.
Можно добавить по аналогии старта Debian:
sleep 20
chroot /opt/debian /srv/homeassistant/bin/hass -c "/root/.homeassistant"
На этом у меня В С Ё ;-)
Всем пока и "Бобра"! ;-)