طرح صفت توزیع خانه هوشمند
action.devices.traits.Dispense
- این ویژگی متعلق به دستگاه هایی است که از توزیع مقدار مشخصی از یک یا چند مورد فیزیکی پشتیبانی می کنند.
این ویژگی همچنین از توزیع یک پیش تنظیم پشتیبانی می کند، به عنوان مثال به عنوان یک "کاسه غذای گربه" برای تغذیه حیوانات خانگی یا یک "لیوان" برای یک شیر آب.
ویژگی های دستگاه
دستگاه های دارای این ویژگی ممکن است ویژگی های زیر را به عنوان بخشی از عملیات SYNC
گزارش کنند. برای کسب اطلاعات بیشتر در مورد مدیریت مقاصد SYNC
، به تحقق هدف مراجعه کنید.
صفات | تایپ کنید | توضیحات |
---|---|---|
supportedDispenseItems | آرایه | حاوی اطلاعات مربوط به تمام مواردی است که دستگاه می تواند توزیع کند. |
[ item, ... ] | شیء | کالای قابل مصرف |
item_name | رشته | مورد نیاز. نام داخلی برای کالای توزیع شده. این می تواند کاربر پسند نباشد و در همه زبان ها به اشتراک گذاشته شود. |
item_name_synonyms | آرایه | مورد نیاز. نامهای مترادف برای زبانهای ارائهشده در هر زبان پشتیبانیشده. |
[ item, ... ] | شیء | نامهای مترادف برای کالای توزیعشده در یک زبان معین. |
synonyms | آرایه | مورد نیاز. نام های مترادف برای کالای توزیع شده. در صورت وجود، مترادف ها باید شامل هر دو شکل مفرد و جمع باشند. اولین رشته در این لیست باید به صورت جمع مورد در آن زبان باشد. |
[ item, ... ] | رشته | نام مترادف |
lang | رشته | مورد نیاز. کد زبان (ISO 639-1). زبان های پشتیبانی شده را ببینید. |
supported_units | آرایه | مورد نیاز. مجموعه واحدهایی که دستگاه برای آن مورد پشتیبانی می کند. |
[ item, ... ] | رشته | واحدهای پشتیبانی شده مقادیر پشتیبانی شده:
|
default_portion | شیء | مورد نیاز. مقدار معمولی از کالایی که ممکن است توزیع شود. |
amount | عدد صحیح | مورد نیاز. مقدار توزیع شده |
unit | رشته | مورد نیاز. واحد توزیع شده |
supportedDispensePresets | آرایه | تنظیمات از پیش تنظیم شده توسط دستگاه |
[ item, ... ] | شیء | از پیش تعیین شده |
preset_name | رشته | مورد نیاز. نام داخلی برای از پیش تعیین شده. این نام میتواند کاربر پسند نباشد و در همه زبانها به اشتراک گذاشته شود. |
preset_name_synonyms | آرایه | مورد نیاز. نامهای مترادف پیشتنظیم در هر زبان پشتیبانیشده. |
[ item, ... ] | شیء | نام های مترادف برای پیش تنظیم در یک زبان معین. |
synonyms | آرایه | مورد نیاز. نام های مترادف برای از پیش تعیین شده. مترادف ها در صورت وجود باید شامل هر دو شکل مفرد و جمع باشند. |
[ item, ... ] | رشته | نام مترادف |
lang | رشته | مورد نیاز. کد زبان (ISO 639-1). زبان های پشتیبانی شده را ببینید. |
نمونه ها
توزیع کننده آب که واحدهای مایعات را با تنظیمات از پیش تنظیم شده پشتیبانی می کند.
{ "supportedDispenseItems": [ { "item_name": "Water", "item_name_synonyms": [ { "lang": "en", "synonyms": [ "Water" ] } ], "supported_units": [ "TEASPOONS", "TABLESPOONS", "FLUID_OUNCES", "CUPS", "PINTS", "QUARTS", "GALLONS", "MILLILITERS", "LITERS", "DECILITERS" ], "default_portion": { "amount": 2, "unit": "CUPS" } } ], "supportedDispensePresets": [ { "preset_name": "cat_bowl", "preset_name_synonyms": [ { "lang": "en", "synonyms": [ "Cat water bowl", "Cat water dish", "Cat water cup" ] } ] }, { "preset_name": "glass_1", "preset_name_synonyms": [ { "lang": "en", "synonyms": [ "Glass of water", "Glass" ] } ] } ] }
دستگاه پخش غذای حیوانات خانگی بدون تنظیمات از پیش تعیین شده.
{ "supportedDispenseItems": [ { "item_name": "Treat", "item_name_synonyms": [ { "lang": "en", "synonyms": [ "Treats", "Dog treats", "Treat", "Dog treat" ] } ], "supported_units": [ "NO_UNITS" ], "default_portion": { "amount": 1, "unit": "NO_UNITS" } } ] }
وضعیت دستگاه
موجودیت های دارای این ویژگی ممکن است وضعیت های زیر را به عنوان بخشی از عملیات QUERY
گزارش کنند. برای کسب اطلاعات بیشتر در مورد مدیریت مقاصد QUERY
، به تحقق هدف مراجعه کنید.
ایالات | تایپ کنید | توضیحات |
---|---|---|
dispenseItems | آرایه | وضعیت اقلامی که دستگاه می تواند توزیع کند. |
[ item, ... ] | شیء | وضعیت یک مورد داده شده |
itemName | رشته | نام مورد از ویژگی |
amountRemaining | شیء | مقدار آن مورد در دستگاه باقی مانده است. اگر دستگاه در حال حاضر در حال توزیع است، این مقدار باقیمانده یا مقدار آن را پس از اتمام توزیع گزارش میکند. |
amount | شماره | مقدار باقی مانده |
unit | رشته | واحد برای |
amountLastDispensed | شیء | مقدار آن موردی که دستگاه اخیراً توزیع کرده است. اگر دستگاه در حال حاضر در حال توزیع است، باید میزان توزیع را قبل از مقدار توزیع فعلی گزارش کند. |
amount | شماره | مقدار باقی مانده |
unit | رشته | واحد برای |
isCurrentlyDispensing | بولی | نشان می دهد که آیا دستگاه در حال حاضر این مورد را توزیع می کند یا خیر. |
نمونه ها
چند غذای سگ در تلگراف من باقی مانده است؟
{ "dispenseItems": [ { "itemName": "Dog treats", "amountRemaining": { "amount": 83, "unit": "NO_UNITS" }, "amountLastDispensed": { "amount": 2, "unit": "NO_UNITS" }, "isCurrentlyDispensing": false } ] }
چقدر آب در کولر آبی من باقی مانده است؟
{ "dispenseItems": [ { "itemName": "Water", "amountRemaining": { "amount": 6.2, "unit": "GALLONS" }, "amountLastDispensed": { "amount": 1, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
قبلا چقدر غذای گربه می دادم؟
{ "dispenseItems": [ { "itemName": "cat_food", "amountRemaining": { "amount": 16.5, "unit": "CUPS" }, "amountLastDispensed": { "amount": 2.5, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
آیا شیر آب هنوز هم آب می دهد؟
{ "dispenseItems": [ { "itemName": "Water", "isCurrentlyDispensing": true } ] }
amountRemaining
و amountLastDispensed
فقط باید با استفاده از یک واحد اندازه گیری گزارش شود.
چندین آیتم را می توان در آرایه dispenseItems
ارائه کرد. نام هر مورد باید منحصر به فرد باشد و باید با یک مورد در ویژگی supportedDispenseItems
مطابقت داشته باشد.
دستورات دستگاه
دستگاه های دارای این ویژگی ممکن است به دستورات زیر به عنوان بخشی از عملیات EXECUTE
پاسخ دهند. برای کسب اطلاعات بیشتر در مورد مدیریت EXECUTE
intent ها، به اجرای Intent مراجعه کنید.
action.devices.commands.Dispense
اقلام را توزیع کنید.
پارامترها
محموله شامل یکی از موارد زیر است:
بر اساس مقدار توزیع کنید.
پارامترها | تایپ کنید | توضیحات |
---|---|---|
item | رشته | نام موردی که باید توزیع شود، از ویژگی |
amount | شماره | مورد نیاز. مقدار برای توزیع |
unit | رشته | مورد نیاز. واحد برای |
توزیع توسط از پیش تعیین شده
پارامترها | تایپ کنید | توضیحات |
---|---|---|
presetName | رشته | مورد نیاز. نام پیشتنظیمی که باید توزیع شود، از ویژگی |
بدون پارامتر توزیع کنید.
پارامترها | تایپ کنید | توضیحات |
---|---|---|
بدون خواص |
نمونه ها
1 لیوان آب به من بده
{ "command": "action.devices.commands.Dispense", "params": { "amount": 1, "unit": "CUPS", "item": "Water" } }
کاسه آب گربه را پر کنید.
{ "command": "action.devices.commands.Dispense", "params": { "presetName": "cat_bowl" } }
آب پخش کنید.
{ "command": "action.devices.commands.Dispense", "params": {} }
خطاهای دستگاه
لیست کامل خطاها و استثناها را ببینید.-
dispenseAmountRemainingExceeded
: کاربر سعی کرد یک مورد یا مقداری را از دستگاهی که مقدار کافی باقیمانده ندارد توزیع کند. -
dispenseAmountAboveLimit
: کاربر سعی کرد مبلغی را که فراتر از محدودیت های درخواستی در یک پرس و جو است، توزیع کند. این برای جلوگیری از توزیع تصادفی مقدار بیش از حد (مثلاً 500000 فنجان آب) است. -
dispenseAmountBelowLimit
: کاربر سعی کرد یک مورد یا مقداری را از دستگاه توزیع کند که کمتر از حداقل مقداری است که می تواند توزیع کند. -
dispenseFractionalAmountNotSupported
: کاربر سعی کرد مقدار کسری از یک مورد را که دستگاه نمی تواند آن را تقسیم کند توزیع کند (به عنوان مثال، موارد قابل شمارش مانند خوراک سگ ممکن است بر دستگاه قابل تقسیم نباشد). -
genericDispenseNotSupported
: کاربر سعی می کند بدون تعیین یک مورد یا از پیش تعیین شده، از دستگاهی استفاده کند، اما دستگاه از چنین عملکردی پشتیبانی نمی کند (به عنوان مثال، یک اقدام توزیع پیش فرض). -
dispenseUnitNotSupported
: کاربر سعی می کند از دستگاهی با واحدی که برای آن مورد پشتیبانی نمی شود صرف نظر کند (به عنوان مثال، مورد ارائه نشده است، بنابراینsupported_unit validation
نادیده گرفته شد). -
dispenseFractionalUnitNotSupported
: کاربر سعی کرد مقدار کسری از یک آیتم را که میتوان آن را تقسیم کرد، توزیع کند، اما نه برای واحد خاص مشخص شده (به عنوان مثال، یک شیر آب ممکن است بتواند 2.7 فنجان اما نه 2.7 میلی لیتر). -
deviceCurrentlyDispensing
: کاربران سعی می کنند یک مورد را توزیع کنند اما دستگاه از قبل در حال توزیع است. -
deviceClogged
: کاربران سعی می کنند یک مورد را توزیع کنند اما دستگاه مسدود شده است. -
deviceBusy
: کاربران سعی می کنند یک مورد را توزیع کنند اما دستگاه مشغول است (عمومی).
استثناهای دستگاه
این استثناها را می توان به عنوان یک exceptionCode
در states
موضوع پاسخ شما گزارش کرد:
-
amountRemainingLow
- کاربر یک مورد یا مقداری را از دستگاه توزیع می کند که مقدار باقی مانده را به سطح پایینی می رساند. شما مسئول تعریف سطح "پایین" هستید. -
userNeedsToWait
- زمانی که کاربر باید منتظر بماند تا کالا یا مقدار درخواستی بتواند با موفقیت توزیع شود (به عنوان مثال، یک شیر آب آب گرم را پخش می کند اما کاربر باید قبل از شروع توزیع صبر کند تا آب گرم شود).