Умный дом: различия между версиями
Владимир (обсуждение | вклад) |
Владимир (обсуждение | вклад) |
||
| (не показано 8 промежуточных версий этого же участника) | |||
| Строка 60: | Строка 60: | ||
=== Создание службы и автозапуск === | === Создание службы и автозапуск === | ||
Создать файл: | |||
nano /etc/systemd/system/home-assistant@homeassistant.service | |||
Добавить в него:<syntaxhighlight> | |||
[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 | |||
</syntaxhighlight>Перезапустить демон 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) === | === HACS (Home Assistant Community Store) === | ||
==== Простая установка: ==== | |||
Перейти в пользователя: | |||
sudo -u homeassistant -H -s | |||
Выполнить команду: | |||
wget -O - <nowiki>https://get.hacs.xyz</nowiki> | bash - | |||
Готово | |||
Теперь нужно в HA добавить эту интеграцию | |||
---- | |||
==== Запасной способ: ==== | |||
Если по какой то причине не уталось пройти по простому пути, то можно развернуть HACS с помощю '''github.''' | |||
'''[https://github.com/hacs/integration ссылка на github.com]''' | '''[https://github.com/hacs/integration ссылка на github.com]''' | ||
| Строка 79: | Строка 123: | ||
После этого перезагружаем сервер. | После этого перезагружаем сервер. | ||
---- | |||
=== 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 | |||
Вписать в него следующее:<syntaxhighlight lang="bash"> | |||
[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:/sbin:/bin" | |||
Type=simple | |||
User=%i | |||
WorkingDirectory=/home/%i/.homeassistant/esphome | |||
ExecStart=/srv/esphome/bin/esphome dashboard /home/%i/.homeassistant/esphome/ | |||
[Install] | |||
WantedBy=multi-user.target | |||
</syntaxhighlight>Перезапустить демон 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. | |||
Расположение и назначение контактов на плате:<gallery> | |||
Файл:Прошивка шлюза через UART.jpg|Результат подпайки UART | |||
Файл:Расположение основных контактов UART.png|Расположение основных контактов UART | |||
Файл:Расположение резервных контактов UART.jpg|Расположение резервных контактов UART | |||
Файл:Для важных переговоров.jpg|Оставил вариант для важных переговоров | |||
</gallery> | |||
---- | |||
=== Прошивка через UART === | |||
==== Подготовка ==== | |||
===== Bootloader ===== | |||
Скачать бутлодер [https://nc.mywolfram.ru/s/rRgyfXEY7wMdQyA Ссылка с облака] | |||
Выбрать лучше: 115200 | |||
Можно и более быстрый, зависит от качества платы. | |||
===== Прошивка ===== | |||
Скачать с облака [https://nc.mywolfram.ru/s/ciLHN6oYBTmdJwN версию 1.4.7_0160] | |||
Пока не разобрался можно ли использовать для этого кастомы [https://github.com/zvldz/mgl03_fw от сюда]. | |||
===== Программа для Windows ===== | |||
TeraTerm - скачать с [https://ttssh2.osdn.jp/index.html.en официального сайта] или с [https://nc.mywolfram.ru/s/RpxHS53ZpKcN87g облака]. | |||
Распаковать или установить в зависимости от куда взято. | |||
===== Скрипт для просто установки ===== | |||
[https://nc.mywolfram.ru/s/pskwpN89C9iKLxE Скачать с облака] | |||
---- | |||
==== Прошивка ==== | |||
Подключить UART модуль к ПК и запитать Шлюз от БП. ОС определит UART и назначит ему порт | |||
Запустить '''Tera Term''' и выбрать раздел '''Serial''', выбрав ранее определенный порт. | |||
Жмем ОК и отключаем БП от Шлюза. | |||
В '''Tera Term''' во вкладке Control выбираем Macro, выбираем наш скрипт [https://nc.mywolfram.ru/s/pskwpN89C9iKLxE скачанный с облака] | |||
Дальше OK и ОК | |||
Дальше в консоли будет просьба подключить питание. Подключаем БП к шлюзу | |||
Выбираем '''Bootloader''' и дожидаемся его прошивки | |||
Теперь выбираем прошивку, ждем завершения. | |||
----Всё готово, шлюз перезагрузится можно подключатся к нему с телефона через Mi аккаунт. | |||
=== Прошивка через Telnet === | |||
[https://github.com/zvldz/mgl03_fw/tree/main/firmware Следовать инструкции с гитхаб] (Возможно позже напишу самостоятельно) | |||
Текущая версия от 11:02, 22 октября 2022
Предисловие:
Решил я сделать умный дом. В квартире заложил свет из экосистемы 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 внутри системы 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:/sbin:/bin"
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
-
Расположение основных контактов UART
-
Расположение резервных контактов UART
-
Оставил вариант для важных переговоров
Прошивка через UART
Подготовка
Bootloader
Скачать бутлодер Ссылка с облака
Выбрать лучше: 115200
Можно и более быстрый, зависит от качества платы.
Прошивка
Скачать с облака версию 1.4.7_0160
Пока не разобрался можно ли использовать для этого кастомы от сюда.
Программа для Windows
TeraTerm - скачать с официального сайта или с облака.
Распаковать или установить в зависимости от куда взято.
Скрипт для просто установки
Прошивка
Подключить UART модуль к ПК и запитать Шлюз от БП. ОС определит UART и назначит ему порт
Запустить Tera Term и выбрать раздел Serial, выбрав ранее определенный порт.
Жмем ОК и отключаем БП от Шлюза.
В Tera Term во вкладке Control выбираем Macro, выбираем наш скрипт скачанный с облака
Дальше OK и ОК
Дальше в консоли будет просьба подключить питание. Подключаем БП к шлюзу
Выбираем Bootloader и дожидаемся его прошивки
Теперь выбираем прошивку, ждем завершения.
Всё готово, шлюз перезагрузится можно подключатся к нему с телефона через Mi аккаунт.
Прошивка через Telnet
Следовать инструкции с гитхаб (Возможно позже напишу самостоятельно)