스마트 홈 작업을 개발하는 방법을 알아볼 수 있는 새로운 공간인 Google Home 개발자 센터에 오신 것을 환영합니다. 참고: Actions 콘솔에서 작업을 계속 만들 수 있습니다.

로컬 처리

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Local Home SDK는 스마트 홈 인텐트를 라우팅하는 로컬 처리 경로를 추가하여 스마트 홈과 Google 어시스턴트의 통합을 개선합니다.

SDK를 사용하면 TypeScript 또는 자바스크립트를 사용하여 스마트 홈 비즈니스 로직이 포함된 로컬 처리 앱을 작성할 수 있습니다. Google Home이나 Google Nest 기기는 기기에서 앱을 로드하고 실행할 수 있습니다. 앱은 LAN (근거리 통신망)의 Wi-Fi를 통해 기존 스마트 기기와 직접 통신하여 기존 프로토콜을 통해 사용자 명령어를 처리합니다.

SDK를 통합하면 짧은 지연 시간과 더 높은 안정성을 포함하여 스마트 홈 작업의 성능을 향상할 수 있습니다. 로컬 처리는 보조 사용자 확인을 사용하는 항목을 제외한 모든 기기 유형 및 기기 특성에서 지원됩니다.

빌드 시작 샘플 사용해 보기

작동 원리 이해

클라우드 처리에서 SYNC 응답을 수신하면 로컬 홈 플랫폼은 mDNS, UDP 브로드캐스트 또는 UPnP를 사용하여 사용자의 로컬 영역 네트워크를 스캔하여 어시스턴트에 연결된 스마트 기기를 검색합니다.

플랫폼은 IDENTIFY 인텐트를 전송하여 IDENTIFY 응답의 기기 ID를 이전 SYNC 응답에서 반환된 것과 비교하여 기기를 로컬에서 제어할 수 있는지 확인합니다. 감지된 기기가 허브 또는 브리지인 경우 플랫폼이 REACHABLE_DEVICES 인텐트를 전송하고 허브를 로컬 통신을 위한 프록시 기기로 취급합니다.

플랫폼은 로컬 기기를 확인하는 응답을 수신하면 사용자의 Google Home 또는 Google Nest 기기에 관한 로컬 처리 경로를 설정하고 이후 로컬 처리를 위해 사용자 명령어를 라우팅합니다.

사용자가 로컬 처리 경로가 있는 스마트 홈 작업을 트리거하면 어시스턴트는 클라우드 처리가 아닌 Google Home 또는 Google Nest 기기에 EXECUTE 인텐트나 QUERY 인텐트를 전송합니다. 그런 다음, 기기가 로컬 처리 앱을 실행하여 인텐트를 처리합니다.

이 그림은 로컬 처리의 실행 흐름을 보여줍니다. 실행 경로는 Google 어시스턴트가 휴대전화에서 사용자의 인텐트를 캡처한 다음 Google Cloud에서 처리된 후 Google Home 기기에서 로컬로 실행되고 명령어는 기기 허브로 직접 또는 기기로 직접 실행됩니다. 개발자 클라우드는 클라우드 대체로 사용할 수 있습니다.
그림 1: 스마트 홈 작업의 로컬 처리 경로 추가

로컬 홈 플랫폼은 명령어를 트리거할 Google Home 또는 Google Nest 기기를 선택하지 않으므로 확정적이지 않습니다. EXECUTEQUERY 인텐트는 대상 기기와 동일한 홈 그래프 구조에 정의된 모든 Google Home 또는 Google Nest 기기를 통해 제공될 수 있습니다.

로컬 처리 앱

로컬 처리 앱에는 로컬 홈 플랫폼에서 보낸 인텐트를 처리하고 로컬 영역 네트워크를 통해 스마트 기기에 액세스하는 비즈니스 로직이 포함되어 있습니다. 하드웨어 수정은 로컬 처리를 통합할 것으로 예상되지 않습니다. 앱은 HTTP, TCP, UDP 등의 애플리케이션 레이어 프로토콜을 통해 제어 명령어를 스마트 기기에 전송하여 스마트 홈 작업 요청을 처리합니다. 로컬 처리 경로가 실패할 경우 클라우드 처리는 대체 실행 경로로 사용됩니다.

