مخطّط سمة التوزيع في المنزل الذكي

action.devices.traits.Dispense: تنتمي هذه السمة إلى الأجهزة التي تتيح توزيع كمية محدّدة من عنصر مادي واحد أو أكثر.

تتيح هذه السمة أيضًا توزيع إعداد مُسبَق، مثل "وعاء طعام القطط" لمغذّي الحيوانات الأليفة أو "كوب" لمغسلة.

سمات الجهاز

قد تُبلغ الأجهزة التي تتضمّن هذه السمة عن السمات التالية كجزء من عملية SYNC. للاطّلاع على مزيد من المعلومات عن معالجة أهداف SYNC، يمكنك الاطّلاع على تلبية الأهداف.

السمات النوع الوصف
supportedDispenseItems مصفوفة

يحتوي على معلومات عن جميع المنتجات التي يمكن للجهاز توزيعها.

[item, ...] العنصر

عنصر يمكن الاستغناء عنه

item_name String

مطلوبة

الاسم الداخلي للعنصر الذي يتم توزيعه. وقد لا يكون هذا الإجراء سهل الاستخدام، ويتمّ مشاركته بجميع اللغات.

item_name_synonyms صفيف

مطلوبة

أسماء المرادفات للأدوية المُوزَّعة بكل لغة معتمَدة

[item, ...] العنصر

أسماء المرادفات للعنصر الذي يتم توزيعه بلغة معيّنة.

synonyms صفيف

يجب ملء هذا الحقل.

تمثّل هذه السمة أسماء مرادفات للسلعة التي تم توزيعها. يجب أن تتضمّن المرادفات صيغتَي المفرد والجمع، إن أمكن. يجب أن تكون السلسلة الأولى في هذه القائمة صيغة الجمع للعنصر في تلك اللغة.

[item, ...] String

اسم المرادفات

lang String

مطلوبة

رمز اللغة (وفقًا لمعيار ISO 639-1) الاطّلاع على اللغات المتاحة

supported_units مصفوفة

مطلوبة

مجموعة الوحدات التي يتيح الجهاز استخدامها لهذا العنصر

[item, ...] String

الوحدات المسموح بها

القيم المسموح بها:

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 String

مطلوبة

الوحدة المُوزَّعة

supportedDispensePresets صفيف

الإعدادات المُسبَقة المتوافقة مع الجهاز

[item, ...] العنصر

الإعداد المُسبَق

preset_name String

مطلوبة

الاسم الداخلي للإعداد المسبق قد يكون هذا الاسم غير سهل الاستخدام، وتتم مشاركته بكل اللغات.

preset_name_synonyms صفيف

مطلوبة

أسماء بديلة للإعداد المُسبَق بكل لغة معتمَدة

[item, ...] العنصر

أسماء بديلة للإعداد المُعدّ مسبقًا بلغة معيّنة

synonyms مصفوفة

مطلوبة

أسماء مرادفات للإعداد المسبق. يجب أن تتضمّن المرادفات صيغتَي المفرد والجمع، إن أمكن.

[item, ...] String

اسم المرادفات

lang String

مطلوبة

رمز اللغة (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 String

اسم السلعة في السمة item_name

amountRemaining العنصر

مقدار هذا العنصر المتبقي في الجهاز إذا كان الجهاز يضخّ السائل حاليًا، يتم تسجيل الكمية المتبقية أو الكمية التي سيتم ضخّها بعد انتهاء عملية الضخ.

amount Number

المبلغ المتبقي

unit String

وحدة amount من سمة supported_units

amountLastDispensed العنصر

كمية هذا المنتج التي تم ضخها من الجهاز مؤخرًا إذا كان الجهاز يضخّ السائل حاليًا، من المفترض أن يُبلغ هذا الحقل عن الكمية التي تم ضخّها قبل الكمية الحالية.

amount Number

المبلغ المتبقي

unit String

وحدة 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، يمكنك الاطّلاع على تلبية الأهداف.

action.devices.commands.Dispense

توزيع العناصر

المعلمات

تحتوي الحمولة على أحد العناصر التالية:

التوزيع حسب المبلغ

المعلمات النوع الوصف
item String

اسم السلعة التي سيتم توزيعها، من سمة item_name.

amount Number

مطلوبة

المبلغ المطلوب صرفه

unit String

مطلوبة

وحدة amount، من السمة supported_units

التوزيع وفقًا لإعداد مُسبَق

المعلمات النوع الوصف
presetName String

يجب ملء هذا الحقل.

اسم الإعداد المُسبَق المطلوب توزيعه، من سمة preset_name.

التوزيع بدون مَعلمات

المعلمات النوع الوصف

ما من مواقع

أمثلة

أريد كوبًا واحدًا من الماء.

{
  "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: حاول المستخدم صرف مبلغ يتجاوز الحدود المسموح بها في طلب بحث واحد. لتجنُّب رمي كمية زائدة عن طريق الخطأ عن طريق الخطأ (على سبيل المثال، 500,000 كوب ماء).
  • dispenseAmountBelowLimit: حاول المستخدم إخراج منتج أو كمية من الجهاز أقل من الحد الأدنى للكمية التي يمكنه إخراجها.
  • dispenseFractionalAmountNotSupported: حاول المستخدم توزيع جزء من عنصر لا يمكن للجهاز تقسيمه (على سبيل المثال، قد لا يكون بالإمكان استخدام الجهاز لتقسيم كمية محددة من مواد غذائية للحيوانات الأليفة).
  • genericDispenseNotSupported: يحاول المستخدم التوزيع من جهاز بدون تحديد عنصر أو إعداد مُسبَق، ولكن الجهاز لا يتيح هذه الوظيفة (على سبيل المثال، إجراء التوزيع التلقائي).
  • dispenseUnitNotSupported: يحاول المستخدم الصرف من جهاز يحتوي على وحدة غير متوافقة مع هذا الطلب (على سبيل المثال، لم يتم توفير المنتج، لذا تمت تخطّي supported_unit validation).
  • dispenseFractionalUnitNotSupported: حاول المستخدم ضخ جزء من مادة يمكن تقسيمها ولكن ليس بالوحدة المحدّدة (على سبيل المثال، قد يكون صنبور الحمام قادرًا على ضخ 2.7 كوب ولكن ليس 2.7 مل).
  • deviceCurrentlyDispensing: يحاول المستخدمون إخراج منتج معيّن ولكن الجهاز يُخرجه حاليًا.
  • deviceClogged: يحاول المستخدمون إخراج منتج معيّن ولكن الجهاز مسدود.
  • deviceBusy: يحاول المستخدمون توزيع سلعة ولكن الجهاز مشغول (عام).

استثناءات الجهاز

يمكن الإبلاغ عن هذه الاستثناءات على أنّها exceptionCode في كائن states من ردّك:

  • amountRemainingLow - يوزّع المستخدم سلعة أو مبلغ من الجهاز، ما يؤدي إلى انخفاض المبلغ المتبقّي. أنت المسؤول عن تحديد ما يشكّل مستوى "منخفضًا".
  • userNeedsToWait - عندما يكون على المستخدم الانتظار قبل أن يتم ضخ العنصر أو الكمية المطلوبة بنجاح (على سبيل المثال، يضخ صنبور الماء الساخن ولكن يحتاج المستخدِم إلى الانتظار إلى أن يسخن الماء قبل أن يبدأ الضخ).