Найти в Дзене
DigitalComfort

Подключение календаря Google к Home Assistant

Подключение календаря Google к Home Assistant интересно с точки зрения реализаций различных автоматизаций, триггером для которых будут выступать события в календаре. Да, в Home Assistant есть и свой календарь, но календарь Google удобнее в плане интерфейса и он есть по умолчанию на каждом телефоне под ОС Андроид.

Чтобы Google Календарь из вашего телефона появился в Home Assistant, нужно установить интеграцию "Google Calendar" и настроить учётные данные разработчика. Это довольно длинная, но вполне выполнимая процедура. Инструкция описана в официальной документации Home Assistant, однако интерфейс консоли Google Cloud с тех пор немного изменился, и в этой статье я приведу актуальные поясняющие скриншоты настройки по шагам.

Все действия выполняются в веб-браузере, где вы должны быть залогинены в своём Google-аккаунте.

Для начала по этой ссылке переходим в консоль разработчика Google и разрешаем использование API календаря Google, нажав кнопку ENABLE:

-2

Через несколько секунд автоматически будет создан проект "My First Project" и откроется вот эта страница, где нужно нажать кнопку создания учётных данных CREATE CREDENTIALS:

-3

На открывшейся странице в поле "Select an API" выбираем "Google Calendar API" (если не выбрано), выбираем опцию "User Data" и нажимаем NEXT:

-4

На следующем шаге заполняем поле "App Name" (произвольно) и задаём адреса электронной почты в полях "User support email" и "Developer contact information" (также произвольно), нажимаем SAVE AND CONTINUE:

-5

Следующий шаг оставляем без изменений и снова жмём SAVE AND CONTINUE:

-6

И на последнем шаге в поле "Application Type" выбираем "Web application", заполняем поле "Name" (произвольно), в разделе "Authorized redirect URIs" нажимаем ADD URI и вводим конкретно именно этот адрес:
https://my.home-assistant.io/redirect/oauth
После чего нажимаем CREATE:

-7

После этого учётные данные будут созданы:

-8

В левом меню переходим в раздел "OAuth consent screen" и в разделе "Publishing status" нажимаем кнопку PUBLISH APP:

-9

Подтверждаем публикацию приложения:

-10

Статус должен поменяться на "In production":

-11

Всё. Учётные данные созданы. В Home Assistant из этих учётных данных нам потребуется ввести два кода - "Client ID" и "Client secret". Получить их можно, нажав три полоски в верхнем левом углу страницы и выбрав пункт APIs & Services -> Credentials:

-12

Откроется страница с учётными данными нашего приложения, где при нажатии на кнопку "Download OAuth client":

-13

Откроется окно с нужными нам данными:

-14

Чуть позже эти данные нам понадобятся.

Теперь переходим в Home Assistant, чтобы установить интеграцию Google Calendar. Для этого выбираем в меню Настройки -> Устройства и Службы (Интеграции...), нажимаем кнопку "Добавить интеграцию" и находим там Google Календарь:

-15
-16

Интеграция запросит данные авторизации, сюда мы и скопируем полученные ранее Client ID и Client secret:

-17

Нажимаем кнопку "ДОБАВИТЬ", откроется страшное предупреждение, не пугаемся, нажимаем "Дополнительные настройки" и там нажимаем "Перейти на страницу home-assistant.io":

-18

Здесь нажимаем "Продолжить":

-19

После чего откроется страница с подтверждением связки аккаунтов, здесь обязательно нужно отредактировать адрес в поле Your instance URL, нажимаем на карандашик:

-20

Вводим локальный адрес своего Home Assistant и нажимаем "Update":

-21

Если этого не сделать, то на следующем шаге можно получить такую ошибку:

-22

После этого нажимаем "Link account":

-23

И видим сообщение об успешном добавлении интеграции:

-24

Слева в меню у нас появилась строчка Календарь, нажав на которую мы увидим наш Google Календарь внутри Home Assistant:

-25

На этом всё. Календарь Google (все календари google-аккаунта) подключен к Home Assistant. Теперь события можно редактировать как из интерфейса Google привычным способом, так и из интерфейса Home Assistant. Синхронизация изменений происходит не мгновенно, но довольно быстро.

О том, как построить автоматизации с триггерами событий календаря, позже я напишу отдельную статью.