Сказ о том, как я Home Assistant настраивал / Хабр
2025.07.04 14:50
β Как стать автором Моя лента Все потоки Разработка Администрирование Дизайн Менеджмент Маркетинг Научпоп Войти 0 Рейтинг Singularis Подписаться AlexanderYurev 13 мар 2021 в 09:03
Сказ о том, как я Home Assistant настраивал
11 мин 230K Блог компании Singularis DIY или Сделай сам Интернет вещей Умный дом Туториал
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.  Вводим api_key, полученный на их сайте и нажимаем Submit. В итоге получим 19 сущностей, которые можем использовать для своих целей в автоматизациях.  *Сущности OWM (на скриншот попали не все 19)* Таким же образом через UI можно создать интеграции к другим сервисам вроде SpeedTest, или OpenUV. # Уведомления Для настройки уведомлений можно использовать стандартные оповещения HA, отображаемые в боковом меню, уведомления на конкретных устройствах (нужно установленное приложение на девайсе), а также оповещения в сторонние сервисы.  *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  !-- /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, можно создать отдельный файл, где мы заинклудим эти секреты.
esphome/secrets.yaml !include ../secrets.yaml
Теперь подключим 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 Теги: умный дом iot home assistant Хабы: Блог компании Singularis DIY или Сделай сам Интернет вещей Умный дом +6 228 15 Singularis Компания Сайт ВКонтакте 18 Карма 0 Рейтинг Юрьев Александр @AlexanderYurev
Студент Computer Science
Подписаться Хабр Карьера ВКонтакте Github Комментарии 15Публикации
Лучшие за сутки ПохожиеИнформация
Сайт www.singularis-lab.com Дата регистрации 15 декабря 2015 Дата основания 14 января 2009 Численность 11–30 человек Местоположение РоссияВаш аккаунт
Войти РегистрацияРазделы
Статьи Новости Хабы Компании Авторы ПесочницаИнформация
Устройство сайта Для авторов Для компаний Документы Соглашение КонфиденциальностьУслуги
Корпоративный блог Медийная реклама Нативные проекты Образовательные программы Стартапам Настройка языка Техническая поддержка © 2006–2025, Habr- Home Assistant - Все посты. Сообщества - Пикабу
- Home Assistant - Приложения в Google Play
- Что такое Home Assistant — как настроить умный дом без ...
- Home Assistant - Sprut.AI
- Home Assistant - Умный дом
- Что такое Home Assistant? Обзор Приложения для Организации ...
- Home Assistant (Русский) - ArchWiki
- [#99] Home Assistant – первое знакомство, установка и проблемы
- Home Assistant Green самый простой и ориентированный на ...
- Google Assistant, your own personal Google
- Home Assistant - Все посты. Сообщества - Пикабу
Обзор основных разделов Home Assistant 00:00:00 Вступление 00:01:30 Сброс пароля пользователя Home Assistant 00:05:00 Где расположены файлы ... - Home Assistant - Приложения в Google Play
Home Assistant OS — установка в виртуальную машину. Официальный способ установки. Устанавливается Home Assistant вместе с супервизором. С помощью этого способа ... - Что такое Home Assistant — как настроить умный дом без ...
Home assistant kit · MiiBestOD Home Assistant Yellow Kit · Шлюз Сервер Домашний помощник Зеленый Smart Home Box Mi Kit Zigbee · Home Assistant Box x88pro20 ... - Home Assistant - Sprut.AI
Open source home automation that puts local control & privacy first. Powered by a worldwide community of tinkerers & DIY enthusiasts. - Home Assistant - Умный дом
Помощь по дому для B2B2С и B2B проектов · Сервис технологически продвинутых бытовых услуг для клиентов страховых компаний, банков, застройщиков, агентств ... - Что такое Home Assistant? Обзор Приложения для Организации ...
Manage (Install, track, upgrade) and discover custom elements for Home Assistant directly from the UI. - Home Assistant (Русский) - ArchWiki
Home Assistant Green, без SkyConnect USB Stick, самый простой и ориентированный на конфиденциальность способ автоматизировать ваш дом. 5.0 5 отзывов. 7 ... - [#99] Home Assistant – первое знакомство, установка и проблемы
Информация об этой странице недоступна. - Home Assistant Green самый простой и ориентированный на ...
Каталог Home assistant. 0 товаров. К сожалению, именно такого товара сейчас нет. Попробуйте поискать с другими параметрами или посмотрите все товары в категории ... - Google Assistant, your own personal Google
Home Assistant (HA) — программное обеспечение с открытым исходным кодом для домашней автоматизации, поддерживает устройства разных производителей, ...
Обзор основных разделов Home Assistant 00:00:00 Вступление 00:01:30 Сброс пароля пользователя Home Assistant 00:05:00 Где расположены файлы ...
Home Assistant OS — установка в виртуальную машину. Официальный способ установки. Устанавливается Home Assistant вместе с супервизором. С помощью этого способа ...
Home assistant kit · MiiBestOD Home Assistant Yellow Kit · Шлюз Сервер Домашний помощник Зеленый Smart Home Box Mi Kit Zigbee · Home Assistant Box x88pro20 ...
Open source home automation that puts local control & privacy first. Powered by a worldwide community of tinkerers & DIY enthusiasts.
Помощь по дому для B2B2С и B2B проектов · Сервис технологически продвинутых бытовых услуг для клиентов страховых компаний, банков, застройщиков, агентств ...
Manage (Install, track, upgrade) and discover custom elements for Home Assistant directly from the UI.
Home Assistant Green, без SkyConnect USB Stick, самый простой и ориентированный на конфиденциальность способ автоматизировать ваш дом. 5.0 5 отзывов. 7 ...
Информация об этой странице недоступна.
Каталог Home assistant. 0 товаров. К сожалению, именно такого товара сейчас нет. Попробуйте поискать с другими параметрами или посмотрите все товары в категории ...
Home Assistant (HA) — программное обеспечение с открытым исходным кодом для домашней автоматизации, поддерживает устройства разных производителей, ...