Etkinliklere Abone Olma

Etkinlikler eşzamansızdır ve Google Cloud Pub/Sub tarafından yönetilir. Her Projectiçin tek bir konu kullanılır. Etkinlikler, tüm cihazlar ve yapılar için güncellemeler sağlar. Erişim jetonu kullanıcı tarafından iptal edilmediği ve etkinlik mesajlarının süresi dolmadığı sürece etkinliklerin alınması garanti edilir.

Etkinlikler, SDM API'nin isteğe bağlı bir özelliğidir. Google Cloud projeniz kullanılarak kolayca uygulanabilir ve doğrulanabilir.

Etkinlikleri etkinleştir

Etkinlikler Device Access Konsolu'nda etkinleştirilebilir. Henüz yapmadıysanız Konsol'da projenizi seçin.

Device Access Konsol'a gidin

Etkinlikleri daha önce etkinleştirdiyseniz (ör. proje oluşturma sırasında) Etkinlikler için Pubsub konusunu etkinleştirin bölümündeki Pub/Sub konusu alanında, eski biçimde bir değer (Konu Kimliği olarak adlandırılır) bulunuyor olmalıdır:

projects/sdm-prod/topics/enterprise-project-id

Google tarafından barındırılan bir konudan geçiş yapmak için Device Access Console'da Google tarafından barındırılan Pub/Sub konusunu devre dışı bırakın ve kendi Google Cloud projenizde oluşturulan, kendiniz tarafından barındırılan bir Pub/Sub konusu kullanarak etkinlikleri yeniden etkinleştirin. Pub/Sub konu yapılandırmanızı taşıdığınızda mevcut kullanıcı erişim jetonları veya OAuth izinleri geçersiz kılınmaz.

Kendi bünyesinde barındırılan Pub/Sub konuları kendi Google Cloud projenizde oluşturulabilir veya değiştirilebilir ve standart Google Cloud Pub/Sub fiyatlandırmasına (ayda 10 GB ücretsiz katman dahil) tabidir.

Pub/Sub konusunu oluşturun:

gcloud pubsub topics create {topic} --message-retention-duration=0s

Projenizin konu kimliği için etkinlik verilerine erişmek ve bunları yayınlamak üzere gerekli SDM API izinlerini verin:

gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"

Yeni oluşturduğunuz konu kimliğinizin biçimi şu şekilde görünür:

projects/gcp-project-name/subscriptions/topic-id

Etkinlikleri etkinleştirme işlemini tamamlamak için Konu Kimliğinizi not edin. Daha fazla bilgi için Konu oluşturma başlıklı makaleyi inceleyin.

Etkinlikleri etkinleştirmek (veya Google tarafından barındırılan bir konudan geçiş yapmak) için:

  1. Yeni bir proje oluşturuyorsanız Etkinlikleri etkinleştir'i seçin ve Proje Oluştur'u tıklayın. Mevcut bir projeyi Google tarafından barındırılan bir konudan taşıyorsanız öncelikle projenin bilgi ekranında mevcut Pub/Sub konusunu devre dışı bırakın.
  2. Pub/Sub konusu için simgesini tıklayın ve PubSub konusu içeren etkinlikleri etkinleştir'i (veya Mevcut konuyu düzenle'yi) seçin.
  3. Daha önce oluşturduğunuz, kendi kendine barındırılan Pub/Sub konu kimliğini girin.

Konu kimliğinizi kopyalayın. Etkinlik mesajlarının alınabilmesi için konu aboneliği oluşturmak üzere bu kimliğe ihtiyacınız olacaktır.

Çekme aboneliği oluşturma

Pull aboneliğinde, abone sıraya alınmış etkinlik mesajları için Pub/Sub sunucusuna istek gönderir. Bu yöntem, yetkili cihazlarınız için etkinlik oluşturulduğunu doğrulamanın hızlı ve kolay bir yoludur.

Google Cloud projeniz için Cloud Shell'i açın:

Google Cloud Shell'e gitme

Cloud Shell isteminde, istediğiniz subscription-id ve benzersiz konu kimliğinizi kullanarak konunuz için bir çekme aboneliği oluşturmak üzere aşağıdaki komutu çalıştırın:

gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].

Etkinlikleri başlatma

