Схема распределения умного дома
action.devices.traits.Dispense
— эта черта относится к устройствам, поддерживающим выдачу определенного количества одного или нескольких физических предметов.
Эта черта также поддерживает выдачу предустановки, например, в виде «миски для кошачьего корма» для кормушки для домашних животных или «стакана» для крана.
АТРИБУТЫ устройства
Устройства с этой чертой могут сообщать о следующих атрибутах как часть операции SYNC
. Дополнительные сведения об обработке намерений SYNC
см. в разделе Выполнение намерений .
Атрибуты | Тип | Описание |
---|---|---|
supportedDispenseItems | Множество | Содержит информацию обо всех предметах, которые может выдавать устройство. |
[ item, ... ] | Объект | Незаменимая вещь. |
item_name | Нить | Необходимый. Внутреннее имя выдаваемого товара. Это может быть неудобным для пользователя и общим для всех языков. |
item_name_synonyms | Множество | Необходимый. Названия синонимов для выданных на каждом поддерживаемом языке. |
[ item, ... ] | Объект | Названия синонимов для выдаваемого предмета на данном языке. |
synonyms | Множество | Необходимый. Названия-синонимы для выдаваемого предмета. Синомимы должны включать формы как единственного, так и множественного числа, если это применимо. Первая строка в этом списке должна быть множественной формой элемента на этом языке. |
[ item, ... ] | Нить | Синоним имени |
lang | Нить | Необходимый. Код языка (ISO 639-1). См. поддерживаемые языки . |
supported_units | Множество | Необходимый. Набор единиц, которые устройство поддерживает для этого элемента. |
[ item, ... ] | Нить | Поддерживаемые единицы. Поддерживаемые значения:
|
default_portion | Объект | Необходимый. Типичное количество предмета, которое может быть выдано. |
amount | Целое число | Необходимый. Выданная сумма. |
unit | Нить | Необходимый. Раздаточное устройство. |
supportedDispensePresets | Множество | Предустановки, поддерживаемые устройством. |
[ item, ... ] | Объект | Предустановка. |
preset_name | Нить | Необходимый. Внутреннее имя пресета. Это имя может быть неудобным для пользователя и используется на всех языках. |
preset_name_synonyms | Множество | Необходимый. Названия синонимов предустановок на каждом поддерживаемом языке. |
[ item, ... ] | Объект | Названия синонимов пресетов на заданном языке. |
synonyms | Множество | Необходимый. Названия-синонимы для предустановки. Синонимы должны включать формы как единственного, так и множественного числа, если это применимо. |
[ item, ... ] | Нить | Синоним имени |
lang | Нить | Необходимый. Код языка (ISO 639-1). См. поддерживаемые языки . |
Примеры
Диспенсер для воды, который поддерживает блоки для жидкостей с предустановками.
{ "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" ] } ] } ] }
Диспенсер для корма без предустановок.
{ "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" } } ] }
СОСТОЯНИЯ устройства
Сущности с этим признаком могут сообщать о следующих состояниях как часть операции QUERY
. Дополнительные сведения об обработке намерений QUERY
см. в разделе Выполнение намерений .
состояния | Тип | Описание |
---|---|---|
dispenseItems | Множество | Состояния предметов, которые может выдавать устройство. |
[ item, ... ] | Объект | Состояние данного элемента. |
itemName | Нить | Имя элемента из атрибута |
amountRemaining | Объект | Количество этого элемента, оставшегося в устройстве. Если устройство в настоящее время выдает, это сообщает оставшееся количество или количество, которое будет после того, как устройство закончит выдачу. |
amount | Число | Оставшееся количество |
unit | Нить | Единица для |
amountLastDispensed | Объект | Количество этого предмета, которое устройство выдало последним. Если устройство в настоящее время выдает, это должно сообщать количество, которое оно выдало до текущего количества выдачи. |
amount | Число | Оставшееся количество |
unit | Нить | Единица для |
isCurrentlyDispensing | логический | Указывает, выдает ли устройство этот элемент в данный момент. |
Примеры
Сколько лакомств для собак осталось в моем дозаторе?
{ "dispenseItems": [ { "itemName": "Dog treats", "amountRemaining": { "amount": 83, "unit": "NO_UNITS" }, "amountLastDispensed": { "amount": 2, "unit": "NO_UNITS" }, "isCurrentlyDispensing": false } ] }
Сколько воды осталось в моем кулере для воды?
{ "dispenseItems": [ { "itemName": "Water", "amountRemaining": { "amount": 6.2, "unit": "GALLONS" }, "amountLastDispensed": { "amount": 1, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
Сколько корма для кошек я давал раньше?
{ "dispenseItems": [ { "itemName": "cat_food", "amountRemaining": { "amount": 16.5, "unit": "CUPS" }, "amountLastDispensed": { "amount": 2.5, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
Из крана все еще идет вода?
{ "dispenseItems": [ { "itemName": "Water", "isCurrentlyDispensing": true } ] }
amountRemaining
и amountLastDispensed
необходимо сообщать только с использованием одной единицы измерения.
Несколько элементов могут быть предоставлены в массиве dispenseItems
. Имя каждого элемента должно быть уникальным и должно соответствовать элементу в атрибуте supportedDispenseItems
.
КОМАНДЫ устройства
Устройства с этой чертой могут отвечать на следующие команды как часть операции EXECUTE
. Дополнительные сведения об обработке намерений EXECUTE
см. в разделе Выполнение намерений .
action.devices.commands.Dispense
Раздать предметы.
Параметры
Полезная нагрузка содержит одно из следующего:
Распределить по количеству.
Параметры | Тип | Описание |
---|---|---|
item | Нить | Имя предмета для выдачи из атрибута |
amount | Число | Необходимый. Количество для дозирования. |
unit | Нить | Необходимый. Единица для |
Дозирование по предустановке.
Параметры | Тип | Описание |
---|---|---|
presetName | Нить | Необходимый. Имя предустановки для дозирования из атрибута |
Раздача без параметров.
Параметры | Тип | Описание |
---|---|---|
Нет свойств |
Примеры
Дайте мне 1 стакан воды.
{ "command": "action.devices.commands.Dispense", "params": { "amount": 1, "unit": "CUPS", "item": "Water" } }
Наполните кошачью миску водой.
{ "command": "action.devices.commands.Dispense", "params": { "presetName": "cat_bowl" } }
Раздать воду.
{ "command": "action.devices.commands.Dispense", "params": {} }
ОШИБКИ устройства
См. полный список ошибок и исключений .-
dispenseAmountRemainingExceeded
: пользователь попытался выдать предмет или сумму с устройства, на котором не осталось достаточного количества. -
dispenseAmountAboveLimit
: пользователь попытался выдать сумму, выходящую за пределы того, что он может запросить в одном запросе. Это необходимо для предотвращения случайного выдачи избыточного количества воды (например, 500 000 чашек воды). -
dispenseAmountBelowLimit
: пользователь попытался выдать предмет или количество с устройства меньше минимального количества, которое оно может выдать. -
dispenseFractionalAmountNotSupported
: пользователь попытался выдать дробное количество предмета, которое устройство не может разделить (например, исчисляемые предметы, такие как лакомства для собак, не могут быть разделены устройством). -
genericDispenseNotSupported
: пользователь пытается произвести выдачу с устройства без указания элемента или предустановки, но устройство не поддерживает такую функциональность (например, действие выдачи по умолчанию). -
dispenseUnitNotSupported
: пользователь пытается выдать с устройства единицу, не поддерживаемую для этого случая (например, элемент не предоставляется, поэтомуsupported_unit validation
была пропущена). -
dispenseFractionalUnitNotSupported
: пользователь попытался выдать дробное количество предмета, которое можно разделить, но не на указанную конкретную единицу (например, кран может выдавать 2,7 чашки, но не 2,7 мл). -
deviceCurrentlyDispensing
: пользователи пытаются выдать предмет, но устройство уже выдает. -
deviceClogged
: пользователи пытаются выдать предмет, но устройство засорено. -
deviceBusy
: пользователи пытаются выдать предмет, но устройство занято (общий).
ИСКЛЮЧЕНИЯ ДЛЯ УСТРОЙСТВ
Об этих исключениях можно сообщить как exceptionCode
в объекте states
вашего ответа:
-
amountRemainingLow
— пользователь выдает предмет или количество из устройства, что снижает оставшееся количество до низкого уровня. Вы несете ответственность за определение того, что представляет собой «низкий» уровень. -
userNeedsToWait
— когда пользователю приходится ждать, прежде чем запрошенный предмет или количество сможет быть успешно выдано (например, из крана будет выдаваться горячая вода, но пользователю нужно дождаться нагрева воды, прежде чем она начнет выдачу).