สคีมาลักษณะการจ่ายของสมาร์ทโฮม

action.devices.traits.Dispense - ลักษณะนี้เป็นของอุปกรณ์ที่รองรับการจ่ายไอเทมจริงอย่างน้อย 1 รายการตามจำนวนที่ระบุ

คุณลักษณะนี้ยังรองรับการจ่ายค่าที่กำหนดไว้ล่วงหน้าด้วย เช่น "ชามอาหารแมว" สำหรับเครื่องให้อาหารสัตว์เลี้ยง หรือ "แก้ว" สำหรับก๊อกน้ำ

แอตทริบิวต์อุปกรณ์

อุปกรณ์ที่มีลักษณะนี้อาจรายงานแอตทริบิวต์ต่อไปนี้ เป็นส่วนหนึ่งของการดำเนินการ SYNC ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการSYNCเจตนาได้ที่การดำเนินการตามเจตนา

Attributes ประเภท คำอธิบาย
supportedDispenseItems อาร์เรย์

มีข้อมูลเกี่ยวกับสินค้าทั้งหมดที่อุปกรณ์จ่ายได้

[item, ...] ออบเจ็กต์

รายการที่ทิ้งได้

item_name String

ต้องระบุ

ชื่อภายในของสินค้าที่จ่าย ซึ่งอาจไม่เป็นมิตรต่อผู้ใช้และใช้ร่วมกันในทุกภาษา

item_name_synonyms อาร์เรย์

ต้องระบุ

ชื่อคำพ้องความหมายสำหรับคำว่า "จ่าย" ในแต่ละภาษาที่รองรับ

[item, ...] ออบเจ็กต์

ชื่อคำพ้องความหมายสำหรับรายการที่จ่ายในภาษาที่ระบุ ต้องระบุอย่างน้อย 1 รายการที่มีค่า lang เป็น en เพื่อให้ระบบใช้ภาษาสำรองได้

synonyms อาร์เรย์

ต้องระบุ

ชื่อคำพ้องความหมายของรายการที่จ่าย คำพ้องความหมายควรมีทั้งรูปแบบเอกพจน์และพหูพจน์ หากเกี่ยวข้อง สตริงแรกในรายการนี้ต้องเป็นรูปแบบพหูพจน์ของรายการในภาษานั้น

[item, ...] String

ชื่อคำพ้องความหมาย ต้องระบุอย่างน้อย 1 รายการที่มีค่า lang เป็น en เพื่อให้ระบบใช้ภาษาสำรองได้

lang String

ต้องระบุ

รหัสภาษา (ISO 639-1) ดูภาษาที่รองรับ

supported_units อาร์เรย์

ต้องระบุ

ชุดหน่วยที่อุปกรณ์รองรับสำหรับรายการนั้น

[item, ...] String

หน่วยที่รองรับ

ค่าที่รองรับมีดังนี้

CENTIMETERS
CUPS
DECILITERS
FLUID_OUNCES
GALLONS
GRAMS
KILOGRAMS
LITERS
MILLIGRAMS
MILLILITERS
MILLIMETERS
NO_UNITS
OUNCES
PINCH
PINTS
PORTION
POUNDS
QUARTS
TABLESPOONS
TEASPOONS
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

ชื่อของสินค้าจากแอตทริบิวต์ item_name

amountRemaining ออบเจ็กต์

จำนวนรายการที่เหลืออยู่ในอุปกรณ์ หากอุปกรณ์กำลังจ่ายยาอยู่ ข้อมูลนี้จะรายงานปริมาณที่เหลือหรือปริมาณที่จะมีเมื่ออุปกรณ์จ่ายยาเสร็จ

amount Number

จำนวนเงินที่เหลือ

unit String

หน่วยสำหรับ amount จากแอตทริบิวต์ supported_units

amountLastDispensed ออบเจ็กต์

ปริมาณของรายการที่อุปกรณ์จ่ายล่าสุด หากอุปกรณ์กำลังจ่ายยาอยู่ ค่านี้ควรรายงานจำนวนยาที่จ่ายก่อนจำนวนยาที่จ่ายในปัจจุบัน

amount Number

จำนวนเงินที่เหลือ

unit String

หน่วยสำหรับ amount จากแอตทริบิวต์ supported_units

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

ชื่อของสินค้าที่จะจ่ายจากแอตทริบิวต์ item_name

amount Number

ต้องระบุ

จำนวนเงินที่จะจ่าย

unit String

ต้องระบุ

หน่วยสำหรับ amount จากแอตทริบิวต์ supported_units

จ่ายตามค่าที่กำหนดล่วงหน้า

พารามิเตอร์ ประเภท คำอธิบาย
presetName String

ต้องระบุ

ชื่อของค่าที่กำหนดล่วงหน้าที่จะจ่ายจากแอตทริบิวต์ preset_name

จ่ายโดยไม่มีพารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย

ไม่มีพร็อพเพอร์ตี้

ตัวอย่าง

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