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:
Eigenschaft | Beschreibung | Befehle | Veranstaltungen |
---|---|---|---|
CameraEventImage | Diese Eigenschaft gehört zu jedem Gerät, das die Generierung von Bildern aus Ereignissen unterstützt. | GenerateImage | |
CameraImage | Diese Eigenschaft gehört zu jedem Gerät, das die Aufnahme von Bildern unterstützt. | ||
CameraLiveStream | Diese Trait gehört zu jedem Gerät, das Livestreaming unterstützt. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | Diese Eigenschaft gehört zu jedem Gerät, das Bewegungserkennungsereignisse unterstützt. | Bewegung | |
CameraPerson | Diese Eigenschaft gehört zu jedem Gerät, das Personenentdeckungsereignisse unterstützt. | Person | |
CameraSound | Diese Eigenschaft gehört zu jedem Gerät, das Geräuscherkennungsereignisse unterstützt. | Ton | |
Informationen | Diese 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. |
Nutzlast
{ "eventId" : "63d8794e-8780-4582-9366-b31d70018c58",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "VCARAj1h6VvpEYAK8gqO3n6q2-...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
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" : "oJ6ktkw6ltzJDj1IJah0BynH05..."
}
}
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 undheight
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.