Ekran

Nest Hub Max

Google Nest Hub Max ekranı, Smart Device Management (SDM) API'de desteklenir. Bu cihaz, DISPLAY cihaz türünü döndürür:

sdm.devices.types.DISPLAY

Google Nest Hub Max'te, KAMERA cihaz türüyle aynı şekilde çalışan bir kamera bulunur.

Özellikler

Referans

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

Ö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 cihazlarda kullanılabilir.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
BilgiBu özellik, cihazla ilgili bilgiler için herhangi bir cihaza aittir.

JSON

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

{
  "type" : "sdm.devices.types.DISPLAY",
  "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.Info" : {
      "customName" : "My device"
    }
  }
}

Kamera etkinliklerini işleme

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

Tür Öğe Açıklama
Etkinlik CameraMotion özelliğinin hareket etkinliği Kamera hareket algıladı.
Etkinlik CameraPerson özelliğinin Person etkinliği Kamera bir kişi algıladı.
Etkinlik CameraSound özelliğinin ses etkinliği Kamera ses algıladı.
Örneğin, burada kamera hareket algılamıştır:

Yük

{
  "eventId" : "e0f693ef-10ff-42d4-a739-fe65312b5e4c",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "dpkR6ZXalxvqAy58mjQCS85SLi...", } } } "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:

İstek

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraEventImage.GenerateImage",
  "params" : {
    "eventId" : "4lXFsjcSOJEygVH-piTNRQzwdb..."
  }
}

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 GenerateImage komut yanıtından url öğesine GET çağrısı yapın. Bunu yaparken HTTP Yetkilendirme başlığında Temel yetkilendirme ile 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ükte 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

Yükseklik

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

İndirme URL'siyle ilgili diğer kısıtlamalar:

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

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

Canlı yayına erişme

Kameradan alınan 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

Bir RTSP akışı için CameraLiveStream özelliği 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 akış URL'sini kullanın:

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

RTSP canlı yayın URL'leri istemciler arasında paylaşılamaz. Yayın URL'si aynı anda yalnızca bir istemci tarafından kullanılabilir. Birden fazla istemci aynı anda aynı kameradan yayın yapmak istiyorsa her istemci için ayrı 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 ömrünü uzatmanız gerekiyorsa oluşturduğunuz yayın biçimi için uygun CameraLiveStream özelliği FormatExtendStream komutunu kullanın.

RTSP

Bir RTSP akışını uzatmak için CameraLiveStream özelliğinin 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 bu yeni değerlerle güncelleyin:

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

Canlı yayını durdurma

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

RTSP

Bir RTSP akışını durdurmak için CameraLiveStream özelliği komutunun StopRtspStream komutuyla geçersiz kılınacak 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ı TBG Sorun giderme
Kamera görüntüsü artık indirilemiyor. DEADLINE_EXCEEDED Etkinlik resimlerinin süresi, etkinlik yayınlandıktan 30 saniye sonra dolar. Resmi süresi dolmadan önce indirdiğinizden emin olun.
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.