Home Assistant на сегодняшний день — лучший хаб для умного дома. Количество поддерживаемых устройств растет с каждым днем, но с голосовым управлением выбор не велик. Для англоговорящих пользователей уже давно существует Алекса и Google Assistant. Последний мы сегодня и будем добавлять для управления устройствами Home Assistant.
Это бесплатный способ. Существует так же платный, через Home Assistant Cloud, его я рассматривать не буду.
Итак, начнем с требований. Home Assistant должен быть доступен через интернет по SSL. У меня есть для этого отдельная серия статей:
https://kvvhost.ru/2019/03/19/white-ip-with-vpn/
Правильная настройка SSL для удаленного доступа к Home Assistant
Теперь о самой настройке Google Assistant. Переходим в Google Actions и создаем новый проект:
Затем выбираем Home Control:
И Smart home:
Далее выбираем Name your Smart Home action:
И придумываем имя:
Сохраняем.
Далее возвращаемся в раздел Overview и выбираем Setup account linking:
Далее, заполняем:
Client ID: должен быть https://oauth-redirect.googleusercontent.com/
Client secret: любой пароль, не используется Home Assistant, нужен только для google
Authorization URL: https://hass.example.com/auth/authorize
где https://hass.example.com это адрес вашего Home Assistant в интернете
Token URL: https://hass.example.com/auth/token
где https://hass.example.com это так же адрес вашего Home Assistant в интернете
Далее в Configure your client (optional) добавим строчку, и введем email и имя:
Галочку на Google to transmit clientID and secret via HTTP basic auth header ставить не нужно.
В Testing instructions пишем что угодно, например test, и сохраняем:
Теперь возвращаемся на Overview и жмем Add Action(s):
Add fulfillment URL должен быть: https://hass.example.com/api/google_assistant
где https://hass.example.com это адрес вашего Home Assistant в интернете:
Возвращаемся на Overview и жмем Enter information required for listing your Action in the Actions directory:
И заполняем в произвольной форме, это нигде не пригодится:
Privacy Policy можно вставить ссылку на сайт Home Assistant: https://www.home-assistant.io:
Поднимаемся наверх и жмем Save. Опять возвращаемся на Overview и смотрим чтобы везде стояли галочки:
Перейдем на вкладку Test, выбираем русский язык в Language и жмем Start testing:
После жмем Done:
И дожидаемся вот такого подтверждения:
После жмем на три точки для открытия меню и выбираем Project Settings:
Попадаем в настройки, где нам нужен Project ID:
Он необходим для настройки Google Assistant внутри Home Assistant.
Теперь настроим ключ API. Переходим в Google Cloud Console и выбираем свой проект вверху, как показано на скриншоте (если их несколько):
Жмем Перейти к обзору API в карточке API:
и жмем Включить API и сервисы:
Ищем Homegraph API и включаем:
Затем в левой колонке жмем на Учетные данные и жмем на Настроить окно запроса доступа:
На открывшейся странице жмем на вкладку Учетные данные, затем Создать учетные данные, и выбираем Ключ API:
Запишите ваш Ключ API. Можно нажать Закрыть, а можно настроить ограничения, например дать ключу имя, чтобы в будущем отличить его от других:
На стороне Google это всё. Теперь пришло время добавить компонент Google Assistant в наш Home Assistant.
В configuration.yaml:
google_assistant: project_id: PROJECTID api_key: APIKEY exposed_domains: - light
project_id и api_key мы получили ранее.
Чтобы более тонко настроить обнаружение ваших объектов из Home Assistant в Google Assistant посетите https://www.home-assistant.io/components/google_assistant/, там указаны все переменные и их описание.
Теперь переходим в приложение Google Home, жмем + добавить устройство > Настроить устройство > Ранее настроенные устройства, и выбираем наш Home Assistant — значок облака и присвоенное ему вами ранее имя:
Нас перекидывает на страницу авторизации нашего Home Assistant. Авторизуемся, и после устройства появятся:
Update 08.12.2020:
Очень давно не пользовался Google Assistant, но с приобретением Mi Band 4 захотелось попробовать управлять освещением через него. А интеграция уже и не работает. В общем, после вышеописанной настройки я сделал следующее:
Перешел в Google Cloud Platform по этой ссылке и включил HomeGraph API:
Далее перешел по этой ссылке и создал закрытый ключ, который необходимо добавить в конфигурацию Home Assistant:
После нажатия кнопки «Создать» будет загружен .json файл с необходимыми данными:
В configuration.yaml в разделе google_assistant: удалил ненужную строчку api_key и добавил данные из .json файла:
service_account: private_key: "nGIIEvgIGOODANBgkqhkiSCB/и/остальная/часть" client_email: "key-105@hass-45789.iam.gserviceaccount.com"
private_key очень длинный, находится между ——BEGIN PRIVATE KEY——\ и \n——END PRIVATE KEY——\n
Дальше просто заново добавил HA в приложении Google Home и все устройства подтянулись.
Не думаю, что hass лучший.
Конечно же это личное мнение каждого, у всех систем есть свои фаны)
Спасибо автор за исчерпывающую инструкцию. Как пожелание, можно добавить пояснение, для чего делаются те или иные действия.
Кстати, если в HA изменились настройки или названия оборудования, то можно вызвать сервис google_assistant.request_sync и тогда все новые настройки синхронизируются с гугл хоум.
Спасибо за комментарий
Вопрос: как работает голосовое управление, по сравнению с Алисой (что вы предпочитаете, например lenovo smart display или яндекс.станция)?
Какой девайс в принципе посоветуете для голосового управления? Спасибо.
К сожалению устройство для этого не приобретал, так как дома маленький ребенок. Может и зашло бы, но нужно вживую попробовать. Lenovo smart display интересный. В прихожей у меня висит сенсорный 15 дюймовый экран с видеонаблюдением. Пробовал на нем запускать HA для управления, но как то не зашло. Себе бы поставил большую станцию в часто посещаемом месте (кухня, гостиная) и станцию мини в комнаты. но с младенцем пока никак.
Добрый день. Подскажите почему то не появляется окно выбора На выборе No, I only want to allow account creation on my website жмем Next:. Как будто проскакивает этот шаг. А после того как все выполняешь просит заполнить данные о компании. С чем эт может быть связано?
Тоже самое, застрял на данных о компании.
Через гугловый шаблон Smart Home не получилось создать, через дефолный OAuth и Authorization code работает
Я прошёл эту настройку только написав no company в графе name company
А возможно использовать голосовое управления с Android телефона?
Да, все работало как и с любыми облачными устройствами
Спасибо, проверил и уже все заработало.
Не видит все устройства, почему то только 8шт нашел и все.