סכימת מאפיינים של מכשיר בית חכם לחלוקת משקאות

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

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

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

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

מאפיינים סוג תיאור
supportedDispenseItems מערך

מכיל מידע על כל הפריטים שהמכשיר יכול לספק.

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

פריט שאפשר לוותר עליו.

item_name String

חובה.

השם הפנימי של הפריט שמוצג. השיטה הזו לא נוחה למשתמשים, והיא משותפת לכל השפות.

item_name_synonyms מערך

חובה.

שמות נרדפים למונח 'הנפקה' בכל שפה נתמכת.

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

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

synonyms מערך

חובה.

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

[item, ...] String

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

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מידע נוסף על טיפול בכוונות

מדינות סוג תיאור
dispenseItems מערך

מצבי הפריטים שהמכשיר יכול לספק.

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

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

itemName String

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

amountRemaining אובייקט

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

amount מספר

הסכום שנותר

unit String

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

amountLastDispensed אובייקט

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

amount מספר

הסכום שנותר

unit String

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

isCurrentlyDispensing Boolean

מציין אם המכשיר מוציא כרגע את הפריט הזה.

דוגמאות

כמה חטיפים לכלבים נשארו במתקן?

{
  "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 מספר

חובה.

הסכום להנפקה.

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 – כשהמשתמש צריך לחכות לפני שהפריט או הכמות המבוקשים מסופקים (לדוגמה, ברז שמספק מים חמים אבל המשתמש צריך לחכות עד שהמים יתחממו לפני שהם מתחילים לזרום).