Esquema del rasgo de dispensado de casa inteligente

action.devices.traits.Dispense: Este rasgo pertenece a los dispositivos que admiten la dispensación de una cantidad especificada de uno o más elementos físicos.

Este rasgo también admite la dispensación de un ajuste predeterminado, por ejemplo, como un "plato para comida de gato" para un alimentador de mascotas o un "vaso" para un grifo.

Atributos del dispositivo

Los dispositivos con este rasgo pueden informar los siguientes atributos como parte de la operación SYNC. Para obtener más información sobre cómo controlar intents de SYNC, consulta Entrega de intents.

Atributos Tipo Descripción
supportedDispenseItems Matriz

Contiene información sobre todos los artículos que puede dispensar el dispositivo.

[item, ...] Objeto

Elemento prescindible.

item_name String

Obligatorio.

Nombre interno del elemento dispensado. Esto puede ser poco amigable para el usuario y se comparte en todos los idiomas.

item_name_synonyms Matriz

Obligatorio.

Son los nombres de los sinónimos para los medicamentos dispensados en cada idioma admitido.

[item, ...] Objeto

Son los nombres de los sinónimos del elemento dispensado en un idioma determinado. Se requiere al menos un elemento con un valor de lang de en para proporcionar un resguardo de idioma.

synonyms Matriz

Obligatorio.

Son los nombres de los sinónimos del elemento dispensado. Los sinónimos deben incluir las formas singular y plural, si corresponde. La primera cadena de esta lista debe ser la forma plural del elemento en ese idioma.

[item, ...] String

Nombre del sinónimo. Se requiere al menos un elemento con un valor de lang de en para proporcionar un resguardo de idioma.

lang String

Obligatorio.

Código de idioma (ISO 639-1). Consulta los idiomas admitidos.

supported_units Matriz

Obligatorio.

Es el conjunto de unidades que admite el dispositivo para ese elemento.

[item, ...] String

Unidades admitidas.

Valores admitidos:

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

Obligatorio.

Es la cantidad típica del artículo que se puede dispensar.

amount Número entero

Obligatorio.

Es el importe dispensado.

unit String

Obligatorio.

Unidad dispensada.

supportedDispensePresets Matriz

Son los ajustes predeterminados que admite el dispositivo.

[item, ...] Objeto

Ajuste predeterminado.

preset_name String

Obligatorio.

Es el nombre interno del ajuste predeterminado. Este nombre puede no ser fácil de usar y se comparte en todos los idiomas.

preset_name_synonyms Matriz

Obligatorio.

Nombres de sinónimos para el ajuste predeterminado en cada idioma admitido.

[item, ...] Objeto

Son los nombres de los sinónimos del ajuste predeterminado en un idioma determinado.

synonyms Matriz

Obligatorio.

Nombres de sinónimos para el ajuste predeterminado. Los sinónimos deben incluir las formas en singular y plural, si corresponde.

[item, ...] String

Nombre del sinónimo

lang String

Obligatorio.

Código de idioma (ISO 639-1). Consulta los idiomas admitidos.

Ejemplos

Dispensador de agua que admite unidades para líquidos con ajustes predeterminados.

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

Dispensador de comida para mascotas sin ajustes predeterminados.

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

ESTADOS del dispositivo

Las entidades con este rasgo pueden informar los siguientes estados como parte de la operación QUERY. Para obtener más información sobre cómo controlar intents de QUERY, consulta Entrega de intents.

Estados Tipo Descripción
dispenseItems Matriz

Estados de los elementos que puede dispensar el dispositivo.

[item, ...] Objeto

Es el estado de un elemento determinado.

itemName String

Es el nombre del artículo del atributo item_name.

amountRemaining Objeto

Es la cantidad de ese elemento que queda en el dispositivo. Si el dispositivo está dispensando, se informa la cantidad restante o la cantidad que habrá una vez que el dispositivo termine de dispensar.

amount Número

Importe restante

unit String

Unidad para el amount del atributo supported_units.

amountLastDispensed Objeto

Es la cantidad de ese elemento que dispensó el dispositivo más recientemente. Si el dispositivo está dispensando en este momento, debe informar la cantidad que dispensó antes de la cantidad actual.

amount Número

Importe restante

unit String

