Türklingel (alt)

Nest Hello

Alle älteren Nest Doorbells werden von der Smart Device Management (SDM) API unterstützt. Dieses Gerät gibt den Gerätetyp DOORBELL zurück:

sdm.devices.types.DOORBELL

Google Nest Doorbell (ältere Version) hat eine Kamera, die genauso funktioniert wie ein KAMERA-Gerät.

Eigenschaften

Referenz

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

MerkmalBeschreibungBefehleEreignisse
CameraEventImageDieses Attribut gehört zu jedem Gerät, das die Generierung 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
CameraMotionDieses Attribut gehört zu jedem Gerät, das Bewegungserkennungsereignisse unterstützt.Bewegung
KamerapersonDieser Trait gehört zu jedem Gerät, das Personenentdeckungsereignisse unterstützt.Person
CameraSoundDiese Eigenschaft gehört zu jedem Gerät, das Geräuscherkennungsereignisse unterstützt.Ton
TürklingelDieser Trait gehört zu jedem Gerät, das eine Glocke für die Türklingel und zugehörige Betätigungen unterstützt.Glocke
InfoDieses 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.DOORBELL",
  "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.DoorbellChime" : {},
    "sdm.devices.traits.Info" : {
      "customName" : "My device"
    }
  }
}

Türklingel- und Kameraereignisse verarbeiten

Die folgenden Ereignisse können von einem DOORBELL-Gerätetyp 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.
Ereignis Ereignis Glocke des Attributs „DoorbellChime“ Die Türklingel wurde gedrückt.
In diesem Beispiel wurde die Klingeltaste gedrückt:

Nutzlast

{
  "eventId" : "76f85e13-cc15-4705-83c3-0b3838118524",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "cV7T3NiEMXH5ZmQz21AwMaW0mF..." } } } "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" : "mFNqXZk08luMZuuBBPCPbS7mZ4..."
  }
}

Antwort

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

Kamerabild herunterladen

Führen Sie einen GET-Aufruf an url aus einer GenerateImage-Befehlsantwort aus und 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 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 in der URL beide Parameter 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 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 und jeder Client muss seine 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“ (Stream verlängern) 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.