סכימת מאפיינים של מכשיר בית חכם לחלוקת משקאות
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 |
יחידות נתמכות. ערכים נתמכים:
|
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 |
שם הפריט ממאפיין |
amountRemaining |
אובייקט |
הכמות של הפריט שנשארה במכשיר. אם המכשיר מוציא כרגע תרופות, בדוח יופיעו הכמות שנותרה או הכמות שתהיה אחרי שהמכשיר יסיים להוציא את התרופות. |
amount |
מספר |
הסכום שנותר |
unit |
String |
יחידה של |
amountLastDispensed |
אובייקט |
הכמות של הפריט שהמכשיר הוציא לאחרונה. אם המכשיר מוציא כרגע כסף, בדוח יופיע הסכום שהוצא לפני הסכום הנוכחי. |
amount |
מספר |
הסכום שנותר |
unit |
String |
יחידה של |
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 |
שם הפריט שיוצא מהמכונה, מתוך המאפיין |
amount |
מספר |
חובה. הסכום להנפקה. |
unit |
String |
חובה. יחידה של |
הנפקה לפי הגדרות קבועות מראש.
| פרמטרים | סוג | תיאור |
|---|---|---|
presetName |
String |
חובה. שם ההגדרה הקבועה מראש שצריך להפיץ, מתוך המאפיין |
הצגת מודעות ללא פרמטרים.
| פרמטרים | סוג | תיאור |
|---|---|---|
אין נכסים |
||
דוגמאות
תביא לי מים.
{
"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– כשהמשתמש צריך לחכות לפני שהפריט או הכמות המבוקשים מסופקים (לדוגמה, ברז שמספק מים חמים אבל המשתמש צריך לחכות עד שהמים יתחממו לפני שהם מתחילים לזרום).