Esquema de traço de dispensação de casa inteligente
action.devices.traits.Dispense
: essa característica pertence a dispositivos que oferecem suporte à dispensação de uma quantidade especificada de um ou mais itens físicos.
Essa característica também permite dispensar uma predefinição, por exemplo, uma "tigela de ração 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 como processar intents SYNC
, consulte Lógica de fulfillment de intents.
Atributos | Tipo | Descrição |
---|---|---|
supportedDispenseItems |
Array |
Contém informações sobre todos os itens que o dispositivo pode dispensar. |
[item, ...] |
Object |
Item dispensável. |
item_name |
String |
Obrigatório. Nome interno do item veiculado. Isso pode não ser fácil de usar e é compartilhado em todos os idiomas. |
item_name_synonyms |
Array |
Obrigatório. Nomes de sinônimos para o dispensado em cada idioma compatível. |
[item, ...] |
Object |
Nomes de sinônimos para o item dispensado em um determinado idioma. É necessário pelo menos um item com um valor |
synonyms |
Array |
Obrigatório. Nomes de sinônimos para o item dispensado. Os sinônimos precisam incluir as formas singular e plural, se aplicável. A primeira string dessa lista precisa ser a forma plural do item no idioma. |
[item, ...] |
String |
Nome do sinônimo. É necessário pelo menos um item com um valor |
lang |
String |
Obrigatório. Código de idioma (ISO 639-1). Confira os idiomas aceitos. |
supported_units |
Array |
Obrigatório. Conjunto de unidades que o dispositivo aceita para esse item. |
[item, ...] |
String |
Unidades aceitas. Valores compatíveis:
|
default_portion |
Object |
Obrigatório. Quantidade típica do item que pode ser dispensada. |
amount |
Número inteiro |
Obrigatório. Valor dispensado. |
unit |
String |
Obrigatório. Unidade dispensada. |
supportedDispensePresets |
Array |
Predefinições compatíveis com o dispositivo. |
[item, ...] |
Object |
Predefinição. |
preset_name |
String |
Obrigatório. Nome interno da predefinição. Esse nome pode não ser 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 de idioma (ISO 639-1). Confira os idiomas aceitos. |
Exemplos
Dispensador de água compatível com unidades para 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" ] } ] } ] }
Dispensador de comida 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" } } ] }
ESTADOS DO DISPOSITIVO
As entidades com essa característica podem informar os seguintes estados como parte da operação QUERY
. Para saber mais sobre como processar intents QUERY
, consulte Lógica de fulfillment de intents.
Estados | Tipo | Descrição |
---|---|---|
dispenseItems |
Array |
Estados dos itens que o dispositivo pode dispensar. |
[item, ...] |
Object |
Estado de um determinado item. |
itemName |
String |
Nome do item do atributo |
amountRemaining |
Object |
Quantidade restante desse item no dispositivo. Se o dispositivo estiver dispensando, isso vai informar a quantidade restante ou qual será a quantidade quando o dispositivo terminar de dispensar. |
amount |
Número |
Valor restante |
unit |
String |
Unidade para o |
amountLastDispensed |
Object |
A quantidade do item que o dispositivo dispensou mais recentemente. Se o dispositivo estiver dispensando, isso vai informar a quantidade dispensada antes da quantidade atual. |
amount |
Número |
Valor restante |
unit |
String |
Unidade para o |
isCurrentlyDispensing |
Booleano |
Indica se o dispositivo está dispensando o item no momento. |
Exemplos
Quantos petiscos para cachorro ainda tenho no dispenser?
{ "dispenseItems": [ { "itemName": "Dog treats", "amountRemaining": { "amount": 83, "unit": "NO_UNITS" }, "amountLastDispensed": { "amount": 2, "unit": "NO_UNITS" }, "isCurrentlyDispensing": false } ] }
Quanto de água ainda tem no meu bebedouro?
{ "dispenseItems": [ { "itemName": "Water", "amountRemaining": { "amount": 6.2, "unit": "GALLONS" }, "amountLastDispensed": { "amount": 1, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
Quanto de ração 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.
Vários itens podem ser fornecidos 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 como processar intents EXECUTE
, consulte Lógica de fulfillment de intents.
action.devices.commands.Dispense
Dispensar itens.
Parâmetros
O payload contém uma das seguintes opções:
Dispensar por valor.
Parâmetros | Tipo | Descrição |
---|---|---|
item |
String |
Nome do item a ser dispensado, do atributo |
amount |
Número |
Obrigatório. Valor a ser dispensado. |
unit |
String |
Obrigatório. Unidade para |
Dispensar por predefinição.
Parâmetros | Tipo | Descrição |
---|---|---|
presetName |
String |
Obrigatório. Nome da predefinição a ser dispensada, do atributo |
Dispensar sem parâmetros.
Parâmetros | Tipo | Descrição |
---|---|---|
Não há propriedades |
Exemplos
Me dê uma xícara de água.
{ "command": "action.devices.commands.Dispense", "params": { "amount": 1, "unit": "CUPS", "item": "Water" } }
Encha o pratinho de água do gato.
{ "command": "action.devices.commands.Dispense", "params": { "presetName": "cat_bowl" } }
Sirva água.
{ "command": "action.devices.commands.Dispense", "params": {} }
ERROS do dispositivo
Confira a lista completa de erros e exceções.dispenseAmountRemainingExceeded
: o usuário tentou dispensar um item ou valor de um dispositivo que não tem saldo suficiente.dispenseAmountAboveLimit
: o usuário tentou dispensar um valor que está além dos limites do que pode ser solicitado em uma única consulta. Isso evita a dispensação acidental de uma quantidade excessiva (por exemplo, 500.000 copos de água).dispenseAmountBelowLimit
: o usuário tentou dispensar um item ou valor do dispositivo que está abaixo do valor mínimo que ele pode dispensar.dispenseFractionalAmountNotSupported
: o usuário tentou dispensar uma quantidade fracionada de um item que o dispositivo não pode dividir. Por exemplo, itens contáveis, como petiscos para cachorro, podem não ser divisíveis pelo dispositivo.genericDispenseNotSupported
: o usuário tenta dispensar um item 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 dispensar padrão).dispenseUnitNotSupported
: o usuário tenta dispensar de um dispositivo com uma unidade não compatível com esse caso (por exemplo, o item não é fornecido, entãosupported_unit validation
foi ignorado).dispenseFractionalUnitNotSupported
: o usuário tentou dispensar uma quantidade fracionada de um item que pode ser dividido, mas não para a unidade especificada (por exemplo, uma torneira pode dispensar 2,7 xícaras, mas não 2,7 ml).deviceCurrentlyDispensing
: o usuário tenta dispensar um item, mas o dispositivo já está dispensando.deviceClogged
: o usuário tenta dispensar um item, mas o dispositivo está entupido.deviceBusy
: o usuário tenta dispensar um item, mas o dispositivo está ocupado (genérico).
EXCEÇÕES DE DISPOSITIVOS
Essas exceções podem ser informadas como um exceptionCode
no objeto states
da sua resposta:
amountRemainingLow
: o usuário dispensa um item ou uma quantidade do dispositivo, o que reduz o valor restante a 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 possa ser dispensada (por exemplo, uma torneira vai dispensar água quente, mas o usuário precisa esperar que a água esquente antes de começar a dispensar).