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:
|
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 |
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 |
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 |
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 |
amount |
Número |
Obrigatório. Quantidade a ser distribuída. |
unit |
String |
Obrigatório. Unidade do |
Dispensa por predefinição.
Parâmetros | Tipo | Descrição |
---|---|---|
presetName |
String |
Obrigatório. Nome da predefinição para liberar, do atributo |
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ãosupported_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).