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 validation
został 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).