Sieć reklamowa

Nest Hub Max

Google Nest Hub Max reklama displayowa jest obsługiwany w interfejsie Smart Device Management (SDM). To urządzenie zwraca typ urządzenia z DISPLAY:

sdm.devices.types.DISPLAY

Google Nest Hub Max jest wyposażony w aparat, który działa tak samo jak typu urządzenia CAMERA.

Cechy

Dokumentacja

Te cechy, polecenia lub zdarzenia są powiązane z tym urządzeniem:

CechaOpisPoleceniaWydarzenia
CameraEventImageTa cecha należy do każdego urządzenia, które obsługuje generowanie obrazów na podstawie zdarzeń.GenerateImage
CameraImageTa cecha należy do każdego urządzenia, które obsługuje robienie zdjęć.
CameraLiveStreamTa cecha należy do każdego urządzenia, które obsługuje transmisje na żywo.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionTa cecha 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
CameraSoundTa cecha należy do każdego urządzenia, które obsługuje zdarzenia wykrywania dźwięku.Dźwięk
InformacjeTa cecha należy do każdego urządzenia w przypadku informacji związanych z urządzeniem.

JSON

Brak danej cechy w odpowiedzi GET wskazuje, że funkcja nie jest obecnie dostępna dla tego urządzenia. Zobacz Więcej funkcji Typy urządzeń i informacjami o nich.

{
  "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ń zarejestrowanych przez kamerę

Urządzenia typu DISPLAY mogą wywoływać te zdarzenia:

Typ Element Opis
Zdarzenie Zdarzenie ruchu dotyczące cechy CameraMotion Kamera wykryła ruch.
Zdarzenie Zdarzenie typu Person powiązane z cechą CameraPerson Kamera wykryła jakąś osobę.
Zdarzenie Zdarzenie dźwięk związane z cechą CameraSound Kamera wykryła dźwięk.
Tak na przykład kamera wykryła ruch:

Ładunek

{
  "eventId" : "6d12911e-0181-495c-97b5-b6e8884c50ae",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "FJ-QMyhCTKninhnimPOwVDjELx...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
Ładunek tego zdarzenia zawiera element eventId, który może zostać użyty z parametrem GenerateImage . To polecenie zwraca adres URL pobierania obrazu z aparatu powiązanego z zdarzenie:

Żądanie

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

Odpowiedź

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

Pobierz obraz z kamery

Wykonaj wywołanie GET dla funkcji url z odpowiedź na polecenie GenerateImage, za pomocą token w nagłówku autoryzacji HTTP z autoryzacją podstawową, aby pobierz obraz aparatu:

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

Za pomocą parametrów zapytania width lub height możesz dostosować rozdzielczość pobranego obrazu. Musisz określić tylko jeden z tych parametrów. Druga jest skalowany automatycznie odpowiednio do formatu obrazu kamery.

Jeśli na przykład obraz kamery wynosi 4:3, to aby pobrać obraz z kamery dla rozdzielczości 480 x 360 określ 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ą też inne ograniczenia dotyczące adresu URL pobierania:

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

Zobacz cechę CameraImage i: o właściwościach obrazów.

Dostęp do transmisji na żywo

Możesz uzyskać dostęp do transmisji na żywo z kamery. Poniższe formaty strumieni są obsługiwane przez to urządzenie:

  • RTSP

Pełną listę kamer i obsługiwanych formatów transmisji znajdziesz w artykule Obsługiwane urządzenia

Aby uzyskać dostęp do transmisji na żywo, użyj odpowiedniej opcji WygenerujFormattransmisję polecenia CameraLiveStream cechę.

RTSP

W przypadku strumienia RTSP parametr Polecenie GenerateRtspStream w poleceniu właściwości CameraLiveStream zwraca adres URL transmisji i powiązany 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 transmisji, aby uzyskać dostęp do transmisji na żywo z kamery:

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

Adresów URL transmisji na żywo z protokołem RTSP nie można udostępniać między klientami. Adresu URL transmisji może używać tylko jeden klient naraz. Jeśli wielu klientów chce jednocześnie przesyłać dane z tej samej kamery, polecenia RTSP muszą być wysyłane do każdego z nich, a każdy klient musi używać własnego adresu URL strumienia.

Przedłużanie transmisji na żywo

Sesje transmisji na żywo z kamery trwają tylko 5 minut. Jeśli chcesz przedłużyć czas trwania transmisji na żywo, użyj odpowiedniego polecenia ExtendFormatStream w właściwości CameraLiveStream dla wygenerowanego formatu transmisji.

RTSP

Aby przedłużyć strumień RTSP, użyj funkcji Polecenie ExtendRtspStream polecenia właściwości CameraLiveStream w celu pobierz nowe streamExtensionToken i streamToken wartości:

Żą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"
  }
}

Zaktualizuj adres URL transmisji za pomocą tych nowych wartości, aby nadal wyświetlać transmisja na żywo:

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

Kończenie transmisji na żywo

Za każdym razem, gdy nie korzystasz już z transmisji na żywo z kamery, przerwij ją, unieważni strumień. Aby to zrobić, użyj odpowiedniego przycisku ZatrzymaniaFormattransmisji polecenia CameraLiveStream dla wygenerowanego formatu strumienia.

RTSP

Aby zatrzymać strumień RTSP, użyj tokena do unieważnienia Polecenie StopRtspStream w poleceniu właściwości 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ą zostać zwrócone następujące kody błędów:

Komunikat o błędzie RPC Rozwiązywanie problemów
Zdjęcie z aparatu nie jest już dostępne do pobrania. DEADLINE_EXCEEDED Obrazy zdarzeń wygasają po 30 sekundach od opublikowania zdarzenia. Pamiętaj, aby pobrać obraz przed wygaśnięciem ważności.
Identyfikator zdarzenia nie należy do kamery. FAILED_PRECONDITION Użyj prawidłowej wartości eventID zwróconej przez zdarzenie kamery.

Zapoznaj się z informacjami na temat kodu błędu interfejsu API w przypadku: pełną listę kodów błędów interfejsu API.