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:
Eigenschaft | Beschreibung | Befehle | Ereignisse |
---|---|---|---|
CameraEventImage | Dieser Trait gehört zu jedem Gerät, das das Generieren von Bildern aus Ereignissen unterstützt. | GenerateImage | |
CameraImage | Diese Eigenschaft gehört zu jedem Gerät, das die Aufnahme von Bildern unterstützt. | ||
CameraLiveStream | Dieser Trait gehört zu jedem Gerät, das Livestreaming unterstützt. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | Dieser Trait gehört zu jedem Gerät, das Bewegungserkennungsereignisse unterstützt. | Bewegung | |
CameraPerson | Dieser Trait gehört zu jedem Gerät, das Personenentdeckungsereignisse unterstützt. | Person | |
CameraSound | Dieser Trait gehört zu jedem Gerät, das Geräuscherkennungsereignisse unterstützt. | Ton | |
Informationen | Dieser 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. |
Nutzlast
{ "eventId" : "6d12911e-0181-495c-97b5-b6e8884c50ae",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "FJ-QMyhCTKninhnimPOwVDjELx...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
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" : "1GfoI8sZUnc79jrq7YfVodeqtf..."
}
}
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 undheight
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.