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