Google Home नेटवर्क में शामिल डिवाइसों को Cloud-to-cloud, Matter या दोनों का इस्तेमाल करके लागू किया जा सकता है. कुछ डिवाइसों के टाइप, दूसरे डिवाइसों के मुकाबले ज़्यादा जटिल होते हैं. साथ ही, Home के एपीआई का इस्तेमाल करके, इन्हें ऐसे डिवाइस में बदलना मुश्किल होता है जो इकोसिस्टम में मौजूद दूसरे डिवाइसों के साथ आसानी से इंटरफ़ेस कर सके.
इनमें से कुछ डिवाइस टाइप को लागू करने में एक समस्या यह है कि डिवाइसों को अलग-अलग तरह के ट्रैट के कॉम्बिनेशन से बनाया जा सकता है. सभी कॉम्बिनेशन एक जैसे काम नहीं करते. साथ ही, Cloud-to-cloud डेटा मॉडल, Matter डेटा मॉडल से मैप होता है. हालांकि, यह मैपिंग हमेशा एक-एक के हिसाब से नहीं होती. डेटा मॉडल देखें. इसमें डेटा मॉडल और उनकी मैपिंग के बारे में ज़्यादा जानकारी दी गई है.
इस पेज पर, अलग-अलग डिवाइसों के डेटा मॉडल के एक-दूसरे से मैप होने के बारे में ज़्यादा जानकारी दी गई है. साथ ही, इस पेज पर यह भी बताया गया है कि अलग-अलग तरह के डिवाइसों को लागू करने के लिए, किन ट्रैट का इस्तेमाल करना चाहिए.
अवन
ओवन (OvenDevice
) डिवाइस टाइप और उसके कॉम्पोनेंट के ट्रैट को लागू करना, दूसरे डिवाइस टाइप की तुलना में आसान नहीं है. Matter में ओवन को लागू करने के कई तरीके हैं. हालांकि, सभी तरीकों से अन्य डिवाइसों या Google Home के साथ आसानी से इंटरऑपरेट नहीं किया जा सकता.
ट्रैट मैपिंग
हमारा सुझाव है कि आप Matter ओवन डिवाइस को लागू करने के लिए, ओवन मोड और चालू/बंद क्लस्टर का इस्तेमाल करने के बजाय, ओवन के कैविटी के ऑपरेशनल स्टेटस क्लस्टर का इस्तेमाल करें. इस क्लस्टर को Home के एपीआई में, OvenCavityOperationalState
ट्रीट की मदद से दिखाया जाता है. साथ ही, यह Cloud-to-cloud
RunCycle
ट्रीट से मैप होता है. इसमें "पहले से गर्म करना", "पहले से गर्म किया गया", और "ठंडा करना" जैसे फ़ेज़ तय किए जाते हैं.
Home APIs | Cloud-to-cloud |
---|---|
OvenCavityOperationalState
|
RunCycle
|
Cloud-to-cloud ओवन डेटा मॉडल की कुछ सीमाएं हैं. Cloud-to-cloud ओवन डेटा मॉडल में सिर्फ़ एक चैंबर की अनुमति है, जिसमें एक RunCycle
है. इसके उलट, Matter एक से ज़्यादा चेंबर वाले ओवन को डिवाइस एंडपॉइंट के तौर पर मॉडल करता है. इसमें हर चेंबर के लिए, ओवन के कैविटी के ऑपरेशनल स्टेटस का क्लस्टर होता है.
कुछ ओवन डिवाइसों के लिए, रनटाइम के दौरान फ़ेज़ की सूची में बदलाव करना सही हो सकता है. उदाहरण के लिए, पहले से गरम करने की सुविधा वाले ओवन में, पहले से गरम करने के दौरान, फ़ेज़ की सूची में अलग-अलग एंट्री हो सकती हैं. ये एंट्री, गरम करने या ठंडा करने के दौरान की गई एंट्री से अलग हो सकती हैं.
लागू करने का सुझाव
पिछले सेक्शन में बताया गया था कि Matter ओवन के लागू होने पर, ओवन के कैविटी के ऑपरेशनल स्टेटस क्लस्टर को लागू करना चाहिए. इसे 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
}
ऑटोमेशन में ओवन का इस्तेमाल करना
ओवन के कैविटी ऑपरेशनल स्टेटस क्लस्टर का इस्तेमाल करके, ओवन के लिए ऑटोमेशन बनाते समय, 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
}
पूरा उदाहरण देखने के लिए, ओवन के चुने गए तापमान पर पहुंचने पर, लाइटें ब्लिंक करें और सूचना दें लेख पढ़ें.