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