앱 빌드를 지원하기 위해 로컬 홈 SDK는 다음 두 가지 기본 클래스를 제공합니다.

  • DeviceManager: TCP, UDP 소켓 또는 HTTP 요청을 사용하여 스마트 기기와 통신하는 메서드를 제공합니다.
  • App: 로컬에서 제어할 수 있는 기기(IDENTIFY, REACHABLE_DEVICES)를 검색한 후 Google에서 전송하는 인텐트의 핸들러를 연결하는 메서드를 제공합니다. 이 클래스는 사용자 명령어(EXECUTE)를 처리하고 현재 기기 상태(QUERY)에 관한 사용자 쿼리에 답변합니다.

개발 중에 앱을 자체 호스팅 서버 또는 로컬 개발 머신에 로드하여 빌드하고 테스트할 수 있습니다. 프로덕션 단계에서는 Google이 사용자의 Google Home 또는 Google Nest 기기의 안전한 자바스크립트 샌드박스 환경에서 앱을 호스팅합니다.

Report State API는 현재 로컬 처리에서 지원되지 않습니다. Google은 클라우드 처리를 사용하여 이러한 요청을 처리합니다.

애플리케이션 수명 주기

로컬 홈 플랫폼이 프로젝트 스캔 구성과 일치하는 새로운 로컬 기기를 발견하거나 이전에 식별된 기기와 관련하여 전송 대기 중인 인텐트가 있는 경우 로컬 처리 앱이 요청 시 로드됩니다.

Google Home 또는 Google Nest 기기에는 메모리 제약이 있으며 시스템의 메모리 압력으로 인해 로컬 처리 앱이 언제든지 종료될 수 있습니다. 앱이 메모리를 너무 많이 소비하기 시작하거나 시스템이 다른 앱을 위한 공간을 확보해야 하는 경우에 발생할 수 있습니다. 로컬 홈 플랫폼은 앱을 실행할 새 인텐트와 앱이 실행할 수 있는 충분한 메모리 리소스가 있을 때만 앱을 다시 시작합니다.

사용자가 계정을 연결 해제하거나 사용자의 agentUserId와 연결된 로컬 처리를 지원하는 기기가 더 이상 없는 경우 로컬 홈 플랫폼은 유휴 시간 초과 후 앱을 언로드합니다.

지원되는 기기

로컬 홈 플랫폼은 지원되는 Google Home 또는 Google Nest 기기에서 로컬 처리 앱을 실행합니다. 다음 표에서는 지원되는 기기와 각 기기에서 사용되는 런타임을 설명합니다. 런타임 요구사항에 대한 자세한 내용은 실행 환경을 참조하세요.

기기 유형 환경
Google Home 스피커 Chrome
Google Home Mini 스피커 Chrome
Google Home Max 스피커 Chrome
Nest Mini 스피커 Chrome
Nest Hub 디스플레이 Chrome
Nest Hub Max 디스플레이 Chrome
Nest Wifi 라우터 Node.js
Point Chrome

실행 환경

로컬 처리 앱의 실행 환경은 기기에 따라 다릅니다. 로컬 홈 플랫폼은 다음과 같은 런타임 환경을 지원합니다.

소스 코드 구조

로컬 홈 SDK에서 제공하는 번들 구성을 사용하여 종속 항목을 단일 자바스크립트 파일로 번들하고 소스 코드를 즉시 호출되는 함수 표현식(IIFE)으로 패키징하는 것이 좋습니다.

구현 경로

스마트 홈 통합에 Local Home SDK를 활용하려면 다음 작업을 실행해야 합니다.

1 스캔 구성 설정 어시스턴트가 로컬로 제어 가능한 기기를 검색하는 데 필요한 매개변수를 사용하여 Actions 콘솔을 구성합니다.
2 클라우드 처리에서 SYNC 응답 업데이트 클라우드 처리에서 SYNC 요청 핸들러를 수정하여 플랫폼에서 로컬 처리 경로를 설정하는 데 사용하는 otherDeviceIds 필드를 지원합니다. 이 필드에서 로컬로 제어할 수 있는 기기의 ID를 지정합니다.
3 로컬 처리 앱 구현 IDENTIFY, EXECUTE, QUERY 인텐트를 처리할 자바스크립트 앱을 만들려면 로컬 홈 SDK를 사용합니다. 허브 또는 브리지 프록시 기기의 경우 REACHABLE_DEVICES 인텐트도 처리해야 합니다.
4 앱 테스트 및 디버그 Google Home 테스트 모음을 사용해 통합 (또는 자체 인증)을 테스트합니다.

시작하기 전에