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