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