
Wszystkie starsze dzwonki Nest są obsługiwane w interfejsie Smart Device Management (SDM) API. To urządzenie zwraca typ DOORBELL:
sdm.devices.types.DOORBELL
Google Nest Doorbell (starszy model) ma kamerę, która działa tak samo jak urządzenie typu KAMERA.
Cechy
Dokumentacja
Z tym urządzeniem są powiązane te cechy, polecenia i zdarzenia:
| Cechy | Opis | Polecenia | Wydarzenia | 
|---|---|---|---|
| CameraEventImage | Ta cecha należy do każdego urządzenia, które obsługuje generowanie obrazów na podstawie wydarzeń. | GenerateImage | |
| CameraImage | Ta cecha należy do każdego urządzenia, które obsługuje robienie zdjęć. | ||
| CameraLiveStream | Ten atrybut dotyczy każdego urządzenia, które obsługuje transmisje na żywo. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
| CameraMotion | Ten atrybut należy do każdego urządzenia, które obsługuje zdarzenia wykrywania ruchu. | Ruch | |
| CameraPerson | Ta cecha należy do każdego urządzenia, które obsługuje zdarzenia wykrywania osób. | Osoba | |
| CameraSound | Ten atrybut należy do każdego urządzenia, które obsługuje zdarzenia wykrywania dźwięku. | Dźwięk | |
| DoorbellChime | Ten atrybut należy do każdego urządzenia, które obsługuje dzwonek i powiązane zdarzenia naciśnięcia. | Dzwonek | |
| Informacje | Ten atrybut należy do każdego urządzenia i zawiera informacje dotyczące urządzenia. | 
JSON
Brak cechy w odpowiedzi GET oznacza, że cecha lub funkcja nie jest obecnie dostę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ń związanych z dzwonkiem do drzwi i kamerą
Z urządzenia typu DOORBELL mogą być wywoływane te zdarzenia:| Typ | Element | Opis | 
|---|---|---|
| Zdarzenie | Zdarzenie Motion cechy CameraMotion | Kamera wykryła ruch. | 
| Zdarzenie | Zdarzenie Person cechy CameraPerson | Kamera wykryła osobę. | 
| Zdarzenie | Zdarzenie Sound cechy CameraSound | Kamera wykryła dźwięk. | 
| Zdarzenie | Zdarzenie Chime cechy DoorbellChime | Dzwonek został naciśnięty. | 
Ładunek
{
  "eventId" : "9aba12c8-a2d4-4703-94a2-48490a0e46ce",
  "timestamp" : "2019-01-01T00:00:01Z",
  "resourceUpdate" : {
    "name" : "enterprises/project-id/devices/device-id",
    "events" : {
      "sdm.devices.events.DoorbellChime.Chime" : {
        "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
        "eventId" : "FWNnP3Jyhpyo6j-O8z1od2KC-O..."
      }
    }
  }
  "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
  "resourceGroup" : [
    "enterprises/project-id/devices/device-id"
  ]
}eventId, którego można użyć w poleceniu GenerateImage. 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" : "QvFeNCk_eyaHBZk6XIwj9ORasY..."
  }
}
Odpowiedź
{
  "results" : {
    "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "token" : "g.0.eventToken"
  }
}
Pobieranie obrazu z kamery
Wykonaj wywołanie GET do url z odpowiedzi na polecenie GenerateImage, używając token w nagłówku autoryzacji HTTP z autoryzacją podstawową, aby pobrać obraz z kamery:
curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...Użyj parametrów zapytania width lub height, aby dostosować rozdzielczość pobranego obrazu. Wystarczy podać tylko jeden z tych parametrów. Drugi parametr jest skalowany automatycznie zgodnie z formatem obrazu kamery.
Jeśli na przykład współczynnik proporcji aparatu to 4:3, aby pobrać obraz z aparatu o rozdzielczości 480 x 360, podaj szerokość lub wysokość:
Szerokość
curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480Wysokość
curl -H "Authorization: Basic g.0.eventToken" \
      https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360Obowiązują inne ograniczenia dotyczące adresu URL pobierania:
- Jeśli w adresie URL podane są oba parametry, używany jest parametr width, a parametrheightjest ignorowany.
- Jeśli w adresie URL nie podasz żadnego z tych parametrów, domyślna wartość parametru widthwyniesie 480.
Informacje o właściwościach obrazu znajdziesz w cechie CameraImage .
Otwieranie transmisji na żywo
Dostępna jest transmisja na żywo z kamery. To urządzenie obsługuje te formaty strumieniowania:
- RTSP
Pełną listę kamer i obsługiwanych formatów strumieniowania znajdziesz w sekcji Obsługiwane urządzenia.
Aby uzyskać dostęp do transmisji na żywo, użyj odpowiedniego polecenia GenerateFormatStream cechyCameraLiveStream.
RTSP
W przypadku strumienia RTSP polecenie GenerateRtspStream z polecenia cechy CameraLiveStream
        zwraca adres URL strumienia i powiązane 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 transmisji może być używany tylko przez jednego klienta naraz. Jeśli wielu klientów chce przesyłać strumieniowo obraz z tej samej kamery w tym samym czasie, polecenia RTSP muszą być wysyłane do każdego klienta z osobna, 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 z cechy CameraLiveStream dla wygenerowanego formatu strumienia.
RTSP
Aby przedłużyć strumień RTSP, użyj polecenia ExtendRtspStream z 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 nadal oglądać transmisję na żywo, zaktualizuj adres URL transmisji, podając te nowe wartości:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
Zatrzymywanie transmisji na żywo
Gdy nie korzystasz już z transmisji na żywo z kamery, zatrzymaj ją i unieważnij. Aby to zrobić, użyj odpowiedniego polecenia StopFormatStream w przypadku cechyCameraLiveStreamdla wygenerowanego formatu strumienia.
RTSP
Aby zatrzymać strumień RTSP, użyj tokena do unieważnienia za pomocą polecenia StopRtspStream polecenia cechy CameraLiveStream:
Żądanie
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream",
  "params" : {
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
  }
}
Odpowiedź
{}
Błędy
W przypadku tego urządzenia mogą być zwracane te kody błędów:
| Komunikat o błędzie | RPC | Rozwiązywanie problemów | 
|---|---|---|
| Obraz z kamery nie jest już dostępny do pobrania. | DEADLINE_EXCEEDED | Obrazy wydarzeń wygasają 30 sekund po opublikowaniu wydarzenia. Pamiętaj, aby pobrać obraz przed wygaśnięciem. | 
| Identyfikator zdarzenia nie należy do kamery. | FAILED_PRECONDITION | Użyj prawidłowego parametru eventIDzwróconego przez zdarzenie kamery. | 
Pełną listę kodów błędów interfejsu API znajdziesz w dokumentacji kodów błędów interfejsu API.
