Güncellemeleri Kontrol Et

/osc/checkForUpdates API, istemcinin bilinen son stateFingerprint değerini kameranın mevcut fingerprint değeri ile karşılaştırarak durum güncellemelerini tanımlar.

Giriş

Ad Tür Açıklama
stateFingerprint Dize İstemcinin /osc/state veya /osc/checkForUpdates adlı son aramadaki kamera durumu parmak izi.
waitTimeout Tam sayı (isteğe bağlı) Yanıt döndürülmeden önce kamerada durum değişikliğinin gerçekleşmesi için beklenecek saniye sayısı. waitTimeout talimatının süresi dolduğunda, parmak izi değişmese bile kamera bir yanıt döndürecektir. waitTimeout süresi dolmadan önce bir durum değişikliği algılanırsa veya waitTimeout atlanırsa kamera, yanıtı hemen döndürecektir.Not: Parmak izi değişmemiş olsa bile kamera, waitTimeout süresi dolmadan yanıt verebilir ancak en iyi uygulama, waitTimeout cihazının süresi dolana kadar beklemektir.

Kamera uygulama notları:

  • Bu çağrıyı aldıktan sonra kamera, mevcut durum parmak izini alınan stateFingerprint parametresiyle karşılaştırır. Parmak izi değiştiyse kameranın yeni parmak izini hemen döndürmesi gerekir.

Çıkış

stateFingerprint Dize Kamera durumunun yeni parmak izi (/osc/state API'dekiyle aynıdır).
throttleTimeout Tamsayı Müşterinin bir sonraki checkForUpdates aramasından önce beklemesi için önerilen saniye sayısı. Müşteriler, throttleTimeout süresi dolmadan önce istekte bulunabilir. Kameraların bu erken isteklere mümkünse izin vermesi gerekir.

Müşteri uygulama notları:

  • Yanıt aldıktan sonra müşteri, aldığı stateFingerprint ile kopyasını karşılaştırmalıdır. Eşleşmiyorlarsa istemcinin _/osc/state API'yi kullanarak kameranın mevcut durumunu istemesi gerekir.
  • Akıllı istemciler, kamera yanıtından bağımsız olarak istekleri kısıtlar. Örneğin, bir kamera standart dışı bir yanıt döndürürse (hemen, değişiklik yok ve düşük veya 0 throttleTimeout) ile) istemci, kameradan başka bir checkForUpdates istemeden önce kendi throttleTimeout kodunu uygulamalıdır.

Kamera uygulama notları:

  • checkForUpdates adlı kullanıcıya yanıt verirken kamera makul bir throttleTimeout belirlemelidir. Kamera uzun süreli istek mantığını destekliyorsa (durum değişmediyse yalnızca waitTimeout sonrasında yanıt verir) throttleTimeout öğesinin 0 olarak döndürülmesinde sorun yoktur. Bu durumda istemciler hemen güncelleme isteğinde bulunabilir.
  • Kamera yalnızca hızlı yanıtları destekliyorsa (önerilmez) istemcideki sürekli istek/yanıt trafiğinden kaçınmak için makul bir throttleTimeout döndürmelidir. Örneğin, dakikada bir istemci isteğine izin vermek için makul bir throttleTimeout 60 saniyedir.
  • En iyi uygulama, kameranın özelliklerine uygun bir throttleTimeout döndürmektir. Sunucu, sunucu sorunu nedeniyle uygun bir throttleTimeout belirleyemezse kamera, 5XX durum kodu ve serverError hata kodu içeren bir JSON gövdesi ile yanıt vermelidir.

Hata

Hata kodu
missingParameter stateFingerprint belirtilmedi.
invalidParameterName Bir veya daha fazla giriş parametresi adı tanınmıyor.
invalidParameterValue Parametre adları tanınıyor, ancak bir veya daha fazla değer geçersiz. Örneğin, waitTimeout aralık dışında veya türü yanlış.
serverError Sunucu, yanıtı için uygun bir throttleTimeout değeri belirleyemedi. Sunucu sorunu, yanıtta döndürülen 5XX değeriyle tanımlanır. Kamera üreticileri, bu hatayı oluşturabilecek 5XX kodları ve ilgili sunucu durumlarından oluşan bir tablo sağlamalıdır.

Örnek

İstek
POST /osc/checkForUpdates HTTP/1.1
Host: [camera ip address]:[httpUpdatesPort]
Content-Type: application/json;charset=utf-8
Accept: application/jsonContent-Length: {CONTENT_LENGTH}
X-XSRF-Protected: 1

{
    "stateFingerprint": "12EGA33",
    "waitTimeout": 300
}
Yanıt
HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
Content-Length: {CONTENT_LENGTH}
X-Content-Type-Options: nosniff

{
    "stateFingerprint": "12EGA86",
    "throttleTimeout": 60
}
İstek
POST /osc/checkForUpdates HTTP/1.1
Host: [camera ip address]:[httpUpdatesPort]
Content-Type: application/json;charset=utf-8
Accept: application/jsonContent-Length: {CONTENT_LENGTH}
X-XSRF-Protected: 1

{
    "stateFingerprint": "12EGA33",
    "waitTimeout": 300
}
Yanıt
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=utf-8
Content-Length: {CONTENT_LENGTH}
X-Content-Type-Options: nosniff

{
    "name": "camera.checkForUpdates",
    "state": "error",
    "error": {
        "code": "missingParameter",
        "message": "parameter stateFingerprint is missing."
    }
}