Device Access پروژهها بسته به محیط و نوع پیشنهاد تجاری، توسط محدودیتهای کاربر، ساختار و نرخ محدود میشوند.
ما میخواهیم توسعهدهندگان تجربیات کاربری جذابی ایجاد کنند، اما همچنین میخواهیم سرویس و دستگاههای Nest همیشه برای کاربر در دسترس باشند. ادغامهایی که تعداد زیادی درخواست در یک دوره زمانی مشخص ایجاد میکنند، میتوانند بر دسترسی به سرویس و دستگاه تأثیر بگذارند، بنابراین API SDM محدودیتهای نرخ را اعمال میکند. محدود کردن نرخ، تعداد فراخوانیهای API را برای یک دوره زمانی مشخص محدود میکند و از استفاده بیش از حد از منابع جلوگیری میکند.
محدودیتها بر اساس محیط
همه پروژهها در محیط Sandbox آغاز میشوند. Sandbox برای ارزیابی API SDM و استفاده شخصی در نظر گرفته شده است و محدودیتهای آن نیز بر همین اساس محدود شده است. محیطهایی با پایگاههای کاربری بزرگتر، مانند توسعه تجاری ، محدودیتهای متفاوتی دارند.
محدودیتهای کاربر در سندباکس
یک حساب توسعهدهنده در سندباکس (Sandbox) به ۲۵ کاربر در ۵ ساختار در تمام پروژهها محدود میشود. محدودیت ۳ پروژه برای هر حساب وجود دارد.
هر سازه به ۵ کاربر محدود است، بنابراین محدودیت کاربر تنها زمانی اعمال میشود که هر ۵ سازه به حداکثر ظرفیت خود یعنی ۵ کاربر رسیده باشند. حساب توسعهدهنده (که مالک پروژه است) جزو محدودیت ۵ کاربر برای یک سازه محسوب نمیشود.
برعکس، اگر یک پروژه ۱۵ کاربر در ۵ ساختار داشته باشد، کاربران اضافی فقط میتوانند به ۵ ساختار موجود اضافه شوند، زیرا محدودیت ساختار قبلاً تکمیل شده است.
محدودیتهای نرخ سندباکس
محدودیت سرعت در سندباکس در ۳ سطح مختلف اعمال میشود. محدودیتها بر اساس تعداد درخواستها در دقیقه (QPM) تعیین میشوند، مگر اینکه خلاف آن ذکر شده باشد.
سطح API
فراخوانیهای API برای هر پروژه و هر کاربر محدود است. برای اطلاعات بیشتر در مورد متدهای منفرد، به مرجع API مراجعه کنید.
| روش API | محدودیت نرخ |
|---|---|
devices.executeCommand | 10 کوارتر در دقیقه |
devices.get | 10 کوارتر در دقیقه |
devices.list | ۵ کیو پی ام |
structures.get | ۵ کیو پی ام |
structures.list | ۵ کیو پی ام |
structures.rooms.get | ۵ کیو پی ام |
structures.rooms.list | ۵ کیو پی ام |
سطح فرماندهی
هر دستور trait ( devices.executeCommand ) به 5 QPM برای هر پروژه، برای هر کاربر، برای هر دستگاه محدود شده است.
این یعنی اگر یک پروژه ۲ کاربر با ۲ دستگاه داشته باشد (در مجموع ۴ دستگاه)، میتوان یک دستور را ۵ بار در دقیقه برای هر یک از آن ۴ دستگاه فراخوانی کرد.
با این حال، اگر یک پروژه دارای ۲ کاربر با ۳ دستگاه برای هر کدام باشد که در مجموع ۶ دستگاه میشود، نمیتوان یک دستور را ۵ بار در دقیقه برای هر یک از آن ۶ دستگاه فراخوانی کرد. این منجر به ۱۵ QPM برای هر کاربر میشود، در حالی که محدودیت سرعت سطح API devices.executeCommand برای کاربر یک پروژه ۱۰ QPM است.
سطح نمونه دستگاه
علاوه بر این، محدودیتهای سطح نمونه دستگاه در سراسر پروژهها و دستورات ( devices.executeCommand ) برای محافظت از باتری دستگاه پیادهسازی شدهاند. این محدودیتها در هر دو سطح QPM و پرسوجو در ساعت (QPH) اعمال میشوند و در مورد متدهای get و list API صدق نمیکنند.
برای مثال، فرض کنید پروژه A و پروژه B هر دو به یک دستگاه، یعنی دستگاه A، دسترسی دارند (شاید کاربر دو ادغام تجاری مختلف را که از یک دستگاه استفاده میکنند، مجاز کرده باشد). اگر پروژه A در عرض یک دقیقه 4 دستور به دستگاه A ارسال کرده باشد، پروژه B فقط میتواند در همان دقیقه 1 دستور به دستگاه A ارسال کند، قبل از اینکه به محدودیت نرخ سطح نمونه دستگاه برسد. در آن زمان، دستورات از هر دو پروژه به دستگاه A تا پایان دقیقهای که با اولین دستور به دستگاه A شروع شده است، محدود میشوند.
اگر نوع دستگاهی در زیر فهرست نشده باشد، محدودیت سرعت سطح نمونه دستگاه را ندارد.
| نوع دستگاه | محدودیت نرخ نمونه دستگاه |
|---|---|
| ترموستات | ۵ QPM یا ۱۰۰ QPH |
| دوربین | 30 QPM یا 100 QPH |
| زنگ در | 30 QPM یا 100 QPH |
خطاها
کد(های) خطای زیر ممکن است در رابطه با این راهنما نمایش داده شوند:
| پیام خطا | آر پی سی | عیبیابی |
|---|---|---|
| نرخ محدود. | RESOURCE_EXHAUSTED | هر توسعهدهنده سهمیهای دارد که تعداد تماسهای مجاز او را محدود میکند. اگر تعداد تماسهای شما بیشتر از سهمیهتان باشد، پیام «نرخ محدود» را دریافت خواهید کرد. برای رفع این مشکل، پس از اتمام سهمیه، تماس را دوباره ارسال کنید. |
برای مشاهده لیست کامل کدهای خطای API به مرجع کدهای خطای API مراجعه کنید.