Kapı zili (eski)

Nest Hello

Tüm eski Nest Doorbell'ler, Smart Device Management (SDM) API'de desteklenir. Bu cihaz, DOORBELL cihaz türünü döndürür:

sdm.devices.types.DOORBELL

Google Nest Doorbell (eski), CAMERA cihaz türüyle aynı şekilde çalışan bir kamera içerir.

Özellikler

Referans

Aşağıdaki özellikler, komutlar veya etkinlikler bu cihazla ilgilidir:

ÖzellikAçıklamaKomutlarEtkinlikler
KameraEtkinlik ResmiBu özellik, etkinliklerden görüntü oluşturmayı destekleyen tüm cihazlara aittir.Resim Oluştur
Kamera GörüntüsüBu özellik, resim çekmeyi destekleyen tüm cihazlara aittir.
KameraCanlı YayınBu özellik, canlı yayını destekleyen tüm cihazlara aittir.GenerateRtspStream
ExtendRtspStream
StopRtspStream
KameraHareketiBu özellik, hareket algılama etkinliklerini destekleyen tüm cihazlara aittir.Hareket
Kamera KişisiBu özellik, kişi algılama etkinliklerini destekleyen tüm cihazlara aittir.Kişi
Kamera SesiBu özellik, ses algılama etkinliklerini destekleyen tüm cihazlara aittir.Ses
Kapı ziliBu özellik, kapı zili zilini ve ilgili basın etkinliklerini destekleyen tüm cihazlara aittir.Şili
BilgiBu özellik, cihazla ilgili bilgiler için herhangi bir cihaza aittir.

JSON

Bir GET yanıtında özellik olmaması, özellik veya özelliğin o anda cihaz için kullanılamadığını gösterir. Daha fazla bilgi için Cihaz türleri bölümüne bakın.

{
  "type" : "sdm.devices.types.DOORBELL",
  "traits" : {
    "sdm.devices.traits.CameraEventImage" : {},
    "sdm.devices.traits.CameraImage" : {
      "maxImageResolution" : {
        "width" : 1280,
        "height" : 960
      }
    },
    "sdm.devices.traits.CameraLiveStream" : {
      "maxVideoResolution" : {
        "width" : 640,
        "height" : 480
      },
      "videoCodecs" : ["H264"],
      "audioCodecs" : ["AAC"],
      "supportedProtocols" : ["WEB_RTC"]
    },
    "sdm.devices.traits.CameraMotion" : {},
    "sdm.devices.traits.CameraPerson" : {},
    "sdm.devices.traits.CameraSound" : {},
    "sdm.devices.traits.DoorbellChime" : {},
    "sdm.devices.traits.Info" : {
      "customName" : "My device"
    }
  }
}

Kapı zili ve kamera etkinliklerini yönetin

Aşağıdaki DOORBELL cihaz türü aşağıdaki etkinlikleri tetikleyebilir:

Type Öğe Açıklama
Etkinlik CameraMotion özelliğinin Hareket etkinliği Kamera hareket algıladı.
Etkinlik Kamera Kişisi özelliğindeki Kişi etkinliği Kamera bir kişiyi algıladı.
Etkinlik CameraSound özelliğinin ses etkinliği Kamera ses algıladı.
Etkinlik DoorbellChime ile ilgili Chime etkinliği Kapı ziline basıldı.
Örneğin, burada kapı zili düğmesine basıldı:

Yük

{
  "eventId" : "5fc898da-a76d-4b58-9f9b-b5972414df6b",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "OuHubzETcaD91HaBAXySlFt1WR..." } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
Bu etkinliğin yükü, GenerateImage komutuyla kullanılabilecek bir eventId içeriyor. Bu komut, etkinlikle ilgili kamera görüntüsü için bir indirme URL'si döndürür:

İstek

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraEventImage.GenerateImage",
  "params" : {
    "eventId" : "9_4-WM1YJvhJjipL_vb3HVkTEY..."
  }
}

Yanıt

{
  "results" : {
    "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "token" : "g.0.eventToken"
  }
}

Kamera görüntüsü indirme

Kamera görüntüsünü indirmek için HTTP Yetkilendirmesi başlığında Temel yetkilendirme ile token ifadesini kullanarak bir GenerateImage komut yanıtından url GET çağrısı yapın:

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...

