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:
Merkmal | Beschreibung | Befehle | Ereignisse |
---|---|---|---|
CameraEventImage | Dieses Attribut 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 das Aufnehmen von Bildern unterstützt. | ||
CameraLiveStream | Diese Eigenschaft gehört zu jedem Gerät, das Livestreaming unterstützt. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | Dieses Attribut gehört zu jedem Gerät, das Bewegungserkennungsereignisse unterstützt. | Bewegung | |
CameraPerson | Dieses Attribut gehört zu allen Geräten, die Ereignisse zur Personenerkennung unterstützen. | Person | |
CameraSound | Diese Eigenschaft gehört zu jedem Gerät, das Geräuscherkennungsereignisse unterstützt. | Ton | |
Info | Dieses 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. |
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" ] }
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 undheight
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.