스마트 홈 FAQ

일반

Q: 클라우드 간 주문 처리 인프라를 어디에서 어떤 언어로 구현해야 하나요?

A: 최신 SSL (TLS) 및 OAuth 2.0을 지원하는 한 원하는 플랫폼과 언어로 인프라를 구현할 수 있습니다. 신뢰성을 개선하고 실제 사용자 기기에서 실행되는 지연 시간을 줄이려면 나머지 인프라와 최대한 가까운 곳에 배포하는 것이 좋습니다.


Q: 기기 ID는 고유해야 하나요?

A: ID는 고유해야 합니다. 서비스 전반에 걸쳐 고유 ID가 없는 경우 사용자 수준에서라도 고유해야 합니다. 여러 홈이 있는 사용자를 가정해 보겠습니다. 두 홈 모두 동일한 사용자와 통합되어 있습니다. 한 집에서 조명을 켜 달라고 요청하면 다른 집에서 ID가 동일한 조명이 켜져서는 안 됩니다.


Q: 기기 이름은 고유해야 하나요?

A: 이름은 고유하지 않아도 되지만, 시간이 지남에 따라 더 나은 사용자 환경을 위해 설정 후 잘못된 이름을 개선하도록 권장할 수 있습니다.

다음은 간단한 이름 지정 가이드입니다.

  • 이름은 사람들이 실제로 말할 수 있는 것이어야 합니다.
  • Google에서는 문자열의 하위 집합을 인식하므로 'acme color light'가 있으면 'acme light'에도 답변합니다.
  • 제품의 설명이 포함된 이름과 하나 이상의 사용자 정의 이름을 사용하는 것이 좋습니다.
  • 조명에 방 이름을 지정할 필요는 없습니다. 방이 있기 때문입니다. 방별로 고유한 이름을 지정해야 하지만 항상 복수를 사용하여 모든 조명을 제어할 수 있습니다 (예: 사무실 벽등의 전구 2개는 '북쪽 조명'과 '동쪽 조명'이지만 '조명'으로만 제어할 수 있음).

Q: 기기 상태는 얼마나 자주 업데이트되나요?

A: 임시 상태는 사용자 시작 작업인 QUERY 또는 EXECUTE 시에 검색됩니다. 사용자가 '조명이 켜져 있나요?'라고 묻거나 조명을 밝게 하려는 경우 현재 상태를 파악하기 위해 쿼리를 실행해야 합니다.


Q: 기기의 현재 상태로 Home Graph를 직접 업데이트할 수 있나요?

A: 예, Report State API 호출을 사용하세요.


계정 연결 및 OAuth

A: 예, 사용자의 기기를 제공업체의 클라우드 서비스에 연결하려면 계정 연결이 필요합니다.


Q: OAuth의 경우 15.213시간마다 액세스 토큰이 만료됩니다. 괜찮은가요?

A: 예, 하지만 만료 시간을 10~20분과 같이 비교적 짧게 설정하여 테스트하세요. OAuth 클라이언트는 필요에 따라 토큰을 새로고침해야 하며, 만료 시간이 짧은 토큰으로 테스트하면 이 기능이 작동하는지 확인할 수 있습니다.


인텐트

Q: 동기화는 언제 발생하나요?

A: 동기화는 OAuth가 완료된 후, 그리고 동기화 요청 호출이 이루어진 후에 즉시 발생합니다.


Q: SYNC가 작동하지 않는 이유는 무엇인가요?

A: 이 문제가 발생할 수 있는 일반적인 이유는 여러 가지가 있습니다.

  • 잘못된 기기 유형을 보내고 있습니다.

    • 예를 들어 action.devices.types.LIGHT를 예상했지만 action.devices.types.Light를 전송합니다.
  • 지원되지 않는 기기 유형을 전송하고 있습니다.

    • 예를 들어 action.devices.types.FLASHLIGHT를 보내는 경우 Google에서 지원하지 않습니다.
  • 잘못되었거나 지원되지 않는 필드를 전송하고 있습니다.

    • 예를 들어 Google 사양에 없는 필드가 있습니다.
  • SYNC 응답에 다른 형식 문제가 있습니다.

    • 브래킷을 확인하세요.
  • 계정 연결 문제가 발생했습니다.

    • SYNC 요청의 Auth 헤더에서 유효한 액세스 토큰을 수신하고 있는지 확인하세요.
  • SYNC 요청에 응답하는 데 너무 오래 걸립니다.

    • 5초 이내에 동기화 요청에 응답하는지 확인하세요.

Q: '대기 중' 응답이 괜찮은가요?

A: 기기를 실시간으로 사용할 수 있는 경우 대기 상태가 아닌 성공/실패 응답을 사용하는 것이 좋습니다. '대기 중' 응답이 필요하다고 생각되면 연락해 주세요. 일부 저전력 비실시간 기기에는 대기 중 응답과 비동기 실행 모델이 필요할 수 있습니다.


테스트 및 제출

