طرح صفت توزیع خانه هوشمند

action.devices.traits.Dispense - این ویژگی متعلق به دستگاه هایی است که از توزیع مقدار مشخصی از یک یا چند مورد فیزیکی پشتیبانی می کنند.

این ویژگی همچنین از توزیع یک پیش تنظیم پشتیبانی می کند، به عنوان مثال به عنوان یک "کاسه غذای گربه" برای تغذیه حیوانات خانگی یا یک "لیوان" برای یک شیر آب.

ویژگی های دستگاه

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

صفات تایپ کنید توضیحات
supportedDispenseItems آرایه

حاوی اطلاعات مربوط به تمام مواردی است که دستگاه می تواند توزیع کند.

[ item, ... ] شیء

کالای قابل مصرف

item_name رشته

مورد نیاز.

نام داخلی برای کالای توزیع شده. این می تواند کاربر پسند نباشد و در همه زبان ها به اشتراک گذاشته شود.

item_name_synonyms آرایه

مورد نیاز.

نام‌های مترادف برای زبان‌های ارائه‌شده در هر زبان پشتیبانی‌شده.

[ item, ... ] شیء

نام‌های مترادف برای کالای توزیع‌شده در یک زبان معین.

synonyms آرایه

مورد نیاز.

نام های مترادف برای کالای توزیع شده. در صورت وجود، مترادف ها باید شامل هر دو شکل مفرد و جمع باشند. اولین رشته در این لیست باید به صورت جمع مورد در آن زبان باشد.

[ item, ... ] رشته

نام مترادف

lang رشته

مورد نیاز.

کد زبان (ISO 639-1). زبان های پشتیبانی شده را ببینید.

supported_units آرایه

مورد نیاز.

مجموعه واحدهایی که دستگاه برای آن مورد پشتیبانی می کند.

[ item, ... ] رشته

واحدهای پشتیبانی شده

مقادیر پشتیبانی شده:

CENTIMETERS
CUPS
DECILITERS
FLUID_OUNCES
GALLONS
GRAMS
KILOGRAMS
LITERS
MILLIGRAMS
MILLILITERS
MILLIMETERS
NO_UNITS
OUNCES
PINCH
PINTS
PORTION
POUNDS
QUARTS
TABLESPOONS
TEASPOONS
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 رشته

نام مورد از ویژگی item_name .

amountRemaining شیء

مقدار آن مورد در دستگاه باقی مانده است. اگر دستگاه در حال حاضر در حال توزیع است، این مقدار باقیمانده یا مقدار آن را پس از اتمام توزیع گزارش می‌کند.

amount شماره

مقدار باقی مانده

unit رشته

واحد برای amount از ویژگی supported_units .

amountLastDispensed شیء

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

amount شماره

مقدار باقی مانده

unit رشته

واحد برای amount از ویژگی supported_units .

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 رشته

نام موردی که باید توزیع شود، از ویژگی item_name .

amount شماره

مورد نیاز.

مقدار برای توزیع

unit رشته

مورد نیاز.

واحد برای amount ، از ویژگی supported_units .

توزیع توسط از پیش تعیین شده

پارامترها تایپ کنید توضیحات
presetName رشته

مورد نیاز.

نام پیش‌تنظیمی که باید توزیع شود، از ویژگی preset_name .

بدون پارامتر توزیع کنید.

پارامترها تایپ کنید توضیحات

بدون خواص

نمونه ها

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 - زمانی که کاربر باید منتظر بماند تا کالا یا مقدار درخواستی بتواند با موفقیت توزیع شود (به عنوان مثال، یک شیر آب آب گرم را پخش می کند اما کاربر باید قبل از شروع توزیع صبر کند تا آب گرم شود).