สคีมาลักษณะการจ่ายของสมาร์ทโฮม
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
- เมื่อผู้ใช้ต้องรอให้ระบบจ่ายไอเทมหรือจำนวนที่ขอ ได้สำเร็จ (เช่น ก๊อกน้ำจะจ่ายน้ำร้อน แต่ผู้ใช้ต้อง รอให้น้ำร้อนขึ้นก่อนจึงจะเริ่มจ่าย)