Q: 개발 클라우드 환경을 설정할 수 있나요?

A: 예, 출시되지 않은 클라우드 환경과 구성을 테스트할 수 있습니다.


Q: 내 동작이 Google Home 앱의 홈 컨트롤 섹션에 표시되지 않습니다. 어떻게 해야 하나요?

A: 이 프로젝트의 개발자인지 확인합니다.


보고서 상태

Q: Report State를 구현하기 위한 기본 요건이 있나요?

A: 프로젝트에서 스마트 홈 API를 사용하고 OAuth2를 지원해야 하며 보고할 상태가 있는 특성이 있어야 합니다.


Q: 기기에서 상태를 얼마나 자주 보고해야 하나요?

A: Google은 전환과 최종 상태에 관심이 있습니다. 하지만 짧은 시간 내에 상태 변경이 많이 발생하는 경우 (예: 사용자가 1분 동안 냉장고를 세 번 열고 닫거나 조광기를 슬라이드하는 경우) 최종 상태만 보고하면 됩니다.


Q: 상태 보고 호출을 할 때 전체 기기 상태를 전송해야 하나요?

A: 부분 상태 업데이트는 지원되지 않으므로 Report State 호출에는 항상 업데이트된 특정 특성의 모든 데이터가 포함되어야 합니다. 두 특성으로 인해 불일치가 발생하는 경우 함께 다시 보고해야 합니다.


Q: Google에서 내 기기를 쿼리하여 상태를 가져올 수 있나요 (즉, 기기를 폴링할 수 있나요)?

A: 이는 권장되지 않는 대체 메커니즘입니다. 이러한 사용자를 위해 기기를 자주 폴링해야 하는 경우 추가 부하가 어떻게 될지 보장할 수 없습니다. 이 요구사항은 새로운 시각적 노출 영역에서 비롯됩니다. 알 수 없는 로드 문제 외에도 사용자 환경이 저하됩니다. Google에서는 Report State이 플랫폼에 매우 중요하다고 생각합니다.


Q: 현재 어떤 특성이 상태 보고를 지원하나요?

A: 상태가 연결된 모든 공개 특성이 지원됩니다. 기기의 온라인 상태 변경도 보고해야 합니다.

장면에는 상태가 없습니다. 하지만 기기의 상태가 변경될 수 있습니다. Google Home Graph에 있는 기기의 상태가 변경되면 이를 다시 보고해야 합니다.


Q: Report State에 타임스탬프를 전송해야 하나요?

A: 타임스탬프는 필요하지 않습니다. 전송된 마지막 상태가 이전 호출을 재정의합니다.


Q: 이미 Query 또는 Execute에서 상태를 전송하고 있는 경우 상태를 별도로 보고해야 하나요?

A: Home GraphReport State를 통해 전송되는 상태만 저장합니다. EXECUTE 및 QUERY 인텐트에 대한 응답으로 반환되는 상태는 사용자에게 제공되는 음성 응답에만 사용되며 저장되지 않습니다. 따라서 기기의 새 상태가 EXECUTE 또는 QUERY 인텐트에 대한 응답으로 이미 반환된 경우에도 Report State를 호출해야 합니다.


Q: 주어진 기한 내에 보고 상태를 완전히 구현하지 않으면 어떻게 되나요?

A: 이로 인해 Google Home app (GHA) 및 시각적 표시 경로와 같은 사용자 환경이 저하됩니다. 상태를 폴링하기 위해 많은 QUERY 인텐트가 전송되며 이는 파트너 클라우드에 추가 부하를 유발할 수 있습니다.


Q: 보고 상태 구현을 테스트하려면 어떻게 해야 하나요?

A: Home Graph에 저장된 현재 기기 상태를 보여주는 셀프 서비스 테스트 도구인 Home Graph 뷰어를 사용하세요.


Q: 상태 보고에 임의의 requestID를 사용할 수 있나요?

A: Report State이 실행 요청에 의해 트리거되는 경우 파트너는 실행 요청에서 받은 것과 동일한 requestId를 사용하는 것이 좋습니다. 그렇지 않으면 임의의 requestId를 사용하면 됩니다.


Q: 사용자에게 여러 기기가 있고 그중 하나의 상태가 변경된 경우 모든 기기의 최신 상태를 보고해야 하나요?

A: 아니요. 해당 특정 기기의 상태만 보고하면 됩니다.


권장사항

Q: 어떤 종류의 지연 시간이 허용되나요?

A: 200ms 미만이 이상적이며 2~5초는 괜찮습니다. 지연 시간이 5초 정도인 경우 문의해 주세요.


Q: 오프라인 상태일 때 음성 지원 스피커가 올바르게 응답하도록 하려면 어떻게 해야 하나요?

A: 오프라인 기기의 오프라인 상태를 반환합니다. 이 오류에 대해 '지금은 사용할 수 없습니다'가 TTS로 반환됩니다. 자세한 내용은 오류 및 예외를 참고하세요.