Google Home के इकोसिस्टम में मौजूद डिवाइसों को Cloud-to-cloud, Matter या दोनों का इस्तेमाल करके लागू किया जा सकता है. कुछ डिवाइस टाइप, दूसरों की तुलना में ज़्यादा जटिल होते हैं. साथ ही, Home API का इस्तेमाल करके उन्हें इस तरह से डेवलप करना मुश्किल होता है कि वे इकोसिस्टम में मौजूद अन्य डिवाइसों के साथ आसानी से इंटरफ़ेस कर सकें.
इनमें से कुछ डिवाइस टाइप को लागू करने में एक समस्या यह है कि डिवाइसों में अलग-अलग तरह की विशेषताएं हो सकती हैं. सभी कॉम्बिनेशन, एक जैसे नतीजे नहीं देते. साथ ही, Cloud-to-cloud डेटा मॉडल, Matter डेटा मॉडल से मैप होता है. हालांकि, ऐसा हमेशा साफ़ तौर पर और एक-से-एक के हिसाब से नहीं होता. Android पर डेटा मॉडल देखें. इसमें डेटा मॉडल और उनकी मैपिंग के बारे में ज़्यादा जानकारी दी गई है.
इस पेज पर, अलग-अलग डिवाइसों के डेटा मॉडल के बारे में ज़्यादा जानकारी दी गई है. साथ ही, यह भी बताया गया है कि इन डिवाइस टाइप को लागू करने के लिए, किन विशेषताओं का इस्तेमाल करना चाहिए.
अवन
ओवन (OvenDevice) डिवाइस टाइप और इसकी कॉम्पोनेंट की विशेषताओं को लागू करना, अन्य डिवाइस टाइप की तुलना में आसान नहीं है. Matter में ओवन को लागू करने के कई तरीके हैं. हालांकि, सभी तरीकों से अन्य डिवाइसों या Google Home के ईकोसिस्टम के साथ आसानी से इंटरऑपरेट नहीं किया जा सकता.
ट्रेट मैपिंग
हमारा सुझाव है कि Matter ओवन डिवाइस के लिए, ओवन मोड और चालू/बंद क्लस्टर का इस्तेमाल करने के बजाय, ओवन कैविटी ऑपरेशनल स्टेट क्लस्टर का इस्तेमाल करें. इस क्लस्टर को Home API में OvenCavityOperationalState ट्रेट से दिखाया जाता है. साथ ही, यह Cloud-to-cloud
RunCycle ट्रेट से मैप होता है. यह "प्री-हीटिंग", "प्री-हीटेड", और "कूलिंग डाउन" जैसे फ़ेज़ तय करता है.
| Home APIs | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
Cloud-to-cloud ओवन के डेटा मॉडल की कुछ सीमाएं हैं. Cloud-to-cloud ओवन डेटा मॉडल में, सिर्फ़ एक चेंबर की अनुमति होती है. साथ ही, इसमें सिर्फ़ एक RunCycle होता है. इसके उलट, Matter में मल्टी-चैंबर ओवन को डिवाइस एंडपॉइंट के तौर पर मॉडल किया जाता है. इसमें हर चैंबर के लिए, ओवन कैविटी की ऑपरेशनल स्टेट का क्लस्टर होता है.
कुछ ओवन डिवाइसों के लिए, ऐसा हो सकता है कि फ़ेज़ की सूची को रनटाइम पर बदलना सही हो. उदाहरण के लिए, पहले से गर्म होने की सुविधा वाले ओवन के लिए, गर्म होने से पहले के फ़ेज़ में फ़ेज़ की सूची में अलग-अलग एंट्री हो सकती हैं. ये एंट्री, गर्म होने या ठंडा होने के फ़ेज़ के दौरान अलग हो सकती हैं.
लागू करने का सुझाव
पिछले सेक्शन में बताया गया है कि Matter ओवन को Oven Cavity Operational State क्लस्टर लागू करना चाहिए. इसे Home API में OvenCavityOperationalState ट्रेट के तौर पर मॉडल किया गया है.
बेहतर नतीजों के लिए, पक्का करें कि आपके Cloud-to-cloud ओवन डिवाइस में RunCycle ट्रेट लागू हो और currentRunCycle एट्रिब्यूट सेट करके, मौजूदा स्थिति पब्लिश की गई हो. इस एट्रिब्यूट को Home API के ज़रिए, OvenCavityOperationalState.phaseList और OvenCavityOperationalState.currentPhase एट्रिब्यूट के ज़रिए देखा जा सकता है.
ओवन डिवाइस को भी, रन साइकल की सूचना पब्लिश करनी चाहिए. इसके लिए, उसे RunCycle के priority, status, और currentCycleRemainingTime एट्रिब्यूट अपडेट करने होंगे. नीचे दिए गए उदाहरण से, OperationalState.OperationCompletion इवेंट भेजा जाता है. इसका इस्तेमाल यह बताने के लिए किया जा सकता है कि ओवन, 'प्री-हीटिंग' साइकल से 'प्री-हीटेड' साइकल में बदल गया है:
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
ऑटोमेशन में ओवन का इस्तेमाल करना
Oven Cavity Operational State क्लस्टर का इस्तेमाल करके लागू किए गए ओवन के लिए ऑटोमेशन बनाते समय, currentPhase एट्रिब्यूट का रेफ़रंस दें. इससे यह पता चलेगा कि ओवन किस साइकल में है:
sequential {
val starterNode =
starter<_>(oven, OvenDevice, OvenCavityOperationalState /* Or OperationalState */)
condition {
expression = starterNode.phaseList[operationalState.currentPhase.toUInt()] equals "pre-heated"
}
action(speaker, SpeakerDevice) {
command(AssistantBroadcast.broadcast("Oven Cycle Complete"))
}
// Additional actions here as needed
}
पूरे उदाहरण के लिए, ओवन के चुने गए तापमान पर पहुंचने पर, लाइटें चालू और बंद करो और सूचना दो देखें.