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üyor:

sdm.devices.types.DOORBELL

Google Nest Doorbell'de (eski) CAMERA cihaz türüyle aynı şekilde çalışan bir kamera bulunur.

Özellikler

Referans

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

ÖzellikAçıklamaKomutlarEtkinlikler
CameraEventImageBu özellik, etkinliklerden görüntü oluşturmayı destekleyen tüm cihazlara aittir.GenerateImage
CameraImageBu özellik, resim çekmeyi destekleyen tüm cihazlara aittir.
CameraLiveStreamBu özellik, canlı yayını destekleyen tüm cihazlara aittir.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionBu özellik, hareket algılama etkinliklerini destekleyen tüm cihazlara aittir.Hareket
CameraPersonBu özellik, kişi algılama etkinliklerini destekleyen tüm cihazlara aittir.Kişi
CameraSoundBu özellik, ses algılama etkinliklerini destekleyen tüm cihazlara aittir.Ses
DoorbellChimeBu özellik, kapı zili zilini ve ilgili basın etkinliklerini destekleyen tüm cihazlara aittir.Çim
BilgiBu özellik, cihazla alakalı bilgiler için kullanılan tüm cihazlara aittir.

JSON

GET yanıtında bir özelliğin olmaması, özelliğin veya özelliğin şu 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

DOORBELL cihaz türünden aşağıdaki etkinlikler tetiklenebilir:

Tür Öğe Açıklama
Etkinlik CameraMotion özelliğinin Motion etkinliği Kamera hareket algıladı.
Etkinlik CameraPerson özelliğinin Person etkinliği Kamera, birini algıladı.
Etkinlik CameraSound özelliğinin ses etkinliği Kamera ses algıladı.
Etkinlik DoorbellChime özelliğinin Chime etkinliği Kapı ziline basıldı.
Örneğin, şurada kapı zili düğmesine basılmış:

Yük

{
  "eventId" : "119bfb86-3c27-4e12-ba3c-b35177badda0",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "i_MVBkcoLJkn7d6J1GIhbq5M5m..." } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
Bu etkinliğin yükü GenerateImage komutuyla kullanılabilecek bir eventId içerir. Bu komut, etkinlikle ilgili kamera resmi 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" : "3T7wSCdxnQKNnna6Yxg4DXlLFW..."
  }
}

Yanıt

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

Kamera görüntüsünü indirin

Kamera görüntüsünü indirmek için Temel yetkilendirme ile HTTP Yetkilendirmesi başlığında token öğesini kullanarak bir GenerateImage komut yanıtından url için 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 birinin belirtilmesi gerekir. 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 480 x 360 çözünürlüklü kamera resmini 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'siyle ilgili diğer kısıtlamalar geçerlidir:

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

Resim özellikleri hakkında bilgi için KameraGörüntü özelliğine bakın.

Canlı yayına erişme

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

  • RTSP

Kameraların tam listesi ve desteklenen yayın biçimleri için Desteklenen Cihazlar bölümüne bakın.

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

RTSP

Bir 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 kamera canlı yayınına erişmek için yayın URL'sini kullanın:

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

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

Canlı yayının süresini uzatma

Kamera canlı yayın oturumları yalnızca 5 dakika boyunca geçerlidir. Bir canlı yayının ömrünü uzatmak istiyorsanız oluşturduğunuz yayın biçimi için KameraLiveStream özelliğinin uygun ExtendFormatStream komutunu kullanın.

RTSP

Bir RTSP akışını genişletmek için CameraLiveStream özellik komutunun ExtendRtspStream komutunu kullanarak yeni streamExtensionToken ve streamToken değerlerini 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ı izlemeye devam etmek için yayın URL'sini şu yeni değerlerle güncelleyin:

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

Canlı yayını durdurma

Kamera canlı yayınını sonlandırdığınızda yayını durdurmanız ve geçersiz kılmanız gerekir. Bunu yapmak için, oluşturduğunuz akış biçimi için uygun olanKameraLiveStreamözelliğinin uygun FormatAkış Durdur komutunu kullanın.

RTSP

Bir RTSP akışını durdurmak için CameraLiveStream özellik komutunun StopRtspStream komutuyla geçersiz kılmak üzere jetonu 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. Resmi, süresi dolmadan önce indirmeyi unutmayın.
Etkinlik kimliği kameraya ait değil. FAILED_PRECONDITION Kamera etkinliği tarafından döndürülen doğru eventID değerini kullanın.

API hata kodlarının tam listesi için API Hata Kodu Referansı'na bakın.