Smart Home Dispense Trait Schema
action.devices.traits.Dispense
: Dieses Attribut bezieht sich auf Geräte, die die Ausgabe einer bestimmten Menge von einem oder mehreren physischen Artikeln unterstützen.
Dieses Trait unterstützt auch die Ausgabe einer Voreinstellung, z. B. als „Katzenfutternapf“ für einen Futterspender oder als „Glas“ für einen Wasserhahn.
Geräteattribute
Geräte mit diesem Merkmal können die folgenden Attribute als Teil des SYNC
-Vorgangs melden. Weitere Informationen zum Umgang mit SYNC
-Intents finden Sie unter Intent-Ausführung.
Attribute | Typ | Beschreibung |
---|---|---|
supportedDispenseItems |
Array |
Enthält Informationen zu allen Artikeln, die das Gerät ausgeben kann. |
[item, ...] |
Objekt |
Nicht erforderlicher Artikel. |
item_name |
String |
Erforderlich. Interner Name für den ausgegebenen Artikel. Dies kann nicht nutzerfreundlich sein und wird in allen Sprachen verwendet. |
item_name_synonyms |
Array |
Erforderlich. Synonyme für die Ausgabe in jeder unterstützten Sprache. |
[item, ...] |
Objekt |
Synonyme für den ausgegeben Artikel in einer bestimmten Sprache. |
synonyms |
Array |
Erforderlich. Synonyme Namen für den ausgegeben Artikel. Die Synonyme sollten gegebenenfalls sowohl die Singular- als auch die Pluralform enthalten. Der erste String in dieser Liste muss die Pluralform des Artikels in dieser Sprache sein. |
[item, ...] |
String |
Synonym name |
lang |
String |
Erforderlich. Sprachcode (ISO 639-1). Unterstützte Sprachen |
supported_units |
Array |
Erforderlich. Satz der Einheiten, die das Gerät für diesen Artikel unterstützt. |
[item, ...] |
String |
Unterstützte Einheiten. Unterstützte Werte:
|
default_portion |
Objekt |
Erforderlich. Die übliche Menge des Artikels, die ausgegeben werden kann. |
amount |
Ganzzahl |
Erforderlich. Ausgezahlter Betrag. |
unit |
String |
Erforderlich. Ausgegebene Einheit. |
supportedDispensePresets |
Array |
Vom Gerät unterstützte Voreinstellungen. |
[item, ...] |
Objekt |
Voreinstellung. |
preset_name |
String |
Erforderlich. Interner Name für die Voreinstellung. Dieser Name kann nicht nutzerfreundlich sein und wird für alle Sprachen verwendet. |
preset_name_synonyms |
Array |
Erforderlich. Synonyme für die Voreinstellung in jeder unterstützten Sprache. |
[item, ...] |
Objekt |
Synonymnamen für die Voreinstellung in einer bestimmten Sprache. |
synonyms |
Array |
Erforderlich. Synonymnamen für die Voreinstellung. Die Synonyme sollten gegebenenfalls sowohl Singular- als auch Pluralformen enthalten. |
[item, ...] |
String |
Synonym name |
lang |
String |
Erforderlich. Sprachcode (ISO 639-1). Unterstützte Sprachen |
Beispiele
Wasserspender, der Einheiten für Flüssigkeiten mit voreingestellten Einstellungen unterstützt
{ "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" ] } ] } ] }
Futterautomat für Haustiere ohne Voreinstellungen
{ "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" } } ] }
Gerät: STATES
Entitäten mit diesem Merkmal können im Rahmen der QUERY
-Operation die folgenden Bundesstaaten melden. Weitere Informationen zum Umgang mit QUERY
-Intents finden Sie unter Intent-Ausführung.
Bundesstaaten | Typ | Beschreibung |
---|---|---|
dispenseItems |
Array |
Status der Artikel, die das Gerät abgeben kann. |
[item, ...] |
Objekt |
Status eines bestimmten Artikels. |
itemName |
String |
Name des Artikels aus dem Attribut |
amountRemaining |
Objekt |
Die Menge dieses Artikels, die auf dem Gerät verbleibt. Wenn das Gerät gerade etwas ausgibt, wird hier der verbleibende Betrag oder der Betrag angezeigt, der übrig bleibt, wenn die Ausgabe abgeschlossen ist. |
amount |
Number |
Restbetrag |
unit |
String |
Einheit für |
amountLastDispensed |
Objekt |
Die Menge dieses Artikels, die das Gerät zuletzt ausgegeben hat. Wenn das Gerät gerade Spende durchführt, sollte dies die ausgegebene Menge vor der aktuellen Ausgabemenge melden. |
amount |
Number |
Restbetrag |
unit |
String |
Einheit für |
isCurrentlyDispensing |
Boolesch |
Gibt an, ob das Gerät diesen Artikel derzeit ausgibt. |
Beispiele
Wie viele Hundeleckerli habe ich noch im Spender?
{ "dispenseItems": [ { "itemName": "Dog treats", "amountRemaining": { "amount": 83, "unit": "NO_UNITS" }, "amountLastDispensed": { "amount": 2, "unit": "NO_UNITS" }, "isCurrentlyDispensing": false } ] }
Wie viel Wasser ist noch in meinem Wasserkühler?
{ "dispenseItems": [ { "itemName": "Water", "amountRemaining": { "amount": 6.2, "unit": "GALLONS" }, "amountLastDispensed": { "amount": 1, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
Wie viel Katzenfutter habe ich vorher gegeben?
{ "dispenseItems": [ { "itemName": "cat_food", "amountRemaining": { "amount": 16.5, "unit": "CUPS" }, "amountLastDispensed": { "amount": 2.5, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
Lässt sich die Armatur noch öffnen?
{ "dispenseItems": [ { "itemName": "Water", "isCurrentlyDispensing": true } ] }
amountRemaining
und amountLastDispensed
müssen nur mit einer Maßeinheit erfasst werden.
Innerhalb des dispenseItems
-Arrays können mehrere Elemente angegeben werden.
Jeder Artikelname muss eindeutig sein und einem Artikel im Attribut supportedDispenseItems
entsprechen.
BEFEHLE für Geräte
Geräte mit dieser Eigenschaft können im Rahmen des Vorgangs EXECUTE
auf die folgenden Befehle reagieren. Weitere Informationen zum Umgang mit EXECUTE
-Intents finden Sie unter Intent-Ausführung.
action.devices.commands.Dispense
Artikel ausgeben
Parameter
Die Nutzlast enthält Folgendes:
Ausgabe nach Betrag
Parameter | Typ | Beschreibung |
---|---|---|
item |
String |
Name des Artikels, der ausgegeben werden soll, aus dem Attribut |
amount |
Number |
Erforderlich. Auszugebender Betrag. |
unit |
String |
Erforderlich. Einheit für |
Ausgeben nach Voreinstellung
Parameter | Typ | Beschreibung |
---|---|---|
presetName |
String |
Erforderlich. Name der Voreinstellung, die ausgegeben werden soll, aus dem Attribut |
Ohne Parameter ausgeben.
Parameter | Typ | Beschreibung |
---|---|---|
Keine Attribute |
Beispiele
Geben Sie mir eine Tasse Wasser.
{ "command": "action.devices.commands.Dispense", "params": { "amount": 1, "unit": "CUPS", "item": "Water" } }
Füllen Sie die Wasserschüssel der Katze.
{ "command": "action.devices.commands.Dispense", "params": { "presetName": "cat_bowl" } }
Wasser ausgeben.
{ "command": "action.devices.commands.Dispense", "params": {} }
GERÄTEFEHLER
Eine vollständige Liste der Fehler und AusnahmendispenseAmountRemainingExceeded
: Der Nutzer hat versucht, einen Artikel oder eine bestimmte Menge von einem Gerät abzufüllen, in dem nicht genügend vorhanden ist.dispenseAmountAboveLimit
: Der Nutzer hat versucht, einen Betrag auszugeben, der über die Grenzen der in einer einzelnen Abfrage verfügbaren Anfrage hinausgeht. So wird verhindert, dass versehentlich eine zu große Menge (z. B. 500.000 Tassen Wasser) ausgegeben wird.dispenseAmountBelowLimit
: Der Nutzer hat versucht, einen Artikel oder eine Menge aus dem Gerät abzufüllen, die unter dem Mindestabgabebetrag liegt.dispenseFractionalAmountNotSupported
: Der Nutzer hat versucht, eine Teilmenge eines Artikels abzugeben, die das Gerät nicht teilen kann. Zählbare Artikel wie Hundekekse sind beispielsweise möglicherweise nicht durch das Gerät teilbar.genericDispenseNotSupported
: Der Nutzer versucht, etwas aus einem Gerät herauszugeben, ohne einen Artikel oder eine Voreinstellung anzugeben. Das Gerät unterstützt diese Funktion jedoch nicht (z. B. eine Standardausgabeaktion).dispenseUnitNotSupported
: Der Nutzer versucht, über ein Gerät ein Produkt auszugeben, das für diesen Fall nicht unterstützt wird (z. B. ist der Artikel nicht verfügbar, sodasssupported_unit validation
übersprungen wurde).dispenseFractionalUnitNotSupported
: Der Nutzer hat versucht, eine Bruchzahl eines Artikels auszugeben, die zwar aufgeteilt werden kann, aber nicht für die angegebene Einheit (z.B.kann ein Wasserhahn 2,7 Tassen, aber nicht 2,7 ml ausgeben).deviceCurrentlyDispensing
: Der Nutzer versucht, ein Produkt abzuholen, aber das Gerät gibt bereits etwas aus.deviceClogged
: Der Nutzer versucht, einen Artikel auszugeben, aber das Gerät ist verstopft.deviceBusy
: Der Nutzer versucht, einen Artikel auszugeben, aber das Gerät ist beschäftigt (generisch).
AUSNAHMEN für Geräte
Diese Ausnahmen können als exceptionCode
im states
-Objekt Ihrer Antwort gemeldet werden:
amountRemainingLow
– Der Nutzer entnimmt dem Gerät einen Artikel oder eine bestimmte Menge, wodurch der verbleibende Bestand auf ein niedriges Niveau sinkt. Sie sind dafür verantwortlich, zu definieren, was als „niedrig“ gilt.userNeedsToWait
: Wenn der Nutzer warten muss, bis der angeforderte Artikel oder die angeforderte Menge erfolgreich ausgegeben werden kann (z. B. gibt ein Wasserhahn Warmwasser aus, aber der Nutzer muss warten, bis das Wasser aufgeheizt ist, bevor er ausgegeben wird).