Displaynetzwerk

Nest Hub Max

Das Display von Google Nest Hub Max wird von 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 hat eine Kamera, die wie ein Gerät vom Gerätetyp „CAMERA“ funktioniert.

Eigenschaften

Referenz

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

MerkmalBeschreibungBefehleEreignisse
CameraEventImageDieses Attribut 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 das Aufnehmen von Bildern unterstützt.
CameraLiveStreamDiese Eigenschaft gehört zu jedem Gerät, das Livestreaming unterstützt.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionDieses Attribut gehört zu jedem Gerät, das Bewegungserkennungsereignisse unterstützt.Bewegung
CameraPersonDieses Attribut gehört zu allen Geräten, die Ereignisse zur Personenerkennung unterstützen.Person
CameraSoundDiese Eigenschaft gehört zu jedem Gerät, das Geräuscherkennungsereignisse unterstützt.Ton
InfoDieses Attribut gehört zu jedem Gerät und enthält gerätebezogene Informationen.

JSON

Wenn ein Attribut in einer GET-Antwort nicht vorhanden ist, ist das Attribut oder die Funktion derzeit nicht für das Gerät verfügbar. 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"
    }
  }
}

Kamera-Ereignisse verarbeiten

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

Typ Element Beschreibung
Ereignis Bewegung-Ereignis des Attributs „CameraMotion“ Die Kamera hat eine Bewegung erkannt.
Ereignis Person-Ereignis der Eigenschaft „CameraPerson“ Die Kamera hat eine Person erkannt.
Ereignis Geräusch-Ereignis des Attributs „CameraSound“ Die Kamera hat ein Geräusch erkannt.
Hier hat die Kamera beispielsweise eine Bewegung erkannt:

Nutzlast

{
  "eventId" : "93779326-2fd6-4623-9e73-7ef91fd85b2c",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "jwatvkU6ucTeRHrDJ0FZP32eTF...", } } } "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 mit dem Ereignis verknüpft ist:

Anfrage

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

Antwort

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

Kamerabild herunterladen

Führen Sie einen GET-Aufruf an die url aus einer GenerateImage-Befehlsantwort aus und verwenden Sie dabei das token im HTTP-Autorisierungsheader mit der Basisautorisierung, 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 Bilds 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 × 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

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 width der Standardwert 480 verwendet.

Informationen zu Bildeigenschaften finden Sie unter CameraImage .

Auf einen Livestream zugreifen

Der Livestream einer Kamera kann abgerufen 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.

Um auf einen Livestream zuzugreifen, verwende den entsprechenden Befehl „GenerateFormatStream“ der EigenschaftCameraLiveStream.

RTSP

Bei einem RTSP-Stream gibt der Befehl GenerateRtspStream der Eigenschaft „CameraLiveStream“ die Stream-URL und die zugehörige 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 RTSP-Befehle für jeden einzelnen Client gesendet werden. Außerdem muss jeder einzelne Client eine eigene Stream-URL verwenden.

Livestream verlängern

Kamera-Livestreamsitzungen sind nur 5 Minuten lang gültig. Wenn Sie die Lebensdauer eines Livestreams verlängern möchten, verwenden Sie den entsprechenden Befehl „ExtendFormatStream“ der Eigenschaft CameraLiveStream für das von Ihnen generierte Streamformat.

RTSP

Wenn Sie einen RTSP-Stream erweitern möchten, verwenden Sie den Befehl ExtendRtspStream der Eigenschaft „CameraLiveStream“, um neue Werte für streamExtensionToken und streamToken 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"
  }
}

Aktualisiere 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“ der EigenschaftCameraLiveStreamfür das von Ihnen generierte Streamformat.

RTSP

Wenn Sie einen RTSP-Stream beenden möchten, verwenden Sie das Token, um es mit dem Befehl StopRtspStream der Eigenschaft „CameraLiveStream“ ungültig zu machen:

Anfrage

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

Antwort

{}

Fehler

Für dieses Gerät können die folgenden Fehlercodes 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. Laden Sie das Bild vor Ablauf 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 findest du in der API-Fehlercode-Referenz.