Интеграция Google Assistant с Home Assistant

Home Assistant — одна из лучших открытых платформ для автоматизации умного дома. На неё можно развернуть Home Assistant на Raspberry Pi или старом ноутбуке, чтобы получить приватный умный дом. Вы можете покупать готовые устройства или собирать свои переключатели и контроллеры, добавлять их в Home Assistant и управлять всеми с единой панели.
Интеграция с Google Assistant добавляет голосовое управление всем сущностям Home Assistant. Это бесплатно и удобно — колонки Google Mini, Nest и мобильные приложения смогут управлять устройствами и запускать рутинные сценарии.
Важное: перед началом убедитесь, что ваш сервер Home Assistant доступен из интернета по HTTPS с валидным сертификатом. Без этого Google не свяжет ваш экземпляр Home Assistant.
Кому это подходит
- Владельцам Home Assistant, которые хотят голосовое управление через Google Home.
- Тем, кто готов открыть HTTPS-доступ к серверу (рекомендуется через защищённые туннели).
- Людям, которые готовы настроить Google Cloud проект и сервисный аккаунт.
Требования и варианты доступа
Коротко:
- Рабочий экземпляр Home Assistant с доступом к веб-интерфейсу.
- Домен и HTTPS. Здесь возможны два безопасных варианта:
- DuckDNS + Let’s Encrypt — классика для домашних пользователей.
- Cloudflare Tunnel (рекомендуется) — проще в настройке и безопаснее, не требует пересылки портов.
- Аккаунт Google, совпадающий с аккаунтом на ваших устройствах Google Home.
- Проект в Google Cloud и сервисный аккаунт с ключом JSON.
Плюсы и минусы:
- DuckDNS + Let’s Encrypt: бесплатно, контролируемо, но требует входящих портов и обновления сертификата.
- Cloudflare Tunnel: безопасный выход без открытых портов, проще пробросить HTTPS, лучше для большинства современных установок.
Примечание: при использовании Cloudflare Tunnel вы обычно не указываете порт в URL при настройке Google Console.
Создание проекта в Google Console
- Перейдите на страницу Actions on Google Console и войдите в Google-аккаунт, который используете на своих Google-устройствах.
- Нажмите New Project, подтвердите условия и выберите имя проекта, например HomeAssistant. Выберите язык и страну. Нажмите Create project.
- В разделе проекта выберите Smart Home и нажмите Start Building.
- Дайте имя вашему Smart Home действию, например Home Assistant, и сохраните.
- На вкладке Overview нажмите Build Your Action.
- Нажмите Add Action(s) и укажите URL вашего Home Assistant для Google Action:
- Если вы используете DuckDNS и Let’s Encrypt: https://[ВАШ_HOME_ASSISTANT_URL:PORT]/api/google_assistant
- Если используете Cloudflare Tunnel: https://[ВАШ_HOME_ASSISTANT_URL]/api/google_assistant
- Сохраните и в меню проекта откройте Project settings.
- Запишите Project Name и Project ID — они понадобятся в конфигурации Home Assistant.
Настройка связывания аккаунтов (Account Linking)
- В Overview найдите Setup Account Linking под Quick Setup.
- В режиме связывания выберите OAuth и введите параметры:
- Client ID: https://oauth-redirect.googleusercontent.com/r/[YOUR_PROJECT_ID]
- Client Secret: введите любую строку (она понадобится только для проверки)
- Authorization URL: https://[ВАШ_HOME_ASSISTANT_URL:PORT]/auth/authorize
- Token URL: https://[ВАШ_HOME_ASSISTANT_URL:PORT]/auth/token
Примечание: если вы используете Cloudflare Tunnel, порт в URL часто не нужен.
- В Configure your client (optional) добавьте scope: email и name.
- Нажмите Next, затем Next, и завершите настройку. После этого на вкладке Develop появится кнопка Test. Нажмите Test. Если всё настроено верно, появится сообщение «Test now enabled».
Создание сервисного аккаунта и включение HomeGraph API
- Перейдите в Google Cloud Platform Console.
- Откройте меню APIs and services > Credentials.
- Нажмите Create Credentials и выберите Service account. Введите имя аккаунта и подтвердите Create and Continue.
- В списке ролей выберите Service Account Token Creator. Нажмите Done.
- Откройте созданный сервисный аккаунт, перейдите на вкладку Keys. Нажмите Add Key > Create new key, выберите JSON и Create. Скачайте JSON-файл с ключами и переименуйте его в SERVICE_ACCOUNT.json.
- Скопируйте содержимое ключа в безопасное место. Включите API HomeGraph через Library — найдите HomeGraph API и нажмите Enable.
Важно: файл SERVICE_ACCOUNT.json содержит приватные ключи. Храните его в безопасном месте и не публикуйте.
Загрузка ключа и редактирование конфигурации Home Assistant
- В Home Assistant установите и откройте аддон File Editor или используйте любой другой способ доступа к файлам конфигурации.
- Нажмите на иконку папки, затем Upload и выберите файл SERVICE_ACCOUNT.json, который вы скачали и переименовали.
- Откройте configuration.yaml и добавьте блок для интеграции google_assistant. Пример корректного YAML:
google_assistant:
project_id: YOUR_PROJECT_ID
service_account: !include SERVICE_ACCOUNT.json
report_state: trueЗамените YOUR_PROJECT_ID на идентификатор проекта из Google Console. Параметр report_state: true позволяет отправлять состояние устройств в Google.
- Сохраните файл. Перейдите в Developers Tools > Check Configuration, чтобы убедиться, что конфигурация валидна. Перезапустите Home Assistant после успешной проверки.
Настройка Home Assistant в приложении Google Home
- Установите приложение Google Home на Android или iOS и войдите тем же Google-аккаунтом, который использовали при настройке проекта.
- Нажмите +, затем Set up device > Works with Google.
- В списке сервисов найдите ваш проект [test] Home Assistant или то имя, которое вы задали при создании.
- Откроется веб-страница Home Assistant для входа. Введите учётные данные Home Assistant и нажмите Login.
- После успешной привязки приложение сообщит Home Assistant linked и покажет все сущности, доступные в Home Assistant.
- Выберите устройства, которые хотите контролировать через Google, распределите их по комнатам.
После привязки вы сможете управлять устройствами голосом и через приложение Google Home.
Создание автоматизаций и рутин в Google Home
В приложении Google Home можно настроить Routines. Пример сценария:
- Откройте Google Home > Routines.
- Выберите триггер, например Bedtime, или создайте собственную голосовую команду.
- В Actions нажмите Add action и выберите Adjust Home devices.
- Выберите устройства и желаемые действия, затем Save.
Эти рутинные команды вызывают устройства, которые вы уже добавили через интеграцию Home Assistant.
Голосовые уведомления через колонки Google
После интеграции вы можете настроить автоматизации в Home Assistant, которые будут воспроизводить голосовые оповещения через Google Home или Nest.
Примеры сценариев:
- Оповещение, когда датчик уровня воды показывает «полный бак».
- Оповещение о движении в нерабочее время.
Ниже пример автоматизации Home Assistant, которая отправляет TTS-сообщение на медиаплеер Google Cast (например, google_home):
alias: Оповещение о полном баке
description: При достижении уровня воды отправить голосовое сообщение на Google Home
trigger:
- platform: numeric_state
entity_id: sensor.water_level
above: 95
action:
- service: tts.google_translate_say
entity_id: media_player.google_home
data:
message: 'Внимание. Уровень воды в баке выше 95 процентов.'
mode: singleАльтернатива для случаев, когда используются notify-сервисы Google:
action:
- service: notify.google_home
data:
title: 'Бак полон'
message: 'Уровень воды достиг 95 процентов.'Критерии приёмки:
- При достижении порога срабатывает триггер.
- Колонка воспроизводит голосовое сообщение без ошибок.
- Сообщение слышно в нужных комнатах.
Отладка и распространённые проблемы
Если интеграция не работает, проверьте по шагам:
- Доступность HTTPS: попробуйте открыть https://[ВАШ_ДОМЕН]/api/ в браузере извне сети.
- Сертификат: валиден ли SSL. Браузер не должен выдавать предупреждений.
- В логе Home Assistant: Developers Tools > Logs — нет ли ошибок google_assistant.
- Account Linking: убедитесь, что Authorization URL и Token URL корректны и открыты.
- Service Account: файл SERVICE_ACCOUNT.json корректен и присутствует в корне конфигурации, путь совпадает с !include.
- HomeGraph API: включён в Google Cloud Console.
- Google Console: проект находится в режиме теста или опубликован; для личного использования тестового режима достаточно.
Типичные ошибки и решения:
- Ошибка 401 при связывании: проверьте Client ID и корректность перенаправления OAuth.
- Устройства не показываются: убедитесь, что report_state: true и что сущности доступны для google_assistant.
- Текст TTS не воспроизводится: проверьте правильность entity_id медиаплеера и наличие службы tts.google_translate_say или notify.
Безопасность и конфиденциальность
- Держите SERVICE_ACCOUNT.json в приватном хранилище и не загружайте в публичные репозитории.
- Ограничьте доступ к Home Assistant через Cloudflare Tunnel, чтобы не открывать прямые порты на роутере.
- Используйте минимальные OAuth scope: email и name достаточно для связывания аккаунтов.
- Если важен приватный доступ без облака, рассмотрите локальные голосовые решения. Но большинство облачных функций Google требует доступа в интернет.
Альтернативные подходы и когда интеграция не подходит
- Nabu Casa Cloud: платный сервис, устраняет необходимость в ручной настройке Google Console и публичного HTTPS. Удобно, но платно.
- Локальные интеграции и MQTT: если вы хотите полностью локальное решение без связи с Google, можно настроить локальные голосовые ассистенты или Home Assistant локальный интерфейс. Google в этом случае не используется.
- Если вы не хотите, чтобы сторонние сервисы знали о ваших устройствах — не подключайте Google и пользуйтесь локальными сценариями.
Чек-листы по ролям
Администратор (тот, кто настраивает):
- Иметь доступ к роутеру/серверу Home Assistant.
- Создать проект в Google Console и сервисный аккаунт.
- Загрузить SERVICE_ACCOUNT.json в конфигурацию.
- Проверить сертификат HTTPS.
- Перезапустить Home Assistant и проверить логи.
Пользователь (тот, кто пользуется голосом):
- Иметь Google-аккаунт, привязанный к Google Home.
- Найти и подключить [test] Home Assistant в приложении Google Home.
- Проверить, что выбранные устройства доступны и распределены по комнатам.
Установка и тестирование:
- Тестовый запуск TTS через Developer Tools > Services в Home Assistant.
- Проверка рутин в приложении Google Home.
Мини-методология быстрой настройки
- Подготовить HTTPS-доступ (Cloudflare Tunnel или DuckDNS).
- Создать проект в Google Console и Smart Home action.
- Настроить Account Linking и указать OAuth URL-ы.
- Создать сервисный аккаунт и скачать SERVICE_ACCOUNT.json.
- Загрузить JSON в Home Assistant и обновить configuration.yaml.
- Проверить конфигурацию, перезапустить Home Assistant.
- Связать Home Assistant в приложении Google Home и распределить устройства.
Шаблон для теста автоматизации:
| Шаг | Ожидаемое поведение |
|---|---|
| Срабатывание триггера | Home Assistant фиксирует событие |
| Выполнение действия | TTS/notify отправлен на колонку |
| Воспроизведение | Сообщение слышно в комнате |
Диаграмма принятия решения
flowchart TD
A[Есть HTTPS доступ к HA?] -->|Да| B{Выберите способ}
A -->|Нет| Z[Настройте Cloudflare Tunnel или DuckDNS]
B --> C[Cloudflare Tunnel]
B --> D[DuckDNS + Let's Encrypt]
C --> E[Создать проект в Google Console]
D --> E
E --> F[Создать сервисный аккаунт и включить HomeGraph]
F --> G[Добавить SERVICE_ACCOUNT.json в HA]
G --> H[Добавить Google Assistant в configuration.yaml]
H --> I[Перезапуск HA и проверка]
I --> J[Связать в Google Home и тестировать]Часто задаваемые вопросы
Нужно ли платить за связь Google с Home Assistant?
Нет. Сам интеграционный путь через Actions on Google и сервисный аккаунт бесплатен. Платные варианты существуют (например, Nabu Casa) и упрощают процесс.
Что безопаснее использовать DuckDNS или Cloudflare Tunnel?
Cloudflare Tunnel считается безопаснее, так как не требует открытия входящих портов на роутере. DuckDNS с Let’s Encrypt также безопасен при правильной настройке, но чуть сложнее в управлении.
Можно ли использовать локальные колонки без интернета?
Для локального воспроизведения TTS через Google Home обычно требуется сеть и доступ в интернет. Полностью локальные решения существуют, но они не будут интегрироваться с Google Assistant.
Краткое резюме
- Интеграция Google Assistant с Home Assistant даёт удобное голосовое управление.
- Нужен безопасный HTTPS-доступ; Cloudflare Tunnel рекомендован.
- Необходимо создать Google проект, настроить Account Linking и сервисный аккаунт с HomeGraph API.
- После загрузки SERVICE_ACCOUNT.json и обновления configuration.yaml свяжите Home Assistant в приложении Google Home.
- Используйте TTS и автоматизации для голосовых оповещений.
Итоговые рекомендации:
- Сохраняйте ключи в приватном хранилище.
- Тестируйте автоматизации последовательно.
- Предпочитайте Cloudflare Tunnel для простоты и безопасности.
Похожие материалы
Как сохранить мотивацию к тренировкам зимой
Больше фильтров, линз и стикеров для Snapchat
Версии фото в Adobe Lightroom: просмотр, создание, удаление
Панель анимации PowerPoint: руководство
Kodi + Amazon Echo: голосовое управление