Android पर इंटरऑपरेबिलिटी

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
}

पूरे उदाहरण के लिए, ओवन के चुने गए तापमान पर पहुंचने पर, लाइटें चालू और बंद करो और सूचना दो देखें.