Налаштовуємо інтеграцію пристроїв Nest в Home Assistant
Трохи більше місяця тому, я робив огляд на розумний термостат Nest Learning Thermostat. Це дуже зручний та корисний девайс, який буде підтримувати комфортну температуру всередині вашого помешкання і при цьому заощадить ваші кошти на опаленні.
Як ви вже знаєте, зараз торгова марка Nest належить корпорації Google, і як, часто буває у великих компаніях, не всі напрямки виробництва встигають за запитами користувачів. А те, що Google частково закрив Nest API стало дуже сумною звісткою для незалежних розробників. Якщо ви користуєтесь додатком Nest, який керує виключно власними пристроями, то, мабуть, звернули увагу, що додаток досить давно не оновлювався. Та й девайсів там не так вже й багато.
На мою думку, будь-кому буде набагато зручніше, коли керування девайсами розумного дому знаходиться в одному додатку. Для себе, в якості основної системи я обрав Home Assistant, адже сюди можна інтегрувати дуже багато пристроїв різних виробників, керувати ними та додавати будь-які алгоритми автоматизації.
Хочу попередити, для того, аби ви отримали доступ до Nest Smart Device Management API вам доведеться заплатити $5. Це одноразовий платіж за доступ до API
Після завершення налаштувань через Home Assistant ви отримаєте доступ до таких сутностей: Climate, Sensor, Camera
Реєстрація доступу пристрою
На цьому етапі ви ввімкнете Nest API та створите облікові дані, що необхідні Home Assistant для обміну інформацією з Nest API.
Створення та налаштування Cloud Project в Cloud Console:
- Перейдіть до Google Cloud Console.
- Якщо вперше в консолі, вам потрібно створити новий проект в Google Cloud. Натисніть «Create Project», а потім «New Project».

- Дайте назву вашому проекту та натисніть Create.
- Перейдіть до APIs & Services > Library, тут ви зможете ввімкнути API.
- В полі пошуку введіть «Smart Device management» і натиснвть Enable.

- Тепер в полі пошуку бібліотеки API введіть «Cloud Pub/Sub API» і натисніть Enable.
Тепер у вас є проект, що вже готовий до налаштування аутентифікації за допомогою OAuth.
Налаштування OAuth в Cloud Console Consent Screen
В цьому розділі ви налаштуєте OAuth consent screen, він необхідний для надання Home Assistant доступу до вашого проекту.
- Перейдіть до Google API Console
- Натисніть OAuth consent screen та почніть налаштовувати його.
- Виберіть External (це єдиний варіант, якщо ви не є користувачем G-Suite), а потім натисніть Create.

- На екрані «App Information» потрібно ввести App name (назву додатку) та User support email, а потім ввести електронну адресу в розділі «Developer contact email». Вони відображаються лише під час проходження процедури OAuth, щоб надати Home Assistant доступ до вашого облікового запису. Натисніть Save and Continue. Не додавайте непотрібну інформацію (наприклад, логотип), щоб уникнути додаткових перевірок з боку Google.
- На кроці Scopes натисніть Save and Continue
- На кроці «Test Users» вам потрібно додати свій обліковий запис Google (наприклад, вашу адресу @gmail.com) до списку. Натисніть «Save» у своєму тестовому обліковому записі, а потім «Save and Continue», щоб завершити процес.

- Поверніться до OAuth consent screen і натисніть «Publish App», щоб встановити статус «In Production».

- У попередженні говориться, що ваша програма буде доступна для будь-якого користувача з обліковими записами Google, що ви ввели на екрані інформації про додаток. Це не компрометує ні ваш обліковий запис Google ні ваші дані в Nest.
- Переконайтеся, що не встановлено статус Testing, інакше ви будете виходити з облікового запису кожні 7 днів.
Налаштування OAuth client_id і client_secret в Cloud Console
Наприкінці цього розділу ви отримаєте client_id і client_secret, які потрібні для подальших кроків.
- Перейдіть на сторінку Credentials і натисніть Create Credentials

- В випадаючому списку виберіть OAuth client ID

- Оберіть Desktop App в полі Application type
- Дайте зрозумілу назву для ваших облікових даних
- Тепер ви побачите повідомлення, створене клієнтом OAuth. Зверніть увагу на Client ID та Client Secret, вони знадобляться на наступних кроках.

Створення доступу до пристрою для project_id в Device Access Console
Тепер, коли у вас налаштовано аутентифікацію, ви створите Nest Device Access Project, який вимагає 5 доларів США. Після завершення у вас буде доступ пристрою до project_id, який необхідний для подальших кроків.
- Перейдіть на сторінку Device Access Registration. Натисніть кнопку Go to the Device Access Console.
- Установіть прапорець «Accept the Terms of Service» та натисніть «Continue to Payment», де вам буде необхідно сплатити 5 доларів США.

