Схема распределения умного дома
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
— когда пользователю приходится ждать, прежде чем запрошенный элемент или сумма будет успешно выдана (например, кран будет подавать горячую воду, но пользователю нужно дождаться, пока вода нагреется, прежде чем она начнет подачу).