스마트 홈 디스펜스 특성 스키마

action.devices.traits.Dispense - 이 특성은 하나 이상의 실제 상품을 지정된 양만큼 제공하는 기능을 지원하는 기기에 속합니다.

이 특성은 반려동물 급식기의 경우 '고양이 사료 그릇'으로, 수도꼭지의 경우 '유리잔'으로 프리셋을 제공하는 것도 지원합니다.

기기 속성

이 특성이 있는 기기는 SYNC 작업의 일부로 다음 속성을 보고할 수 있습니다. SYNC 인텐트 처리에 대해 자세히 알아보려면 인텐트 처리를 참고하세요.

속성 유형 설명
supportedDispenseItems 배열

기기에서 디스펜스할 수 있는 모든 항목에 관한 정보를 포함합니다.

[item, ...] 객체

디스펜서블 항목입니다.

item_name String

필수사항.

제공된 상품의 내부 이름입니다. 이 방법은 사용자 친화적이지 않으며 모든 언어에서 공유됩니다.

item_name_synonyms 배열

필수사항.

지원되는 각 언어로 제공되는 동의어 이름입니다.

[item, ...] 객체

특정 언어로 제공된 상품의 동의어 이름입니다. 언어 대체 기능을 제공하려면 lang 값이 en인 항목이 하나 이상 필요합니다.

synonyms 배열

필수사항.

제공된 상품의 동의어 이름입니다. 동의어에는 단수형과 복수형이 모두 포함되어야 합니다(해당하는 경우). 이 목록의 첫 번째 문자열은 해당 언어의 항목 복수형이어야 합니다.

[item, ...] String

동의어 이름입니다. 언어 대체 기능을 제공하려면 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 숫자

남은 금액

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 속성에서 가져올 사전 설정의 이름입니다.

매개변수 없이 디스펜서

매개변수 유형 설명

속성이 없습니다.

물 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.7mL는 분배할 수 없음).
  • deviceCurrentlyDispensing: 사용자가 상품을 배출하려고 하지만 기기에서 이미 배출 중입니다.
  • deviceClogged: 사용자가 상품을 배출하려고 하지만 기기가 막혔습니다.
  • deviceBusy: 사용자가 상품을 배출하려고 하지만 기기가 사용 중입니다 (일반).

기기 예외

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

  • amountRemainingLow - 사용자가 기기에서 상품 또는 금액을 지급하여 남은 금액이 낮은 수준으로 떨어집니다. '낮은' 수준을 구성하는 요소를 정의할 책임은 사용자에게 있습니다.
  • userNeedsToWait - 요청된 상품 또는 금액이 성공적으로 지급될 때까지 사용자가 기다려야 하는 경우 (예: 수도꼭지에서 뜨거운 물이 나오지만 사용자가 물이 데워질 때까지 기다려야 지급이 시작됨)