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 |
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 |
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:
|
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 |
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 |
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 |
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 |
amount |
Número |
Obligatorio. Es el importe que se dispensará. |
unit |
String |
Obligatorio. Unidad para el |
Dispensar por ajuste predeterminado
Parámetros | Tipo | Descripción |
---|---|---|
presetName |
String |
Obligatorio. Nombre del ajuste predeterminado que se dispensará, del atributo |
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).