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

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

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

ค่าที่รองรับ

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 ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ Intent QUERY ได้ที่การดำเนินการตาม Intent

รัฐ ประเภท คำอธิบาย
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 ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ Intent EXECUTE ได้ที่การดำเนินการตาม Intent

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