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