Умный дом

Материал из wolfram
Перейти к навигации Перейти к поиску

Предисловие:

Решил я сделать умный дом. В квартире заложил свет из экосистемы mi home. Основной задачей сделать контроль света и остального используя локальную сеть.

Остановился на системе умного дома Home Assistant, так как очень много по нему информации, довольно популярная система.

Я предполагал что с подключением света из экосистемы MI Home будет нативным. Но я ошибался, как обычно все не просто.

Так же задача состоит в том чтобы управление всеми системами выполнялось через Яндекс Алису. Фраза "Алиса, включи свет на кухне на 50 процентов" выполняло именно то, что сказано.

Начинается всё с сервера. Как обычно всё развёртываешься в гипервизоре Proxmox, конечно же как контейнер, на базе ubuntu 20.04. Как это сделать описано в данной статье.

apt update && apt upgrade -y && timedatectl set-timezone Asia/Omsk && apt install mc software-properties-common -y && timedatectl

Home Assistant

У данной системы есть несколько вариантов установки и работы. Основные: Контейнер, Операционная система, Версия "Core" - работает из под linux. Как раз последний вариант наш. Контейнеры и ОС - для слабоков.

Установка

Установим все компоненты одной командой:

apt-get install -y python3 python3-dev python3-venv python3-pip libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5 libturbojpeg tzdata

Создадим пользователя: homeassistant

useradd -rm homeassistant

Создадим папку: /srv/homeassistant

mkdir /srv/homeassistant

Сделаем владельцем homeassistant созданной папки:

chown homeassistant:homeassistant /srv/homeassistant

Переключаемся на пользователя homeassistant

sudo -u homeassistant -H -s

Переходим в папку /srv/homeassistant

cd /srv/homeassistant

Сделаем не понятную мне команду:

python3.8 -m venv .

И еще одну не понятную команду

source bin/activate

Установим модуль wheel в среде python, с непонятным мне параметром -m

python3 -m pip install wheel

Установим в среде python модуль homeassistant

pip3 install homeassistant

Выполним первый запуск homeassistant:

hass

Ожидаем первого запуска, это займёт некоторое время, опять же если сервер быстрый, то запустится быстро.

Можно подключиться к веб интерфейсу чтобы увидеть статус:

http://homeassistant.local:8123

Первый старт

- Попав в диалоговое окно первой настройки вводим: Имя (Любое имя, можно на русском), Имя пользователя (Я ввожу свой никнейм), Пароль (Ну тут всё понятно).

- В следующем диалоге придумываем "Название для вашего Home Assistant (Я назвал Wolfram Home), укажем своё местоположение (можно и соврать), Часовой пояс, Валюту (Это нужно если есть счетчики электроэнергии).

- После попросят поучаствовать в передаче аналитики (Как хочется, можно не ставить галочки)

- После этого откроется панель управления Home Assistant. В ней переедем в настройки пользователя и активируем расширенный режим.

Первый старт закончен.

Создание службы и автозапуск

Создать файл:

nano /etc/systemd/system/home-assistant@homeassistant.service

Добавить в него:

[Unit]
Description=Home Assistant
After=network-online.target

[Service]
Type=simple
User=%i
WorkingDirectory=/home/%i/.homeassistant
ExecStart=/srv/homeassistant/bin/hass -c "/home/%i/.homeassistant"
RestartForceExitStatus=100

[Install]
WantedBy=multi-user.target

Перезапустить демон systemctl

systemctl --system daemon-reload

Добавит службу home-assistant@homeassistant.service в автозапуск

systemctl enable home-assistant@homeassistant.service

Запустить службу home-assistant@homeassistant.service

systemctl start home-assistant@homeassistant.service

Узнать статус службы

systemctl status home-assistant@homeassistant.service

Остановить службу

systemctl stop home-assistant@homeassistant.service

Удалить службу из автозапуска

systemctl disable home-assistant@homeassistant.service

Перезапустить службу

systemctl restart home-assistant@homeassistant.service

HACS (Home Assistant Community Store)

Простая установка:

Перейти в пользователя:

sudo -u homeassistant -H -s

Выполнить команду:

wget -O - https://get.hacs.xyz | bash -

Готово

Теперь нужно в HA добавить эту интеграцию


Запасной способ:

Если по какой то причине не уталось пройти по простому пути, то можно развернуть HACS с помощю github.

