스마트 홈 디스펜스 특성 스키마
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 | 지원되는 단위입니다. 지원되는 값: 
 | 
| 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 | 숫자 | 남은 금액 | 
| unit | String | 
 | 
| amountLastDispensed | 객체 | 기기에서 가장 최근에 분배한 해당 항목의 양입니다. 기기가 현재 분배 중인 경우 현재 분배량 이전의 분배량을 보고해야 합니다. | 
| amount | 숫자 | 남은 금액 | 
| unit | String | 
 | 
| 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
    }
  ]
}amountRemaining 및 amountLastDispensed은 하나의 측정 단위를 사용하여 보고하면 됩니다.
dispenseItems 배열 내에 여러 항목을 제공할 수 있습니다.
  각 항목 이름은 고유해야 하며 supportedDispenseItems 속성의 항목에 해당해야 합니다.
기기 명령어
이 특성이 있는 기기는 EXECUTE 작업의 일부로 다음 명령어에 응답할 수 있습니다. EXECUTE 인텐트 처리에 대해 자세히 알아보려면 인텐트 처리를 참고하세요.
action.devices.commands.Dispense
상품을 배출합니다.
매개변수
페이로드에는 다음 중 하나가 포함됩니다.
금액으로 지급합니다.
| 매개변수 | 유형 | 설명 | 
|---|---|---|
| item | String | 
 | 
| amount | 숫자 | 필수사항. 디스펜서에서 내보낼 금액입니다. | 
| 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.7mL는 분배할 수 없음).
- deviceCurrentlyDispensing: 사용자가 상품을 배출하려고 하지만 기기에서 이미 배출 중입니다.
- deviceClogged: 사용자가 상품을 배출하려고 하지만 기기가 막혔습니다.
- deviceBusy: 사용자가 상품을 배출하려고 하지만 기기가 사용 중입니다 (일반).
기기 예외
이러한 예외는 응답의 states 객체에서 exceptionCode로 보고될 수 있습니다.
- amountRemainingLow- 사용자가 기기에서 상품 또는 금액을 지급하여 남은 금액이 낮은 수준으로 떨어집니다. '낮은' 수준을 구성하는 요소를 정의할 책임은 사용자에게 있습니다.
- userNeedsToWait- 요청된 상품 또는 금액이 성공적으로 지급될 때까지 사용자가 기다려야 하는 경우 (예: 수도꼭지에서 뜨거운 물이 나오지만 사용자가 물이 데워질 때까지 기다려야 지급이 시작됨)