Die Key Value API bietet neue benutzerdefinierte APIs für die Datenverwaltung für Geräte-, Raum- und Automatisierungsobjekte. Der Lebenszyklus der benutzerdefinierten Daten ist streng auf den Lebenszyklus des Objekts beschränkt, mit dem sie verknüpft sind. Beispielsweise werden benutzerdefinierte Daten (wie „Lucys Zimmer“), die mit einem Raumobjekt verknüpft sind, automatisch mit dem Raumobjekt gelöscht, verschoben oder (über Strukturen hinweg) übertragen.
Die Änderung der Kotlin API konzentriert sich auf die Schnittstelle hasCustomAppData 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 einen Raum
val room = homeClient.rooms().findRoomByName(roomName)
room.updateValue("nickname", "Lucy's Room")
val response = room.getValue("nickname")
room.deleteValue("nickname")
Beispiel für eine 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 sein. Der Wert kann ein leerer String sein.
- Jedes Objekt kann 10 Zeilen mit Schlüssel/Wert-Paaren haben.