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