Esquema de traço de casa inteligente
action.devices.traits.Dispense
: esta característica pertence a dispositivos compatíveis com a liberação de uma ou mais quantidades físicas de um ou mais itens físicos.
Essa característica também é compatível com a liberação de uma predefinição, como um "pote de comida para gatos" para um comedouro automático ou um "copo" para uma torneira.
ATRIBUTOS do dispositivo
Os dispositivos com essa característica podem informar os seguintes atributos como parte da operação SYNC
. Para saber
mais sobre como lidar com intents SYNC
, consulte
fulfillment de intent.
Atributos | Tipo | Descrição |
---|---|---|
supportedDispenseItems |
Array |
Contém informações sobre todos os itens que o dispositivo pode distribuir. |
[item, ...] |
Object |
Item dispensável. |
item_name |
String |
Obrigatório. Nome interno do item dispensado. Essa opção pode ser difícil de usar e é compartilhada em todos os idiomas. |
item_name_synonyms |
Array |
Obrigatório. Nomes de sinônimos para os dispensados em cada idioma suportado. |
[item, ...] |
Object |
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 desta lista deve ser a forma plural do item nesse idioma. |
[item, ...] |
String |
Nome de 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 compatíveis com o dispositivo para esse item. |
[item, ...] |
String |
Unidades aceitas. Os valores suportados são:
|
default_portion |
Object |
Obrigatório. Valor típico do item que pode ser dispensado. |
amount |
Número inteiro |
Obrigatório. Valor dispensado. |
unit |
String |
Obrigatório. Unidade liberada. |
supportedDispensePresets |
Array |
Predefinições compatíveis com o dispositivo. |
[item, ...] |
Object |
Predefinida. |
preset_name |
String |
Obrigatório. Nome interno da predefinição. Este nome pode não ser de fácil uso e é compartilhado por todos os idiomas. |
preset_name_synonyms |
Array |
Obrigatório. São nomes de sinônimos da 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 devem incluir as formas singular e plural, se aplicável. |
[item, ...] |
String |
Nome de sinônimo |
lang |
String |
Obrigatório. Código do idioma (ISO 639-1). Veja os idiomas compatíveis. |
Exemplos
Caixa de água que suporta 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" ] } ] } ] }
Contador de alimentos 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
As entidades com essa característica podem informar os estados a seguir como parte da operação QUERY
. Para saber
mais sobre como lidar com intents QUERY
, consulte
fulfillment de intent.
Estados | Tipo | Descrição |
---|---|---|
dispenseItems |
Array |
Estados dos itens que o dispositivo pode distribuir. |
[item, ...] |
Object |
Estado de um determinado item. |
itemName |
String |
Nome do item no atributo |
amountRemaining |
Object |
Valor do item restante no dispositivo. Se o dispositivo estiver dispensando, será informado o valor restante ou qual será o valor assim que o dispositivo terminar de dispensá-lo. |
amount |
Número |
Valor restante |
unit |
String |
Unidade do |
amountLastDispensed |
Object |
Quantidade do item dispensado mais recentemente pelo dispositivo. Se o dispositivo estiver dispensando, isso informará o valor dispensado antes do valor atual. |
amount |
Número |
Valor restante |
unit |
String |
Unidade do |
isCurrentlyDispensing |
Booleano |
Indica se o dispositivo está liberando este item no momento. |
Exemplos
Quantos cães faltam no meu dispensador?
{ "dispenseItems": [ { "itemName": "Dog treats", "amountRemaining": { "amount": 83, "unit": "NO_UNITS" }, "amountLastDispensed": { "amount": 2, "unit": "NO_UNITS" }, "isCurrentlyDispensing": false } ] }
Quanto falta de água no meu resfriamento?
{ "dispenseItems": [ { "itemName": "Water", "amountRemaining": { "amount": 6.2, "unit": "GALLONS" }, "amountLastDispensed": { "amount": 1, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
Com que comida de gato 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 único e corresponder a um item no atributo supportedDispenseItems
.
Dispositivo COMMANDS
Os dispositivos com essa característica podem responder aos comandos a seguir como parte da operação EXECUTE
. Para saber
mais sobre como lidar com intents EXECUTE
, consulte
fulfillment de intent.
action.devices.commands.Dispense
Dispense itens.
Parâmetros
O payload contém um dos seguintes itens:
Distribua por quantidade.
Parâmetros | Tipo | Descrição |
---|---|---|
item |
String |
Nome do item a ser descartado do atributo |
amount |
Número |
Obrigatório. Valor a ser distribuído. |
unit |
String |
Obrigatório. Unidade do |
Dispensar por predefinição.
Parâmetros | Tipo | Descrição |
---|---|---|
presetName |
String |
Obrigatório. Nome da predefinição a ser dispensada, do atributo |
Dispense os parâmetros.
Parâmetros | Tipo | Descrição |
---|---|---|
Não há propriedades |
Exemplos
Me dá 1 xícara de água.
{ "command": "action.devices.commands.Dispense", "params": { "amount": 1, "unit": "CUPS", "item": "Water" } }
Preencha a tigela de água do gato.
{ "command": "action.devices.commands.Dispense", "params": { "presetName": "cat_bowl" } }
Água de distribuição.
{ "command": "action.devices.commands.Dispense", "params": {} }
Dispositivo ERRORS
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 quantidade suficiente restante.dispenseAmountAboveLimit
: o usuário tentou liberar um valor que está além dos limites do que pode pedir em uma única consulta. Isso evita o fornecimento acidental de uma quantidade excessiva (por exemplo, 500.000 xícaras de água).dispenseAmountBelowLimit
: o usuário tentou distribuir um item ou valor do dispositivo abaixo do valor mínimo que pode ser distribuído.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 cachorros, podem não ser divisíveis.genericDispenseNotSupported
: o usuário tenta sair de um dispositivo sem especificar um item ou predefinição, mas o dispositivo não é compatível com essa funcionalidade (por exemplo, uma ação de dispensa padrão).dispenseUnitNotSupported
: o usuário tenta sair de um dispositivo com uma unidade que não seja compatível nesse caso. Por exemplo, o item não é fornecido, entãosupported_unit validation
foi ignorado.dispenseFractionalUnitNotSupported
: o usuário tentou distribuir uma quantidade fracionária de um item que pode ser dividido, mas não para a unidade especificada. Por exemplo, uma torneira pode distribuir 2,7 xícaras, mas não 2,7 ml.deviceCurrentlyDispensing
: os usuários tentam distribuir um item, mas o dispositivo já está liberando.deviceClogged
: os usuários tentam distribuir um item, mas o dispositivo está entupido.deviceBusy
: os usuários tentam distribuir um item, mas o dispositivo está ocupado (genérico).
Dispositivo EXCEPTIONS
Essas exceções podem ser relatadas como um exceptionCode
no objeto states
da sua resposta:
amountRemainingLow
: o usuário dispensa um item ou valor do dispositivo que leva 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 valor solicitado possa ser dispensado. Por exemplo, uma torneira libera água quente, mas o usuário precisa aguardar o aquecimento da água antes de começar.