Esquema do dispositivo de distribuição de casa inteligente

action.devices.traits.Dispense: essa característica pertence a dispositivos que são compatíveis com a liberação de uma quantidade especificada de um ou mais itens físicos.

Essa característica também permite o uso de uma predefinição, como um "pote de comida para gatos" para um comedouro de animais de estimação ou um "copo" para uma torneira.

ATRIBUTOS do dispositivo

Dispositivos com essa característica podem informar os seguintes atributos como parte da operação SYNC. Para saber mais sobre o gerenciamento de intents SYNC, consulte fulfillment de intents.

Atributos Tipo Descrição
supportedDispenseItems Array

Contém informações sobre todos os itens que o dispositivo pode liberar.

[item, ...] Object

Item dispensável.

item_name String

Obrigatório.

Nome interno do item dispensado. Ele não é fácil de usar e é compartilhado em todos os idiomas.

item_name_synonyms Array

Obrigatório.

Nomes de sinônimos para os distribuídos em cada idioma compatível.

[item, ...] Object

Nomes de sinônimos para o item dispensado em um determinado idioma.

synonyms Array

Obrigatório.

Nomes de sinônimos para o item dispensado. Os sinônimos devem incluir as formas singular e plural, se aplicável. A primeira string nessa lista precisa ser o plural do item no idioma escolhido.

[item, ...] String

Nome do sinônimo

lang String

Obrigatório.

Código do idioma (ISO 639-1). Veja os idiomas compatíveis.

supported_units Array

Obrigatório.

Conjunto de unidades que o dispositivo aceita para o item.

[item, ...] String

Unidades aceitas.

Os valores suportados são:

CENTIMETERS
CUPS
DECILITERS
FLUID_OUNCES
GALLONS
GRAMS
KILOGRAMS
LITERS
MILLIGRAMS
MILLILITERS
MILLIMETERS
NO_UNITS
OUNCES
PINCH
PINTS
PORTION
POUNDS
QUARTS
TABLESPOONS
TEASPOONS
default_portion Object

Obrigatório.

Valor típico do item que pode ser dispensado.

amount Número inteiro

Obrigatório.

Valor distribuído.

unit String

Obrigatório.

Unidade dispensada.

supportedDispensePresets Array

Predefinições compatíveis com o dispositivo.

[item, ...] Object

Predefinido.

preset_name String

Obrigatório.

Nome interno da predefinição. Esse nome não é fácil de usar e é compartilhado em todos os idiomas.

preset_name_synonyms Array

Obrigatório.

Nomes de sinônimos para a predefinição em cada idioma compatível.

[item, ...] Object

Nomes de sinônimos para a predefinição em um determinado idioma.

synonyms Array

Obrigatório.

Nomes de sinônimos para a predefinição. Os sinônimos precisam incluir as formas singular e plural, se aplicável.

[item, ...] String

Nome do sinônimo

lang String

Obrigatório.

Código do idioma (ISO 639-1). Veja os idiomas compatíveis.

Exemplos

Dispensador de água compatível com unidades de líquidos com predefinições.

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

Porta-ração para animais de estimação sem predefinições.

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

STATES do dispositivo

Entidades com essa característica podem informar os seguintes estados como parte da operação QUERY. Para saber mais sobre o gerenciamento de intents QUERY, consulte fulfillment de intents.

Estados Tipo Descrição
dispenseItems Array

Estados dos itens que o dispositivo pode liberar.

[item, ...] Object

Estado de um determinado item.

itemName String

Nome do item do atributo item_name.

amountRemaining Object

Quantidade desse item restante no dispositivo. Se o dispositivo estiver sendo dispensado no momento, esta função informa a quantidade restante ou qual será a quantidade assim que o dispositivo terminar de ser dispensado.

amount Número

Valor restante

unit String

Unidade do amount do atributo supported_units.

amountLastDispensed Object

Quantidade do item que o dispositivo disponibilizou mais recentemente. Se o dispositivo estiver sendo dispensado no momento, ele deverá informar a quantidade dispensada antes da atual.

amount Número

Valor restante

unit String

Unidade do amount do atributo supported_units.

isCurrentlyDispensing Booleano

Indica se o dispositivo está dispensando esse item no momento.

Exemplos

Quantas guloseimas para cães ainda faltam no meu dispensador?

{
  "dispenseItems": [
    {
      "itemName": "Dog treats",
      "amountRemaining": {
        "amount": 83,
        "unit": "NO_UNITS"
      },
      "amountLastDispensed": {
        "amount": 2,
        "unit": "NO_UNITS"
      },
      "isCurrentlyDispensing": false
    }
  ]
}

Quanta água resta no meu cooler?

