อัปโหลดโดยตรงผ่าน Street View

เวอร์ชัน 2.1

ที่มา

ใน API เวอร์ชันก่อนหน้า กล้องที่เป็นไปตามข้อกำหนดของ OSC จะสร้างจุดเข้าใช้งาน Wi-Fi ที่แอป Google Street View ใน iOS และ Android เชื่อมต่อได้ แอปจะสั่งให้กล้อง OSC ถ่ายภาพและดาวน์โหลดเนื้อหาที่บันทึกจากกล้อง แล้วเผยแพร่ไปยัง Google Street View เพื่อเร่งการเผยแพร่เนื้อหา เราได้เปิดตัวเวิร์กโฟลว์ใหม่แบบไม่บังคับซึ่งช่วยให้กล้อง OSC อัปโหลดเนื้อหาไปยังเซิร์ฟเวอร์ Street View ได้โดยตรง วิธีนี้จะช่วยลดปริมาณการโอนเนื้อหา 2 ครั้งจากกล้องไปยังแอปก่อน และจากนั้นจึงโอนจากแอปไปยังเซิร์ฟเวอร์ Street View ตัวเลขนี้เพิ่มเข้ามาใน API ระดับ 2.1 และเกี่ยวข้องกับกล้อง OSC ที่มีทั้งจุดเข้าใช้งาน Wi-Fi และเชื่อมต่อกับจุดเข้าใช้งาน Wi-Fi โครงสร้างพื้นฐานที่เข้าถึงอินเทอร์เน็ตได้ด้วย

ภาพรวม

เวิร์กโฟลว์การอัปโหลดใหม่ต้องใช้กล้องเพื่อระบุวิธี (เช่น ปุ่มเฉพาะหรือปุ่มที่มีอยู่เดิมหลายปุ่ม) เพื่อให้ผู้ใช้สลับระหว่าง 2 โหมด Wi-Fi ได้ดังนี้

  • โหมดโดยตรง: ในโหมดนี้ กล้องจะทำหน้าที่เป็นจุดเข้าใช้งานที่อนุญาตให้อุปกรณ์เคลื่อนที่เชื่อมต่อกับอุปกรณ์ ในโหมดนี้ อุปกรณ์เคลื่อนที่สามารถ ควบคุมกล้องเพื่อทำงานต่างๆ เช่น การจับภาพ อุปกรณ์เคลื่อนที่ยังสามารถให้ข้อมูลรับรองจุดเข้าใช้งาน Wi-Fi แก่กล้อง ซึ่งกล้องจะใช้เพื่อเปลี่ยนเป็นโหมดอินเทอร์เน็ตได้ด้วย
  • โหมดอินเทอร์เน็ต: ในโหมดนี้ กล้องจะเชื่อมต่อกับจุดเข้าใช้งาน Wi-Fi ที่มีการเข้าถึงอินเทอร์เน็ต โดยจะใช้ตัวระบุจุดเข้าใช้งานและรหัสผ่านที่ได้รับจากแอปเมื่อกล้องอยู่ในโหมดโดยตรงก่อนหน้านี้ อุปกรณ์เคลื่อนที่สามารถเริ่มการอัปโหลดจากกล้องไปยังเซิร์ฟเวอร์ Street View ในโหมดนี้ได้โดยตรง กล้องยังควบคุมกล้องเพื่อทำงานต่างๆ ได้ เช่น การจับภาพ

โหมดกล้องถ่ายรูปควรคงอยู่ตลอดแม้กล้องจะปิดอยู่และเปิดขึ้นมาอีกครั้ง นอกจากนี้ ขอแนะนำอย่างยิ่งให้กล้องมีสัญญาณ (เช่น แสง เสียง หรือสัญญาณบอกสถานะบนหน้าจอ) เพื่อแจ้งให้ผู้ใช้ทราบเกี่ยวกับโหมด Wi-Fi ปัจจุบัน

และกล้องก็ควรมีโปรโตคอลการค้นพบด้วย (ดู Discovery) เพื่อจัดการการสื่อสารขณะที่กล้องอยู่ในโหมดอินเทอร์เน็ต

