Display

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

Der Google Nest Hub Max hat eine Kamera, die wie ein Gerät vom Typ CAMERA funktioniert.

Attribute

Referenz

Die folgenden Traits, Befehle oder Ereignisse sind mit diesem Gerät verknüpft:

AttributBeschreibungBefehleEreignisse
CameraEventImageDieses Merkmal gehört zu allen Geräten, die die Generierung von Bildern aus Ereignissen unterstützen.GenerateImage
CameraImageDieses Attribut gehört zu allen Geräten, die das Aufnehmen von Bildern unterstützen.
CameraLiveStreamDieses Merkmal gehört zu allen Geräten, die Livestreaming unterstützen.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionDieses Merkmal gehört zu allen Geräten, die Ereignisse zur Bewegungserkennung unterstützen.Bewegung
CameraPersonDieses Merkmal gehört zu allen Geräten, die Ereignisse zur Personenerkennung unterstützen.Person
CameraSoundDieses Merkmal gehört zu allen Geräten, die Ereignisse zur Geräuscherkennung unterstützen.Ton
InfoDieses Merkmal gehört zu jedem Gerät für gerätebezogene Informationen.

JSON

Wenn ein Merkmal in einer GET-Antwort fehlt, bedeutet das, dass das Merkmal oder die Funktion derzeit nicht für das Gerät verfügbar ist. Weitere Informationen finden Sie 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"
    }
  }
}

Kameraereignisse verarbeiten

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

Typ Element Beschreibung
Ereignis Bewegungsereignis des Traits „CameraMotion“ Die Kamera hat eine Bewegung erkannt.
Ereignis Person-Ereignis des CameraPerson-Traits Eine Person wurde von der Kamera erkannt.
Ereignis Sound-Ereignis des CameraSound-Traits Die Kamera hat ein Geräusch erkannt.
Hier hat die Kamera beispielsweise eine Bewegung erkannt:

Nutzlast

{
  "eventId" : "c83a425a-32c5-43e9-8aaf-ef4d23642fcd",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "LbIG5MKg_qLkZXrDifvzWKkJJk...", } } } "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:

Anfrage

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

Antwort

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

Kamerabild herunterladen

Führen Sie einen GET-Aufruf an url aus einer GenerateImage-Befehlsantwort aus. Verwenden Sie dazu die token im HTTP-Autorisierungsheader mit der Basisauthentifizierung, um das Kamerabild herunterzuladen:

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

Mit den Abfrageparametern width oder height können Sie die Auflösung des heruntergeladenen Bildes anpassen. Nur einer dieser Parameter muss angegeben werden. Der andere Parameter wird automatisch entsprechend dem Seitenverhältnis der Kamera skaliert.

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

Breite

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

Höhe

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 beide Parameter in der URL angegeben sind, wird width verwendet und height ignoriert.
  • Wenn keiner der Parameter in der URL angegeben ist, wird für die width der Standardwert 480 ausgewählt.

Informationen zu Bildeigenschaften finden Sie im CameraImage -Trait.

Livestream ansehen

Auf den Livestream einer Kamera kann zugegriffen werden. Die folgenden Streamformate werden für dieses Gerät unterstützt:

  • RTSP

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

Verwenden Sie zum Aufrufen eines Livestreams den entsprechenden Befehl „GenerateFormatStream“ des TraitsCameraLiveStream.

RTSP

Bei einem RTSP-Stream gibt der Befehl GenerateRtspStream des CameraLiveStream-Traits die Stream-URL und die zugehörigen streamToken zurück:

Anfrage

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 jeweils nur von einem Client verwendet werden. Wenn mehrere Clients gleichzeitig von derselben Kamera streamen möchten, müssen für jeden einzelnen Client RTSP-Befehle gesendet werden und jeder einzelne Client muss seine eigene Stream-URL verwenden.

Livestream verlängern

Livestream-Sitzungen der Kamera sind nur 5 Minuten lang gültig. Wenn Sie die Lebensdauer eines Livestreams verlängern müssen, verwenden Sie den entsprechenden ExtendFormatStream-Befehl des CameraLiveStream -Traits für das von Ihnen generierte Streamformat.

RTSP

Verwende den Befehl ExtendRtspStream des CameraLiveStream-Traits, um einen RTSP-Stream zu verlängern und neue streamExtensionToken- und streamToken-Werte zu erhalten:

Anfrage

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 diesen neuen Werten, um den Livestream weiterhin ansehen zu können:

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

Livestream beenden

Wenn Sie einen Kamera-Livestream nicht mehr verwenden, sollten Sie ihn beenden und ungültig machen. Verwenden Sie dazu den entsprechenden Befehl „StopFormatStream“ desCameraLiveStream-Traits für das von Ihnen generierte Streamformat.

RTSP

Verwenden Sie zum Beenden eines RTSP-Streams das Token, das mit dem Befehl StopRtspStream des CameraLiveStream-Traits ungültig gemacht werden soll:

Anfrage

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

Antwort

{}

Fehler

Die folgenden Fehlercodes können in Bezug auf dieses Gerät zurückgegeben werden:

Fehlermeldung RPC Fehlerbehebung
Das Kamerabild kann nicht mehr heruntergeladen werden. DEADLINE_EXCEEDED Veranstaltungsbilder laufen 30 Sekunden nach der Veröffentlichung der Veranstaltung ab. Laden Sie das Bild vor Ablauf des Gültigkeitszeitraums herunter.
Die Ereignis-ID gehört nicht zur Kamera. FAILED_PRECONDITION Verwenden Sie die richtige eventID, die vom Kameraereignis zurückgegeben wird.

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