Schema delle caratteristiche di erogazione per la smart home
action.devices.traits.Dispense
. Questa caratteristica appartiene ai dispositivi che supportano l'erogazione di una quantità specifica di uno o più articoli fisici.
Questa trait consente anche di erogare una preimpostazione, ad esempio come "ciotola per gatti" per un dispenser per animali domestici o un "bicchiere" per un rubinetto.
ATTRIBUTES del dispositivo
I dispositivi con questo trait potrebbero segnalare i seguenti attributi nell'ambito dell'operazione SYNC
. Per scoprire di più sulla gestione degli intent SYNC
, consulta fulfillment dell'intent.
Attributi | Tipo | Descrizione |
---|---|---|
supportedDispenseItems |
Matrice |
Contiene informazioni su tutti gli articoli che il dispositivo può erogare. |
[item, ...] |
Oggetto |
Articolo dispensabile. |
item_name |
String |
Obbligatorio. Nome interno dell'articolo erogato. Non è facile da usare e viene condiviso in tutte le lingue. |
item_name_synonyms |
Matrice |
Obbligatorio. Sinonimi i nomi delle bevande in ogni lingua supportata. |
[item, ...] |
Oggetto |
Sinonimi i nomi dell'articolo erogato in una determinata lingua. |
synonyms |
Matrice |
Obbligatorio. Nomi sinonimi dell'articolo erogato. I sinomimi devono includere sia la forma singolare che quella plurale, se possibile. La prima stringa di questo elenco deve essere la forma plurale dell'elemento in quella lingua. |
[item, ...] |
String |
Nome sinonimo |
lang |
String |
Obbligatorio. Codice lingua (ISO 639-1). Consulta le lingue supportate. |
supported_units |
Matrice |
Obbligatorio. Insieme di unità supportate dal dispositivo per l'elemento. |
[item, ...] |
String |
Unità supportate. Valori supportati:
|
default_portion |
Oggetto |
Obbligatorio. Quantità tipica dell'articolo che potrebbe essere erogata. |
amount |
Intero |
Obbligatorio. Importo erogato. |
unit |
String |
Obbligatorio. Unità erogato. |
supportedDispensePresets |
Matrice |
Preimpostazioni supportate dal dispositivo. |
[item, ...] |
Oggetto |
Predefinito. |
preset_name |
String |
Obbligatorio. Nome interno della preimpostazione. Questo nome non può essere intuitivo e viene condiviso in tutte le lingue. |
preset_name_synonyms |
Matrice |
Obbligatorio. Nomi sinonimi della preimpostazione in ogni lingua supportata. |
[item, ...] |
Oggetto |
Nomi sinonimi della preimpostazione in una determinata lingua. |
synonyms |
Matrice |
Obbligatorio. Nomi sinonimi della preimpostazione. I sinonimi devono includere sia la forma singolare che quella plurale, se possibile. |
[item, ...] |
String |
Nome sinonimo |
lang |
String |
Obbligatorio. Codice lingua (ISO 639-1). Consulta le lingue supportate. |
Esempi
Erogatore d'acqua che supporta unità per liquidi con valori preimpostati.
{ "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" ] } ] } ] }
Dispenser di cibo per animali senza preimpostazioni.
{ "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" } } ] }
Dispositivo STATES
Le entità con questo trait possono segnalare i seguenti
stati nell'ambito dell'operazione QUERY
. Per scoprire di più sulla gestione degli intent QUERY
, consulta fulfillment dell'intent.
Stati | Tipo | Descrizione |
---|---|---|
dispenseItems |
Matrice |
Stati degli articoli che il dispositivo può erogare. |
[item, ...] |
Oggetto |
Stato di un determinato articolo. |
itemName |
String |
Nome dell'articolo indicato nell'attributo |
amountRemaining |
Oggetto |
Quantità rimanente dell'elemento nel dispositivo. Se al momento il dispositivo sta erogando, viene indicato l'importo rimanente o quello che sarà una volta che il dispositivo avrà terminato l'erogazione. |
amount |
Number |
Importo rimanente |
unit |
String |
Unità di |
amountLastDispensed |
Oggetto |
Quantità di quell'articolo erogato dal dispositivo più di recente. Se il dispositivo è in fase di erogazione, dovrebbe essere indicato l'importo erogato prima dell'importo erogato attuale. |
amount |
Number |
Importo rimanente |
unit |
String |
Unità di |
isCurrentlyDispensing |
Booleano |
Indica se il dispositivo sta erogando questo articolo. |
Esempi
Quanti snack per cani rimangono nel dispenser?
{ "dispenseItems": [ { "itemName": "Dog treats", "amountRemaining": { "amount": 83, "unit": "NO_UNITS" }, "amountLastDispensed": { "amount": 2, "unit": "NO_UNITS" }, "isCurrentlyDispensing": false } ] }
Quanta acqua rimane nel refrigeratore?
{ "dispenseItems": [ { "itemName": "Water", "amountRemaining": { "amount": 6.2, "unit": "GALLONS" }, "amountLastDispensed": { "amount": 1, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
Quanto cibo per gatti ho dato in passato?
{ "dispenseItems": [ { "itemName": "cat_food", "amountRemaining": { "amount": 16.5, "unit": "CUPS" }, "amountLastDispensed": { "amount": 2.5, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
Il rubinetto continua a erogare acqua?
{ "dispenseItems": [ { "itemName": "Water", "isCurrentlyDispensing": true } ] }
amountRemaining
e amountLastDispensed
devono essere creati nei report utilizzando un'unica unità di misura.
È possibile fornire più elementi all'interno dell'array dispenseItems
.
Il nome di ogni articolo deve essere univoco e deve corrispondere a un articolo
nell'attributo supportedDispenseItems
.
COMMANDS dispositivo
I dispositivi con questa caratteristica potrebbero rispondere ai seguenti comandi nell'ambito dell'operazione EXECUTE
. Per scoprire di più sulla gestione degli intent EXECUTE
, consulta fulfillment dell'intent.
action.devices.commands.Dispense
Eroga articoli.
Parametri
Il payload contiene uno dei seguenti valori:
Eroga in base all'importo.
Parametri | Tipo | Descrizione |
---|---|---|
item |
String |
Nome dell'articolo da erogare, dall'attributo |
amount |
Number |
Obbligatorio. Importo da erogare. |
unit |
String |
Obbligatorio. Unità di |
Eroga in base alle preimpostazioni.
Parametri | Tipo | Descrizione |
---|---|---|
presetName |
String |
Obbligatorio. Nome della preimpostazione da erogare, dall'attributo |
Eroga senza parametri.
Parametri | Tipo | Descrizione |
---|---|---|
Nessuna proprietà |
Esempi
Dammi 1 tazza d'acqua.
{ "command": "action.devices.commands.Dispense", "params": { "amount": 1, "unit": "CUPS", "item": "Water" } }
Riempi la ciotola dell'acqua per il gatto.
{ "command": "action.devices.commands.Dispense", "params": { "presetName": "cat_bowl" } }
Eroga acqua.
{ "command": "action.devices.commands.Dispense", "params": {} }
ERRORS dispositivo
Consulta l'elenco completo di errori ed eccezioni.dispenseAmountRemainingExceeded
: l'utente ha tentato di erogare un articolo o un importo da un dispositivo a cui non è rimasto sufficiente spazio.dispenseAmountAboveLimit
: l'utente ha cercato di erogare un importo che supera i limiti di quanto può richiedere in una singola query. per evitare di erogare involontariamente una quantità eccessiva (ad es. 500.000 tazze d'acqua).dispenseAmountBelowLimit
: l'utente ha tentato di erogare dal dispositivo un articolo o un importo inferiore al limite minimo che può erogare.dispenseFractionalAmountNotSupported
: l'utente ha tentato di erogare una parte frazionata di un articolo che il dispositivo non può suddividere (ad esempio, gli elementi conteggiabili come gli snack per cani potrebbero non essere divisibili per il dispositivo).genericDispenseNotSupported
: l'utente cerca di effettuare l'erogazione da un dispositivo senza specificare un articolo o una preimpostazione, ma il dispositivo non supporta questa funzionalità (ad esempio, un'azione di erogazione predefinita).dispenseUnitNotSupported
: l'utente cerca di effettuare l'erogazione da un dispositivo con un'unità non supportata per quel caso (ad esempio, l'articolo non è fornito, quindisupported_unit validation
è stato ignorato).dispenseFractionalUnitNotSupported
: l'utente ha cercato di erogare una quantità frazionaria di un articolo che può essere suddivisa, ma non per l'unità specifica specificata (ad esempio, un rubinetto potrebbe essere in grado di erogare 2,7 tazze ma non 2,7 mL).deviceCurrentlyDispensing
: l'utente cerca di erogare un articolo, ma il dispositivo è già in fase di erogazione.deviceClogged
: l'utente cerca di erogare un articolo, ma il dispositivo è intasato.deviceBusy
: l'utente cerca di erogare un articolo, ma il dispositivo è occupato (generico).
Dispositivo EXCEPTIONS
Queste eccezioni possono essere segnalate come exceptionCode
nell'oggetto states
della risposta:
amountRemainingLow
: l'utente eroga dal dispositivo un articolo o un importo per ridurre la quantità rimanente. Sei responsabile della definizione di ciò che costituisce un livello "basso".userNeedsToWait
: quando l'utente deve attendere prima di poter erogare correttamente l'articolo o la quantità richiesti (ad esempio, un rubinetto erogherà acqua calda, ma l'utente deve attendere che l'acqua si riscaldi prima che inizi a erogare).