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

action.devices.traits.Dispense – התכונה הזו שייכת למכשירים שתומכים בהנפקה של כמות מוגדרת של פריט פיזי אחד או יותר.

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

מאפייני המכשיר

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

מאפיינים תיאור תיאור
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"
      }
    }
  ]
}

מכשיר STATES

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

מדינות תיאור תיאור
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.

COMMANDS של מכשיר

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

action.devices.commands.Dispense

מוציאים פריטים.

פרמטרים

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

מוציאים לפי הסכום.

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

שם הפריט להנפקה, מהמאפיין item_name.

amount מספר

חובה.

הסכום להוצאת.

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

מכשיר ERRORS

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

מכשיר EXCEPTIONS

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

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