สคีมาลักษณะการจ่ายของสมาร์ทโฮม
action.devices.traits.Dispense - ลักษณะนี้เป็นของอุปกรณ์ที่รองรับการจ่ายไอเทมจริงอย่างน้อย 1 รายการตามจำนวนที่ระบุ
คุณลักษณะนี้ยังรองรับการจ่ายค่าที่กำหนดไว้ล่วงหน้าด้วย เช่น "ชามอาหารแมว" สำหรับเครื่องให้อาหารสัตว์เลี้ยง หรือ "แก้ว" สำหรับก๊อกน้ำ
แอตทริบิวต์อุปกรณ์
อุปกรณ์ที่มีลักษณะนี้อาจรายงานแอตทริบิวต์ต่อไปนี้
เป็นส่วนหนึ่งของการดำเนินการ SYNC ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการSYNCเจตนาได้ที่การดำเนินการตามเจตนา
| Attributes | ประเภท | คำอธิบาย |
|---|---|---|
supportedDispenseItems |
อาร์เรย์ |
มีข้อมูลเกี่ยวกับสินค้าทั้งหมดที่อุปกรณ์จ่ายได้ |
[item, ...] |
ออบเจ็กต์ |
รายการที่ทิ้งได้ |
item_name |
String |
ต้องระบุ ชื่อภายในของสินค้าที่จ่าย ซึ่งอาจไม่เป็นมิตรต่อผู้ใช้และใช้ร่วมกันในทุกภาษา |
item_name_synonyms |
อาร์เรย์ |
ต้องระบุ ชื่อคำพ้องความหมายสำหรับคำว่า "จ่าย" ในแต่ละภาษาที่รองรับ |
[item, ...] |
ออบเจ็กต์ |
ชื่อคำพ้องความหมายสำหรับรายการที่จ่ายในภาษาที่ระบุ ต้องระบุอย่างน้อย 1 รายการที่มีค่า |
synonyms |
อาร์เรย์ |
ต้องระบุ ชื่อคำพ้องความหมายของรายการที่จ่าย คำพ้องความหมายควรมีทั้งรูปแบบเอกพจน์และพหูพจน์ หากเกี่ยวข้อง สตริงแรกในรายการนี้ต้องเป็นรูปแบบพหูพจน์ของรายการในภาษานั้น |
[item, ...] |
String |
ชื่อคำพ้องความหมาย ต้องระบุอย่างน้อย 1 รายการที่มีค่า |
lang |
String |
ต้องระบุ รหัสภาษา (ISO 639-1) ดูภาษาที่รองรับ |
supported_units |
อาร์เรย์ |
ต้องระบุ ชุดหน่วยที่อุปกรณ์รองรับสำหรับรายการนั้น |
[item, ...] |
String |
หน่วยที่รองรับ ค่าที่รองรับมีดังนี้
|
default_portion |
ออบเจ็กต์ |
ต้องระบุ ปริมาณทั่วไปของรายการที่อาจจ่าย |
amount |
จำนวนเต็ม |
ต้องระบุ ปริมาณที่จ่าย |
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 |
Number |
จำนวนเงินที่เหลือ |
unit |
String |
หน่วยสำหรับ |
amountLastDispensed |
ออบเจ็กต์ |
ปริมาณของรายการที่อุปกรณ์จ่ายล่าสุด หากอุปกรณ์กำลังจ่ายยาอยู่ ค่านี้ควรรายงานจำนวนยาที่จ่ายก่อนจำนวนยาที่จ่ายในปัจจุบัน |
amount |
Number |
จำนวนเงินที่เหลือ |
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
จ่ายไอเทม
พารามิเตอร์
เพย์โหลดมีข้อมูลอย่างใดอย่างหนึ่งต่อไปนี้
จ่ายตามจำนวน
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
item |
String |
ชื่อของสินค้าที่จะจ่ายจากแอตทริบิวต์ |
amount |
Number |
ต้องระบุ จำนวนเงินที่จะจ่าย |
unit |
String |
ต้องระบุ หน่วยสำหรับ |
จ่ายตามค่าที่กำหนดล่วงหน้า
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
presetName |
String |
ต้องระบุ ชื่อของค่าที่กำหนดล่วงหน้าที่จะจ่ายจากแอตทริบิวต์ |
จ่ายโดยไม่มีพารามิเตอร์
| พารามิเตอร์ | ประเภท | คำอธิบาย |
|---|---|---|
ไม่มีพร็อพเพอร์ตี้ |
||
ตัวอย่าง
ขอน้ำ 1 แก้ว
{
"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- เมื่อผู้ใช้ต้องรอให้ระบบจ่ายไอเทมหรือจำนวนที่ขอ ได้สำเร็จ (เช่น ก๊อกน้ำจะจ่ายน้ำร้อน แต่ผู้ใช้ต้อง รอให้น้ำร้อนขึ้นก่อนจึงจะเริ่มจ่าย)