Kapı zili (eski)

Nest Hello

Eski Nest kapı zillerinin tümü Smart Device Management (SDM) API'de desteklenir. Bu cihaz, KAPI ZILI cihaz türünü döndürür:

sdm.devices.types.DOORBELL

Google Nest Doorbell (eski) cihazında, CAMERA cihaz türüyle aynı işlevi gören bir kamera bulunur.

Özellikler

ReferansJSON

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

ÖzellikAçıklamaKomutlarEtkinlikler
CameraEventImageBu özellik, etkinliklerden resim 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 çalmasını ve ilgili basma etkinliklerini destekleyen tüm cihazlara aittir.Chime
BilgiBu özellik, cihazla ilgili bilgiler için herhangi bir cihaza aittir.

GET yanıtında bir özelliğin bulunmaması, özelliğin şu anda cihazda kullanılamadığını gösterir. Daha fazla bilgi için Cihaz türleri başlıklı makaleyi inceleyin.

{
  "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 işleme

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

Tür Öğe Açıklama
Etkinlik CameraMotion özelliğinin Hareket etkinliği Kamera hareket algıladı.
Etkinlik CameraPerson özelliğinin Kişi etkinliği Kamera bir kişi 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, burada kapı zili düğmesine basılmıştır:

Yük
{
  "eventId" : "c3ba1df3-4cea-4d3f-ad0f-a75c23b0a181",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "KnvqSlV7Nk9DUhtiQ8rmdynp-R..." } } } "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 görüntüsünün indirme URL'sini döndürür:

İstekYanıt
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraEventImage.GenerateImage",
  "params" : {
    "eventId" : "JS5C86RzliywHwDBB5TEbY6c7z..."
  }
}
{
  "results" : {
    "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "token" : "g.0.eventToken"
  }
}

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

Kamera görüntüsünü indirmek için GenerateImage komut yanıtından url için GET çağrısı yapın. Temel yetkilendirmeyle HTTP Authorization başlığındaki token öğesini kullanı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 kamera görüntüsünü 480 x 360 çözünürlüğünde indirmek için genişliği veya yüksekliği belirtin:

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

İndirme URL'si için 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 bu parametrelerden hiçbiri sağlanmazsa width için varsayılan değer 480 olur.

Resim özellikleri hakkında bilgi edinmek için CameraImage özelliğine bakın.

Canlı yayına erişim

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

  • RTSP

Kameraların ve desteklenen yayın biçimlerinin tam listesi için Desteklenen Cihazlar başlıklı makaleyi inceleyin.

Canlı yayına erişmek içinCameraLiveStream özelliğinin uygun GenerateFormatStream komutunu kullanın.

RTSP

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

İstekYanıt
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream",
  "params" : {}
}
{
  "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 akış URL'sini kullanın:

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

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

Canlı yayını uzatma

Kamera canlı yayın oturumları yalnızca 5 dakika sürer. Bir canlı yayının süresini uzatmak istiyorsanız oluşturduğunuz yayın biçimi içinCameraLiveStream özelliğinin uygun ExtendFormatStream (Yayın süresini uzat) komutunu kullanın.

RTSP

Bir RTSP yayınını uzatmak için yeni streamExtensionToken ve streamToken değerleri almak üzere CameraLiveStream özelliği komutunun ExtendRtspStream komutunu kullanın:

İstekYanıt
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream",
  "params" : {
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
  }
}
{
  "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 bu yeni değerlerle güncelleyin:

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

Canlı yayını durdurma

Artık kullanmadığınız kamera canlı yayınlarını durdurmanız ve akışı geçersiz kılmanız gerekir. Bunu yapmak için, oluşturduğunuz yayın biçimi içinCameraLiveStream özelliğinin uygun StopFormatStream komutunu kullanın.

RTSP

Bir RTSP yayınını durdurmak için CameraLiveStream özelliğinin StopRtspStream komutuyla jetonu geçersiz kılın:

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

Hatalar

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

Hata Mesajı TBG Sorun giderme
Kamera görüntüsü artık indirilemez. DEADLINE_EXCEEDED Etkinlik resimlerinin süresi, etkinlik yayınlandıktan 30 saniye sonra dolar. Süre dolmadan önce resmi indirin.
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.