Интеграция с Google Home. 3 - создание проекта в Google Assistant
Я продолжаю рассказ о том, как сделать интеграцию с Google Home своими руками. В этом проекте я буду интегрировать несколько домашних кондиционеров, которые исходно управляются с пульта по infrared. Интеграция с Google Home означает возможность сказать “Hey G, turn on air conditioner” и получить желаемый результат.
В этой части я расскажу, как создать проект в Google Assistant и Firebase. И для разогрева создам простой “Hello, world” для Firebase Functaions.
Полный список заметок этой серии:
- Интеграция с Google Home. 1 - устройства и команды
- Интеграция с Google Home. 2 - хранение состояний
- Интеграция с Google Home. 3 - создание проекта в Google Assistant (вы здесь)
- Интеграция с Google Home. 4 - Обзор Google Home API
- … продолжение следует
- IR интерфейс, Raspberry и LIRC
- Smart Home Device: получение обновлений из Firebase Realtime Database
Создагние проектов Assistant и Firebase
У Google Home нет собственной консоли и собственных проектов. Его проекты - это проекты определенной категории в рамках Google Assistant. Дальше я расскажу о шагах, чтобы “накликать” себе проект. Если вы уже знакомы с консолями Assistant и Firebase - прочитайте два абзаца ниже и смело листайте к следующей статье.
Итак, чтобы создать проект:
Actions on Google console -> Add/import project -> Укажите имя -> Create project -> дальше из списка Home control -> Home automation. Проект создан, настраивать буду потом.
Вкладка Develop -> В левом меню в самом низу Backend Services -> Cloud Functions -> View in Firebase – и в Firebase будет создан одноименный проект. Выглядит удобно.
ID созданного проекта можно посмотреть в Project Settings как в Actions on Google console, так и в Firebase Console. Запомните его, он нам потребуется.
Далее локально:
npm install -g firebase-tools
firebase login
firebase init functions
При логине используйте тот же аккаунт, в котором созданы проекты. При инициализации выберите созданный на предыдущем шаге проект и TypeScript.
Исходники функций будут лежать внутри созданного каталога проекта в functions/src/
,
там исходно есть index.ts
“Hello, World” на TypeScript в Firebase Functions
Дальше я создаю “Hello, World” в Firebase Functions.
Чтобы структурировать исходники, тестовая функция пойдет в файл hello.ts
:
import * as functions from 'firebase-functions'
export const helloWorld = functions.https.onRequest((request, response) => {
response.send('Hello from Firebase!\n\n');
});
В index.ts
остается только повторный экспорт:
export * from "./hello"
Дальше можно задеплоить и вызвать функцию с помощью curl
. URL функции можно посмотреть в сообщениях при деплое,
и он всегда виден в консоли Firebase.
firebase deploy --only functions
curl https://us-central1-YOUR-PROJECT-ID.cloudfunctions.net/myhome
Немного о TypeScript
На примере этой простейшей функции видно, как в TypeScript осуществляется импорт и экспорт. Эти места придется всегда исправлять, если копипастить себе какие-то чужие примеры на JavaScript.
Поскольку это мое первое знакомство с TypeScript и почти первое с Firebase Functions, я нагуглил немного ресурсов:
- Хорошее обзорное видео
- Use TypeScript for Cloud Functions by Google
- Cloud Functions for Firebase: getting started with TypeScript - примеры на GitHub
- Learning Cloud Functions for Firebase (video series)
Для написания кода я использую WebStorm от JetBrains, версия из “Early Access Program” бесплатная.