Home Assistant — это открытая платформа для умного дома, которая позволяет контролировать и автоматизировать различные устройства и сервисы. Один из самых популярных способов установить Home Assistant — это запустить его на домашнем роутере Keenetic. В этом практическом руководстве мы расскажем, как установить Home Assistant на роутер Keenetic и начать использовать его для управления умным домом.
Перед установкой Home Assistant на роутер Keenetic, вам понадобится следующее:
- Установленный и настроенный роутер Keenetic.
- Базовые знания работы с роутером и сетевыми протоколами.
- Доступ к интернету и аккаунт на сайте Keenetic.
Начнем с загрузки и установки Home Assistant. Войдите в систему управления вашим роутером Keenetic и перейдите на вкладку «Дополнительно». Затем выберите «Установка программ» и найдите Home Assistant в списке доступных программ. Нажмите на кнопку «Установить», чтобы запустить процесс установки.
Примечание: перед установкой Home Assistant убедитесь, что ваш роутер Keenetic поддерживает эту программу. Некоторые старые модели роутеров могут быть несовместимы с Home Assistant.
После завершения установки Home Assistant на роутер Keenetic, вам будет предоставлена возможность настроить его. Выберите язык, укажите имя пользователя и пароль для доступа к Home Assistant. Затем следуйте инструкциям на экране, чтобы настроить подключение к устройствам вашего умного дома.
Поздравляю! Теперь у вас установлен и настроен Home Assistant на роутере Keenetic. Вы можете начать добавлять устройства и настраивать автоматизацию в вашем умном доме. Удивительные возможности Home Assistant ждут вас!
Содержание
- Установка Home Assistant на роутер Keenetic
- Шаг 1: Подготовка
- Шаг 2: Установка Docker
- Шаг 3: Установка Home Assistant
- Шаг 4: Автозапуск Home Assistant
- Заключение
- Практическое руководство для установки Home Assistant на роутер Keenetic
- Шаг 1: Подготовка роутера Keenetic
- Шаг 2: Установка Home Assistant на роутер
- Шаг 3: Настройка Home Assistant
- Вывод
- Сайт Keenetic: доступ к дополнительным функциям через установку Home Assistant
Установка Home Assistant на роутер Keenetic
В этой статье мы расскажем, как установить Home Assistant на роутер Keenetic. Обратите внимание, что этот процесс может иметь некоторые особенности в зависимости от модели вашего роутера, поэтому убедитесь, что вы используете подходящую инструкцию.
Шаг 1: Подготовка
Перед установкой Home Assistant на роутер Keenetic вам понадобится:
- Установить на роутер прошивку с поддержкой Docker. Это можно сделать, следуя инструкциям производителя.
- Подключиться к роутеру по SSH. Для этого вам понадобится программа для работы с SSH, такая как PuTTY, и права администратора на роутере.
Шаг 2: Установка Docker
После подготовки вы можете приступить к установке Docker на роутер Keenetic. Для этого выполните следующие шаги:
- Откройте программу для работы с SSH и подключитесь к роутеру.
- Введите следующую команду, чтобы загрузить и установить Docker:
sudo su
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
- После установки Docker выполните команду:
sudo groupadd docker
sudo usermod -aG docker $USER
Теперь Docker установлен на вашем роутере Keenetic.
Шаг 3: Установка Home Assistant
Теперь, когда у вас есть Docker, вы можете установить Home Assistant на роутер Keenetic. Для этого выполните следующие шаги:
- Откройте программу для работы с SSH и подключитесь к роутеру.
- Введите следующую команду, чтобы загрузить и установить Home Assistant:
sudo docker run -d --name="homeassistant" -v /opt/homeassistant:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant:stable
После выполнения этой команды Home Assistant будет установлен на роутер Keenetic. Вы можете открыть веб-браузер и перейти по адресу http://<IP_адрес_роутера>:8123
, чтобы настроить и использовать Home Assistant.
Шаг 4: Автозапуск Home Assistant
Чтобы Home Assistant запускался автоматически при включении роутера, выполните следующие шаги:
- Откройте программу для работы с SSH и подключитесь к роутеру.
- Введите следующую команду, чтобы отредактировать файл запуска:
sudo nano /opt/etc/init.d/rc.unslung
- Добавьте следующую строку в файл перед строкой, которая начинается с
exit 0
:
/opt/homeassistant/run.sh start
- Нажмите клавиши
Ctrl+X
, затемY
иEnter
, чтобы сохранить изменения.
Теперь Home Assistant будет запускаться автоматически при включении роутера Keenetic.
Заключение
В этой статье мы рассмотрели, как установить Home Assistant на роутер Keenetic. Теперь у вас есть возможность контролировать и автоматизировать свои устройства через один интерфейс. Удачной работы с Home Assistant!
Практическое руководство для установки Home Assistant на роутер Keenetic
Шаг 1: Подготовка роутера Keenetic
Перед установкой Home Assistant на роутер необходимо убедиться, что на роутере установлена прошивка KeeneticOS. Если на роутере не установлена прошивка KeeneticOS, необходимо обновить прошивку до последней версии по инструкции, предоставленной на официальном сайте Keenetic.
Шаг 2: Установка Home Assistant на роутер
1. Зайдите в веб-интерфейс роутера Keenetic, введя в адресной строке браузера IP-адрес роутера.
2. Войдите в веб-интерфейс, используя логин и пароль администратора.
3. На странице настроек роутера найдите раздел «Плагины» или «Add-ons» и выберите его.
4. В разделе «Плагины» выберите опцию «Установить плагин» или «Install Add-on».
5. В поисковой строке введите «Home Assistant» и выберите плагин «Home Assistant» из списка результатов.
6. Нажмите на кнопку «Установить» или «Install» для установки плагина Home Assistant.
7. Дождитесь завершения процесса установки, который может занять некоторое время.
8. После завершения установки плагина Home Assistant, вы увидите значок Home Assistant на странице настроек роутера.
Шаг 3: Настройка Home Assistant
1. Нажмите на значок Home Assistant на странице настроек роутера, чтобы открыть веб-интерфейс Home Assistant.
2. Следуйте инструкциям на экране для настройки Home Assistant, включая создание учетной записи пользователя и настройку подключения к сетевым устройствам.
3. После завершения настройки Home Assistant, вы сможете управлять устройствами и создавать сценарии автоматизации через веб-интерфейс.
Вывод
Установка Home Assistant на роутер Keenetic позволяет получить удобный интерфейс для управления устройствами умного дома. Следуя данному практическому руководству, вы сможете настроить и использовать Home Assistant на роутере Keenetic без особых трудностей.
Сайт Keenetic: доступ к дополнительным функциям через установку Home Assistant
Сайт Keenetic предоставляет возможность установить Home Assistant на роутер и получить доступ к его дополнительным функциям. Это позволяет пользователям управлять умным домом, собирать и анализировать данные, настраивать автоматизацию и многое другое.
Установка Home Assistant на роутер Keenetic происходит в несколько простых шагов:
- Настройка роутера и установка необходимых пакетов.
- Загрузка и установка Home Assistant на роутер.
- Настройка пользовательского интерфейса и добавление устройств.
- Настройка автоматизации и интеграция с другими сервисами.
После установки Home Assistant пользователи получают доступ к множеству функций, которые позволяют управлять и контролировать устройства и сервисы:
- Управление умным домом: включение и выключение света, регулирование температуры, управление секционными воротами и многое другое.
- Мониторинг и анализ данных: получение информации о потребляемой энергии, состоянии устройств, температуре и влажности в помещении и т. д.
- Настройка автоматизации: создание различных сценариев, регулирование освещения в определенное время, включение отопления перед приходом домой и т. д.
- Интеграция с другими сервисами: возможность обмена данными с другими системами умного дома, интеграция с голосовыми помощниками и т. д.
Установка Home Assistant на роутер Keenetic предоставляет пользователям удобный и гибкий способ управления умным домом и обеспечивает возможность интеграции с другими сервисами и устройствами. Сайт Keenetic предоставляет необходимую информацию и руководства для установки и настройки Home Assistant, что делает процесс максимально простым и понятным.
Да, вам не послышалось, в этой статье будет установка Home Assistant на роутер Xiaomi, причём в операционную систему Debian, которую мы перед этим установим на маршрутизатор в chroot среду Entware )))
В предыдущем посте я уже рассказал, как установить 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 по его же инструкции. 😉
Я не заморачивался и пошёл следующим простым путём:
# cd /opt
# wget --no-check-certificate https://raw.githubusercontent.com/DontBeAPadavan/chroot-debian/master/install.sh
# sh install.sh
Теперь у вас на роутере есть 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 на роутер Xiaomi
Если вы это делаете сейчас, то надеюсь для эксперимента, как я, а не на полном серьёзе, ибо «Умный дом» на роутере, ну такое себе ; -)) Ресурсов хватит на мониторинг десятка датчиком и управления несколькими выключателями…, что-то серьёзное не получится или будет работать с жёсткими тормозами. Имейте это ввиду!
Устанавливаем необходимые нам пакеты для питона стандартным способом:
# 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 часа)
Здесь на пару часиков можно идти пить чай…. 😀
И ещё раз подумать — действительно ли вам это нужно…? Может просто купить «Raspberry Pi 4 b» или поставить «простенький сервер» для своего «Умного дома»? Кстати в качестве него может выступать например Nettop, как у меня:
Почитайте пока на эту тему мой пост Простая установка Home Assistant Supervised на Debian | Kali Linux на Неттоп (домашний сервер), Ноутбук, Десктоп… или даже 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
Опять идём пить чай или кофе 😀
Где-то через час возвращаемся к терминалу и вводим последнюю команду, которая создаёт каталог конфигурации и установит все основные зависимости:
# hass
Ещё где-то через час… 😀 😀 😀 пробуем зайти по адресу ipaddress:8123 (ipaddress вашего роутера) в браузере, где должна открыться такая страничка. Вводим свои данные (регистрируемся) и настраиваем/тестируем систему….
Проверяем, что у нас установилась свежая версия системы Home Assistant Core (http://ipaddress:8123/config/info):
Папка с конфигами лежит по пути — /opt/debian/root/.homeassistant
Можно открывать и редактировать, например через WinSCP
Закинем в конфиг несколько сенсоров для проверки работоспособности с рабочей системы Home Assistant:
Перезапустим Home Assistant и понаблюдаем за поведением ЦП и ОЗУ нашего роутера.
«Пациент скорее жив, чем мёртв» 😀
Ну что ж, оставим систему для экспериментов на недельку другую и посмотрим, как она там будет жить ))
В заключении несколько примечаний, которые могут пригодится в дальнейшем:
Для обновления Home Assistant (а они выходят регулярно) нужно ввести в терминале Debian эти команды:
# cd /srv/homeassistant
# source bin/activate
# python3 -m pip install --upgrade homeassistant
И набраться терпения на пару часиков 😀
После установки обновления и/или правки конфигов нужно перезапустить сервер, например из веб-интерфейса: Настройки → Сервер → Перезапустить
Если после перезапуска роутера у вас «не стартует 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"
На этом у меня Ф С Ё ! )))
Время на прочтение
11 мин
Количество просмотров 135K
Home Assistant — это популярная система умного дома, которая автоматизирует привычные бытовые процессы и работает на YAML файлах. В этой статье я расскажу, как настроить Home Assistant (далее HA), и что конкретно я использую в повседневной жизни. Это поможет вам избежать ошибок и быстрее продвинуться в изучении HA.
На Хабре уже есть статьи о HA (раз, два, три), но здесь я хочу рассказать об установке и настройке системы от начала до конца. От первого запуска сервера до полноценно работающей системы, которую потом можно улучшать и дорабатывать для себя.
Основной единицей в HA является интеграция — логика, которая описывает взаимодействие с умным устройством или внешним сервисом. Большая часть полезной нагрузки HA ориентировано на связку: умное устройство + интеграция или внешнее API + интеграция.
Набор моих интеграций
Железо, участвующее в статье:
- Микроконтроллер Esp8266, а также датчик температуры и влажности DHT11;
- Лампа Xiaomi Desk Lamp;
- Raspberry Pi 4B в 2GB версии, как сервер для HA (в дальнейшем буду ее называть малинкой);
- Xiaomi Router 4A .
Сервисы, которые будем использовать:
- OpenWeatherMap для получения погоды, температуры, влажности на улице и других метеопараметров;
- Telegram для создания системы уведомлений;
- Google drive для создания бекапов;
- SpeedTest для замеров скорости;
- А также OpenUV для замеров ультрафиолетового излучения и др.
Установка
Установка HA предельно проста:
- Записать образ HA на SD карточку (подробная инструкция с ссылками на скачивание для разных версий Raspberry Pi тут).
- Подключить питание и Ethernet к малинке
- Подождать несколько минут, пока система развернется в локальной сети на
<ip адрес малинки>:8123
.
Также можно установить на уже имеющуюся систему с помощью Docker-compose:
version: '3'
services:
homeassistant:
container_name: homeassistant
image: homeassistant/raspberrypi4-homeassistant:stable
volumes:
- /PATH_TO_YOUR_CONFIG:/config
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
network_mode: host
А теперь разберем несколько сценариев использования.
Отслеживание устройств
Начнем с отслеживания устройств, с помощью которого мы можем фиксировать вход и выход носителей из дома.
Я предлагаю 2 способа отслеживания:
- с помощью роутера (у меня в наличии Xiaomi Router Mi4A),
- с помощью GPS.
В системе доступно много производителей роутеров. Для старых и не перечисленных в списке моделей можно использовать nmap (более подробно тут).
Если установить на телефон официальное приложение, HA по умолчанию создаст интеграцию, и в системе появится дополнительное устройство, которое можно отследить.
С помощью Xiaomi Router Mi4A
Плюсы
- Не требует никаких действий на устройстве, отслеживает всех в локальной сети.
Минусы
- Если устройство не подключено к домашней сети, то устройство пропадает в пустоту, и на картах мы его не увидим.
- Иногда может сработать триггер выхода/входа из зоны, когда фактически девайс не покидает зону (можно попробовать решить расширением зоны).
С помощью GPS
Плюсы
- Точность работы сравнима с GPS трекером в телефоне.
- О телефоне можно узнать: процент заряда аккумулятора, заряжается устройство или нет, а также показатель состояния аккумулятора.
- Можно контролировать устройства (пользователей) не только на вход домой, но и на вход в любую из кастомных зон.
Минусы
- Активно тратит заряд.
- Требует подключение Интернета.
- Для точного трекинга необходимо настроить SSL, чтобы телефон мог отправлять данные о местоположении из вне локальной сети.
- Требует дополнительных прав доступа к GPS, возможна утечка данных третьей стороне в будущем.
- На бюджетных телефонах, которые имеют свойство неожиданно менять местоположение GPS, возможны проблемы с выпадением из зоны.
Создание системы отслеживания через роутер
Трекинг через локальную сеть роутера требует настройки, в отличие от GPS отслеживания. Два вида трекинга можно комбинировать для повышения точности. Ниже можно заметить, что в моем случае отслеживание через роутер работает лучше, чем через GPS. Зеленая зона значит, что телефон внутри зоны, красная — вне зоны.
Результаты работы отслеживания (сверху — роутер, снизу — GPS)
Редактирование конфигурационных файлов через VSCode
Можно подключиться через плагин SSH в VS Code, но получить доступ к проводнику в данный момент мне было удобнее. Поэтому, добавим сетевое расположение.
Нажмем обзор, найдем каталог config (мы в основном будем редактировать его) и выберем его как сетевую папку.
Дальше мы можем перейти в созданную папку и открыть ее через редактор.
router_device_tracker.yaml
platform: xiaomi
host: 192.168.31.1
password: !secret xiaomi_router_password
configuration.yaml
device_tracker: !include configs/router_device_tracker.yaml
После перезагрузки HA мы можем увидеть, что у нас появился новый глобальный объект device_tracker и наши устройства в нем.
Трекинг устройств через роутер
Освещение
Теперь, когда мы умеем отслеживать пользователя, мы можем включать и выключать определенные лампочки с учетом информации о его местоположении.
Для этого необходимо произвести действие по определенному событию. В этом нам помогут автоматизации.
automation/phone_tracker
- alias: Entering home
trigger:
platform: state
to: home
entity_id: device_tracker.mi9lite
action:
- service: light.turn_on
data:
entity_id: light.midesklamp1s_f86f
brightness: 35
color_temp: 350
- alias: Leaving home
trigger:
platform: state
to: not_home
entity_id: device_tracker.mi9lite
action:
- service: light.turn_off
entity_id: light.midesklamp1s_f86f
Теперь импортируем в наш основной файл весь каталог automation — так нам будет удобнее при написании следующих автоматизаций.
configuration.yaml
automation: !include_dir_merge_list automation
Пример работы:
https://www.youtube.com/watch?v=Sii4rBtXYVw
Для того, чтобы получить адаптивное освещение в зависимости от времени суток, нужно настроить цветовую температуру. Это удобно сделать внутри блока switch. Тут важно понимать, что пока данный switch включен, изменить параметры температуры будет невозможно (через interval
минус время_с_прошлого_обновления
лампа примет старые параметры).
Здесь вы найдете больше про динамическую цветовую температуру (flux в терминологии HA). А если вам интересна тема адаптивного освещения, на Хабре есть отличная статья по этому поводу.
configuration.yaml
switch:
- platform: flux
lights:
- light.midesklamp1s_f86f
name: Fluxer
start_time: '9:00'
stop_time: '0:00'
start_colortemp: 5000
sunset_colortemp: 3200
stop_colortemp: 2800
brightness: 25.5
disable_brightness_adjust: true # яркость будет константой
mode: mired # для не rgb ламп
transition: 30
interval: 30```
<!--</spoiler>-->
# Погода
По умолчанию в HA уже присутствует интеграция с погодным API от [Meteorologisk institutt](https://www.home-assistant.io/integrations/met/) (Норвежский метеорологический институт), но мы можем легко создать другую прямо через UI.
## Создание новой интеграции OpenWeatherMap
Переходим в config / Integration на UI , нажимаем на Add integration, и выбираем из списка OpenWeatherMap.
![](https://habrastorage.org/webt/wk/q5/gu/wkq5guripld3x0rlvuuvrh6us-8.png)
Вводим api_key, полученный на их сайте и нажимаем Submit. В итоге получим 19 сущностей, которые можем использовать для своих целей в автоматизациях.
![](https://habrastorage.org/webt/l1/dj/ps/l1djps20zhxaghdhbfrxzcm7tac.png)
*Сущности OWM (на скриншот попали не все 19)*
Таким же образом через UI можно создать интеграции к другим сервисам вроде SpeedTest, или OpenUV.
# Уведомления
Для настройки уведомлений можно использовать стандартные оповещения HA, отображаемые в боковом меню, уведомления на конкретных устройствах (нужно установленное приложение на девайсе), а также оповещения в сторонние сервисы.
![](https://habrastorage.org/webt/vw/lo/uk/vwloukneshhkvd6sklfjojnsvrc.png)
*persistent_notification*
Альтернативный способ уведомлений - это уведомления в сторонние сервисы, например Telegram. Для начала нужно создать бота, получить его api_key (при создании отправят ключ) и chat_id, который можно найти в ответе внутри `result.chat.id` после запроса на https://api.telegram.org/bot{api_key}/getUpdates .
<!--<spoiler title="Ответ с Telegram API приходит пустой">-->
Такое иногда случается по разным причинам.
В таких случаях подходит другой способ получения chat_id - написать @getmyid_bot боту и скопировать себе user ID.
<br>
![](https://habrastorage.org/webt/h_/em/a_/h_ema_sk04ldd4xsfkdzdthaml4.png)
<!--</spoiler>-->
Простейшая настройка Telegram бота:
<!--<spoiler title="notification/telegram_bot.yaml">-->
- platform: polling
api_key: !secret telegram_api
allowed_chat_ids:- !secret telegram_chat_id
Для того, чтобы не разглашать всем секретные данные, создадим еще secrets.yaml
. Туда мы сложим все данные, которые не должны попасть в публичный доступ. Для использования переменных из этого файла используем !secret.
Пример секретов:
secrets.yaml
telegram_api: %api_key%
telegram_chat_id: %chat_id%
configuration.yaml
telegram_bot: !include notification/telegram_bot.yaml
В итоге у нас имеется Telegram бот, готовый к отправке сообщений.
Утренние (или нет) погодные оповещения
Теперь, когда у нас есть настроенный сервис уведомлений и погодная интеграция, мы можем сделать утренние оповещения о погоде.
Создаем новый файл автоматизации, и начинаем писать логику.
Пишем переменную, которая будет отвечать за срабатывание оповещений только по будням. Если он true — то в выходные оповещений не будет.
input_boolean.yaml
alarmweekday:
name: Weekdays Only
initial: off
icon: mdi:calendar
И подключаем в основном конфиг файле.
configuration.yaml
input_boolean: !include input_boolean.yaml
automation/morning_alarm.yaml
- alias: 'Wake Me Up'
trigger:
platform: time
at: input_datetime.weather_notification
condition:
condition: or
conditions:
- condition: and
conditions:
- condition: state
entity_id: input_boolean.alarmweekday # оповещение в выходные
state: 'on'
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: and
conditions:
- condition: state
entity_id: input_boolean.alarmweekday
state: 'off'
action:
service: telegram_bot.send_message
data: # тут
message: "{% if now().strftime('%H')|int < 7 %}
Доброй ночи,
{% elif now().strftime('%H')|int < 12 %}
Доброе утро,
{% elif now().strftime('%H')|int < 18 %}
Хорошего дня,
{% else %}
Хорошего вечера,
{% endif %}
сейчас на улице {{states('sensor.openweathermap_temperature')}}°C. "
Пример работы:
https://www.youtube.com/watch?v=vSmSbSd_f-Q
Добавим blueprints
Теперь небольшое лирическое отступление в виде рассказа о написании blueprints на примере уведомлений.
В данном случае я бы перевел blueprints не как чертежи, а как шаблоны или заготовки. Их удобнее использовать, если нужно написать несколько похожих автоматизаций, а основную логику оставить нетронутой.
Например, можно упростить создание уведомлений о начинающихся осадках.
blueprints/precipitation_start.yaml
blueprint:
name: Fallout start notification
domain: automation
input: # аргументы шаблона
precipitation:
name: Precipitation level
selector:
entity:
domain: sensor # только для ui, поможет создать автоматизацию, предоставляя только сенсоры в выпадающем списке
message_start:
name: Telegram message
default: "No message"
trigger: # условия срабатывания
- platform: numeric_state
entity_id: !input precipitation
above: 0.9
for:
minutes: "{{ states('input_number.minimum_time_for_stable_value')|int }}"
action:
- service: telegram_bot.send_message
data:
message: !input message_start
“for” — это время, в котором должен оставаться выбранный параметр, чтобы сработал триггер на превышение уровня осадков.
input_number.yaml
minimum_time_for_stable_value:
name: Minimum time for stable value
initial: 1
min: 0
max: 59
step: 1
Теперь, когда есть blueprint, мы можем написать автоматизацию с меньшим количеством логики.
Создадим уведомления о начале осадков.
automation/rain_start.yaml
- alias: 'Rainy is started'
use_blueprint:
path: homeassistant/fallout_start_notification.yaml
input:
precipitation: sensor.openweathermap_rain
message_start: "Похоже, дождь начинается. Уже накапало {{states('sensor.openweathermap_rain')}}мм."
automation/snow_start.yaml
- alias: 'Snow is started'
use_blueprint:
path: homeassistant/fallout_start_notification.yaml
input:
precipitation: sensor.openweathermap_snow
message_start: "Пошел снежок. Уже навалило {{states('sensor.openweathermap_snow')}}мм."
Мы смогли вынести часть функциональности в отдельный файл. В подобных случаях, когда со временем появляется похожий код, можно выносить часть логики в отдельный файл.
Для большей полезности можно изменить шаблон и поменять action на повышение яркости для света в доме или закрытие штор.
Бэкапы
В бэкап попадает весь каталог /config
, а также все установленные расширения. С любого бекапа можно восстановить состояние системы на момент его создания.
Можно настроить создание резервных копий в Google Drive:
- Скопировать ссылку https://github.com/sabeechen/hassio-google-drive-backup и зайти в HA (также можно прочитать подробную инструкцию в ReadMe репозитория по ссылке)
- Добавить ссылку как кастомный репозиторий в Supervisor’е через UI.
- Открыть его (Open Web UI) и следовать инструкциям по аутентификации с Google Drive
После этих манипуляций мы получаем регулярное создание бекапов, важность которых сложно переоценить.
Интерфейс бекапов
ESP
NodeMCU
Так как умного градусника у меня нет, а температуру измерять хочется, воспользуемся ESP8266.
Сначала установим интеграцию ESPHome из официального списка интеграций.
Для каждого микроконтроллера, используемого в системе, требуется создать файл с подобным содержанием.
esphome/home_params.yaml
Проинициализируем контроллер.
esphome:
name: home_params
platform: ESP8266
board: nodemcuv2
logger:
api:
ota:
Подключимся к WiFi
wifi:
ssid: !secret xiaomi_router_ssid
password: !secret xiaomi_router_password
По умолчанию используются секреты только от ESPHome. А для того, чтобы подгрузить секреты из HA, можно создать отдельный файл, где мы заинклудим эти секреты.
Теперь подключим data pin (обычно это средняя нога) термометра к D2 порту, дадим на него питание и землю. Потом создаём сам термометр (DHT11) и две переменные, которые будем отслеживать в HA.
sensor:
- platform: dht
model: DHT11
pin: D2
temperature:
name: "Living Room Temperature"
humidity:
name: "Living Room Humidity"
update_interval: 60s
Дальше нужно скомпилировать прошивку и загрузить на контроллер. Если он подключен напрямую к Raspberry Pi, то мы увидим его на /dev/ttyUSB0 и сможем загрузить прошивку в первый раз. Все последующие обновления можно загружать по воздуху. А если в списке устройства не видно, то можно скачать прошивку и воспользоваться ESPHome-Flasher.
Загружаем прошивку.
Если все заработало, то в Developer Tools мы увидим созданные переменные.
Developer Tools
Немного оптимизации
По умолчанию в HA используется SQLite, и сброс данных на диск происходит часто (каждую секунду). Это может привести в скором времени к выходу из строя SD карточки на малинке (если сервер стоит на ней). Чтобы продлить срок службы карточки, скажем HA, что нужно записывать на диск раз в commit_interval
и исключить некоторые сущности, которые мы не хотим отслеживать на длинном временном промежутке (или вообще не хотим отслеживать).
configs/recorder.yaml
commit_interval: 1500
purge_keep_days: 7
exclude:
domains:
- updater
- automation
entity_globs:
- sensor.miwifi_router*
entities:
- sensor.date
- sensor.date_time
- sensor.time
- sensor.openweathermap_forecast_time
configuration.yaml
recorder: !include configs/recorder.yaml
Если мы хотим использовать СУБД, отличную от SQLite, то можно сделать один из следующих пунктов на выбор:
- Установить соответствующий аддон для перехода на MariaDB.
- Использовать существующую реляционную базу данных на удаленной машине, если указать строку для подключения в параметр
db_url
.
Отслеживание системных параметров
Чтобы отслеживать остаток свободной памяти, загруженность процессора или скорость Интернет соединения, мы можем добавить мониторинг показателей системы.
sensors/system_monitor.yaml
- platform: systemmonitor
resources:
- type: disk_use_percent
arg: /
- type: memory_free
- type: memory_use_percent
- type: processor_use
- type: processor_temperature
- type: disk_free
arg: /
При желании можем создать автоматизацию, которая при критических показателях будет отправлять уведомление о необходимости принятия мер.
Также мы можем посмотреть Uptime сервера.
sensors/uptime.yaml
- platform: uptime
name: Time Online
configuration.yaml
sensor: !include_dir_merge_list sensors
Вариант представления на UI
Заключение
Плюсы HA
- Простая установка и настройка, не требующая знания программирования.
- Большое коммьюнити — вопросов на форуме много, ответов тоже хватает.
- Огромное количество готовых интеграций со сторонними сервисами — скорее всего не придется писать свою интеграцию руками.
Минусы HA
- Достаточно сложно отлаживать систему. Если action можно запустить программно в обход триггера, то триггер тестировать уже сложнее.
В итоге мы создали несложную систему умного дома, которую каждый может расширить покупкой новых устройств или написанием своих продуманных и продвинутых автоматизаций. По этой ссылке можно найти полную версию моих автоматизаций дома.
Главный экран
Что дальше? Можно добавить HACS (сборник UI компонентов и даже целых интеграций от коммьюнити, пригодится при использовании Яндекс Станции) и установить несколько UI элементов. Можно интегрировать умную колонку или телевизор и включать их по определенному условию. Вариантов апгрейда бесконечное множество.
Успехов в автоматизации!
Литература
- Документация HA
Главная страница › Home Assistant › Удаленный доступ Home Assistant Keenetic KeenDNS
- Home Assistant
- 2690
- Home Assistant, KeenDNS, Keenetic
Если у вас есть современный роутер от Keenetic, но отсутствует статический IP адрес, то KeenDNS решит проблему удаленного доступа. С его помощью можно в несколько интуитивных нажатий включить поддержку DDNS прямо на роутере. В отличии от конкурирующего сервиса Duck DNS.
KeenDNS абсолютно бесплатный, а главное предоставляет защищенное SSL соединение. Даже если у ваш IP адрес не входит в «белый список», то никаких проблем в настройке не возникнет.
Подключение KeenDNS
Переходим в панель управление роутером. Если вы ничего не меняли, то адрес должен быть таким 192.168.1.1
Далее в меню находим пункт «Доменное имя». В зависимости от версии вашей прошивки интерфейс может быть немного другим. Не пугайтесь, основная настройка остается прежней.
Как видно на скриншоте выше «Доменное имя» уже зарегистрировано, но имеет не читаемый вид. Чтобы это исправить необходимо вписать уникальное имя и нажать на кнопку зарегистрировать.
После чего ждем, когда зарегистрируется SSL сертификат. Напротив доменного имени появится зеленая надпись «С сертификатом SSL».
Не забудьте поставить галочку напротив «Удаленный доступ к веб-конфигуратору». Иначе ваш роутер будет блокировать доступ к Home Assistant.
Настройка KeenDNS
Далее на этом же экране, где мы настраивали подключение, есть таблица «Доступ к веб-приложениям домашней сети».
Необходимо добавить наш сервер.
- Имя: home-assistant
- Доступ из интернета: Свободный доступ
- Устройство: Сервер с Home Assistant
- Протокол: HTTPS
- Порт TCP: 8123
После чего нажимаем на иконку копирования адреса и получаем
home-assistant.io-home-ru.keenetic.name
На этом этапе вы уже можете попробовать открыть этот адрес в браузере. Если все прошло без ошибок, то отобразится интерфейс Home Assistant.
Приложение Home Assistant
Ранее в статье по настройке удаленного доступа со статическим IP, мы рассказывали как подключить мобильное приложение. Для этого требуется только вписать адрес и порт, который выдал нам DDNS сервис.
- Переходим в «Настройки» -> «Мобильное приложение»
- Нажимаем на свою аватарку
- В самом конце находим «Внешний адрес»
- Вписываем туда «https://home-assistant.io-home-ru.keenetic.name/» (замените адрес на свой). Последним символом должен идти /
После ввода адреса отключитесь от вашей домашней сети WIFI, чтобы протестировать удаленный доступ. Если по какой-то причине приложение будет писать ошибку, то проверьте правильность ввода внешнего адреса.
Script to install HomeAssistant on Keenetic routers
HomeAssistant is an open source home automation platform. It is able to track and control thousands of smart devices and offer a platform for automating control. Details on https://github.com/home-assistant/home-assistant.
HA supports only Windows, Linux, Mac and Raspberry offically. While this project is to install the HomeAssistant on an OpenWRT OS. So that you can run a HomeAssistant on a router without having to run a 24-hours PC or Raspberry.
Hardware Requirements
Completely installation for HomeAssistant will take nearly 350 MB Flash and 130 MB RAM. More components require more storage.
I recommentd to use devices with more than 250 MB RAM and enable swap.
Software Requirements
Entware subsystem should be installed.
Installation
Install entware subsystem to your router. Connect through SSH.
Get into the project folder and start the installation. Make sure your device has connected to the Internet.
wget --no-check-certificate --content-disposition https://github.com/white777777/HomeAssistant-keenetic-entware/archive/master.zip
unzip HomeAssistant-keenetic-entware-master.zip
cd ./HomeAssistant-keenetic-entware-master/
./install.sh
It will take 20~30 minutes. After finished, it will print «HomeAssistant installation finished. Use command hass to start the HA.»
Start HomeAssistant firstly
After installation finished, use command hass
to start.
Note that firstly start will download and install some python modules. Make sure the network is connected while first starting. It will take about 20 minutes. If it stuck or print some error messages, don’t worry, interupt it and retry hass
usually works.
It has fully started when print messages
Starting Home Assistant
Timer:starting
Experience HomeAssistant
Connet to the S1300 through lan ports or wifi using your PC or Phone. Visit the address 192.168.8.1:8123
, that’s the web page for HomeAssistant.
Now you can link your smart devices together with HA.
Questions and discussion about HA on https://community.home-assistant.io/