การตั้งค่าโหมดอินเทอร์เน็ต

  1. ผู้ใช้เปิดกล้อง จะเริ่มทำงานในโหมดโดยตรงเนื่องจากยังไม่ได้ตั้งค่าโหมดอินเทอร์เน็ต
  2. อุปกรณ์เคลื่อนที่เชื่อมต่อกับ Wi-Fi ของกล้อง
  3. แอปจะสร้างใบรับรองแบบ Self-signed
  4. แอปจะใช้คำสั่ง switchWifi ไปยังกล้องพร้อม SSID ของจุดเข้าใช้งาน Wi-Fi โครงสร้างพื้นฐานที่กล้องจะต้องเชื่อมต่อ, รหัสผ่านของจุดเข้าใช้งานนั้น และใบรับรองแบบ Self-signed ที่กล้องใช้ในการตรวจสอบสิทธิ์แอปในภายหลัง
    • โปรดทราบว่ากล้องควรจัดเก็บทั้งข้อมูลเข้าสู่ระบบ Wi-Fi และใบรับรอง Self-signed ของแอปไว้อย่างปลอดภัย
    • ขอแนะนำให้ให้กล้องเก็บข้อมูลเข้าสู่ระบบ Wi-Fi หลายรายการ เนื่องจากกล้องอาจต้องเชื่อมต่อกับจุดเข้าใช้งาน Wi-Fi โครงสร้างพื้นฐานที่แตกต่างกัน ข้อกำหนดขั้นต่ำคือให้กล้องเก็บข้อมูลเข้าสู่ระบบ Wi-Fi ล่าสุด
  5. กล้องจะตอบกลับด้วยใบรับรองแบบ Self-signed ซึ่งแอปใช้ตรวจสอบสิทธิ์กล้องในภายหลัง
  6. ตอนนี้ผู้ใช้สลับระหว่างโหมดโดยตรงและโหมดอินเทอร์เน็ตได้โดยตรงจากกล้อง เช่น ด้วยปุ่มเปิด/ปิดจริง

Discovery

การค้นพบสำหรับกล้อง OSC เป็นโปรโตคอลที่ใช้ Zeroconf กล้องต้องใช้การกำหนดที่อยู่แบบ IPv4 Link-Local Addressing และต้องสอดคล้องกับ mDNS (Multicast DNS) และ DNS-SD (DNS-Based Service Discovery) ดังนี้

ชื่ออินสแตนซ์บริการ

สำหรับส่วน <Service> ของชื่ออินสแตนซ์บริการ กล้อง OSC ควรใช้ _osc._tcp ส่วน <Domain> ของชื่ออินสแตนซ์บริการ กล้อง OSC ควรใช้ local. โปรดทราบว่ามี . ต่อท้ายหลังจาก local

ระเบียน TXT

เรากำหนดให้กล้องส่งคู่คีย์/ค่าต่อไปนี้ในระเบียน TXT: txtvers, ty และ id

txtver

หากต้องการอนุญาตให้อัปเดตเวอร์ชัน TXT ในอนาคต ให้ใช้คู่คีย์/ค่า txtvers=1

ty

ระบุชื่อกล้องที่ผู้ใช้อ่านได้ เช่น ty=Google Street View Optimized Spherical Camera Model XYZ

id

ระบุรหัสที่ไม่ซ้ำกันของกล้อง เช่น id=A unique id of the camera ค่าสำหรับ id ต้องเหมือนกับ cameraId ในเอาต์พุต /osc/info

ประกาศ

เมื่อเปิดกล้องหรือปิดการทำงาน กล้องต้องทำตามขั้นตอนการประกาศตามที่อธิบายไว้ในข้อกำหนดของ mDNS และควรส่งประกาศที่สอดคล้องกันอย่างน้อย 2 ครั้ง โดยเว้นแต่ละวินาทีอย่างน้อย 1 วินาที

เริ่มต้นทำงาน

เมื่อเปิดกล้อง จะต้องดำเนินการตรวจสอบและประกาศขั้นตอนตามที่อธิบายไว้ในข้อมูลจำเพาะของ mDNS ในกรณีนี้ ควรส่งระเบียน SRV, PTR และ TXT ขอแนะนำให้จัดกลุ่มระเบียนทั้งหมดเป็นการตอบกลับ DNS เดียวหากเป็นไปได้ ไม่เช่นนั้น ขอแนะนำให้จัดลำดับระเบียน SRV, PTR, TXT

