Wyświetlacz

Nest Hub Max

Wyświetlacz Google Nest Hub Max jest obsługiwany w interfejsie Smart Device Management (SDM) API. To urządzenie zwraca typ urządzenia DISPLAY:

sdm.devices.types.DISPLAY

Google Nest Hub Max ma kamerę, która działa tak samo jak urządzenie typu CAMERA.

Cechy

Dokumentacja

Z tym urządzeniem są powiązane te cechy, polecenia i zdarzenia:

CechyOpisPoleceniaWydarzenia
CameraEventImageTa cecha należy do każdego urządzenia, które obsługuje generowanie obrazów na podstawie wydarzeń.GenerateImage
CameraImageTa cecha należy do każdego urządzenia, które obsługuje robienie zdjęć.
CameraLiveStreamTen atrybut dotyczy każdego urządzenia, które obsługuje transmisje na żywo.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionTen atrybut należy do każdego urządzenia, które obsługuje zdarzenia wykrywania ruchu.Ruch
CameraPersonTa cecha należy do każdego urządzenia, które obsługuje zdarzenia wykrywania osób.Osoba
CameraSoundTen atrybut należy do każdego urządzenia, które obsługuje zdarzenia wykrywania dźwięku.Dźwięk
InformacjeTen atrybut należy do każdego urządzenia i zawiera informacje dotyczące urządzenia.

JSON

Brak cechy w odpowiedzi GET oznacza, że cecha lub funkcja nie jest obecnie dostępna na urządzeniu. Więcej informacji znajdziesz w sekcji Typy urządzeń.

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

Obsługa zdarzeń dotyczących kamery

Na urządzeniu typu DISPLAY mogą być wywoływane te zdarzenia:

Typ Element Opis
Zdarzenie Zdarzenie Motion cechy CameraMotion Kamera wykryła ruch.
Zdarzenie Zdarzenie Person cechy CameraPerson Kamera wykryła osobę.
Zdarzenie Zdarzenie Sound cechy CameraSound Kamera wykryła dźwięk.
Na przykład w tym przypadku kamera wykryła ruch:

Ładunek

{
  "eventId" : "1dd1b516-a989-41dd-b67f-43b56835fc50",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "hCtjVjYO1ufdmKt8Yk6vCg8Zgt...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
Ładunek tego zdarzenia zawiera eventId, którego można użyć w poleceniu GenerateImage. To polecenie zwraca adres URL pobierania obrazu z kamery powiązanego ze zdarzeniem:

Żądanie

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

Odpowiedź

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

Pobieranie obrazu z kamery

Wykonaj wywołanie GET do url z odpowiedzi na polecenie GenerateImage, używając token w nagłówku autoryzacji HTTP z autoryzacją podstawową, aby pobrać obraz z kamery:

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

Użyj parametrów zapytania width lub height, aby dostosować rozdzielczość pobranego obrazu. Wystarczy podać tylko jeden z tych parametrów. Drugi parametr jest skalowany automatycznie zgodnie z formatem obrazu kamery.

Jeśli na przykład współczynnik proporcji aparatu to 4:3, aby pobrać obraz z aparatu o rozdzielczości 480 x 360, podaj szerokość lub wysokość:

Szerokość

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

Wysokość

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

Obowiązują inne ograniczenia dotyczące adresu URL pobierania:

  • Jeśli w adresie URL podane są oba parametry, używany jest parametr width, a parametr height jest ignorowany.
  • Jeśli w adresie URL nie podasz żadnego z tych parametrów, domyślna wartość parametru width wyniesie 480.

Informacje o właściwościach obrazu znajdziesz w  cechie CameraImage .

Otwieranie transmisji na żywo

Dostępna jest transmisja na żywo z kamery. To urządzenie obsługuje te formaty strumieniowania:

  • RTSP

Pełną listę kamer i obsługiwanych formatów strumieniowania znajdziesz w sekcji Obsługiwane urządzenia.

Aby uzyskać dostęp do transmisji na żywo, użyj odpowiedniego polecenia GenerateFormatStream cechyCameraLiveStream.

RTSP

W przypadku strumienia RTSP polecenie GenerateRtspStream z polecenia cechy CameraLiveStream zwraca adres URL strumienia i powiązane streamToken:

Żądanie

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

Odpowiedź

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

Następnie użyj adresu URL strumienia, aby uzyskać dostęp do transmisji na żywo z kamery:

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

Adresów URL transmisji na żywo RTSP nie można udostępniać między klientami. Adres URL transmisji może być używany tylko przez jednego klienta naraz. Jeśli wielu klientów chce przesyłać strumieniowo obraz z tej samej kamery w tym samym czasie, polecenia RTSP muszą być wysyłane do każdego klienta z osobna, a każdy klient musi używać własnego adresu URL strumienia.

Przedłużanie transmisji na żywo

Sesje transmisji na żywo z kamery są ważne tylko przez 5 minut. Jeśli chcesz przedłużyć czas trwania transmisji na żywo, użyj odpowiedniego polecenia ExtendFormatStream z cechy CameraLiveStream dla wygenerowanego formatu strumienia.

RTSP

Aby przedłużyć strumień RTSP, użyj polecenia ExtendRtspStream z cechy CameraLiveStream, aby uzyskać nowe wartości streamExtensionTokenstreamToken:

Żądanie

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

Odpowiedź

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

Aby nadal oglądać transmisję na żywo, zaktualizuj adres URL transmisji, podając te nowe wartości:

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

Zatrzymywanie transmisji na żywo

Gdy nie korzystasz już z transmisji na żywo z kamery, zatrzymaj ją i unieważnij. Aby to zrobić, użyj odpowiedniego polecenia StopFormatStream w przypadku cechyCameraLiveStreamdla wygenerowanego formatu strumienia.

RTSP

Aby zatrzymać strumień RTSP, użyj tokena do unieważnienia za pomocą polecenia StopRtspStream polecenia cechy CameraLiveStream:

Żądanie

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

Odpowiedź

{}

Błędy

W przypadku tego urządzenia mogą być zwracane te kody błędów:

Komunikat o błędzie RPC Rozwiązywanie problemów
Obraz z kamery nie jest już dostępny do pobrania. DEADLINE_EXCEEDED Obrazy wydarzeń wygasają 30 sekund po opublikowaniu wydarzenia. Pamiętaj, aby pobrać obraz przed wygaśnięciem.
Identyfikator zdarzenia nie należy do kamery. FAILED_PRECONDITION Użyj prawidłowego parametru eventID zwróconego przez zdarzenie kamery.

Pełną listę kodów błędów interfejsu API znajdziesz w dokumentacji kodów błędów interfejsu API.