스마트 홈 제공 트레잇 스키마

action.devices.traits.Dispense - 이 트레잇은 하나 이상의 실제 상품을 지정된 양으로 제공하는 기기에 속합니다.

이 트레잇은 사전 설정된 내용(예: 반려동물 급식기의 '고양이 사료 그릇' 또는 수도꼭지의 '유리')을 제공하는 기능도 지원합니다.

기기 속성

이 트레잇이 있는 기기는 SYNC 작업의 일부로 다음 속성을 보고할 수 있습니다. SYNC 인텐트 처리에 관한 자세한 내용은 인텐트 처리를 참고하세요.

속성 유형 설명
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 작업의 일부로 다음 상태를 보고할 수 있습니다. QUERY 인텐트 처리에 관한 자세한 내용은 인텐트 처리를 참고하세요.

유형 설명
dispenseItems 배열

기기에서 제공할 수 있는 상품의 상태입니다.

[item, ...] 객체

특정 항목의 상태입니다.

itemName String

item_name 속성의 항목 이름입니다.

amountRemaining 객체

기기에 남아 있는 해당 항목의 양입니다. 기기가 현재 투여 중인 경우 잔여량 또는 기기 배출이 완료된 후의 금액을 보고합니다.

amount 숫자

남은 금액

unit String

supported_units 속성의 amount 단위입니다.

amountLastDispensed 객체

기기에서 가장 최근에 배출한 상품의 양입니다. 기기가 현재 분출 중인 경우 현재 분출량 이전에 분출된 양이 보고됩니다.

amount 숫자

남은 금액

unit String

supported_units 속성의 amount 단위입니다.

isCurrentlyDispensing Boolean

기기가 현재 이 상품을 제공하고 있는지 나타냅니다.

애견 간식 디스펜서에 남은 간식은 몇 개인가요?

{
  "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
    }
  ]
}

amountRemainingamountLastDispensed는 하나의 측정 단위를 사용하여 보고하면 됩니다.

dispenseItems 배열 내에 여러 항목을 제공할 수 있습니다. 각 항목 이름은 고유해야 하며 supportedDispenseItems 속성의 항목과 일치해야 합니다.

기기 명령어

이 트레잇이 있는 기기는 EXECUTE 작업의 일부로 다음 명령어에 응답할 수 있습니다. EXECUTE 인텐트 처리에 관한 자세한 내용은 인텐트 처리를 참고하세요.

action.devices.commands.Dispense

상품을 제공합니다.

매개변수

페이로드에는 다음 중 하나가 포함됩니다.

금액별로 분배합니다.

매개변수 유형 설명
item String

item_name 속성에서 제공할 상품의 이름입니다.

amount 숫자

필수사항.

지급할 금액입니다.

unit String

필수사항.

supported_units 속성의 amount 단위입니다.

미리 설정된 대로 제공합니다.

매개변수 유형 설명
presetName String

필수사항.

preset_name 속성에서 제공할 사전 설정의 이름입니다.

매개변수 없이 분배

매개변수 유형 설명

속성이 없습니다.

물 한 컵 주세요.

{
  "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: 사용자가 단일 쿼리에서 요청할 수 있는 한도를 초과하는 금액을 지급하려고 했습니다. 이는 실수로 과도한 양(예: 물 50만 컵)을 분사하는 것을 방지하기 위한 것입니다.
  • dispenseAmountBelowLimit: 사용자가 기기에서 분배할 수 있는 최소 금액 미만의 상품 또는 금액을 분배하려고 시도했습니다.
  • dispenseFractionalAmountNotSupported: 사용자가 기기가 분할할 수 없는 항목의 소수점 이하 자릿수를 분배하려고 했습니다(예: 강아지 간식과 같이 셀 수 있는 항목은 기기로 나눌 수 없음).
  • genericDispenseNotSupported: 사용자가 상품 또는 사전 설정을 지정하지 않고 기기에서 제품을 제공하려고 하지만 기기가 이러한 기능(예: 기본 제공 작업)을 지원하지 않습니다.
  • dispenseUnitNotSupported: 사용자가 해당 케이스에 지원되지 않는 단위가 있는 기기에서 상품을 제공하려고 시도합니다(예: 상품이 제공되지 않아 supported_unit validation가 건너뜁).
  • dispenseFractionalUnitNotSupported: 사용자가 분할할 수 있지만 지정된 특정 단위로는 분할할 수 없는 항목의 일부를 제공하려고 시도했습니다 (예: 수도꼭지는 2.7컵은 제공할 수 있지만 2.7mL는 제공할 수 없음).
  • deviceCurrentlyDispensing: 사용자가 상품을 제공하려고 하지만 기기가 이미 상품을 제공하고 있습니다.
  • deviceClogged: 사용자가 항목을 배포하려고 하지만 기기가 막혔습니다.
  • deviceBusy: 사용자가 상품을 제공하려고 하지만 기기가 사용 중입니다 (일반).

기기 예외

이러한 예외는 응답의 states 객체에서 exceptionCode로 보고될 수 있습니다.

  • amountRemainingLow - 사용자가 기기에서 항목이나 양을 배식하여 남은 양을 낮은 수준으로 만듭니다. '낮은' 수준을 구성하는 것은 사용자의 책임입니다.
  • userNeedsToWait - 요청된 상품 또는 금액을 제공하기 전에 사용자가 기다려야 하는 경우 (예: 수도꼭지에서 뜨거운 물이 나오지만 사용자가 물이 데워질 때까지 기다려야 물이 나오기 시작함)