Key Value API предоставляет новые API для управления пользовательскими данными объектов Device, Room и Automation. Жизненный цикл пользовательских данных строго ограничен жизненным циклом объекта, с которым они связаны. Например, пользовательские данные (такие как "Комната Люси"), связанные с объектом "Комната", будут автоматически удалены, перемещены или перенесены (между структурами) вместе с объектом "Комната".
Изменение Kotlin API сосредоточено на интерфейсе hasCustomAppData и предоставляет расширения для объектов, которым принадлежат данные пользовательского приложения, а также включает стандартные функции создания, чтения, обновления и удаления (CRUD).
Пример для разных устройств
val device = homeClient.devicesWithLogging().findDeviceByName(deviceName)
var response = device.getValue(key)
println("Before: $response")
device.updateValue(key, value)
response = device.getValue(key)
println("After: $response")
device.deleteValue(key)
Пример номера
val room = homeClient.rooms().findRoomByName(roomName)
room.updateValue("nickname", "Lucy's Room")
val response = room.getValue("nickname")
room.deleteValue("nickname")
Пример автоматизации
val automation = homeClient.automations().findAutomationByName(automationName)
var response = automation.getValue(key)
println("Before: $response")
automation.updateValue(key, value)
response = automation.getValue(key)
println("After: $response")
automation.deleteValue(key)
Ограничения
- Ключ должен быть строкой допустимых символов UTF-8 длиной не более 128 символов. Ключ может быть пустой строкой.
- Значение должно быть строкой допустимых символов UTF-8 длиной не более 1024. Значением может быть пустая строка.
- Каждый объект может содержать 10 строк пар "ключ-значение".