Key Value API, डिवाइस, कमरे, और ऑटोमेशन ऑब्जेक्ट के लिए नए कस्टम डेटा मैनेजमेंट एपीआई उपलब्ध कराता है. कस्टम डेटा का लाइफ़साइकल, उस ऑब्जेक्ट के लाइफ़साइकल से जुड़ा होता है जिससे वह जुड़ा होता है. उदाहरण के लिए, Room ऑब्जेक्ट से जुड़ा कस्टम डेटा (जैसे, "लूसी का कमरा") Room ऑब्जेक्ट के साथ अपने-आप मिट जाएगा, दूसरी जगह ले जाया जाएगा या ट्रांसफ़र (अलग-अलग स्ट्रक्चर में) हो जाएगा.
Kotlin API में बदलाव, hasCustomAppData इंटरफ़ेस पर आधारित है. यह कस्टम ऐप्लिकेशन डेटा से जुड़े ऑब्जेक्ट के लिए एक्सटेंशन उपलब्ध कराता है. इसमें स्टैंडर्ड क्रिएट, रीड, अपडेट, और डिलीट (सीआरयूडी) फ़ंक्शन शामिल हैं.
डिवाइस का उदाहरण
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)
Room का उदाहरण
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 लाइनें हो सकती हैं.