ссылка на github.com

Это интеграция для установки других интеграций с github внутри системы Home Assistant. Первые попавшиеся мануалы по установке говорят делать это командой. По идеи это скачивается и распаковывается в нужную папку. По не известной мне причине, данные способы работают, но интеграция HACS постоянно падает в ошибку при установке каких либо модулей уже внутри Home Assistant. Потому я пошёл своим путём. Я просто выкачиваю репозиторий и перемещаю нужную папку в правильное место. Данное действие делается из под созданного нами ранее пользователя homeassistant. Начнём.

Установим git для возможности получить репозиторий с github:

apt install git -y

Перейдем в нашего пользователя homeassistant:

sudo -u homeassistant -H -s

Пойдем в его домашнюю папку:

cd ~

И выкачаем репозиторий с github:

git clone https://github.com/hacs/integration.git

Перемещаем из скачанной папки требуемые файлы:

mv ./integration/custom_components ./.homeassistant

Папку с github можно удалить.

После этого перезагружаем сервер.


ESPHOME

Установка по следующим шагам:

Создать папку esphome

sudo mkdir /home/homeassistant/.homeassistant/esphome

Дать права homeassistant на папку esphome

sudo chown homeassistant:homeassistant /home/homeassistant/.homeassistant/esphome

перейти в:

cd /srv

Создать папку esphome

sudo mkdir esphome

Дать права homeassistant созданой папке

sudo chown homeassistant:homeassistant esphome

Перейти в пользователя homeassistant

sudo -u homeassistant -H -s

Перейти в папку:

cd /srv/esphome

Непонятная команда

python3 -m venv .

Еще одна непонятная команда

source bin/activate

Установить какой то модуль

python3 -m pip install wheel

Устноватьб модуль esphome

pip3 install esphome

Утановать еще какие то модули

pip3 install tornado esptool

Выходим

exit

Создать файл процесса

sudo nano /etc/systemd/system/esphome@homeassistant.service

Вписать в него следующее:

[Unit]
Description=ESPHome Dashboard
After=home-assistant@homeassistant.service
Requires=home-assistant@homeassistant.service
[Service]
Environment="PATH=/srv/esphome/bin:/home/homeassistant/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sb>Type=simple
User=%i
WorkingDirectory=/home/%i/.homeassistant/esphome
ExecStart=/srv/esphome/bin/esphome dashboard /home/%i/.homeassistant/esphome/
[Install]
WantedBy=multi-user.target

Перезапустить демон systemctl

sudo systemctl --system daemon-reload

Добавит службу esphome@homeassistant.service в автозапуск

sudo systemctl enable esphome@homeassistant.service

Запустить службу esphome@homeassistant.service

sudo systemctl start esphome@homeassistant.service

Узнать статус службы

sudo systemctl status esphome@homeassistant.service

Прошивка Xiaomi Gateway 3 шлюза

Если всё запорото и установлена оригинальная прошивка в которой не открыт телнет - применяется разборка и UART.

Разобрать шлюз и подпалятся к порту UART.

Расположение и назначение контактов на плате:


Прошивка через UART

Подготовка

Bootloader

Скачать бутлодер Ссылка с облака

Выбрать лучше: 115200

Можно и более быстрый, зависит от качества платы.

Прошивка

Скачать с облака версию 1.4.7_0160

Пока не разобрался можно ли использовать для этого кастомы от сюда.

Программа для Windows

TeraTerm - скачать с официального сайта или с облака.

Распаковать или установить в зависимости от куда взято.

Скрипт для просто установки

Скачать с облака


Прошивка

Подключить UART модуль к ПК и запитать Шлюз от БП. ОС определит UART и назначит ему порт

Запустить Tera Term и выбрать раздел Serial, выбрав ранее определенный порт.

Жмем ОК и отключаем БП от Шлюза.

В Tera Term во вкладке Control выбираем Macro, выбираем наш скрипт скачанный с облака

Дальше OK и ОК

Дальше в консоли будет просьба подключить питание. Подключаем БП к шлюзу

Выбираем Bootloader и дожидаемся его прошивки

Теперь выбираем прошивку, ждем завершения.


Всё готово, шлюз перезагрузится можно подключатся к нему с телефона через Mi аккаунт.

Прошивка через Telnet

Следовать инструкции с гитхаб (Возможно позже напишу самостоятельно)