- Тепер Device Access Console має бути відображена. Натисніть Create project
- Дайте назву вашому проекту і натисніть Next.

- Далі вам буде запропоновано ввести OAuth client ID, який ви створили раніше в попередньому розділі. Натисніть «Next».

- Увімкніть «події», натиснувши «Enable and Create project».

- Зверніть увагу на Project ID. На даний момент у вас є project_id, client_id і client_secret, які необхідні для Home Assistant.
Налаштування Home Assistant
Тепер у вас є все необхідне для налаштування Nest в Home Assistant. Відкрийте файл configuration.yaml і запис згідно зразку що бачите нижче.
# Example configuration.yaml entry
nest:
client_id: CLIENT_ID
client_secret: CLIENT_SECRET
# "Project ID" in the Device Access Console (not Cloud Project ID!)
project_id: PROJECT_ID
Обов’язково перезавантажте Home Assistant в розділі «Server Controls».
Налаштування пристроїв
Після того, як ви додали в configuration.yaml запис про конфігурацію Nest і перезавантажили Home Assistant вам потрібно через інтерфейс користувача додати інтеграцію Nest. Для цього можна скористатися кнопкою «My»:
Можна те саме зробити вручну:
- Перейдіть до інтерфейсу вашого Home Assistant.
- На бічній панелі натисніть «Configuration».
- У меню конфігурації виберіть: Integrations. (в верії 2021.12 Devices & Services)
- У нижньому правому куті натисніть кнопку Add Integration.
- Скористайтесь полем пошуку і виберіть «Nest» та далі дотримуйтесь інструкцій.
Налаштування Nest integration проведе вас через етапи авторизації вашого Home Assistant для доступу вашого облікового запису до пристроїв Nest.
Налаштування OAuth для Device Authorization
У цьому розділі ви дозволите Home Assistant отримати доступ до вашого облікового запису, згенерувавши токен аутентифікації.
- Виберіть OAuth or Apps, оскільки вище, в Google Cloud Console, ми створили облікові дані для комп’ютерних програм.

- Натисніть посилання authorize your account

- Відкриється нова вкладка, на якій можна обрати ваш обліковий запис Google. Це має бути той самий обліковий запис розробника, який ви налаштували раніше.
- Екран дозволів Google Nest дозволить вам обрати, які пристрої налаштувати, і вибирати пристрої з кількох ваших осель. Можливо, ви захочете ввімкнути все, однак ви можете пропустити будь-яку функцію, яку не бажаєте використовувати в вашому Home Assistant.

- Ви будете перенаправлені на іншу сторінку вибору облікового запису.
- Ви можете побачити екран попередження про те, що Google не перевірив цю програму, оскільки ви щойно налаштували непідтверджений developer workflow. Натисніть Continue, щоб продовжити.

- Потім вам буде запропоновано надати доступ до додаткових дозволів. Натисніть Allow.
- Підтвердьте, що ви хочете надати постійний доступ для Home Assistant.

- Скопіюйте токен

- Вставте токен в діалогове вікно Home Assistant Link Account Google.

- Наступним кроком є введення Cloud Project ID, щоб отримувати оновлення з ваших пристроїв. Відкрийте Cloud Console і скопіюйте Project ID.

Якщо все пройшло добре, ви побачите налаштовану інтеграцію Nest

Використання автоматизації та тригерів
Інтеграція Nest робить доступними тригери пристроїв, та можливість увімкнення автоматизацій в Home Assistant. Щоб отримати повну інформацію, перегляньте посібник із початку роботи з автоматизаціями в Home Assistant.

Ви можете використовувати службу nest/set_away_mode, щоб встановити режим «Home» або «Away» :
# Example script to set away, no structure specified so will execute for all
script:
nest_set_away:
sequence:
- service: nest.set_away_mode
data:
away_mode: away
Керування термостатом

Кліматична платформа Nest дозволяє керувати термостатом від Nest. Але зауважте, що через обмеження європейського термостата Nest E інтеграція з Home Assistant для цього термостата неможлива.
Після налаштування інтеграції та додавання картки з термостатом до інтерфейсу Lovelace з’явиться можливість керування вашими Nest девайсами через Home Assistant

Також, тепер є можливість додавати нові сутності climate в тригерах і автоматизаціях, викликаючи відповідну службу за допомогою раніше створених конфігураційних файлів. Шаблони таких налаштувань можна переглянути в інструментах розробника Home Assistant




Garbage dosent’ work
Sure. Look to the date. Google changed nest API.
I can’t get the away mode script to function properly. Is this still valid?
In fact, the instructions may be outdated. You can follow the link to get a new one. Google can change its own API at any time, so it’s worth keeping an eye on it. By the way, yesterday I completely lost control of the thermostat with HA, but I haven’t set up the integration yet.