تحقق محلی

کیت توسعه نرم‌افزاری Local Home با افزودن یک مسیر محلی برای مسیریابی اهداف خانه هوشمند، ادغام خانه هوشمند شما با دستیار گوگل را بهبود می‌بخشد.

کیت توسعه نرم‌افزار محلی (Local Home SDK) دو قابلیت ارائه می‌دهد: اجرای محلی (Local Execution) و پرس‌وجوی محلی (Local Query).

  • اجرای محلی (Local Execution) امکان اجرای دستورات را با ارسال دستورات EXEC intents) از طریق مسیر اجرای محلی، به جای برقراری یک فراخوانی API ابری، فراهم می‌کند. به عنوان مثال، درخواست «روشن کردن چراغ» می‌تواند توسط اجرای محلی مدیریت شود.
  • پرس‌وجوی محلی (Local Query) با ارسال اهداف QUERY intents) از طریق مسیر اجرای محلی، امکان مدیریت پرس‌وجوهای مربوط به وضعیت دستگاه را فراهم می‌کند. به عنوان مثال، پرس‌وجوی محلی پرس‌وجوی «آیا چراغ من روشن است؟» را بدون برقراری تماس API ابری انجام می‌دهد.

SDK به شما امکان می‌دهد با استفاده از TypeScript یا JavaScript، یک برنامه‌ی محلی برای انجام سفارشات بنویسید که شامل منطق کسب‌وکار خانه‌ی هوشمند شما باشد. دستگاه‌های Google Home یا Google Nest می‌توانند برنامه‌ی شما را روی دستگاه بارگذاری و اجرا کنند. برنامه‌ی شما مستقیماً از طریق Wi-Fi در یک شبکه‌ی محلی (LAN) با دستگاه‌های هوشمند موجود شما ارتباط برقرار می‌کند تا دستورات کاربر را از طریق پروتکل‌های موجود انجام دهد.

ادغام SDK بهبود عملکرد را در ادغام Cloud-to-cloud شما ارائه می‌دهد، از جمله تأخیر کمتر و قابلیت اطمینان بالاتر. تکمیل محلی برای همه نوع دستگاه و ویژگی‌های دستگاه پشتیبانی می‌شود، به جز آنهایی که از تأیید کاربر ثانویه استفاده می‌کنند.

شروع به ساخت کنید نمونه را امتحان کنید

بفهمید که چگونه کار می‌کند

پس از دریافت پاسخ SYNC از سرویس ابری شما، پلتفرم Local Home شبکه محلی کاربر را با استفاده از mDNS، پخش UDP یا UPnP اسکن می‌کند تا دستگاه‌های هوشمند متصل به دستیار را شناسایی کند.

پلتفرم یک هدف IDENTIFY ارسال می‌کند تا مشخص کند که آیا دستگاه به صورت محلی قابل کنترل است یا خیر، این کار را با مقایسه شناسه دستگاه در پاسخ IDENTIFY با شناسه‌های برگردانده شده توسط پاسخ SYNC قبلی انجام می‌دهد. اگر دستگاه شناسایی شده یک هاب یا بریج باشد، پلتفرم یک هدف REACHABLE_DEVICES ارسال می‌کند و هاب را به عنوان دستگاه پروکسی برای ارتباط محلی در نظر می‌گیرد.

وقتی پاسخی مبنی بر تأیید یک دستگاه محلی دریافت می‌کند، پلتفرم یک مسیر انجام سفارش محلی به دستگاه Google Home یا Google Nest کاربر ایجاد می‌کند و متعاقباً دستورات کاربر را برای انجام سفارش محلی هدایت می‌کند.

وقتی کاربری یکپارچه‌سازی Cloud-to-cloud را که مسیر انجام سفارش محلی دارد، فعال می‌کند، دستیار، قصد EXECUTE یا قصد QUERY را به جای انجام سفارش ابری، به دستگاه Google Home یا Google Nest ارسال می‌کند. سپس دستگاه، برنامه انجام سفارش محلی را برای پردازش قصد اجرا می‌کند.