ปิดการทำงาน

เมื่อมีการปิดกล้อง ควรพยายามแจ้งผู้ที่สนใจทุกคนด้วยการส่ง "แพ็กเก็ตลาก่อน" ด้วย TTL=0 ตามที่อธิบายไว้ในส่วนที่ 10.1 ของเอกสารประกอบ mDNS

ใบรับรองที่ลงนามด้วยตนเอง

แอปและกล้องสามารถใช้ใบรับรองแบบ Self-signed ที่ใช้ร่วมกันระหว่างการตั้งค่าโหมดอินเทอร์เน็ตเพื่อตรวจสอบสิทธิ์กันและกันและสร้างช่องทางที่ปลอดภัยเพื่อปกป้องข้อมูลที่แลกเปลี่ยนโดยใช้การตรวจสอบสิทธิ์ร่วมกันของ SSL

ในระหว่างโหมดอินเทอร์เน็ต แอปจะทำหน้าที่เป็นเซิร์ฟเวอร์ SSL และกล้องเป็นไคลเอ็นต์ กล้องจะตรวจสอบว่าใบรับรองของเซิร์ฟเวอร์ตรงกับใบรับรองที่ลงชื่อด้วยตนเองของแอป และแอปจะตรวจสอบว่าใบรับรองของไคลเอ็นต์ตรงกับของกล้องหรือไม่

ไลบรารี SSL ที่รองรับการตรวจสอบสิทธิ์ร่วมกัน (เช่น OpenSSL) สามารถใช้เพื่อสร้างการเชื่อมต่อ SSL ระหว่างแอปกับกล้องในระหว่างโหมดอินเทอร์เน็ตได้

ขั้นตอนการอัปโหลดใหม่

  1. หากกล้องไม่ได้อยู่ในโหมดอินเทอร์เน็ต ผู้ใช้จะเปลี่ยนไปใช้โหมดอินเทอร์เน็ต กล้องจะเชื่อมต่อกับ Wi-Fi โครงสร้างพื้นฐานโดยใช้ข้อมูลเข้าสู่ระบบที่จัดเก็บไว้
  2. อุปกรณ์เคลื่อนที่ยังเชื่อมต่อกับ Wi-Fi โครงสร้างพื้นฐานและค้นพบกล้องอีกด้วย
    • โดยกล้องจะต้องใช้ mDNS/DNS-SD สำหรับโปรโตคอลการค้นพบในเครื่อง (โปรดดู Discovery)
    • ไม่มีข้อกำหนดเฉพาะเกี่ยวกับวิธีติดตั้งใช้งาน (mDNSResponder เป็นข้อมูลอ้างอิงที่ดี)
    • ทั้งแอปและกล้องจะสร้างและแชร์ใบรับรองแบบ Self-signed ระหว่างการตั้งค่าโหมดอินเทอร์เน็ต ในระหว่างโหมดอินเทอร์เน็ต ทั้งแอปและกล้องจะตรวจสอบสิทธิ์ระหว่างกันผ่านการตรวจสอบสิทธิ์ SSL ร่วมกัน
    • หลังจากพบกล้องแล้ว ระบบจะเปิดใช้การสื่อสารกับไคลเอ็นต์กับกล้องโดยตรงผ่านเครือข่ายภายในที่ใช้ HTTP 1.1 รูปแบบข้อมูลใช้ JSON คำขออาจเป็นคำขอ GET หรือ POST
  3. แอปจะค้นหารายการไฟล์จากกล้องด้วยคำสั่ง listFiles
  4. แอปเริ่มการอัปโหลดด้วยคําสั่ง uploadFile เพื่ออัปโหลดรูปภาพหรือวิดีโอจากกล้องไปยังเซิร์ฟเวอร์ของ Street View โดยตรง
  5. แอปจะสำรวจกล้องเป็นระยะๆ เพื่อดูความคืบหน้าในการอัปโหลดด้วยคำสั่ง status