이벤트는 비동기식이며 Google Cloud Pub/Sub에서 관리하며, Project당 하나의 주제에 있습니다. 이벤트는 모든 기기와 구조에 업데이트를 제공하며, 사용자가 액세스 토큰을 취소하지 않고 이벤트 메시지가 만료되지 않는 한 이벤트 수신이 보장됩니다.
이벤트는 SDM API의 선택적 기능입니다. Google Cloud 프로젝트를 사용하여 쉽게 구현하고 확인할 수 있습니다.
이벤트 사용 설정
이벤트는 Device Access Console에서 사용 설정할 수 있습니다. 아직 선택하지 않은 경우 콘솔에서 프로젝트를 선택합니다.
이미 이벤트를 사용 설정한 경우 (예: 프로젝트 생성 중) 이벤트의 Pub/Sub 주제 사용 설정 섹션의 Pub/Sub 주제 필드에 이미 값이 있어야 합니다. 이 값은 주제 ID라고 하며 이전 형식은 다음과 같습니다.
projects/sdm-prod/topics/enterprise-project-id
이 주제 형식은 Google에서 호스팅하며 Google 호스팅 Pub/Sub 주제를 사용 중지하지 않는 한 프로젝트에 유지됩니다. 나중에 다시 사용 설정하면 자체 호스팅 Pub/Sub 주제로 전환됩니다.
자체 호스팅 Pub/Sub 주제는 개발자 자신의 Google Cloud 프로젝트에서 만들거나 변경할 수 있습니다. 개발자는 Pub/Sub 사용과 관련된 모든 비용도 책임집니다. 자세한 내용은 Pub/Sub 가격 책정을 참고하세요.
Pub/Sub 주제를 만듭니다.
gcloud pubsub topics create {topic} --message-retention-duration=0s
프로젝트의 주제 ID에 액세스하고 이벤트 데이터를 게시하는 데 필요한 SDM API 권한을 부여합니다.
gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"
새로 생성된 주제 ID의 형식은 다음과 같습니다.
projects/gcp-project-name/subscriptions/topic-id
주제 ID를 기록해 두세요. 이벤트를 사용 설정하는 데 필요합니다. 자세한 내용은 주제 만들기를 참고하세요.
이벤트를 사용 설정하려면 다음 단계를 따르세요.
- 이벤트 사용 설정을 선택하고 프로젝트 만들기를 클릭합니다.
- Pub/Sub 주제의 아이콘을 클릭하고 PubSub 주제가 있는 이벤트 사용 설정을 선택합니다.
- 이전에 제공되었거나 생성된 Pub/Sub 주제 ID를 입력합니다.
주제 ID를 복사합니다. 이벤트 메시지를 가져올 수 있도록 주제를 구독하는 데 필요합니다.
풀 구독 만들기
풀 구독은 구독자가 대기열에 추가된 이벤트 메시지에 대해 Pub/Sub 서버에 요청을 시작하는 경우입니다. 이 방법은 승인된 기기에서 이벤트가 생성되는지 빠르고 쉽게 확인할 수 있는 방법입니다.
Google Cloud 프로젝트에서 Cloud Shell을 엽니다.
Cloud Shell 프롬프트에서 다음 명령어를 실행하여 원하는 subscription-id와 고유한 주제 ID를 사용하여 주제에 대한 풀 구독을 만듭니다.
gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].
이벤트 시작
Pub/Sub 구독이 생성된 후 처음으로 이벤트를 시작하려면 기기를 나열하는 호출을 일회성 트리거로 만드세요.
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
이 API 호출 후 모든 구조와 기기의 이벤트가 게시됩니다.
이벤트 생성
이벤트는 모든 특성 필드 변경사항에 대해 생성되며, 일부는 자동이고 일부는 수동입니다.
예를 들어 Nest 온도 조절기 근처의 주변 온도가 변경되면Temperature 특성의 이벤트가 새 ambientTemperatureCelsius
값과 함께 자동으로 전송됩니다.
수동으로 생성하려면 다음 중 하나를 실행하세요.
- Nest 온도 조절기의 모드를 변경하는 등 기기의 상태를 직접 변경합니다.
- Google Nest Cam Indoor에서 움직임, 사람, 소리와 같은 활동을 트리거합니다.
- SDM API를 사용하여 기기 명령어 실행
메시지 보기
이벤트 메시지는 Google Cloud 프로젝트의 Pub/Sub 구독 섹션에서 확인할 수 있습니다.
- 이전에 만든 구독 ID를 클릭합니다.
- 구독 세부정보 화면에 확인되지 않은 메시지 수 차트의 활동이 표시됩니다. 이는 구독에 대한 이벤트 메시지가 전송되었음을 나타냅니다. 활동이 표시되지 않으면 잠시 기다리거나 이벤트를 몇 개 더 생성하세요.
- 메시지 보기를 클릭하여 메시지 패널을 표시합니다.
- PULL을 클릭하여 메시지를 확인합니다. 이러한 값은 이벤트를 생성하는 데 사용한 작업과 일치해야 합니다.
기본 pull
명령어를 사용하여 Cloud Shell에서 메시지를 볼 수도 있습니다.
gcloud pubsub subscriptions pull subscription-id
구독 유형, SDM API에서 전송하는 이벤트 유형, 이벤트 사용 방법에 대한 자세한 내용은 이벤트를 참고하세요.
메일 관리
구독을 정리하고 다른 구독자에게 중복 메시지가 전송되지 않도록 하려면 메시지를 정기적으로 확인하고 삭제해야 합니다. 모든 구독 메시지는 Pub/Sub 구독 섹션에서 수동으로 삭제할 수 있습니다.
- 구독 ID를 클릭합니다.
- 확인 및 삭제하는 방법에는 몇 가지가 있습니다.
- 메시지 보기를 클릭하여 메시지 패널을 표시합니다. 확인 메시지 사용 설정 체크박스를 선택하고 가져오기를 클릭하여 모든 메시지를 확인합니다.
- 메시지 삭제를 클릭하여 메시지를 보지 않고 확인하여 기존 메시지를 모두 삭제합니다. PURGE를 클릭하여 확인합니다.
기본 pull
명령어와 함께 --auto-ack
플래그를 사용하여 Cloud Shell에서 메시지를 삭제할 수도 있습니다.
gcloud pubsub subscriptions pull subscription-id --auto-ack
구독 관리
구독은 구독 속성 사용에 설명된 대로 다양한 방식으로 구성할 수 있습니다.
구독과 메시지를 관리하는 방법은 개발자에게 달려 있지만, 프로덕션 애플리케이션의 경우 이 빠른 시작 가이드에서 지금까지 사용한 사용자 계정 대신 인증에 서비스 계정을 사용하는 것이 좋습니다. 서비스 계정은 사용자가 아닌 애플리케이션 또는 가상 머신에서 사용하며 고유한 계정 키가 있습니다.
Device Access를 사용한 서비스 계정 인증에 대한 자세한 내용은 이벤트를 참고하세요.