Key Value API

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 строк пар "ключ-значение".