آپلود مستقیم از طریق نمای خیابان

نسخه 2.1

زمینه

در نسخه‌های قبلی API، یک دوربین سازگار با OSC یک نقطه دسترسی Wi-Fi ایجاد می‌کند که برنامه‌های Google Street View iOS و Android می‌توانند به آن متصل شوند. این برنامه هم دوربین OSC را برای گرفتن عکس ها هدایت می کند و هم محتوای گرفته شده را از دوربین دانلود می کند و سپس آن را در نمای خیابان گوگل منتشر می کند. برای تسریع در انتشار محتوا، یک گردش کار اختیاری جدید را معرفی کرده‌ایم که به دوربین‌های OSC اجازه می‌دهد مستقیماً محتوا را در سرور نمای خیابان آپلود کنند. این کار انتقال مضاعف طولانی محتوا را ابتدا از دوربین به برنامه و سپس از برنامه به سرور نمای خیابان حذف می کند. این در سطح API 2.1 اضافه شده است و فقط مربوط به دوربین های OSC است که هم می توانند یک نقطه دسترسی Wi-Fi ارائه دهند و هم به یک زیرساخت دسترسی Wi-Fi با دسترسی به اینترنت متصل شوند.

بررسی اجمالی

گردش کار آپلود جدید به دوربین‌ها نیاز دارد که راهی (به عنوان مثال یک دکمه فیزیکی اختصاصی یا ترکیبی از دکمه‌های موجود) فراهم کنند تا به کاربران اجازه دهد بین دو حالت Wi-Fi جابجا شوند:

  • حالت مستقیم: در این حالت دوربین به عنوان یک نقطه دسترسی عمل می کند که به دستگاه تلفن همراه اجازه می دهد به آن متصل شود. در این حالت، دستگاه های تلفن همراه می توانند دوربین را برای انجام کارهایی مانند گرفتن عکس کنترل کنند. دستگاه‌های تلفن همراه همچنین می‌توانند اعتبار نقطه دسترسی Wi-Fi را در اختیار دوربین قرار دهند که سپس دوربین می‌تواند از آن برای تغییر حالت اینترنت استفاده کند.
  • حالت اینترنت: در این حالت دوربین با دسترسی به اینترنت به یک نقطه دسترسی Wi-Fi متصل می شود. از شناسه نقطه دسترسی و رمز عبوری استفاده می‌کند که زمانی که دوربین قبلاً در حالت Direct بود از برنامه به آن ارائه شده است. دستگاه های تلفن همراه می توانند در این حالت آپلود را از دوربین مستقیماً به سرور نمای خیابان آغاز کنند. آنها همچنین می توانند به کنترل دوربین برای انجام کارهایی مانند گرفتن عکس ادامه دهند.

حالت دوربین باید در سراسر خاموش شدن دوربین و دوباره روشن شدن مجدد باقی بماند. همچنین، به شدت توصیه می شود که دوربین سیگنالی (به عنوان مثال نور، صدا یا نشانگر روی صفحه) برای اطلاع کاربران از حالت فعلی Wi-Fi ارائه دهد.

دوربین همچنین باید دارای پروتکل‌های کشف باشد (به کشف مراجعه کنید) برای مدیریت ارتباطات در حالی که دوربین در حالت اینترنت است.

راه اندازی حالت اینترنت

  1. کاربر دوربین را روشن می کند. در حالت مستقیم شروع می شود زیرا حالت اینترنت هنوز راه اندازی نشده است.
  2. دستگاه تلفن همراه به وای فای دوربین متصل می شود.
  3. برنامه یک گواهی خود امضا شده تولید می کند.
  4. برنامه دستور switchWifi را با SSID زیرساخت نقطه دسترسی Wi-Fi که دوربین باید به آن وصل شود، رمز عبور آن نقطه دسترسی و گواهی امضا شده خود که دوربین برای تأیید اعتبار برنامه بعداً از آن استفاده می کند، به دوربین می فرستد. .
    • لطفاً توجه داشته باشید که دوربین باید هم اعتبار Wi-Fi و هم گواهینامه خودامضای برنامه را به صورت ایمن ذخیره کند.
    • توصیه می شود دوربین چندین اعتبار Wi-Fi را ذخیره کند زیرا ممکن است دوربین نیاز به اتصال به نقاط دسترسی Wi-Fi زیرساخت های مختلف داشته باشد. حداقل نیاز این است که دوربین جدیدترین اعتبار Wi-Fi را ذخیره کند.
  5. دوربین با گواهی امضا شده خود پاسخ می دهد که برنامه بعداً از آن برای احراز هویت دوربین استفاده می کند.
  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 .

