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 trait के तौर पर मॉडल किया गया है.
बेहतर नतीजे पाने के लिए, पक्का करें कि आपके 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
}
पूरे उदाहरण के लिए, ओवन के चुने गए तापमान पर पहुंचने पर, लाइटें चालू और बंद करो और सूचना दो देखें.