סכימה של תכונות פינוי בית חכם

action.devices.traits.Dispense - תכונה זו שייכת למכשירים שתומכים בהפצת כמות מסוימת של פריטים פיזיים.

תכונה זו תומכת גם בפיצול של הגדרה קבועה מראש, כמו "קערת מזון לחתולים" עבור מתקן האכלה לחיות מחמד או "" לברז.

ATTRIBUTES במכשיר

מכשירים עם התכונה הזו עשויים לדווח על המאפיינים הבאים כחלק מהפעולה של SYNC. מידע נוסף על טיפול ב-SYNC כוונות זמין בקטע מימוש כוונה.

מאפיינים Type תיאור
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 Integer

חובה.

הסכום שנקבע.

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 כוונות זמין בקטע מימוש כוונה.

מדינות Type תיאור
dispenseItems מערך

המדינות שבהן ניתן להפיץ את תוכן המכשיר.

[item, ...] אובייקט

המצב של פריט נתון.

itemName String

שם הפריט מהמאפיין item_name.

amountRemaining אובייקט

הכמות של הפריט שנותר במכשיר. אם המכשיר מעביר כרגע, ניתן לראות את הסכום שנותר או את הסכום לאחר מסירת המכשיר.

amount מספר

הסכום שנותר

unit String

יחידת המידה amount מהמאפיין supported_units.

amountLastDispensed אובייקט

הכמות של הפריט שנשלח למכשיר לאחרונה. אם המכשיר מעביר כרגע, המכשיר צריך לדווח על הסכום שהוא קיבל לפני הסכום הנוכחי.

amount מספר

הסכום שנותר

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

העברת פריטים.

פרמטרים

המטען הייעודי כולל אחד מהבאים:

יש לחלק לפי סכום.

פרמטרים Type תיאור
item String

שם הפריט שיש להסיר ממאפיין item_name.

amount מספר

חובה.

הסכום שצריך להעביר.

unit String

חובה.

היחידה של amount, מהמאפיין supported_units.

צריך לוותר על ההגדרה הקבועה מראש.

פרמטרים Type תיאור
presetName String

חובה.

השם של ההגדרה הקבועה שברצונך להעביר, מהמאפיין preset_name.

פיזור ללא פרמטרים.

פרמטרים Type תיאור

אין נכסים

דוגמאות

תנו לי ספל מים אחד.

{
  "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": {}
}

ERRORS מכשיר

לצפייה ברשימה המלאה של השגיאות והחריגים
  • dispenseAmountRemainingExceeded: המשתמש ניסה להוציא פריט או סכום ממכשיר שלא נותר מספיק כסף בו.
  • dispenseAmountAboveLimit: המשתמש ניסה לשלם סכום שחורג מהמגבלות שהוא יכול לבקש בשאילתה אחת. המטרה היא למנוע בטעות חלוקת כמות מוגזמת (למשל, 500,000 כוסות מים).
  • dispenseAmountBelowLimit: המשתמש ניסה לחלץ פריט או סכום מהמכשיר, בסכום הנמוך מהסכום המינימלי שהוא יכול להוציא.
  • dispenseFractionalAmountNotSupported: המשתמש ניסה לחלק כמות קטנה של פריט למכשיר שלא ניתן לפצל אותו (לדוגמה, יכול להיות שלא ניתן יהיה להבחין בין הפריטים שניתנים לספירה כמו חטיפים לכלבים).
  • genericDispenseNotSupported: המשתמש מנסה לפרוץ ממכשיר בלי לציין פריט או הגדרה קבועה מראש, אבל המכשיר לא תומך בפונקציונליות כזו (לדוגמה, פעולת שחרור כברירת מחדל).
  • dispenseUnitNotSupported: המשתמש מנסה להתרחק ממכשיר עם יחידה שלא נתמכת במקרה הזה (לדוגמה, הפריט לא סופק, ולכן בוצע דילוג על supported_unit validation).
  • dispenseFractionalUnitNotSupported: המשתמש ניסה לחלק כמות קטנה של פריט שאפשר לפצל אותו, אבל לא את היחידה הספציפית שצוינה (לדוגמה, ייתכן שברז יחלק 2.7 כוסות אבל לא 2.7 מיליליטר).
  • deviceCurrentlyDispensing: המשתמשים מנסים להעביר פריט, אבל המכשיר כבר מועבר.
  • deviceClogged: המשתמשים מנסים להוציא פריט, אבל המכשיר סתום.
  • deviceBusy: המשתמשים מנסים להעביר פריט, אבל המכשיר עסוק (כללי).

פטורים ממכשירים

אפשר לדווח על החריגים האלה כ-exceptionCode באובייקט states של התשובה שלך:

  • amountRemainingLow – המשתמש מעביר פריט או סכום מהמכשיר, ומביא את הסכום שנותר לרמה נמוכה. באחריותך להגדיר מה נחשב ל "נמוך".
  • userNeedsToWait – כשהמשתמשים צריכים להמתין עד שאפשר יהיה להקצות את הפריט או הסכום המבוקשים (למשל, ברז שפזר מים חמים, אבל המשתמש צריך להמתין עד שהמים יתחממו לפני שהוא מתחיל לזרום).