Tampilan

Nest Hub Max

Layar Google Nest Hub Max didukung di Smart Device Management (SDM) API. Perangkat ini menampilkan jenis perangkat DISPLAY:

sdm.devices.types.DISPLAY

Google Nest Hub Max memiliki kamera, yang berfungsi sama dengan jenis perangkat KAMERA.

Sifat

Referensi

Ciri, perintah, atau peristiwa berikut terkait dengan perangkat ini:

CiriDeskripsiPerintahAcara
CameraEventImageFitur ini dimiliki oleh perangkat apa pun yang mendukung pembuatan gambar dari peristiwa.GenerateImage
CameraImageCiri ini dimiliki oleh perangkat apa pun yang mendukung pengambilan gambar.
CameraLiveStreamCiri ini dimiliki oleh perangkat apa pun yang mendukung live streaming.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionTrait ini termasuk dalam perangkat apa pun yang mendukung peristiwa deteksi gerakan.Gerakan
CameraPersonTrait ini termasuk dalam perangkat apa pun yang mendukung peristiwa deteksi orang.Orang
CameraSoundTrait ini termasuk dalam perangkat apa pun yang mendukung peristiwa deteksi suara.Suara
InfoCiri ini termasuk dalam perangkat apa pun untuk informasi terkait perangkat.

JSON

Tidak adanya trait dalam respons GET menunjukkan bahwa trait atau fitur saat ini tidak tersedia untuk perangkat. Lihat Jenis perangkat untuk mengetahui informasi selengkapnya.

{
  "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"
    }
  }
}

Menangani peristiwa kamera

Peristiwa berikut dapat dipicu dari jenis perangkat DISPLAY:

Jenis Elemen Deskripsi
Acara Peristiwa Motion dari trait CameraMotion Gerakan telah terdeteksi oleh kamera.
Acara Peristiwa Orang dari trait CameraPerson Seseorang telah terdeteksi oleh kamera.
Acara Peristiwa Suara dari trait CameraSound Suara telah terdeteksi oleh kamera.
Misalnya, di sini kamera telah mendeteksi gerakan:

Payload

{
  "eventId" : "f1b267ed-dbd1-4e14-a7f7-89d2a40f8005",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "V-w6PSDq_jcwithl7Z6NIadGzt...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
Payload peristiwa ini berisi eventId yang dapat digunakan dengan perintah GenerateImage. Perintah ini menampilkan URL download untuk gambar kamera yang terkait dengan peristiwa:

Permintaan

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

Respons

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

Mendownload gambar kamera

Lakukan panggilan GET ke url dari respons perintah GenerateImage, menggunakan token di header Otorisasi HTTP dengan otorisasi Dasar, untuk mendownload gambar kamera:

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

Gunakan parameter kueri width atau height untuk menyesuaikan resolusi gambar yang didownload. Hanya salah satu dari parameter ini yang perlu ditentukan. Parameter lainnya diskalakan secara otomatis sesuai dengan rasio aspek kamera.

Misalnya, jika rasio aspek kamera adalah 4:3, untuk mendownload gambar kamera dengan resolusi 480 x 360, tentukan lebar atau tinggi:

Lebar

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

Tinggi

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

Batasan lain pada URL download berlaku:

  • Jika kedua parameter diberikan dalam URL, width akan digunakan dan height akan diabaikan.
  • Jika kedua parameter tidak diberikan dalam URL, nilai default 480 akan dipilih untuk width.

Lihat trait CameraImage untuk mengetahui informasi tentang properti gambar.

Mengakses live stream

Live stream dari kamera dapat diakses. Format streaming berikut didukung untuk perangkat ini:

  • RTSP

Untuk mengetahui daftar lengkap kamera dan format streaming yang didukung, lihat Perangkat yang Didukung.

Untuk mengakses live stream, gunakan perintah GenerateFormatStream yang sesuai dari CameraLiveStream trait.

RTSP

Untuk streaming RTSP, perintah GenerateRtspStream dari perintah trait CameraLiveStream menampilkan URL streaming dan streamToken terkait:

Permintaan

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

Respons

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

Kemudian, gunakan URL streaming untuk mengakses live stream kamera:

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

URL live stream RTSP tidak dapat dibagikan antar-klien. URL streaming hanya dapat digunakan oleh satu klien dalam satu waktu. Jika beberapa klien ingin melakukan streaming dari kamera yang sama pada waktu yang sama, perintah RTSP harus dikirim untuk setiap klien, dan setiap klien harus menggunakan URL streaming-nya sendiri.

Memperpanjang live stream

Sesi live stream kamera hanya valid selama 5 menit. Jika Anda perlu memperpanjang masa aktif live stream, gunakan perintah ExtendFormatStream yang sesuai dari trait CameraLiveStream untuk format streaming yang Anda buat.

RTSP

Untuk memperpanjang streaming RTSP, gunakan perintah ExtendRtspStream dari perintah trait CameraLiveStream untuk mendapatkan nilai streamExtensionToken dan streamToken baru:

Permintaan

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

Respons

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

Perbarui URL streaming dengan nilai baru ini untuk terus menonton live stream:

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

Menghentikan live stream

Setiap kali Anda tidak lagi menggunakan live stream kamera, Anda harus menghentikannya dan membatalkan validasi stream. Untuk melakukannya, gunakan perintah StopFormatStream yang sesuai dari CameraLiveStream untuk format streaming yang Anda buat.

RTSP

Untuk menghentikan streaming RTSP, gunakan token untuk membatalkan validasi dengan perintah StopRtspStream dari perintah trait CameraLiveStream:

Permintaan

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

Respons

{}

Error

Kode error berikut dapat ditampilkan terkait perangkat ini:

Pesan Error PPK Pemecahan masalah
Gambar kamera tidak lagi tersedia untuk didownload. DEADLINE_EXCEEDED Gambar acara akan berakhir 30 detik setelah acara dipublikasikan. Pastikan untuk mendownload gambar sebelum masa berlakunya berakhir.
ID acara bukan milik kamera. FAILED_PRECONDITION Gunakan eventID yang benar yang ditampilkan oleh peristiwa kamera.

Lihat Referensi Kode Error API untuk mengetahui daftar lengkap kode error API.