Schemat atrybutu wydawania w inteligentnym domu
action.devices.traits.Dispense
– ta cecha należy do urządzeń, które umożliwiają wydanie określonej ilości co najmniej 1 przedmiotu fizycznego.
Ta cecha obsługuje również gotowe konfiguracje, na przykład „miska na karmę dla kota” w przypadku karmnika dla zwierząt lub „szklankę” 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ługiwaniu intencji SYNC
znajdziesz w artykule Realizacja intencji.
Atrybuty | Typ | Opis |
---|---|---|
supportedDispenseItems |
Tablica |
Zawiera informacje o wszystkich produktach, które może wydać urządzenie. |
[item, ...] |
Obiekt |
Element, którego można nie używać. |
item_name |
String |
Wymagany. Wewnętrzna nazwa wydanego produktu. Może być on nieprzyjazny dla użytkownika i udostępniany we wszystkich językach. |
item_name_synonyms |
Tablica |
Wymagany. Nazwy synonimów w każdym obsługiwanym języku. |
[item, ...] |
Obiekt |
Nazwy synonimów produktu wydawanego w danym języku. |
synonyms |
Tablica |
Wymagane. Synonimy wydawanego produktu. Synonimy powinny obejmować formę liczby pojedynczej i mnogiej (w odpowiednich przypadkach). Pierwszy ciąg na tej liście musi być formą liczby mnogiej tego elementu w danym języku. |
[item, ...] |
String |
Nazwa synonimu |
lang |
String |
Wymagany. Kod języka (ISO 639-1). Zobacz obsługiwane języki. |
supported_units |
Tablica |
Wymagany. Zestaw jednostek obsługiwanych przez urządzenie w przypadku tego elementu. |
[item, ...] |
String |
Obsługiwane jednostki Obsługiwane wartości:
|
default_portion |
Obiekt |
Wymagane. Typowa ilość produktu, która może być wydawana. |
amount |
Liczba całkowita |
Wymagany. Wydana ilość. |
unit |
String |
Wymagany. Wydanie urządzenia. |
supportedDispensePresets |
Tablica |
Gotowe ustawienia obsługiwane przez urządzenie. |
[item, ...] |
Obiekt |
Gotowe ustawienia. |
preset_name |
String |
Wymagane. Wewnętrzna nazwa wstępnie ustawionego profilu. Nazwa może być nieprzyjazna dla użytkowników i być taka sama we wszystkich językach. |
preset_name_synonyms |
Tablica |
Wymagane. Nazwy synonimów gotowego ustawienia w każdym obsługiwanym języku. |
[item, ...] |
Obiekt |
Nazwy synonimów gotowych ustawień w danym języku. |
synonyms |
Tablica |
Wymagany. Nazwy synonimów dla gotowych ustawień. Synonimy powinny zawierać formy liczby pojedynczej i mnogiej (w odpowiednich przypadkach). |
[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 płynów z wstępnie ustawionymi wartościami.
{
"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"
]
}
]
}
]
}
Dawkownik karmy dla zwierząt bez wstępnie ustawionych wartości.
{
"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"
}
}
]
}
STANOWISKO URZĄDZENIA
Elementy z tą cechą mogą raportować te stany w ramach operacji QUERY
. Więcej informacji o obsługiwaniu intencji QUERY
znajdziesz w artykule Realizacja intencji.
Stany | Typ | Opis |
---|---|---|
dispenseItems |
Tablica |
Stany produktów, które może wydać urządzenie. |
[item, ...] |
Obiekt. |
Stan danego elementu. |
itemName |
String |
Nazwa produktu z atrybutu |
amountRemaining |
Obiekt |
Pozostała część produktu na urządzeniu. Jeśli urządzenie obecnie podaje produkt, raportuje pozostałą ilość lub ilość, jaką podaje po zakończeniu podawania. |
amount |
Number |
Pozostała kwota |
unit |
String |
Jednostka |
amountLastDispensed |
Obiekt. |
Ilość produktu, który urządzenie ostatnio wydało. Jeśli urządzenie obecnie wydaje produkt, powinno podać ilość wydaną przed bieżącą ilością. |
amount |
Number |
Pozostała kwota |
unit |
String |
Jednostka dla atrybutu |
isCurrentlyDispensing |
Wartość logiczna |
Wskazuje, czy urządzenie obecnie wydaje ten produkt. |
Przykłady
Ile przysmaków dla psa zostało w moim podajniku?
{
"dispenseItems": [
{
"itemName": "Dog treats",
"amountRemaining": {
"amount": 83,
"unit": "NO_UNITS"
},
"amountLastDispensed": {
"amount": 2,
"unit": "NO_UNITS"
},
"isCurrentlyDispensing": false
}
]
}
Ile wody zostało w chłodziarce?
{
"dispenseItems": [
{
"itemName": "Water",
"amountRemaining": {
"amount": 6.2,
"unit": "GALLONS"
},
"amountLastDispensed": {
"amount": 1,
"unit": "CUPS"
},
"isCurrentlyDispensing": false
}
]
}
Ile karmy dla kota podałam wcześniej?
{
"dispenseItems": [
{
"itemName": "cat_food",
"amountRemaining": {
"amount": 16.5,
"unit": "CUPS"
},
"amountLastDispensed": {
"amount": 2.5,
"unit": "CUPS"
},
"isCurrentlyDispensing": false
}
]
}
Czy kran nadal wypuszcza wodę?
{
"dispenseItems": [
{
"itemName": "Water",
"isCurrentlyDispensing": true
}
]
}
Wartości amountRemaining
i amountLastDispensed
należy raportować tylko z użyciem jednej jednostki miary.
Tablica dispenseItems
może zawierać wiele elementów.
Każda nazwa produktu musi być niepowtarzalna i odpowiadać produktowi w atrybucie supportedDispenseItems
.
Polecenia urządzenia
Urządzenia z tą cechą mogą reagować na te polecenia w ramach operacji EXECUTE
. Więcej informacji o obsługiwaniu intencji EXECUTE
znajdziesz w artykule Realizacja intencji.
action.devices.commands.Dispense
wydawać produkty;
Parametry
Ładunek zawiera jeden z następujących elementów:
Dozowanie według ilości.
Parametry | Typ | Opis |
---|---|---|
item |
String |
Nazwa produktu do wydania, pochodząca z atrybutu |
amount |
Number |
Wymagany. Ilość do wydania. |
unit |
String |
Wymagany. Jednostka dla |
Dystrybucja według gotowego ustawienia.
Parametry | Typ | Opis |
---|---|---|
presetName |
String |
Wymagany. Nazwa gotowego ustawienia do wygenerowania, pochodząca z atrybutu |
Dystrybucja bez parametrów.
Parametry | Typ | Opis |
---|---|---|
Brak właściwości |
Przykłady
Podaj mi 1 szklanka wody.
{
"command": "action.devices.commands.Dispense",
"params": {
"amount": 1,
"unit": "CUPS",
"item": "Water"
}
}
Napełnij miskę z wodą dla kota.
{
"command": "action.devices.commands.Dispense",
"params": {
"presetName": "cat_bowl"
}
}
Dystrybutor 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, na którym zostało za mało środków.dispenseAmountAboveLimit
: użytkownik próbował wydać kwotę, która przekracza limity tego, co może poprosić w pojedynczym zapytaniu. Ma to zapobiec przypadkowemu podaniu nadmiernej ilości (np. 500 tys. szklanki wody).dispenseAmountBelowLimit
: użytkownik próbował wydać z urządzenia produkt lub ilość, która jest poniżej minimalnej wartości.dispenseFractionalAmountNotSupported
: użytkownik próbował wydać część produktu, którego urządzenie nie może podzielić (na przykład liczone produkty, takie jak psie przysmaki, mogą nie być dzielone przez urządzenie).genericDispenseNotSupported
: użytkownik próbuje wydozować produkt z urządzenia bez określenia produktu lub gotowych ustawień, ale urządzenie nie obsługuje takiej funkcji (np. domyślna czynność wydozywania).dispenseUnitNotSupported
: użytkownik próbuje wygenerować dane z urządzenia, które nie jest obsługiwane w danym przypadku (na przykład produkt nie został dostarczony, więcsupported_unit validation
został pominięty).dispenseFractionalUnitNotSupported
: użytkownik próbował wydoić ułamkową ilość produktu, który można podzielić, ale nie w przypadku określonej jednostki (np. kran może wydobyć 2,7 kubka, ale nie 2,7 ml).deviceCurrentlyDispensing
: użytkownik próbuje wydobyć produkt, ale urządzenie już go wydobywa.deviceClogged
: użytkownik próbuje wydać produkt, ale urządzenie jest zatkane.deviceBusy
: użytkownik próbuje wydobyć produkt, ale urządzenie jest zajęte (ogólne).
WYJĄTKI W PRZYPADKU URZĄDZEŃ
Te wyjątki można zgłosić jako exceptionCode
w obiekcie states
w odpowiedzi:
amountRemainingLow
– użytkownik pobiera produkt lub ilość z urządzenia, co powoduje, że ilość produktu w urządzeniu jest na niskim poziomie. To Ty decydujesz, co jest „niskim” poziomem.userNeedsToWait
– gdy użytkownik musi poczekać, aż żądany produkt lub ilość zostaną wydane (np. kran wypuszcza gorącą wodę, ale użytkownik musi poczekać, aż woda się nagrzeje, zanim zacznie wypływać).