Displaynetzwerk

Nest Hub Max

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

sdm.devices.types.DISPLAY

Google Nest Hub Max hat eine Kamera, die genauso funktioniert wie eine Gerätetyp der KAMERA.

Eigenschaften

Referenz

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

EigenschaftBeschreibungBefehleEreignisse
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 die Aufnahme von Bildern unterstützt.
CameraLiveStreamDieser Trait gehört zu jedem Gerät, das Livestreaming unterstützt.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionDieser Trait gehört zu jedem Gerät, das Bewegungserkennungsereignisse unterstützt.Bewegung
CameraPersonDieser Trait gehört zu jedem Gerät, das Personenentdeckungsereignisse unterstützt.Person
CameraSoundDieser Trait gehört zu jedem Gerät, das Geräuscherkennungsereignisse unterstützt.Ton
InformationenDieser Trait gehört zu jedem Gerät, auf dem gerätebezogene Informationen verfügbar sind.

JSON

Das Fehlen eines Merkmals in einer GET-Antwort weist darauf hin, dass das Merkmal oder ist für das Gerät derzeit nicht verfügbar. Weitere Informationen finden Sie unter Weitere Informationen zu Gerätetypen Informationen.

{
  "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 von einem DISPLAY-Gerätetyp ausgelöst werden:

Typ Element Beschreibung
Ereignis Ereignis Motion des Attributs „CameraMotion“ Die Kamera hat Bewegung erkannt.
Ereignis Person-Ereignis der Eigenschaft KameraPerson Die Kamera hat eine Person erkannt.
Ereignis Ereignis Geräusch des Kameraton-Tritts Die Kamera hat Geräusche erkannt.
In diesem Beispiel hat die Kamera Bewegung erkannt:

Nutzlast

{
  "eventId" : "d4ba0dc5-fc9b-4637-a862-16b21589a823",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "RS0RUFVK0ak0Pa4djSmJlQaev5...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
Die Nutzlast dieses Ereignisses enthält ein eventId, das mit dem GenerateImage . Dieser Befehl gibt eine Download-URL für das Kamerabild zurück, das sich auf das Ereignis:

Anfrage

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

Antwort

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

Kamerabild herunterladen

GET-Aufruf an url aus einem GenerateImage-Befehl token im HTTP-Autorisierungsheader mit Basic-Autorisierung verwenden, Laden Sie das Kamerabild herunter:

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 Bild. Nur einer dieser Parameter muss angegeben werden. Die andere automatisch an das Seitenverhältnis der Kamera angepasst.

Beträgt die Kamera beispielsweise ein Seitenverhältnis von 4:3, wird das Kamerabild heruntergeladen, mit einer Auflösung von 480 x 360 geben Sie 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 außerdem folgende Einschränkungen:

  • Wenn in der URL beide Parameter angegeben sind, wird width verwendet und height wird ignoriert.
  • Falls in der URL keiner der beiden Parameter angegeben ist, wird für den Parameter width

Das Merkmal CameraImage für Informationen zu Bildeigenschaften.

Auf einen Livestream zugreifen

Sie können auf den Livestream einer Kamera zugreifen. Die folgenden Streamformate sind unterstützt für dieses Gerät:

  • RTSP

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

Verwende den entsprechendenFormatStream, um auf einen Livestream zuzugreifen. des Befehls CameraLiveStream Eigenschaft ist.

RTSP

Bei einem RTSP-Stream Befehl GenerateRtspStream des Trait-Befehls „CameraLiveStream“ gibt 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.

Einen Livestream verlängern

Kamera-Livestreams sind nur 5 Minuten lang gültig. Wenn du die Lebensdauer eines Livestreams verlängern möchtest, verwende für das generierte Streamformat den entsprechendenFormatStream-Befehl des Merkmals KameraLiveStream .

RTSP

Verwende zum Verlängern eines RTSP-Streams den ExtendRtspStream des Trait-Befehls „CameraLiveStream“, um neue streamExtensionToken und streamToken erhalten Werte:

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 die Livestream:

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 Stream ungültig machen. Verwenden Sie dazu den entsprechendenFormatStopstream des Befehls CameraLiveStream Eigenschaft für das generierte Streamformat.

RTSP

Um einen RTSP-Stream zu beenden, entwerte das Token mit dem StopRtspStream des Trait-Befehls „CameraLiveStream“:

Anfrage

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

Antwort

{}

Fehler

In Bezug auf dieses Gerät können folgende Fehlercodes zurückgegeben werden:

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

In der API-Fehlercode-Referenz können Sie nachlesen, die vollständige Liste der API-Fehlercodes.