Schemat atrybutu wydawania w inteligentnym domu
action.devices.traits.Dispense – ta cecha należy do urządzeń, które obsługują wydawanie określonej ilości co najmniej 1 produktu fizycznego.
Ta cecha obsługuje też wydawanie gotowych ustawień, np. „miski na karmę dla kota” w przypadku karmnika dla zwierząt lub „szklanki” w przypadku kranu.
Atrybuty urządzenia
Urządzenia z tą cechą mogą zgłaszać te atrybuty w ramach operacji SYNC. Więcej informacji o obsłudze SYNC intencji znajdziesz w artykule Realizacja intencji.
| Atrybuty | Typ | Opis |
|---|---|---|
supportedDispenseItems |
Tablica |
Zawiera informacje o wszystkich produktach, które urządzenie może wydawać. |
[item, ...] |
Obiekt |
Produkt jednorazowy. |
item_name |
String |
Wymagany. Wewnętrzna nazwa wydanego produktu. Może to być nieprzyjazne dla użytkownika i jest wspólne dla wszystkich języków. |
item_name_synonyms |
Tablica |
Wymagany. Synonimy nazwy wydawanego produktu w każdym obsługiwanym języku. |
[item, ...] |
Obiekt |
Synonimy nazwy wydawanego produktu w danym języku. Aby zapewnić działanie awaryjne w przypadku języka, wymagany jest co najmniej 1 produkt z wartością |
synonyms |
Tablica |
Wymagany. Synonimy nazwy wydanego produktu. Synonimy powinny obejmować zarówno formy w liczbie pojedynczej, jak i mnogiej, jeśli ma to zastosowanie. Pierwszy ciąg znaków na tej liście musi być formą liczby mnogiej elementu w danym języku. |
[item, ...] |
String |
Nazwa synonimu. Aby zapewnić działanie awaryjne w przypadku języka, wymagany jest co najmniej 1 produkt z wartością |
lang |
String |
Wymagany. Kod języka (ISO 639-1). Sprawdź obsługiwane języki. |
supported_units |
Tablica |
Wymagany. Zestaw jednostek, które urządzenie obsługuje w przypadku danego produktu. |
[item, ...] |
String |
Obsługiwane jednostki. Obsługiwane wartości:
|
default_portion |
Obiekt |
Wymagany. Typowa ilość produktu, która może zostać wydana. |
amount |
Liczba całkowita |
Wymagany. Wydana kwota. |
unit |
String |
Wymagany. Wydana jednostka. |
supportedDispensePresets |
Tablica |
Gotowe ustawienia obsługiwane przez urządzenie. |
[item, ...] |
Obiekt |
Gotowe ustawienia. |
preset_name |
String |
Wymagany. Wewnętrzna nazwa gotowych ustawień. Ta nazwa może być trudna do zrozumienia dla użytkowników i jest taka sama we wszystkich językach. |
preset_name_synonyms |
Tablica |
Wymagany. Nazwy synonimów gotowego ustawienia w każdym obsługiwanym języku. |
[item, ...] |
Obiekt |
Synonimy nazwy gotowych ustawień w danym języku. |
synonyms |
Tablica |
Wymagany. Synonimy nazwy gotowego ustawienia. Synonimy powinny obejmować zarówno formy w liczbie pojedynczej, jak i mnogiej, jeśli ma to zastosowanie. |
[item, ...] |
String |
Nazwa synonimu |
lang |
String |
Wymagany. Kod języka (ISO 639-1). Sprawdź obsługiwane języki. |
Przykłady
Dozownik wody obsługujący jednostki miary płynów z ustawieniami wstępnymi.
{
"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"
]
}
]
}
]
}Podajnik karmy dla zwierząt bez ustawień wstępnych.
{
"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"
}
}
]
}Stany urządzenia
Elementy z tym atrybutem mogą zgłaszać te stany w ramach operacji QUERY. Więcej informacji o obsłudze QUERY intencji znajdziesz w artykule Realizacja intencji.
| Stany | Typ | Opis |
|---|---|---|
dispenseItems |
Tablica |
Stany produktów, które urządzenie może wydawać. |
[item, ...] |
Obiekt |
Stan danego produktu. |
itemName |
String |
Nazwa produktu z atrybutu |
amountRemaining |
Obiekt |
Ilość tego produktu pozostała w urządzeniu. Jeśli urządzenie aktualnie wydaje karmę, ta wartość informuje o pozostałej ilości lub o tym, jaka będzie ilość po zakończeniu wydawania karmy. |
amount |
Number |
Pozostała kwota |
unit |
String |
Jednostka dla atrybutu |
amountLastDispensed |
Obiekt |
Ilość tego produktu, którą urządzenie ostatnio wydało. Jeśli urządzenie aktualnie wydaje karmę, ta wartość powinna odzwierciedlać ilość wydaną przed bieżącą ilością. |
amount |
Number |
Pozostała kwota |
unit |
String |
Jednostka dla atrybutu |
isCurrentlyDispensing |
Wartość logiczna |
Wskazuje, czy urządzenie aktualnie wydaje ten produkt. |
Przykłady
Ile smakołyków dla psa zostało w podajniku?
{
"dispenseItems": [
{
"itemName": "Dog treats",
"amountRemaining": {
"amount": 83,
"unit": "NO_UNITS"
},
"amountLastDispensed": {
"amount": 2,
"unit": "NO_UNITS"
},
"isCurrentlyDispensing": false
}
]
}Ile wody zostało w dystrybutorze?
{
"dispenseItems": [
{
"itemName": "Water",
"amountRemaining": {
"amount": 6.2,
"unit": "GALLONS"
},
"amountLastDispensed": {
"amount": 1,
"unit": "CUPS"
},
"isCurrentlyDispensing": false
}
]
}Ile karmy dla kota podałem(-am) wcześniej?
{
"dispenseItems": [
{
"itemName": "cat_food",
"amountRemaining": {
"amount": 16.5,
"unit": "CUPS"
},
"amountLastDispensed": {
"amount": 2.5,
"unit": "CUPS"
},
"isCurrentlyDispensing": false
}
]
}Czy bateria nadal wydaje wodę?
{
"dispenseItems": [
{
"itemName": "Water",
"isCurrentlyDispensing": true
}
]
}amountRemaining i amountLastDispensed należy podawać tylko w jednej jednostce miary.
W tablicy dispenseItems można podać wiele elementów.
Każda nazwa produktu musi być unikalna i odpowiadać produktowi w atrybucie supportedDispenseItems.
Polecenia dotyczące urządzenia
Urządzenia z tą cechą mogą odpowiadać na te polecenia w ramach operacji EXECUTE. Więcej informacji o obsłudze EXECUTE intencji znajdziesz w artykule Realizacja intencji.
action.devices.commands.Dispense
wydawać produkty,
Parametry
Ładunek zawiera jedną z tych wartości:
Wydzielanie według ilości.
| Parametry | Typ | Opis |
|---|---|---|
item |
String |
Nazwa produktu do wydania z atrybutu |
amount |
Number |
Wymagany. Kwota do wydania. |
unit |
String |
Wymagany. Jednostka dla |
Wydawanie według gotowych ustawień.
| Parametry | Typ | Opis |
|---|---|---|
presetName |
String |
Wymagany. Nazwa gotowego ustawienia do wydania z atrybutu |
Wydawanie bez parametrów.
| Parametry | Typ | Opis |
|---|---|---|
Brak właściwości |
||
Przykłady
Daj mi 1 szklankę wody.
{
"command": "action.devices.commands.Dispense",
"params": {
"amount": 1,
"unit": "CUPS",
"item": "Water"
}
}Napełnij kocią miskę na wodę.
{
"command": "action.devices.commands.Dispense",
"params": {
"presetName": "cat_bowl"
}
}Wydawanie wody
{
"command": "action.devices.commands.Dispense",
"params": {}
}BŁĘDY urządzenia
Zobacz pełną listę błędów i wyjątków.dispenseAmountRemainingExceeded: użytkownik próbował wydać produkt lub kwotę z urządzenia, w którym nie ma wystarczającej ilości środków.dispenseAmountAboveLimit: użytkownik próbował wydać kwotę przekraczającą limity, o które może poprosić w jednym zapytaniu. Ma to zapobiec przypadkowemu wydaniu zbyt dużej ilości (np. 500 tys. kubków wody).dispenseAmountBelowLimit: użytkownik próbował wydać z urządzenia produkt lub kwotę mniejszą niż minimalna kwota, jaką można wydać z urządzenia.dispenseFractionalAmountNotSupported: użytkownik próbował wydać ułamek produktu, którego urządzenie nie może podzielić (np. produkty, które można policzyć, takie jak przysmaki dla psów, mogą nie być podzielne przez urządzenie).genericDispenseNotSupported: użytkownik próbuje wydać produkt z urządzenia bez określania produktu lub gotowych ustawień, ale urządzenie nie obsługuje takiej funkcji (np. domyślna czynność wydawania).dispenseUnitNotSupported: użytkownik próbuje wydać produkt z urządzenia, które nie obsługuje danego przypadku (np. produkt nie jest dostępny, więcsupported_unit validationzostał pominięty).dispenseFractionalUnitNotSupported: użytkownik próbował wydać ułamkową ilość produktu, który można podzielić, ale nie w przypadku określonej jednostki (np. kran może wydać 2,7 szklanki, ale nie 2,7 ml).deviceCurrentlyDispensing: użytkownik próbuje wydać produkt, ale urządzenie już to robi.deviceClogged: użytkownik próbuje wydać produkt, ale urządzenie jest zatkane.deviceBusy: użytkownik próbuje wydać produkt, ale urządzenie jest zajęte (ogólny komunikat).
WYJĄTKI DOTYCZĄCE URZĄDZEŃ
Te wyjątki można zgłosić jako exceptionCode w obiekcie states odpowiedzi:
amountRemainingLow– użytkownik wydaje z urządzenia produkt lub ilość, która powoduje, że pozostała ilość jest niewielka. Twoim obowiązkiem jest określenie, co oznacza „niski” poziom.userNeedsToWait– gdy użytkownik musi poczekać, zanim żądany produkt lub ilość zostanie wydana (np. kran wydaje gorącą wodę, ale użytkownik musi poczekać, aż woda się nagrzeje).