Unidad para el amount del atributo supported_units.

isCurrentlyDispensing Booleano

Indica si el dispositivo está dispensando este artículo.

Ejemplos

¿Cuántas golosinas para perros quedan en el dispensador?

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

¿Cuánta agua queda en mi dispensador?

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

¿Cuánta comida para gatos le di antes?

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

¿El grifo sigue dispensando agua?

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

amountRemaining y amountLastDispensed solo deben informarse con una unidad de medida.

Se pueden proporcionar varios elementos dentro del array dispenseItems. Cada nombre de artículo debe ser único y corresponder a un artículo en el atributo supportedDispenseItems.

COMANDOS del dispositivo

Los dispositivos con este rasgo pueden responder a los siguientes comandos como parte de la operación EXECUTE. Para obtener más información sobre cómo controlar intents de EXECUTE, consulta Entrega de intents.

action.devices.commands.Dispense

Dispensar artículos

Parámetros

La carga útil contiene uno de los siguientes elementos:

Dispensar por cantidad

Parámetros Tipo Descripción
item String

Nombre del elemento que se dispensará, del atributo item_name.

amount Número

Obligatorio.

Es el importe que se dispensará.

unit String

Obligatorio.

Unidad para el amount, del atributo supported_units.

Dispensar por ajuste predeterminado

Parámetros Tipo Descripción
presetName String

Obligatorio.

Nombre del ajuste predeterminado que se dispensará, del atributo preset_name.

Se dispensa sin parámetros.

Parámetros Tipo Descripción

Sin propiedades

Ejemplos

Dame 1 taza de agua.

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

Llena el recipiente de agua del gato.

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

Dispensar agua

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

ERRORES del dispositivo

Consulta la lista completa de errores y excepciones.
  • dispenseAmountRemainingExceeded: El usuario intentó dispensar un artículo o una cantidad desde un dispositivo que no tiene suficiente cantidad restante.
  • dispenseAmountAboveLimit: El usuario intentó dispensar una cantidad que supera los límites de lo que puede solicitar en una sola consulta. Esto es para evitar que se dispense accidentalmente una cantidad excesiva (por ejemplo, 500,000 vasos de agua).
  • dispenseAmountBelowLimit: El usuario intentó dispensar un artículo o una cantidad del dispositivo que es inferior a la cantidad mínima que puede dispensar.
  • dispenseFractionalAmountNotSupported: El usuario intentó dispensar una cantidad fraccionaria de un artículo que el dispositivo no puede dividir (por ejemplo, los artículos contables, como las golosinas para perros, pueden no ser divisibles por el dispositivo).
  • genericDispenseNotSupported: El usuario intenta dispensar desde un dispositivo sin especificar un elemento o un ajuste predeterminado, pero el dispositivo no admite esa funcionalidad (por ejemplo, una acción de dispensación predeterminada).
  • dispenseUnitNotSupported: El usuario intenta dispensar desde un dispositivo con una unidad que no se admite para ese caso (por ejemplo, no se proporcionó el artículo, por lo que se omitió supported_unit validation).
  • dispenseFractionalUnitNotSupported: El usuario intentó dispensar una cantidad fraccionaria de un elemento que se puede dividir, pero no para la unidad específica (por ejemplo, un grifo puede dispensar 2.7 tazas, pero no 2.7 mL).
  • deviceCurrentlyDispensing: El usuario intenta dispensar un artículo, pero el dispositivo ya está dispensando.
  • deviceClogged: El usuario intenta dispensar un artículo, pero el dispositivo está obstruido.
  • deviceBusy: El usuario intenta dispensar un artículo, pero el dispositivo está ocupado (genérico).

EXCEPCIONES de dispositivos

Estas excepciones se pueden informar como un exceptionCode en el objeto states de tu respuesta:

  • amountRemainingLow: El usuario dispensa un artículo o una cantidad del dispositivo, lo que reduce la cantidad restante a un nivel bajo. Es tu responsabilidad definir qué constituye un nivel "bajo".
  • userNeedsToWait: Cuando el usuario debe esperar antes de que se pueda dispensar correctamente el artículo o la cantidad solicitados (por ejemplo, una canilla dispensará agua caliente, pero el usuario debe esperar a que se caliente el agua antes de que comience a dispensarla).