این شکل جریان اجرا برای انجام محلی را نشان می‌دهد. مسیر اجرا، قصد کاربر را از تلفنی که دارای دستیار گوگل است، دریافت می‌کند، سپس قصد کاربر توسط گوگل کلود پردازش می‌شود، سپس به صورت محلی روی دستگاه گوگل هوم اجرا می‌شود و دستور مستقیماً به هاب دستگاه یا مستقیماً به دستگاه ارسال می‌شود. ابر توسعه‌دهنده به عنوان یک ابر جایگزین در دسترس است.
شکل ۱: افزودن یک مسیر انجام سفارش محلی برای اقدام خانه هوشمند شما.

پلتفرم Local Home در انتخاب دستگاه Google Home یا Google Nest برای اجرای دستور، غیرقطعی عمل می‌کند. اهداف EXECUTE و QUERY ممکن است از طریق هر دستگاه Google Home یا Google Nest که در همان ساختار Home Graph دستگاه هدف تعریف شده است، ارسال شوند.

اپلیکیشن محلی برای انجام سفارشات

برنامه‌ی محلیِ انجام سفارش شامل منطق تجاری برای پردازش اهداف ارسالی توسط پلتفرم Local Home و دسترسی به دستگاه هوشمند شما از طریق شبکه‌ی محلی است. انتظار نمی‌رود هیچ تغییری در سخت‌افزار شما برای ادغام انجام سفارش محلی ایجاد شود. این برنامه با ارسال دستورات کنترلی به دستگاه هوشمند از طریق پروتکل‌های لایه‌ی کاربرد، از جمله HTTP، TCP یا UDP، درخواست‌های ادغام Cloud-to-cloud را انجام می‌دهد. در صورتی که مسیر انجام سفارش محلی با شکست مواجه شود، از مسیر ابری شما به عنوان مسیر اجرای جایگزین استفاده می‌شود.

برای پشتیبانی از ساخت برنامه، SDK خانه محلی این دو کلاس اصلی را ارائه می‌دهد:

  • DeviceManager : روش‌هایی برای برقراری ارتباط با دستگاه‌های هوشمند با استفاده از سوکت‌های TCP، UDP یا درخواست‌های HTTP ارائه می‌دهد.
  • App : متدهایی برای اتصال هندلرها به intentهایی که گوگل پس از کشف دستگاه‌های قابل کنترل محلی ( IDENTIFY ، REACHABLE_DEVICES ) ارسال می‌کند، ارائه می‌دهد. این کلاس همچنین دستورات کاربر ( EXECUTE ) را انجام می‌دهد و به درخواست‌های کاربر در مورد وضعیت فعلی دستگاه ( QUERY ) پاسخ می‌دهد.

در طول توسعه، می‌توانید برنامه را با بارگذاری آن روی سرور میزبان یا دستگاه توسعه محلی خود بسازید و آزمایش کنید. در مرحله تولید، گوگل برنامه شما را در یک محیط امن جاوا اسکریپت در دستگاه Google Home یا Google Nest کاربر میزبانی می‌کند.

API گزارش وضعیت (Report State API) در حال حاضر برای انجام سفارش به صورت محلی پشتیبانی نمی‌شود. گوگل برای پردازش این درخواست‌ها به پردازش ابری شما متکی است.

چرخه حیات برنامه کاربردی

برنامه‌ی محلی شما برای انجام سفارشات، زمانی که پلتفرم Local Home دستگاه‌های محلی جدیدی را که با پیکربندی اسکن پروژه مطابقت دارند، کشف کند یا قصد ارائه‌ی اهدافی مرتبط با دستگاهی که قبلاً شناسایی شده است را داشته باشد، بنا به تقاضا بارگیری می‌شود.

دستگاه‌های Google Home یا Google Nest دارای محدودیت حافظه هستند و برنامه‌ی محلی شما ممکن است در هر زمانی به دلیل فشار حافظه در سیستم خاتمه یابد. این اتفاق می‌تواند در صورتی رخ دهد که برنامه‌ی شما شروع به مصرف بیش از حد حافظه کند، یا اگر سیستم نیاز به ایجاد فضا برای برنامه‌ی دیگری داشته باشد. پلتفرم Local Home برنامه‌ی شما را فقط زمانی مجدداً راه‌اندازی می‌کند که اهداف جدیدی برای ارائه و منابع حافظه‌ی کافی برای اجرای برنامه وجود داشته باشد.

