Schema del tratto di erogazione per la smart home
action.devices.traits.Dispense
: questo attributo appartiene ai dispositivi che supportano la dispensazione di una quantità specificata di uno o più articoli fisici.
Questa funzionalità supporta anche l'erogazione di un preset, ad esempio una "ciotola per gatti" per una mangiatoia per animali domestici o un "bicchiere" per un rubinetto.
ATTRIBUTI del dispositivo
I dispositivi con questa caratteristica possono segnalare i seguenti
attributi nell'ambito dell'operazione SYNC
. Per scoprire di più sulla gestione degli intent SYNC
, consulta Adempimento degli intent.
Attributi | Tipo | Descrizione |
---|---|---|
supportedDispenseItems |
Array |
Contiene informazioni su tutti gli articoli che il dispositivo può erogare. |
[item, ...] |
Oggetto |
Elemento non necessario. |
item_name |
String |
Obbligatorio. Nome interno dell'articolo erogato. Questo approccio può non essere intuitivo ed è condiviso tra tutte le lingue. |
item_name_synonyms |
Array |
Obbligatorio. Nomi dei sinonimi per il farmaco dispensato in ogni lingua supportata. |
[item, ...] |
Oggetto |
Nomi dei sinonimi per l'articolo erogato in una determinata lingua. |
synonyms |
Array |
Obbligatorio. Nomi sinonimi dell'articolo distribuito. I sinonimi devono includere sia le forme singolari che quelle plurali, se applicabili. La prima stringa in questo elenco deve essere la forma plurale dell'elemento nella lingua in questione. |
[item, ...] |
String |
Nome sinonimo |
lang |
String |
Obbligatorio. Codice lingua (ISO 639-1). Vedi le lingue supportate. |
supported_units |
Array |
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 può essere erogata. |
amount |
Intero |
Obbligatorio. Importo erogato. |
unit |
String |
Obbligatorio. Unità erogata. |
supportedDispensePresets |
Array |
Preimpostazioni supportate dal dispositivo. |
[item, ...] |
Oggetto |
Preset. |
preset_name |
String |
Obbligatorio. Nome interno del preset. Questo nome può non essere user-friendly ed è condiviso in tutte le lingue. |
preset_name_synonyms |
Array |
Obbligatorio. Nomi dei sinonimi per la preimpostazione in ogni lingua supportata. |
[item, ...] |
Oggetto |
Nomi dei sinonimi per il preset in una determinata lingua. |
synonyms |
Array |
Obbligatorio. Nomi dei sinonimi per il preset. I sinonimi devono includere sia la forma singolare che quella plurale, se applicabile. |
[item, ...] |
String |
Nome sinonimo |
lang |
String |
Obbligatorio. Codice lingua (ISO 639-1). Consulta le lingue supportate. |
Esempi
Dispenser d'acqua che supporta le unità per i liquidi con preset.
{ "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" ] } ] } ] }
Distributore di cibo per animali domestici senza preset.
{ "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" } } ] }
STATI del dispositivo
Le entità con questo attributo possono segnalare i seguenti stati nell'ambito dell'operazione QUERY
. Per scoprire di più sulla gestione degli intent QUERY
, consulta Adempimento degli intent.
Stati | Tipo | Descrizione |
---|---|---|
dispenseItems |
Array |
Stati degli articoli che il dispositivo può erogare. |
[item, ...] |
Oggetto |
Stato di un determinato elemento. |
itemName |
String |
Nome dell'elemento dall'attributo |
amountRemaining |
Oggetto |
Quantità dell'articolo rimanente nel dispositivo. Se il dispositivo sta attualmente erogando l'acqua, verrà indicata la quantità rimanente o quale sarà la quantità al termine dell'erogazione. |
amount |
Number |
Importo rimanente |
unit |
String |
Unità per |
amountLastDispensed |
Oggetto |
Quantità di quell'articolo erogata dal dispositivo più di recente. Se il dispositivo sta erogando, dovrebbe indicare l'importo erogato prima dell'importo di erogazione corrente. |
amount |
Number |
Importo rimanente |
unit |
String |
Unità per |
isCurrentlyDispensing |
Valore booleano |
Indica se il dispositivo sta erogando questo articolo. |
Esempi
Quanti bocconcini per cani sono rimasti nel mio dispenser?
{ "dispenseItems": [ { "itemName": "Dog treats", "amountRemaining": { "amount": 83, "unit": "NO_UNITS" }, "amountLastDispensed": { "amount": 2, "unit": "NO_UNITS" }, "isCurrentlyDispensing": false } ] }
Quanta acqua è rimasta nel mio refrigeratore d'acqua?
{ "dispenseItems": [ { "itemName": "Water", "amountRemaining": { "amount": 6.2, "unit": "GALLONS" }, "amountLastDispensed": { "amount": 1, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
Quanto cibo per gatti ho dato prima?
{ "dispenseItems": [ { "itemName": "cat_food", "amountRemaining": { "amount": 16.5, "unit": "CUPS" }, "amountLastDispensed": { "amount": 2.5, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
Il rubinetto sta ancora erogando acqua?
{ "dispenseItems": [ { "itemName": "Water", "isCurrentlyDispensing": true } ] }
amountRemaining
e amountLastDispensed
devono essere registrati solo utilizzando una unità di misura.
È possibile fornire più elementi all'interno dell'array dispenseItems
.
Ogni nome dell'elemento deve essere univoco e deve corrispondere a un elemento nell'attributo supportedDispenseItems
.
COMANDI dispositivo
I dispositivi con questa caratteristica possono rispondere ai seguenti comandi nell'ambito dell'operazione EXECUTE
. Per scoprire di più sulla gestione degli intent EXECUTE
, consulta Adempimento degli intent.
action.devices.commands.Dispense
Distribuire gli articoli.
Parametri
Il payload contiene uno dei seguenti elementi:
Dispensa 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à per |
Erogazione in base al preset.
Parametri | Tipo | Descrizione |
---|---|---|
presetName |
String |
Obbligatorio. Nome del valore preimpostato da distribuire, dall'attributo |
Dispensa senza parametri.
Parametri | Tipo | Descrizione |
---|---|---|
Nessuna proprietà |
Esempi
Dammi un bicchiere d'acqua.
{ "command": "action.devices.commands.Dispense", "params": { "amount": 1, "unit": "CUPS", "item": "Water" } }
Riempi la ciotola dell'acqua del gatto.
{ "command": "action.devices.commands.Dispense", "params": { "presetName": "cat_bowl" } }
Versa l'acqua.
{ "command": "action.devices.commands.Dispense", "params": {} }
ERRORI dispositivo
Consulta l'elenco completo di errori ed eccezioni.dispenseAmountRemainingExceeded
: l'utente ha tentato di erogare un articolo o un importo da un dispositivo che non ha un importo sufficiente rimanente.dispenseAmountAboveLimit
: l'utente ha provato a erogare un importo superiore ai limiti di ciò che può chiedere in una singola query. Questo serve a evitare di erogare accidentalmente una quantità eccessiva (ad esempio 500.000 tazze di acqua).dispenseAmountBelowLimit
: l'utente ha provato a erogare un articolo o un importo dal dispositivo inferiore all'importo minimo che può erogare.dispenseFractionalAmountNotSupported
: l'utente ha provato a dispensare una quantità frazionaria di un articolo che il dispositivo non può suddividere (ad esempio, gli articoli conteggiabili come le crocchette per cani potrebbero non essere divisibile dal dispositivo).genericDispenseNotSupported
: l'utente tenta di erogare un prodotto 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 tenta di erogare da un dispositivo con un'unità non supportata per quel caso (ad esempio, l'articolo non è stato fornito, quindisupported_unit validation
è stato ignorato).dispenseFractionalUnitNotSupported
: l'utente ha tentato di erogare una quantità frazionaria di un articolo che può essere suddiviso, 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 tenta di erogare un articolo, ma il dispositivo è già in funzione.deviceClogged
: gli utenti tentano di erogare un articolo, ma il dispositivo è intasato.deviceBusy
: l'utente tenta di erogare un articolo, ma il dispositivo è occupato (generico).
eccezioni del dispositivo
Queste eccezioni possono essere segnalate come exceptionCode
nell'oggetto states
della risposta:
amountRemainingLow
: l'utente eroga un articolo o un importo dal dispositivo, portando l'importo rimanente a un livello basso. È tua responsabilità definire cosa costituisce un livello "basso".userNeedsToWait
- Quando l'utente deve attendere prima che l'articolo o la quantità richiesta possa essere erogata correttamente (ad esempio, un rubinetto eroga acqua calda, ma l'utente deve attendere che l'acqua si riscaldi prima che inizi l'erogazione).