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:

CENTIMETERS
CUPS
DECILITERS
FLUID_OUNCES
GALLONS
GRAMS
KILOGRAMS
LITERS
MILLIGRAMS
MILLILITERS
MILLIMETERS
NO_UNITS
OUNCES
PINCH
PINTS
PORTION
POUNDS
QUARTS
TABLESPOONS
TEASPOONS
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 item_name.

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 amount z atrybutu supported_units.

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 amount z atrybutu supported_units.

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 amountRemainingamountLastDispensed 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 item_name.

amount Number

Wymagany.

Ilość do wydania.

unit String

Wymagany.

Jednostka dla amount z atrybutu supported_units.

Dystrybucja według gotowego ustawienia.

Parametry Typ Opis
presetName String

Wymagany.

Nazwa gotowego ustawienia do wygenerowania, pochodząca z atrybutu preset_name.

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ęc supported_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ć).