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