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ą lang równą en.

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 równą en.

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:

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

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

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

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

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
    }
  ]
}

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

amount Number

Wymagany.

Kwota do wydania.

unit String

Wymagany.

Jednostka dla amount z atrybutu supported_units.

Wydawanie według gotowych ustawień.

Parametry Typ Opis
presetName String

Wymagany.

Nazwa gotowego ustawienia do wydania z atrybutu preset_name.

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 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).