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
CameraEventImageDieser Trait gehört zu jedem Gerät, das das Generieren von Bildern aus Ereignissen unterstützt.GenerateImage
CameraImageDiese Eigenschaft gehört zu jedem Gerät, das das Aufnehmen von Bildern unterstützt.
CameraLiveStreamDieser Trait 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
KamerapersonDieses Attribut gehört zu allen Geräten, die Ereignisse der Personenerkennung unterstützen.Person
CameraSoundDieser Trait gehört zu jedem Gerät, das Geräuscherkennungsereignisse unterstützt.Ton
InformationenDieses 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"
    }
  }
}

Kameraereignisse 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 Ereignis Geräusch des Kameraton-Tritts Die Kamera hat ein Geräusch erkannt.
In diesem Beispiel hat die Kamera Bewegung erkannt:

Nutzlast

{
  "eventId" : "aedf6813-6b9e-465a-a42a-4358b8b6161f",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "-o1dVlAEusEUetEQB5hzQTXSAr...", } } } "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" : "Wh6SNjOxmdq1RNCDrK_ANe2rd0..."
  }
}

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. 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, 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 findest du unter CameraImage .

Auf einen Livestream zugreifen

Sie können auf den Livestream einer Kamera zugreifen. 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 und jeder Client muss seine eigene Stream-URL verwenden.

Livestream verlängern

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

RTSP

Verwende zum Erweitern eines RTSP-Streams den Befehl ExtendRtspStream des KameraLiveStream-Trait-Befehls, um neue streamExtensionToken- und streamToken-Werte abzurufen:

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 anzusehen:

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

Livestream beenden

Wenn Sie einen Kamera-Livestream nicht mehr verwenden, sollten Sie ihn beenden und den Stream 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.