Displaynetzwerk

Nest Hub Max

Das Google Nest Hub Max-Display wird in der Smart Device Management (SDM) API unterstützt. Dieses Gerät gibt den Gerätetyp DISPLAY zurück:

sdm.devices.types.DISPLAY

Google Nest Hub Max ist mit einer Kamera ausgestattet, die genauso funktioniert wie die Kamera eines anderen Gerätetyps.

Eigenschaften

Referenz

Die folgenden Eigenschaften, Befehle oder Ereignisse beziehen sich auf dieses Gerät:

EigenschaftBeschreibungBefehleVeranstaltungen
CameraEventImageDiese Eigenschaft gehört zu jedem Gerät, das die Generierung von Bildern aus Ereignissen unterstützt.GenerateImage
CameraImageDiese Eigenschaft gehört zu jedem Gerät, das die Aufnahme von Bildern unterstützt.
CameraLiveStreamDiese Trait gehört zu jedem Gerät, das Livestreaming unterstützt.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionDiese Eigenschaft gehört zu jedem Gerät, das Bewegungserkennungsereignisse unterstützt.Bewegung
CameraPersonDiese Eigenschaft gehört zu jedem Gerät, das Personenentdeckungsereignisse unterstützt.Person
CameraSoundDiese Eigenschaft gehört zu jedem Gerät, das Geräuscherkennungsereignisse unterstützt.Ton
InformationenDiese Trait gehört zu einem beliebigen Gerät, um gerätebezogene Informationen zu erhalten.

JSON

Wenn eine Eigenschaft in einer GET-Antwort fehlt, bedeutet dies, dass sie bzw. Funktion derzeit für das Gerät nicht verfügbar ist. Weitere Informationen findest du unter Gerätetypen.

{
  "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-Ereignisse verarbeiten

Folgende Ereignisse können vom Gerätetyp DISPLAY ausgelöst werden:

Typ Element Beschreibung
Veranstaltung Ereignis Bewegung des Merkmals „CameraMotion“ Die Kamera hat Bewegungen erkannt.
Veranstaltung Ereignis Person der Eigenschaft „CameraPerson“ Die Kamera hat eine Person erkannt.
Veranstaltung Ton-Ereignis der Eigenschaft „CameraSound“ Die Kamera hat Geräusche erkannt.
Die Kamera hat beispielsweise hier eine Bewegung erkannt:

Nutzlast

{
  "eventId" : "f698b6e9-0572-4775-99ab-554c7b944201",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "YtEkPsfcoSs8Gp7h0EJI5xvcHB...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
Die Nutzlast dieses Ereignisses enthält ein eventId, das mit dem Befehl GenerateImage verwendet werden kann. Dieser Befehl gibt eine Download-URL für das Kamerabild zurück, das sich auf das Ereignis bezieht:

Anfragen

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

Antwort

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

Kamerabild herunterladen

Führen Sie einen GET-Aufruf von url aus einer GenerateImage-Befehlsantwort aus. Verwenden Sie dabei token im HTTP-Autorisierungsheader mit einfacher Autorisierung, um das Kamerabild herunterzuladen:

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

Verwenden Sie die Abfrageparameter width oder height, um die Auflösung des heruntergeladenen Bildes anzupassen. Es muss nur einer dieser Parameter angegeben werden. Der andere Parameter wird automatisch entsprechend dem Seitenverhältnis der Kamera skaliert.

Wenn das Seitenverhältnis der Kamera beispielsweise 4:3 ist, geben Sie zum Herunterladen des Kamerabilds mit einer Auflösung von 480 x 360 entweder die Breite oder die Höhe an:

Breite

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

Größe

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

Für die Download-URL gelten weitere Einschränkungen:

  • Wenn in der URL beide Parameter angegeben sind, wird width verwendet und height ignoriert.
  • Wenn keiner der Parameter in der URL angegeben ist, wird für width der Standardwert 480 ausgewählt.

Informationen zu Bildeigenschaften finden Sie unter der Trait CameraImage .

Auf einen Livestream zugreifen

Der Livestream einer Kamera kann aufgerufen werden. Die folgenden Streamformate werden für dieses Gerät unterstützt:

  • RTSP

Eine vollständige Liste der Kameras und unterstützten Streamformate findest du unter Unterstützte Geräte.

Wenn du auf einen Livestream zugreifen möchtest, verwende den entsprechenden FormatStream-Befehl der TraitCameraLiveStream.

RTSP

Bei einem RTSP-Stream gibt der Befehl GenerateRtspStream des Trait-Befehls von CameraLiveStream die Stream-URL und den zugehörigen streamToken-Wert zurück:

Anfragen

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

Antwort

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

Verwenden Sie dann die Stream-URL, um auf den Livestream der Kamera zuzugreifen:

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

RTSP-Livestream-URLs können nicht zwischen Clients geteilt werden. Eine Stream-URL kann immer nur von einem Client verwendet werden. Wenn mehrere Clients gleichzeitig von derselben Kamera streamen möchten, müssen RTSP-Befehle für jeden einzelnen Client gesendet werden und jeder einzelne Client muss seine eigene Stream-URL verwenden.

Livestream verlängern

Livestream-Sitzungen mit Kameras sind nur 5 Minuten lang gültig. Wenn du die Lebensdauer eines Livestreams verlängern möchtest, verwende den entsprechenden „ExtendFormatStream“-Befehl der Trait CameraLiveStream für das generierte Streamformat.

RTSP

Wenn du einen RTSP-Stream erweitern möchtest, verwende den Befehl ExtendRtspStream des Trait-Befehls CameraLiveStream, um neue streamExtensionToken- und streamToken-Werte abzurufen:

Anfragen

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

Antwort

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

Aktualisieren Sie die Stream-URL mit den folgenden neuen Werten, um den Livestream weiter anzusehen:

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

Livestream beenden

Wenn Sie den Livestream einer Kamera nicht mehr verwenden, sollten Sie ihn beenden und den Livestream ungültig machen. Verwenden Sie dazu den entsprechenden StopFormatStream-Befehl der TraitCameraLiveStreamfür das generierte Streamformat.

RTSP

Um einen RTSP-Stream zu stoppen, verwende das Token zur Entwertung mit dem Befehl StopRtspStream des Trait-Befehls CameraLiveStream:

Anfragen

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

Antwort

{}

Fehler

Folgende Fehlercodes können im Zusammenhang mit diesem Gerät zurückgegeben werden:

Fehlermeldung RPC Fehlerbehebung
Das Kamerabild kann nicht mehr heruntergeladen werden. DEADLINE_EXCEEDED Ereignisbilder laufen 30 Sekunden nach der Veröffentlichung des Ereignisses ab. Denken Sie daran, das Image vor dem Ablaufdatum herunterzuladen.
Ereignis-ID gehört nicht zur Kamera. FAILED_PRECONDITION Verwende die korrekte eventID, die vom Kameraereignis zurückgegeben wurde.

Eine vollständige Liste der API-Fehlercodes finden Sie in der API-Fehlercode-Referenz.