- Настройка удаленного доступа в Home Assistant с помощью кастомного компонента Dataplicity
- Установка компонента на сервер Home Assistant
- Подключение компонента
- Регистрация на сайте Dataplicity
- Продолжение настройки кастомного компонента
- Включение wormhole
- Способы настройки удаленного доступа к Home Assistant
- Реальный статический ip адрес
- Реальный динамический ip адрес
- Серый ip адрес — vpn/ssh туннель
- Серый ip адрес — использование сервиса роутера Keenetic
- Серый ip адрес — использование TOR
- Серый ip адрес — использование ZeroTier
- Серый ip адрес — nabucasa.com
- Сказ о том, как я Home Assistant настраивал
- Установка
- Отслеживание устройств
- С помощью Xiaomi Router Mi4A
- С помощью GPS
- Создание системы отслеживания через роутер
- Освещение
- Утренние (или нет) погодные оповещения
- Добавим blueprints
- Бэкапы
- Немного оптимизации
- Отслеживание системных параметров
- Заключение
Настройка удаленного доступа в Home Assistant с помощью кастомного компонента Dataplicity
В ферале 2021 года AlexxIT сделал новый кастомный компонет для Home Assistant — Dataplicity.
- Репозиторий — https://github.com/AlexxIT/Dataplicity
- Анонс в канале AlexxIT — https://t.me/AlexxIT_SmartHome/445
С помощю этого компонента можно настроить удаленный доступ к серверу Home Assistant. Появляется адрес в интернете, на который вы можете зайти с помощью браузера и увидеть свой интерфейс Home Assistant (и этот же адрес можно использовать в мобильном приложении Home Assistant)
Этот компонент позволяет настроить удаленный доступ даже на сером ip совершенно бесплатно. Компонент работает вне зависиомсти от того если ли у вас супервизор в Home Assistant или нет.
Использование этого компонента — это один из самых простых способов сделать удаленный доступ к серверу Home Assistant.
Для того чтобы появился удаленный доступ к серверу HA с помощью этого комонента нужно сделать:
- Установить компонент на сервер Home Assistant
- Подключить компонент
- Зарегистрироваться на сервисе https://www.dataplicity.com/ (нужно указать email)
- Настроить компонент и сервис
Установка компонента на сервер Home Assistant
Компонент можно поставить либо руками либо с помощью системы HACS. Тут описывается как установить компонент руками.
Установка касмтомного компонента — это самый сложный этап настройки. Для этого нужно знать как работать с файлами в папке с конфигами Home Assistant.
Нужно зайти на страницу кастомного компонента на GitHub, зайти в раздел «Релизы» и сказчать zip файл с исходным кодом компонента.
Zip файл нужно разархивировать, и все файлы из папки Dataplicity-1.0.0/custom_components/dataplicity/ нужно положить в папку config/custom_components/dataplicity/
Папка custom_components должна быть в той же директории что и файл configuration.yaml Вот какая структура файлов и папок должны быть:
После размещения файлов, нужно перезагрузить систему Home Assistant.
Подключение компонента
После того как компонент установлен его нужно подключить.
Для этого нужно зайти в раздел Configuration:
Там выбрать Integrations:
Нажать на кнопку Add integration:
И начать вводить название интеграции. Обычно после ввода «data» остается только одна нужная интеграция:
После выбора этой интеграции появляется окошко:
В это окошко нужно ввести данные от сервиса Dataplicity. Слово «Dataplicity» в этом окошке — это ссылка на сайт https://www.dataplicity.com/. Нужно зайти на этот сайт:
Регистрация на сайте Dataplicity
После перехода по ссылке открывается сайт:
В поле для ввода email адреса нужно ввести ваш настоящий email адрес и нажать на кнопку «Start».
После этого сразу же появляется секретаная строчка:
Вот пример строчки которую может показать сайт:
Из этой строчки нужен только адрес:
Продолжение настройки кастомного компонента
Адрес который получили на прошлом шаге нужно ввести в окно:
Это адрес нужно ввести в кастомный комопонент:
И нажать на кнопку «Submit».
После этого на месте кнопке «Submit» начнет крутиться спиннер и он может крутиться минуту-другую:
Через некоторое время появится окошко что все прошло успешно:
Осталось выполнить последние действие.
Включение wormhole
Нужно зайти по ссылке в окошке:
И включить переключалку Wormhole:
Например, этот адрес может выглядеть вот так:
Если зайти по этому адресу — то откроется интерфейс Home Assistant:
Этот адрес — это и есть адрес по которому вы можете зайти на ваш сервер Home Assistant из любой точки мира.
Еще один момент который нужно сделать — это зайти в ваш почтовый ящик и подветрдить email для сервиса dataplicity.
Источник
Способы настройки удаленного доступа к Home Assistant
Итак, я поставил сервер Home Assistant. Находясь в одной WiFi сети я этим сервером я могу на него заходить, включать-выключать свет, смотреть температуру, и делать все то зачем и нужен HA.
Но, если я ушел, то все, — доступа к серверу нет. А хочется иметь возможность удаленно управлять домашним HA. Чтобы можно было из любого места где есть интернет делать все то же самое что можно делать находясь рядом с сервером. Например, задача, удаленно включать обогрев. Чтобы приезжаешь, а уже тепло.
Перед тем как строить удаленный доступ для Home Assistant, я решил выяснить какие вообще есть способы удаленно заходить на сервер HA. Чтобы понять какой способ лучше всего подходит в моей ситуации.
Я знаю про такие варианты. Вполне возможно что есть еще какие-то способы как можно удаленно заходить на сервер HA (если вы о них знаете, напишите, пожалуйста на ivan@bessarabov.ru, я дополню этот список).
- Реальный статический ip адрес
- Реальный динамический ip адрес, использование сервиса duckdns.org или подобного
- Серый ip адрес — vpn/ssh туннель до сервера с реальным статическим адресом
- Серый ip адрес — использование сервиса роутера Keenetic
- Серый ip адрес — использование TOR
- Серый ip адрес — использование сервиса nabucasa.com
Есть совершенно отличная телеграмм группа про Home Assistant. В этой группе я создал опрос о том кто какой способ использует, вот результаты:
(Когда я создавал этот опрос я еще не знал про сервис nabucasa.com, поэтому такого пункта в опросе нет)
Реальный статический ip адрес
Это самый простой и надежный способ сделать возможность удаленно заходить на свой сервер Home Assistant. Ваш провайдер интернета выделяет вам настоящий ip адрес к которому можно обращаться из интернета. Например, «74.125.232.228». И этот ip адрес не меняется, все время у вас именно такой адрес. Дальше вы на роутере настраиваете проброску портов. Например, в вашей сетей сервер HA живет на адресе http://192.168.1.30:8123 и вы настраиваете на роутере что если человек приходит на ваш реальный http://74.125.232.228:8123, то это все прокидывается на сервер HA http://192.168.1.30:8123 После такой настройки появляется возможность заходить на сервер HA снаружи.
Но лучше всего настройку на этом не закончить, а сделать чтобы доступ к серверу был по протоколу https, а не http. (При использовании http гораздо больше вероятности что у вас украдут логин-пароль для доступа к HA и злоумышленник получит доступ к вашему HA)
У разных провайдеров разные условия для получения реального статического ip адреса:
- Некоторые провайдеры дают реальный статический адрес бесплатно всем своим клиентам, просто платите за интернет, плюс при этом у вас есть реальный ip адрес
- Другие провайдеры предоставляют услугу «реальный ip адрес» за дополнительную плату
- А есть провайдеры, которые вообще не могут предоставить реальный ip адрес даже за дополнительные деньги
Итого. Если у вас уже есть реальный статический ip адрес, то вполне возможно что лучше всего вам настроить удаленный доступ к HA с помощью этого ip адреса.
Если провайдер ни при каких условиях вам не может выдать реальный статический ip адрес, то вы можете либо сменить провайдера, либо использовать какой-то другой способ для того чтобы настроить удаленный доступ.
Если же сейчас у вас нет реального ip адреса, но провайдер за дополнительные деньги может вам его выдать, то нужно думать, возможно стоит платить, либо использовать какой-то другой вариант.
Реальный динамический ip адрес
Некоторые провайдеры предоставляют своим клиентам реальный ip адрес, но этот адрес иногда меняется. Сегодня у вас реальный ip адрес «74.125.232.228», а завтра уже «74.125.232.4».
Точно так же как и в случае с реальным ip адресом вы пробрасываете порт на роутере. Плюс нужно настроить специальный софт, чтобы заходить снаружи не на айпишник (который меняется), а на специальное имя типа my-domain.duckdns.org. (благодаря софту это имя всегда указывает на тот реальный ip адрес, который у вас сейчас).
Провайдер либо дает реальный динамический ip адрес, либо предоставляет доступ в интернет как-то иначе. Я ни разу не слышал, чтобы можно было дополнительно купить услугу «Динамический реальный ip адрес».
Итого. Если провайдер вам выдает реальный динамический ip адрес, то, скорее всего, вам стоить настроить доступ к HA через duckdns.org.
Серый ip адрес — vpn/ssh туннель
В том случае если у вас нет реального ip адреса, то проброска порта на роутере не предоставит вам удаленный доступ в HA.
Но если у вас есть виртуалка на digitalocean.com или у другого облачного провайдера, то вы можете сделать следующее.
С сервера на котором у вам работает HA можно прокинуть туннель до виртулаки. Дальше вы будете заходить браузером на порт на виртуалке и при этом будете общаться с вашим сервером HA.
Итого. Если у вас нет реального ip адреса, но у вас есть сервер с реальным ip адресом, то этот вариант может вам подойти.
Серый ip адрес — использование сервиса роутера Keenetic
Если у вас есть роутер Keenetic, то вы можете использовать сервис, который идет вместе с этим роутером. Вы можете получить адрес в домене *.keenetic.pro или *.keenetic.link и настроить чтобы по этому адресу отвечал сервер Home Assistan, который живет у вас дома. Сервис бесплатный и это будет работать даже если у вас нет реального ip адреса (этот способ можно использовать и в том случае если у вас есть реальный ip адрес, но, на мой взгляд, если у вас реальный ip, то лучше использовать другой способ).
Серый ip адрес — использование TOR
Еще один вариант как можно получить доступ к серверу HA это использовать TOR. На сервере с HA нужно поднять и настроить специальный софт.
Как результат вы получите адрес вида «abcdef1234567890.onion» плюс специальный токен. Потом вам нужно установить на мобильный специальный ТОР браузер и после этого вы сможете заходить на ваш сервер удаленно.
Серый ip адрес — использование ZeroTier
Это внешний сервис. Существует специальный плагин который позволяет использовать этот сервис — https://community.home-assistant.io/t/home-assistant-community-add-on-zerotier-one/109091.
Серый ip адрес — nabucasa.com
Существует сервис nabucasa.com Можно использовать его для того чтобы удаленно заходить на свой сервер HA.
Сервис платный, стоит $5 в месяц. Но, насколько я понимаю, какая-то часть этих денег (а может быть и все) идет создателям Home Assistant, так что это хорошая идея поддержать разработчиков HA деньгами, чтобы они и дальше улучшали HA.
Источник
Сказ о том, как я Home Assistant настраивал
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 к малинке
- Подождать несколько минут, пока система развернется в локальной сети на :8123 .
Также можно установить на уже имеющуюся систему с помощью Docker-compose:
А теперь разберем несколько сценариев использования.
Отслеживание устройств
Начнем с отслеживания устройств, с помощью которого мы можем фиксировать вход и выход носителей из дома.
Я предлагаю 2 способа отслеживания:
- с помощью роутера (у меня в наличии Xiaomi Router Mi4A),
- с помощью GPS.
В системе доступно много производителей роутеров. Для старых и не перечисленных в списке моделей можно использовать nmap (более подробно тут).
Если установить на телефон официальное приложение, HA по умолчанию создаст интеграцию, и в системе появится дополнительное устройство, которое можно отследить.
С помощью Xiaomi Router Mi4A
- Не требует никаких действий на устройстве, отслеживает всех в локальной сети.
- Если устройство не подключено к домашней сети, то устройство пропадает в пустоту, и на картах мы его не увидим.
- Иногда может сработать триггер выхода/входа из зоны, когда фактически девайс не покидает зону (можно попробовать решить расширением зоны).
С помощью GPS
- Точность работы сравнима с GPS трекером в телефоне.
- О телефоне можно узнать: процент заряда аккумулятора, заряжается устройство или нет, а также показатель состояния аккумулятора.
- Активно тратит заряд.
- Требует подключение Интернета.
- Для точного трекинга необходимо настроить SSL, чтобы телефон мог отправлять данные о местоположении из вне локальной сети.
- Требует дополнительных прав доступа к GPS, возможна утечка данных третьей стороне в будущем.
- На бюджетных телефонах, которые имеют свойство неожиданно менять местоположение GPS, возможны проблемы с выпадением из зоны.
Создание системы отслеживания через роутер
Трекинг через локальную сеть роутера требует настройки, в отличие от GPS отслеживания. Два вида трекинга можно комбинировать для повышения точности. Ниже можно заметить, что в моем случае отслеживание через роутер работает лучше, чем через GPS. Зеленая зона значит, что телефон внутри зоны, красная — вне зоны.
Результаты работы отслеживания (сверху — роутер, снизу — GPS)
Можно подключиться через плагин SSH в VS Code, но получить доступ к проводнику в данный момент мне было удобнее. Поэтому, добавим сетевое расположение.
Нажмем обзор, найдем каталог config (мы в основном будем редактировать его) и выберем его как сетевую папку.
Дальше мы можем перейти в созданную папку и открыть ее через редактор.
После перезагрузки HA мы можем увидеть, что у нас появился новый глобальный объект device_tracker и наши устройства в нем.
Трекинг устройств через роутер
Освещение
Теперь, когда мы умеем отслеживать пользователя, мы можем включать и выключать определенные лампочки с учетом информации о его местоположении.
Для этого необходимо произвести действие по определенному событию. В этом нам помогут автоматизации.
Теперь импортируем в наш основной файл весь каталог automation — так нам будет удобнее при написании следующих автоматизаций.
Для того, чтобы получить адаптивное освещение в зависимости от времени суток, нужно настроить цветовую температуру. Это удобно сделать внутри блока switch. Тут важно понимать, что пока данный switch включен, изменить параметры температуры будет невозможно (через interval минус время_с_прошлого_обновления лампа примет старые параметры).
Здесь вы найдете больше про динамическую цветовую температуру (flux в терминологии HA). А если вам интересна тема адаптивного освещения, на Хабре есть отличная статья по этому поводу.
Для того, чтобы не разглашать всем секретные данные, создадим еще secrets.yaml . Туда мы сложим все данные, которые не должны попасть в публичный доступ. Для использования переменных из этого файла используем !secret.
В итоге у нас имеется Telegram бот, готовый к отправке сообщений.
Утренние (или нет) погодные оповещения
Теперь, когда у нас есть настроенный сервис уведомлений и погодная интеграция, мы можем сделать утренние оповещения о погоде.
Создаем новый файл автоматизации, и начинаем писать логику.
Пишем переменную, которая будет отвечать за срабатывание оповещений только по будням. Если он true — то в выходные оповещений не будет.
И подключаем в основном конфиг файле.
Добавим blueprints
Теперь небольшое лирическое отступление в виде рассказа о написании blueprints на примере уведомлений.
В данном случае я бы перевел blueprints не как чертежи, а как шаблоны или заготовки. Их удобнее использовать, если нужно написать несколько похожих автоматизаций, а основную логику оставить нетронутой.
Например, можно упростить создание уведомлений о начинающихся осадках.
“for” — это время, в котором должен оставаться выбранный параметр, чтобы сработал триггер на превышение уровня осадков.
Теперь, когда есть blueprint, мы можем написать автоматизацию с меньшим количеством логики.
Создадим уведомления о начале осадков.
Мы смогли вынести часть функциональности в отдельный файл. В подобных случаях, когда со временем появляется похожий код, можно выносить часть логики в отдельный файл.
Для большей полезности можно изменить шаблон и поменять action на повышение яркости для света в доме или закрытие штор.
Бэкапы
В бэкап попадает весь каталог /config , а также все установленные расширения. С любого бекапа можно восстановить состояние системы на момент его создания.
Можно настроить создание резервных копий в Google Drive:
- Скопировать ссылку https://github.com/sabeechen/hassio-google-drive-backup и зайти в HA (также можно прочитать подробную инструкцию в ReadMe репозитория по ссылке)
- Добавить ссылку как кастомный репозиторий в Supervisor’е через UI.
После этих манипуляций мы получаем регулярное создание бекапов, важность которых сложно переоценить.
NodeMCU
Так как умного градусника у меня нет, а температуру измерять хочется, воспользуемся ESP8266.
Сначала установим интеграцию ESPHome из официального списка интеграций.
Для каждого микроконтроллера, используемого в системе, требуется создать файл с подобным содержанием.
Подключимся к WiFi
По умолчанию используются секреты только от ESPHome. А для того, чтобы подгрузить секреты из HA, можно создать отдельный файл, где мы заинклудим эти секреты.
Теперь подключим data pin (обычно это средняя нога) термометра к D2 порту, дадим на него питание и землю. Потом создаём сам термометр (DHT11) и две переменные, которые будем отслеживать в HA.
Дальше нужно скомпилировать прошивку и загрузить на контроллер. Если он подключен напрямую к Raspberry Pi, то мы увидим его на /dev/ttyUSB0 и сможем загрузить прошивку в первый раз. Все последующие обновления можно загружать по воздуху. А если в списке устройства не видно, то можно скачать прошивку и воспользоваться ESPHome-Flasher.
Если все заработало, то в Developer Tools мы увидим созданные переменные.
Немного оптимизации
По умолчанию в HA используется SQLite, и сброс данных на диск происходит часто (каждую секунду). Это может привести в скором времени к выходу из строя SD карточки на малинке (если сервер стоит на ней). Чтобы продлить срок службы карточки, скажем HA, что нужно записывать на диск раз в commit_interval и исключить некоторые сущности, которые мы не хотим отслеживать на длинном временном промежутке (или вообще не хотим отслеживать).
Если мы хотим использовать СУБД, отличную от SQLite, то можно сделать один из следующих пунктов на выбор:
- Установить соответствующий аддон для перехода на MariaDB.
- Использовать существующую реляционную базу данных на удаленной машине, если указать строку для подключения в параметр db_url .
Отслеживание системных параметров
Чтобы отслеживать остаток свободной памяти, загруженность процессора или скорость Интернет соединения, мы можем добавить мониторинг показателей системы.
При желании можем создать автоматизацию, которая при критических показателях будет отправлять уведомление о необходимости принятия мер.
Также мы можем посмотреть Uptime сервера.
Заключение
- Простая установка и настройка, не требующая знания программирования.
- Большое коммьюнити — вопросов на форуме много, ответов тоже хватает.
- Огромное количество готовых интеграций со сторонними сервисами — скорее всего не придется писать свою интеграцию руками.
- Достаточно сложно отлаживать систему. Если action можно запустить программно в обход триггера, то триггер тестировать уже сложнее.
В итоге мы создали несложную систему умного дома, которую каждый может расширить покупкой новых устройств или написанием своих продуманных и продвинутых автоматизаций. По этой ссылке можно найти полную версию моих автоматизаций дома.
Главный экран
Что дальше? Можно добавить HACS (сборник UI компонентов и даже целых интеграций от коммьюнити, пригодится при использовании Яндекс Станции) и установить несколько UI элементов. Можно интегрировать умную колонку или телевизор и включать их по определенному условию. Вариантов апгрейда бесконечное множество.
Источник