Die Key Value API bietet neue APIs für die benutzerdefinierte Datenverwaltung für Geräte-, Raum- und Automatisierungsobjekte. Der Lebenszyklus der benutzerdefinierten Daten ist streng auf den Lebenszyklus des zugehörigen Objekts beschränkt. Benutzerdefinierte Daten wie „Lucys Zimmer“, die mit einem Room-Objekt verknüpft sind, werden beispielsweise automatisch mit dem Room-Objekt gelöscht, verschoben oder übertragen (über Strukturen hinweg).
Die Kotlin-API-Änderung bezieht sich auf die hasCustomAppData-Schnittstelle und bietet Erweiterungen für die Objekte, zu denen die benutzerdefinierten Anwendungsdaten gehören. Sie umfasst die Standardfunktionen zum Erstellen, Lesen, Aktualisieren und Löschen (CRUD).
Gerätebeispiel
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)
Beispiel für ein Zimmer
val room = homeClient.rooms().findRoomByName(roomName)
room.updateValue("nickname", "Lucy's Room")
val response = room.getValue("nickname")
room.deleteValue("nickname")
Beispiel für die Automatisierung
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)
Einschränkungen
- Der Schlüssel muss ein String mit gültigen UTF-8-Zeichen und einer maximalen Länge von 128 Zeichen sein. Der Schlüssel kann ein leerer String sein.
- Der Wert muss ein String mit gültigen UTF‑8-Zeichen und einer maximalen Länge von 1.024 Zeichen sein. Der Wert kann ein leerer String sein.
- Jedes Objekt kann 10 Zeilen mit Schlüssel/Wert-Paaren haben.