ตรวจสอบการอัปเดต

/osc/checkForUpdates API จะระบุการอัปเดตสถานะโดยเปรียบเทียบ stateFingerprint ที่ทราบล่าสุดของไคลเอ็นต์กับ fingerprint ปัจจุบันของกล้อง

อินพุต

ชื่อ ประเภท คำอธิบาย
stateFingerprint สตริง ลายนิ้วมือสถานะกล้องจากครั้งล่าสุดที่ไคลเอ็นต์โทรหา /osc/state หรือ /osc/checkForUpdates
waitTimeout จำนวนเต็ม (ไม่บังคับ) จำนวนวินาทีที่รอให้มีการเปลี่ยนสถานะในกล้องก่อนที่จะตอบกลับ เมื่อwaitTimeoutหมดอายุ กล้องควรตอบกลับแม้ว่าลายนิ้วมือจะไม่เปลี่ยนแปลง หากตรวจพบการเปลี่ยนแปลงสถานะก่อน waitTimeout หมดอายุหรือละเว้น waitTimeout กล้องควรตอบกลับทันทีหมายเหตุ: กล้องจะแสดงคำตอบได้ก่อนที่ waitTimeout จะหมดอายุแม้ว่าลายนิ้วมือจะไม่เปลี่ยนไป แต่แนวทางปฏิบัติแนะนำคือการรอจนกว่า waitTimeout จะหมดอายุ

หมายเหตุการใช้งานกล้อง

  • เมื่อได้รับสายนี้ กล้องจะเปรียบเทียบลายนิ้วมือสถานะปัจจุบันกับพารามิเตอร์ stateFingerprint ที่ได้รับ หากลายนิ้วมือมีการเปลี่ยนแปลง กล้องต้องส่งคืนลายนิ้วมือใหม่ทันที

เอาต์พุต

ชื่อ ประเภท คำอธิบาย
stateFingerprint สตริง ลายนิ้วมือใหม่ของสถานะกล้อง (เหมือนกับใน /osc/state API)
throttleTimeout จำนวนเต็ม จำนวนวินาทีที่แนะนำเพื่อให้ลูกค้ารอก่อนการโทร checkForUpdates ครั้งถัดไป ไคลเอ็นต์จะส่งคำขอได้ก่อนที่ throttleTimeout จะหมดอายุ และกล้องควรอนุญาตคำขอล่วงหน้าเหล่านี้หากเป็นไปได้

หมายเหตุการใช้งานไคลเอ็นต์:

  • เมื่อได้รับการตอบกลับ ไคลเอ็นต์ควรเปรียบเทียบ stateFingerprint ที่ได้รับกับสำเนา หากไม่ตรงกัน ไคลเอ็นต์ควรขอสถานะปัจจุบันของกล้องโดยใช้ _/osc/state API
  • ไคลเอ็นต์อัจฉริยะจะควบคุมคำขอโดยไม่คำนึงถึงการตอบสนองของกล้อง เช่น หากกล้องให้การตอบสนองที่ไม่เป็นไปตามมาตรฐาน (ทันทีคือไม่มีการเปลี่ยนแปลง และ throttleTimeout) ต่ำหรือ 0 เป็น 0 ไคลเอ็นต์ควรกำหนด throttleTimeout ของตนเองก่อนที่จะขอ checkForUpdates อีกครั้งจากกล้อง

หมายเหตุการใช้งานกล้อง

  • เมื่อตอบสนองต่อ checkForUpdates กล้องควรระบุ throttleTimeout ที่สมเหตุสมผล หากกล้องรองรับตรรกะคำขอแบบยืนยาว (ตอบกลับหลังจาก waitTimeout เท่านั้นหากสถานะไม่เปลี่ยนแปลง) คุณสามารถแสดงผล throttleTimeout เป็น 0 ได้ ในกรณีนี้ ไคลเอ็นต์จะขออัปเดตได้ทันที
  • หากกล้องรองรับเฉพาะการตอบสนองที่รวดเร็ว (ไม่แนะนำ) ควรแสดงผล throttleTimeout ที่สมเหตุสมผลเพื่อหลีกเลี่ยงการส่งคำขอ/ตอบกลับไปยังไคลเอ็นต์อย่างต่อเนื่อง ตัวอย่างเช่น throttleTimeout ที่สมเหตุสมผลคือ 60 วินาที เพื่ออนุญาตคำขอของไคลเอ็นต์ 1 รายการต่อนาที
  • แนวทางปฏิบัติแนะนำคือให้ส่งคืน throttleTimeout ที่เหมาะสำหรับความสามารถของกล้อง หากเซิร์ฟเวอร์ระบุ throttleTimeout ที่เหมาะสมไม่ได้เนื่องจากเซิร์ฟเวอร์มีปัญหา กล้องควรตอบกลับด้วยรหัสสถานะ 5XX และเนื้อหา JSON ที่มีรหัสข้อผิดพลาด serverError

ข้อผิดพลาด

รหัสข้อผิดพลาด คำอธิบาย
missingParameter ไม่ได้ระบุ stateFingerprint
invalidParameterName ไม่รู้จักชื่อพารามิเตอร์อินพุตอย่างน้อย 1 ชื่อ
invalidParameterValue ระบบจดจำชื่อพารามิเตอร์ได้ แต่มีค่าอย่างน้อย 1 ค่าที่ไม่ถูกต้อง ตัวอย่างเช่น waitTimeout อยู่นอกช่วงหรือประเภทไม่ถูกต้อง
serverError เซิร์ฟเวอร์ระบุค่า throttleTimeout ที่เหมาะสมสำหรับการตอบกลับไม่ได้ ปัญหาเซิร์ฟเวอร์จะระบุด้วยค่า 5XX ที่แสดงผลในการตอบกลับ ผู้ผลิตกล้องควรระบุตารางรหัส 5XX และสถานะของเซิร์ฟเวอร์ที่เกี่ยวข้องที่อาจทำให้เกิดข้อผิดพลาดนี้

ตัวอย่าง

คำขอ
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
}
การตอบกลับ
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
}
คำขอ
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
}
การตอบกลับ
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."
    }
}