- Как сделать чтобы Home Assistant работал по адресу hassio.local
- No access to web UI after Hass restart or host reboot #17282
- Comments
- ghost commented Oct 9, 2018
- ghost commented Oct 9, 2018
- ghost commented Oct 9, 2018
- ghost commented Oct 9, 2018
- ghost commented Oct 9, 2018
- balloob commented Oct 9, 2018
- OttoWinter commented Oct 9, 2018 •
- Сказ о том, как я Home Assistant настраивал
- Установка
- Отслеживание устройств
- С помощью Xiaomi Router Mi4A
- С помощью GPS
- Создание системы отслеживания через роутер
- Освещение
- Утренние (или нет) погодные оповещения
- Добавим blueprints
- Бэкапы
- Немного оптимизации
- Отслеживание системных параметров
- Заключение
Как сделать чтобы Home Assistant работал по адресу hassio.local
Я установил Home Assistant на Raspberry Pi. Есть множество разных способов как можно установить Home Assistant. Я установил на Raspberry Pi операционную систему Raspbian, а на нее установил Hassio.
Теперь у меня в браузере по адресу http://192.168.1.33:8123 открывается интерфейс Home Assistant (этот интерфейс еще называется lovelace).
Но заходить по адресу неудобно: адрес нужно помнить и набирать его на клавиатуре еще то удовольствие.
Гораздо удобнее если можно было бы заходить в веб интерфейс Home Assistant не по адресу, а по имени. Можно сделать чтобы HA отвечал по имени с помощью настройки mDNS.
Чтобы настроить mDNS нужно выполнить несколько действий:
- Установить программу avahi-daemon которая работает как сервер mDNS
- Настроить программу
- Запустить программу
Все эти действия выполняются на на хосте Raspberry Pi, в операционной системе Raspbian, а не внутри каких-либо докерных контейнеров Hassio. Если у вас Home Assistant работает не на Raspbian, а на операционной системе Ubuntu, то шаги практически такие же.
Сначала заходим по ssh на Raspberry Pi:
Все дальнейшие действия нужно выполнять с правами суперпользователя, так что переключаемся в пользователя root:
Настройка mDNS выполняется с помощью программы, которая устанавливается в виде пакета «avahi-daemon». Проверяем что такой пакет установлен в системе:
В моей ситуации пакет уже установлен. Если эта команда ничего не выводит (что означает что пакета в системе нет), то нужно установить пакет с помощью команды «apt-get update && apt-get install -y avahi-daemon».
То как работает mDNS описано в файле «/etc/avahi/avahi-daemon.conf». Нужно отредактировать этот файл. Например, это можно сделать с помощью редактора nano
Необходимо убрать символ решетки со строки, которая начинается с host-name и в этой же строчке написать hassio после символа равно. Вот как должен выглядеть фрагмент этого файла.
(строку с текстом #domain-name можно оставить с символом решетки вначале, значение local — это значение по умолчанию для этой настройки).
Нужно сохранить файл /etc/avahi/avahi-daemon.conf (в редакторе nano это делается с помощью комбинации клавиш ctrl+X, а потом нажать клавишу Y для сохранения).
И после того как файл сохранен нужно перезапустить программу avahi-daemon:
Источник
No access to web UI after Hass restart or host reboot #17282
Comments
ghost commented Oct 9, 2018
@layanto commented on Oct 8, 2018, 10:47 PM UTC:
Doesn’t happen every Hass restart or host reboot but happened a few times in the last few days. The only way I can fix is by reinstalling Hassio and restore snapshot. I have only started using Hassio for a few days and already had to reinstall at least 5 times. When I cannot connect to web UI, I can still connect via SSH or samba.
hassio ha logs:
The text was updated successfully, but these errors were encountered:
ghost commented Oct 9, 2018
@layanto commented on Oct 9, 2018, 12:09 AM UTC:
ghost commented Oct 9, 2018
@layanto commented on Oct 9, 2018, 1:06 AM UTC:
Deleting .storage/core.config_entries and reboot host solved the problem. But I imagine this will occur again when Chromecast gets discovered again.
ghost commented Oct 9, 2018
@layanto commented on Oct 9, 2018, 11:07 AM UTC:
I think it is caused by this software on my PC emulating Google cast https://www.airserver.com/PC
ghost commented Oct 9, 2018
@pvizeli commented on Oct 9, 2018, 3:01 PM UTC:
You can remove discovery: from config and add hassio: look like chromecast locks the startup
balloob commented Oct 9, 2018
OttoWinter commented Oct 9, 2018 •
Yes that would probably be because of the cast platform. The problem is that we’re trying to connect to the chromecast here:
but if the connecting takes forever (could happen for many reasons), we await this forever.
And if I understand correctly, home assistant waits for the entire task queue to clear before starting up. As this one chromecast connection task is never finished, home assistant doesn’t start up.
There was an attempt to limit the amount of time the connection could take before giving up (#16471), but that had other consequences that resulted in issues for some other cast users.
Thinking about this again, I guess the easiest solution would be to delay connecting to chromecast until after home assistant is started up already. But maybe my conclusion in the paragraph before is also wrong.
@balloob I know there is EVENT_HOMEASSISTANT_START , which we could use to delay connecting. But if the chromecast is added dynamically at runtime (for example through discovery), we would wait for that event forever because it already happened. Is there a way to check if EVENT_HOMEASSISTANT_START has already been fired before or if home assistant is already properly started up?
Источник
Сказ о том, как я 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 элементов. Можно интегрировать умную колонку или телевизор и включать их по определенному условию. Вариантов апгрейда бесконечное множество.
Источник