Dzwonek (starsza wersja)

Nest Hello

Wszystkie starsze dzwonki Nest Doorbell są obsługiwane w interfejsie Smart Device Management (SDM) API. To urządzenie zwraca typ urządzenia DOORBELL:

sdm.devices.types.DOORBELL

Google Nest Doorbell (starszy) ma kamerę, która działa tak samo jak urządzenie typu CAMERA.

Cechy

Dokumentacja

Te cechy, polecenia i zdarzenia są powiązane z tym urządzeniem:

CechaOpisPoleceniaWydarzenia
CameraEventImageTa cecha należy do każdego urządzenia, które obsługuje generowanie obrazów na podstawie zdarzeń.GenerateImage
CameraImageTa cecha należy do każdego urządzenia, które obsługuje robienie zdjęć.
CameraLiveStreamTa cecha należy do każdego urządzenia, które obsługuje transmisję na żywo.GenerateRtspStream
ExtendRtspStream
StopRtspStream
CameraMotionTa cecha należy do każdego urządzenia, które obsługuje zdarzenia wykrywania ruchu.Motion
CameraPersonTa cecha należy do każdego urządzenia, które obsługuje zdarzenia wykrywania osób.Person
CameraSoundTa cecha należy do każdego urządzenia, które obsługuje zdarzenia wykrywania dźwięku.Sound
DoorbellChimeTa cecha należy do każdego urządzenia, które obsługuje dzwonek i powiązane z nim zdarzenia naciśnięcia.Chime
InformacjeTa cecha należy do każdego urządzenia, które zawiera informacje o urządzeniu.

JSON

Brak cechy w odpowiedzi GET oznacza, że ta cecha lub funkcja jest obecnie niedostępna na urządzeniu. Więcej informacji znajdziesz w sekcji Typy urządzeń.

{
  "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"
    }
  }
}

Obsługa zdarzeń dzwonka i kamery

Te zdarzenia mogą być wywoływane przez urządzenie typu DOORBELL:

Typ Element Opis
Zdarzenie Zdarzenie ruchu cechy CameraMotion Kamera wykryła ruch.
Zdarzenie Zdarzenie osoby cechy CameraPerson Kamera wykryła osobę.
Zdarzenie Zdarzenie dźwięku cechy CameraSound Kamera wykryła dźwięk.
Zdarzenie Zdarzenie dzwonka cechy DoorbellChime Naciśnięto dzwonek.
Na przykład tutaj naciśnięto przycisk dzwonka:

Ładunek

{
  "eventId" : "332127ab-2a6f-4613-b2e1-6734105a7ead",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.DoorbellChime.Chime" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "nNDfmmxHIqWROtqhi9MDdEiDJ0..." } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
Ładunek tego zdarzenia zawiera eventId, którego można użyć z GenerateImage poleceniem. To polecenie zwraca adres URL pobierania obrazu z kamery powiązanego ze zdarzeniem:

Żądanie

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraEventImage.GenerateImage",
  "params" : {
    "eventId" : "iUbDCg5CvkjJyE271PGaH0ea-m..."
  }
}

Odpowiedź

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

Pobieranie obrazu z kamery

Aby pobrać obraz z kamery, wywołaj GET na adres URL z odpowiedzi na polecenie GenerateImage, używając token w nagłówku HTTP Authorization z uwierzytelnianiem podstawowym:url

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...

Aby dostosować rozdzielczość pobranego obrazu, użyj parametrów zapytania width lub height. Musisz podać tylko jeden z tych parametrów. Drugi parametr jest automatycznie skalowany zgodnie ze współczynnikiem proporcji kamery.

Jeśli na przykład współczynnik proporcji kamery wynosi 4:3, aby pobrać obraz z kamery w rozdzielczości 480 x 360, określ szerokość lub wysokość:

Szerokość

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480

Wysokość

curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360

Obowiązują inne ograniczenia dotyczące adresu URL pobierania:

  • Jeśli w adresie URL podasz oba parametry, używana jest width, a height jest ignorowana.
  • Jeśli w adresie URL nie podasz żadnego parametru, jako wartość domyślną width zostanie wybrana wartość 480.

Informacje o właściwościach obrazu znajdziesz w sekcji cecha CameraImage .

Dostęp do transmisji na żywo

Możesz uzyskać dostęp do transmisji na żywo z kamery. To urządzenie obsługuje te formaty strumieniowe:

  • RTSP

Pełną listę kamer i obsługiwanych formatów strumieniowych znajdziesz w sekcji Obsługiwane urządzenia.

Aby uzyskać dostęp do transmisji na żywo, użyj odpowiedniego polecenia GenerateFormatStream polecenia cechy CameraLiveStream.

RTSP

W przypadku strumienia RTSP polecenie GenerateRtspStream cechy CameraLiveStream zwraca adres URL strumienia i powiązany z nim streamToken:

Żądanie

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

Odpowiedź

{
  "results" : {
    "streamUrls" : {
      "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken"
    },
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
    "streamToken" : "g.0.streamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

Następnie użyj adresu URL strumienia, aby uzyskać dostęp do transmisji na żywo z kamery:

rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken

Adresów URL transmisji na żywo RTSP nie można udostępniać między klientami. Adres URL strumienia może być używany tylko przez jednego klienta naraz. Jeśli kilku klientów chce jednocześnie przesyłać strumieniowo obraz z tej samej kamery, polecenia RTSP muszą być wysyłane do każdego z nich, a każdy klient musi używać własnego adresu URL strumienia.

Przedłużanie transmisji na żywo

Sesje transmisji na żywo z kamery są ważne tylko przez 5 minut. Jeśli chcesz przedłużyć czas trwania transmisji na żywo, użyj odpowiedniego polecenia ExtendFormatStream cechy CameraLiveStream dla wygenerowanego formatu strumienia.

RTSP

Aby przedłużyć strumień RTSP, użyj ExtendRtspStream polecenia cechy CameraLiveStream, aby uzyskać nowe wartości streamExtensionToken i streamToken:

Żądanie

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

Odpowiedź

{
  "results" : {
    "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "streamToken" : "g.0.newStreamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

Aby kontynuować oglądanie transmisji na żywo, zaktualizuj adres URL strumienia o te nowe wartości:

rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken

Zatrzymywanie transmisji na żywo

Gdy nie używasz już transmisji na żywo z kamery, zatrzymaj ją i unieważnij strumień. Aby to zrobić, użyj odpowiedniego polecenia StopFormatStream cechy CameraLiveStream dla wygenerowanego formatu strumienia.

RTSP

Aby zatrzymać strumień RTSP, użyj tokena do unieważnienia za pomocą polecenia StopRtspStream cechy CameraLiveStream:

Żądanie

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

Odpowiedź

{}

Błędy

W związku z tym urządzeniem mogą zostać zwrócone te kody błędów:

Komunikat o błędzie RPC Rozwiązywanie problemów
Obrazu z kamery nie można już pobrać. DEADLINE_EXCEEDED Obrazy zdarzeń wygasają 30 sekund po opublikowaniu zdarzenia. Pamiętaj, aby pobrać obraz przed wygaśnięciem.
Identyfikator zdarzenia nie należy do kamery. FAILED_PRECONDITION Użyj prawidłowego eventID zwróconego przez zdarzenie zarejestrowane przez kamerę.

Pełną listę kodów błędów interfejsu API znajdziesz w dokumentacji Kody błędów interfejsu API dla.