txtvers

برای اجازه به‌روزرسانی نسخه TXT در آینده، از جفت کلید/مقدار txtvers=1 استفاده کنید.

ty

یک نام قابل خواندن برای کاربر از دوربین ارائه می دهد، به عنوان مثال ty=Google Street View Optimized Spherical Camera Model XYZ .

شناسه

یک شناسه منحصر به فرد دوربین را ارائه می دهد، به عنوان مثال id=A unique id of the camera . مقدار id باید با cameraId در خروجی /osc/info یکسان باشد.

اطلاعیه ها

هنگام راه اندازی یا خاموش شدن دوربین، دوربین باید مرحله اعلام را همانطور که در مشخصات mDNS توضیح داده شده است انجام دهد. باید اطلاعیه مربوطه را حداقل دو بار با فاصله حداقل یک ثانیه بین آنها ارسال کند.

استارت آپ

هنگام راه‌اندازی دوربین، باید مراحل بررسی و اعلام را همانطور که در مشخصات mDNS توضیح داده شده است انجام دهد. رکوردهای SRV، PTR و TXT باید در این مورد ارسال شوند. توصیه می شود در صورت امکان همه رکوردها را در یک پاسخ DNS گروه بندی کنید. اگر نه، ترتیب زیر توصیه می شود: رکوردهای SRV، PTR، TXT.

خاموش شدن

هنگام خاموش شدن دوربین، باید سعی کند با ارسال یک "بسته خداحافظی" با TTL=0 به همه طرف های علاقه مند اطلاع دهد همانطور که در بخش 10.1 مستندات mDNS توضیح داده شده است.

گواهی خود امضا شده

برنامه و دوربین می‌توانند از گواهی‌های خودامضا که در طول راه‌اندازی حالت اینترنت به اشتراک گذاشته شده‌اند، برای احراز هویت یکدیگر و ایجاد یک کانال امن برای محافظت از داده‌های مبادله‌شده با استفاده از احراز هویت متقابل SSL استفاده کنند.

در طول حالت اینترنت ، برنامه به عنوان یک سرور SSL و دوربین به عنوان یک مشتری عمل می کند. دوربین بررسی می‌کند که گواهی سرور با گواهینامه خود امضای برنامه مطابقت داشته باشد، و برنامه بررسی می‌کند که گواهی مشتری با دوربین مطابقت داشته باشد.

هر کتابخانه SSL که از احراز هویت متقابل پشتیبانی می کند (به عنوان مثال OpenSSL) می تواند برای برقراری ارتباط SSL بین برنامه و دوربین در طول حالت اینترنت استفاده شود.

جریان آپلود جدید

  1. اگر دوربین در حالت اینترنت نباشد، کاربر آن را به حالت اینترنت تغییر می دهد. دوربین با استفاده از اطلاعات کاربری ذخیره شده به زیرساخت Wi-Fi متصل می شود.
  2. دستگاه تلفن همراه همچنین به زیرساخت Wi-Fi متصل می شود و دوربین را کشف می کند.
    • برای این کار، دوربین باید یک پروتکل کشف محلی mDNS/DNS-SD را پیاده‌سازی کند (به کشف مراجعه کنید).
    • هیچ الزام خاصی در مورد نحوه پیاده سازی آن وجود ندارد ( mDNSResponder مرجع خوبی است).
    • هم برنامه و هم دوربین گواهی‌های خودامضا را در طول راه‌اندازی حالت اینترنت تولید می‌کنند و به اشتراک می‌گذارند. در طول حالت اینترنت ، هم برنامه و هم دوربین یکدیگر را از طریق احراز هویت متقابل SSL احراز هویت می‌کنند.
    • پس از کشف دوربین، ارتباط مشتری با آن مستقیماً از طریق شبکه محلی بر اساس HTTP 1.1 فعال می شود. فرمت های داده مبتنی بر JSON هستند. درخواست ها ممکن است درخواست های GET یا POST باشند.
  3. برنامه با دستور listFiles از دوربین جستجو می کند تا لیستی از فایل ها را پیدا کند.
  4. برنامه آپلود را با دستور uploadFile آغاز می کند تا تصویر یا ویدیو را مستقیماً از دوربین به سرور نمای خیابان آپلود کند.
  5. برنامه به صورت دوره‌ای از دوربین برای پیشرفت آپلود با فرمان status نظرسنجی می‌کند.