پلتفرم Local Home پس از یک دوره زمانی بیکاری (idle timeout) برنامه شما را از حالت بارگذاری خارج می‌کند، زمانی که کاربر حساب خود را از حالت اتصال خارج می‌کند یا دیگر دستگاه‌هایی وجود ندارند که از تکمیل محلی مرتبط با agentUserId کاربر پشتیبانی کنند.

دستگاه‌های پشتیبانی‌شده

پلتفرم Local Home برنامه‌ی محلی شما را روی دستگاه‌های پشتیبانی‌شده‌ی Google Home یا Google Nest اجرا می‌کند. جدول زیر دستگاه‌های پشتیبانی‌شده و زمان اجرای مورد استفاده در هر دستگاه را شرح می‌دهد. برای کسب اطلاعات بیشتر در مورد الزامات زمان اجرا، به محیط اجرا مراجعه کنید.

دستگاه نوع محیط زیست
گوگل هوم بلندگو کروم
گوگل هوم مینی بلندگو کروم
گوگل هوم مکس بلندگو کروم
نست مینی بلندگو کروم
هاب نست نمایش کروم
نست هاب مکس نمایش کروم
نست وای فای روتر نود جی اس
نقطه کروم

محیط اجرا

محیط اجرای برنامه‌ی محلی شما برای انجام سفارشات، به دستگاه شما بستگی دارد. پلتفرم Local Home از محیط‌های اجرایی زیر پشتیبانی می‌کند:

  • کروم : برنامه‌ی محلی شما برای انجام سفارشات، در چارچوب یک window مرورگر کروم که کروم M80 یا بالاتر را با پشتیبانی از نسخه ECMAScript ES2018 اجرا می‌کند، اجرا می‌شود.
  • Node.js : برنامه‌ی محلی شما به عنوان یک اسکریپت در یک فرآیند Node.js که Node v10.x LTS یا بالاتر را با پشتیبانی از نسخه ECMAScript ES2018 اجرا می‌کند، اجرا می‌شود.

ساختار کد منبع

توصیه می‌کنیم وابستگی‌های خود را با استفاده از پیکربندی‌های bundler ارائه شده توسط SDK محلی Home، در یک فایل جاوا اسکریپت واحد دسته‌بندی کنید و کد منبع خود را به عنوان یک عبارت تابعی با فراخوانی فوری (IIFE) بسته‌بندی کنید.

مسیر پیاده‌سازی

برای استفاده از SDK محلی خانه برای یکپارچه‌سازی خانه هوشمند خود، باید این کارها را انجام دهید:

۱ پیکربندی اسکن را تنظیم کنید Google Home Developer Console با پارامترهای لازم پیکربندی کنید تا دستیار بتواند دستگاه‌های قابل کنترل محلی را کشف کند.
۲ پاسخ SYNC را در پردازش ابری خود به‌روزرسانی کنید در فرآیند تکمیل درخواست ابری خود، کنترل‌کننده درخواست SYNC را طوری تغییر دهید که از فیلد otherDeviceIds که پلتفرم برای ایجاد یک مسیر تکمیل محلی استفاده می‌کند، پشتیبانی کند. در آن فیلد، شناسه دستگاه‌هایی را که می‌توانند به صورت محلی کنترل شوند، مشخص کنید.
۳ اپلیکیشن محلی تکمیل سفارش را پیاده‌سازی کنید از SDK محلی Home برای ایجاد یک برنامه جاوا اسکریپت جهت مدیریت اهداف IDENTIFY ، EXECUTE و QUERY استفاده کنید. برای دستگاه‌های پروکسی هاب یا بریج، باید هدف REACHABLE_DEVICES را نیز مدیریت کنید.
۴ برنامه خود را آزمایش و اشکال‌زدایی کنید با استفاده از مجموعه تست گوگل هوم، یکپارچگی خود را آزمایش کنید (یا خودتان آن را تأیید کنید ).

قبل از اینکه شروع کنی