İndirilen resmin çözünürlüğünü özelleştirmek için width veya height sorgu parametrelerini kullanın. Bu parametrelerden yalnızca biri belirtilmelidir. Diğer parametre, kameranın en boy oranına göre otomatik olarak ölçeklendirilir.

Örneğin, kameranın en boy oranı 4:3 ise, kamera resmini 480 x 360 çözünürlüğünde indirmek için genişliği veya yüksekliği belirtin:

Genişlik

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480

Boy

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360

İndirme URL'sine ilişkin diğer kısıtlamalar geçerlidir:

  • URL'de her iki parametre de sağlanırsa width kullanılır ve height yok sayılır.
  • URL'de hiçbir parametre sağlanmazsa width için varsayılan 480 değeri seçilir.

Resim özellikleriyle ilgili bilgi için Kamera Görüntüsü özelliğine bakın.

Canlı yayına erişme

Kameradan yapılan canlı yayına erişilebilir. Bu cihazda aşağıdaki akış biçimleri desteklenir:

  • RTSP

Kameraların ve desteklenen yayın biçimlerinin tam listesi için Desteklenen Cihazlar'a bakın.

Bir canlı yayına erişmek içinKameraLiveStreamözelliğinin uygun Oluştur OluşturFormatkomutunu kullanın.

RTSP

RTSP akışı için CameraLiveStream özellik komutunun GenerateRtspStream komutu, akış URL'sini ve ilgili streamToken değerini döndürür:

İstek

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream",
  "params" : {}
}

Yanıt

{
  "results" : {
    "streamUrls" : {
      "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken"
    },
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
    "streamToken" : "g.0.streamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

Ardından, kameranın canlı yayınına erişmek için canlı yayın URL'sini kullanın:

rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken

RTSP canlı yayın URL'leri istemciler arasında paylaşılamaz. Akış URL'si aynı anda yalnızca bir müşteri tarafından kullanılabilir. Aynı kameradan aynı anda birden çok istemci canlı yayın yapmak istiyorsa her bir istemci için RTSP komutları gönderilmeli ve her müşteri kendi akış URL'sini kullanmalıdır.

Canlı yayını uzatma

Kamera canlı yayın oturumları yalnızca 5 dakika boyunca geçerlidir. Bir canlı yayının geçerlilik süresini uzatmanız gerekiyorsa oluşturduğunuz canlı yayın biçimi için uygun olan KameraLiveStream özelliğinin ExtendFormatYayın komutunu kullanın.

RTSP

Bir RTSP akışını genişletmek için CameraLiveStream özellik komutunun ExtendRtspStream komutunu kullanarak yeni streamExtensionToken ve streamToken değerleri alın:

İstek

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream",
  "params" : {
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
  }
}

Yanıt

{
  "results" : {
    "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "streamToken" : "g.0.newStreamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

Canlı yayını görüntülemeye devam etmek için canlı yayın URL'sini aşağıdaki yeni değerlerle güncelleyin:

rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken

Canlı yayını durdurma

Kamera canlı yayınını artık kullanmadığınızda durdurmanız ve yayını geçersiz kılmanız gerekir. Bunun için, oluşturduğunuz yayın biçimi için uygun olanKameraCanlıCanlıözelliğini durdurmaya uygunFormatCanlı Yayın komutunu kullanın.

RTSP

Bir RTSP yayınını durdurmak için jetonu, CameraLiveStream özellik komutunun StopRtspStream komutuyla geçersiz kılmak için kullanın:

İstek

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream",
  "params" : {
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
  }
}

Yanıt

{}

Hatalar

Bu cihazla ilgili olarak aşağıdaki hata kodları döndürülebilir:

Hata Mesajı RPC Sorun giderme
Kamera resmi artık indirilemiyor. DEADLINE_EXCEEDED Etkinlik resimlerinin süresi, etkinlik yayınlandıktan 30 saniye sonra dolar. Geçerlilik bitiş tarihinden önce resmi indirin.
Etkinlik kimliği kameraya ait değil. FAILED_PRECONDITION Kamera etkinliği tarafından döndürülen doğru eventID öğesini kullanın.

API hata kodlarının tam listesini API Hata Kodu Referansı'nda bulabilirsiniz.