Pub/Sub aboneliği oluşturulduktan sonra etkinlikleri ilk kez başlatmak için cihazlarınızı tek seferlik tetikleyici olarak listelemek üzere bir çağrı yapın:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Bu API çağrısından sonra tüm yapılar ve cihazlarla ilgili etkinlikler yayınlanır.

Etkinlik oluşturma

Tüm özellik alanı değişiklikleri için etkinlikler oluşturulur. Bu değişikliklerden bazıları otomatik, bazıları ise manueldir.

Örneğin, Nest Termostat'ınızın yakınındaki ortam sıcaklığı değişirseTemperature özelliği için bir etkinlik otomatik olarak yeni bir ambientTemperatureCelsius değeriyle gönderilir.

Manuel olarak oluşturmak için aşağıdakilerden birini yapın:

  1. Cihazınızın durumunu fiziksel olarak değiştirme (ör. Nest termostatınızın modunu değiştirme)
  2. Google Nest Cam Indoor'da hareket, kişi veya ses gibi bir etkinliği tetikleme
  3. SDM API'yi kullanarak cihaz komutu yürütme.

Mesajları göster

Etkinlik iletileri, Google Cloud projenizdeki Pub/Sub Abonelikleri bölümünde görüntülenebilir:

Google Cloud Pub/Sub Abonelikleri'ne gidin

  1. Daha önce oluşturduğunuz abonelik kimliğini tıklayın.
  2. Abonelik ayrıntıları ekranında, Onaylanmamış ileti sayısı grafiğinin etkinliğini görmeniz gerekir. Bu, aboneliğiniz için etkinlik mesajlarının alındığını gösterir. Herhangi bir etkinlik görmüyorsanız biraz bekleyin veya birkaç etkinlik daha oluşturun.
  3. MESAJLARI GÖSTER'i tıklayarak Mesajlar panelini açın.
  4. Mesajları görüntülemek için PULL'u (ÇEK) tıklayın. Bunlar, etkinlik oluşturmak için kullandığınız işlemlerle eşleşmelidir.

Mesajlar, Cloud Shell'de temel bir pull komutuyla da görüntülenebilir:

gcloud pubsub subscriptions pull subscription-id

Abonelik türleri ve SDM API tarafından gönderilen etkinlik türleri ile bunların nasıl kullanılacağı hakkında daha fazla bilgi için Etkinlikler başlıklı makaleyi inceleyin.

Mesajları yönetme

Aboneliğin temiz kalması ve diğer abonelere iletilerin yinelenerek gönderilmemesi için iletiler düzenli olarak onaylanmalı ve temizlenmelidir. Tüm abonelik mesajları, Pub/Sub Abonelikleri bölümünde manuel olarak temizlenebilir:

Google Cloud Pub/Sub Abonelikleri'ne gidin

  1. Abonelik kimliğini tıklayın.
  2. Onaylama ve temizleme işlemini birkaç şekilde yapabilirsiniz:
    1. MESAJLARI GÖSTER'i tıklayarak Mesajlar panelini açın. Onay mesajlarını etkinleştir onay kutusunu işaretleyin ve tüm mesajları görüntüleyip onaylamak için PULL'u (ÇEK) tıklayın.
    2. Mevcut tüm iletileri görüntülemeden onaylayarak tamamen silmek için İLETİLERİ TAMAMEN SİL'i tıklayın. Onaylamak için PURGE'yi tıklayın.

İletiler, temel bir pull komutuyla --auto-ack işareti kullanılarak Cloud Shell'de de temizlenebilir:

gcloud pubsub subscriptions pull subscription-id --auto-ack

Abonelikleri yönet

Abonelikler, Abonelik özelliklerini kullanma bölümünde açıklandığı gibi çeşitli şekillerde yapılandırılabilir.

Abonelikleri ve mesajları nasıl yönetmek istediğiniz size bağlı olsa da bir üretim uygulamasında, bu hızlı başlangıç kılavuzunda şimdiye kadar yaptığınız gibi bir kullanıcı hesabı yerine kimlik doğrulama için hizmet hesaplarını kullanmanızı öneririz. Hizmet hesabı, bir kişi tarafından değil bir uygulama veya sanal makine tarafından kullanılır ve kendine ait benzersiz bir hesap anahtarı vardır.

Device Accessile hizmet hesabı kimlik doğrulaması hakkında daha fazla bilgi için Etkinlikler bölümüne bakın.