{
  "dispenseItems": [
    {
      "itemName": "Water",
      "amountRemaining": {
        "amount": 6.2,
        "unit": "GALLONS"
      },
      "amountLastDispensed": {
        "amount": 1,
        "unit": "CUPS"
      },
      "isCurrentlyDispensing": false
    }
  ]
}

Quanta ração para gatos eu dei antes?

{
  "dispenseItems": [
    {
      "itemName": "cat_food",
      "amountRemaining": {
        "amount": 16.5,
        "unit": "CUPS"
      },
      "amountLastDispensed": {
        "amount": 2.5,
        "unit": "CUPS"
      },
      "isCurrentlyDispensing": false
    }
  ]
}

A torneira ainda está liberando água?

{
  "dispenseItems": [
    {
      "itemName": "Water",
      "isCurrentlyDispensing": true
    }
  ]
}

amountRemaining e amountLastDispensed só precisam ser informados usando uma unidade de medida.

É possível fornecer vários itens na matriz dispenseItems. Cada nome de item precisa ser exclusivo e corresponder a um item no atributo supportedDispenseItems.

Comandos do dispositivo

Dispositivos com essa característica podem responder aos seguintes comandos como parte da operação EXECUTE. Para saber mais sobre o gerenciamento de intents EXECUTE, consulte fulfillment de intents.

action.devices.commands.Dispense

Dispensar itens.

Parâmetros

O payload contém um dos seguintes itens:

Dispensa por valor.

Parâmetros Tipo Descrição
item String

Nome do item a ser distribuído, do atributo item_name.

amount Número

Obrigatório.

Quantidade a ser distribuída.

unit String

Obrigatório.

Unidade do amount, do atributo supported_units.

Dispensa por predefinição.

Parâmetros Tipo Descrição
presetName String

Obrigatório.

Nome da predefinição para liberar, do atributo preset_name.

Dispensa sem parâmetros.

Parâmetros Tipo Descrição

Não há propriedades

Exemplos

Me dê um copo de água.

{
  "command": "action.devices.commands.Dispense",
  "params": {
    "amount": 1,
    "unit": "CUPS",
    "item": "Water"
  }
}

Encha a tigela de água do gato.

{
  "command": "action.devices.commands.Dispense",
  "params": {
    "presetName": "cat_bowl"
  }
}

Libere água.

{
  "command": "action.devices.commands.Dispense",
  "params": {}
}

ERROS DO Dispositivo

Veja a lista completa de erros e exceções.
  • dispenseAmountRemainingExceeded: o usuário tentou liberar um item ou valor de um dispositivo que não tem valor suficiente.
  • dispenseAmountAboveLimit: o usuário tentou liberar um valor que está além dos limites do que pode pedir em uma única consulta. Isso evita liberar acidentalmente uma quantidade excessiva (por exemplo, 500.000 copos de água).
  • dispenseAmountBelowLimit: o usuário tentou liberar um item ou uma quantidade do dispositivo que está abaixo da quantidade mínima que pode liberar.
  • dispenseFractionalAmountNotSupported: o usuário tentou liberar uma quantidade fracionária de um item que o dispositivo não pode dividir. Por exemplo, itens contáveis, como petiscos para cães, podem não ser divisíveis pelo dispositivo.
  • genericDispenseNotSupported: o usuário tenta liberar de um dispositivo sem especificar um item ou uma predefinição, mas o dispositivo não é compatível com essa funcionalidade (por exemplo, uma ação de distribuição padrão).
  • dispenseUnitNotSupported: o usuário tenta liberar de um dispositivo com uma unidade não compatível com esse caso (por exemplo, o item não foi fornecido, então supported_unit validation foi ignorado).
  • dispenseFractionalUnitNotSupported: o usuário tentou liberar uma quantidade fracionada de um item que pode ser dividido, mas não para a unidade especificada. Por exemplo, uma torneira pode liberar 2,7 xícaras, mas não 2,7 mL.
  • deviceCurrentlyDispensing: o usuário tenta liberar um item, mas o dispositivo já está sendo dispensado.
  • deviceClogged: o usuário tenta liberar um item, mas o dispositivo está entupido.
  • deviceBusy: os usuários tentam liberar um item, mas o dispositivo está ocupado (genérico).

EXCEÇÕES no dispositivo

Essas exceções podem ser informadas como um exceptionCode no objeto states da sua resposta:

  • amountRemainingLow: o usuário dispensa um item ou valor do dispositivo, reduzindo o valor restante para um nível baixo. Você é responsável por definir o que constitui um nível "baixo".
  • userNeedsToWait: quando o usuário precisa esperar antes que o item ou a quantidade solicitada seja liberado (por exemplo, uma torneira vai liberar água quente, mas o usuário precisa esperar que a água esquente antes de começar a ser dispensada).