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

Google Home के ईकोसिस्टम में मौजूद डिवाइसों को Cloud-to-cloud, Matter या दोनों का इस्तेमाल करके लागू किया जा सकता है. कुछ डिवाइस टाइप, दूसरों की तुलना में ज़्यादा जटिल होते हैं. साथ ही, Home API का इस्तेमाल करके उन्हें डेवलप करना मुश्किल होता है. ऐसा इसलिए, ताकि वे नेटवर्क में मौजूद अन्य डिवाइसों के साथ आसानी से इंटरफ़ेस कर सकें.

इनमें से कुछ डिवाइस टाइप को लागू करने में एक समस्या यह है कि डिवाइसों में अलग-अलग तरह की विशेषताएं हो सकती हैं. सभी कॉम्बिनेशन, एक जैसे नतीजे नहीं देते. साथ ही, Cloud-to-cloud डेटा मॉडल, Matter डेटा मॉडल से मैप होता है. हालांकि, ऐसा हमेशा एक-से-एक तरीके से नहीं होता. Android पर डेटा मॉडल देखें. इसमें डेटा मॉडल और उनकी मैपिंग के बारे में ज़्यादा जानकारी दी गई है.

इस पेज पर, अलग-अलग डिवाइसों के डेटा मॉडल के बारे में ज़्यादा जानकारी दी गई है. साथ ही, यह भी बताया गया है कि इन डिवाइस टाइप को लागू करने के लिए, किन एट्रिब्यूट का इस्तेमाल करना चाहिए.

अवन

ओवन (OvenDevice) डिवाइस टाइप और इसकी कॉम्पोनेंट ट्रेट को लागू करना, अन्य डिवाइस टाइप की तुलना में आसान नहीं है. Matter में ओवन को लागू करने के कई तरीके हैं. हालांकि, सभी तरीकों से अन्य डिवाइसों या Google Home के इकोसिस्टम के साथ आसानी से इंटरऑपरेट नहीं किया जा सकता.

ट्रेट मैपिंग

हमारा सुझाव है कि Matter ओवन डिवाइस को Oven Mode और On Off क्लस्टर का इस्तेमाल करके लागू करने के बजाय, Oven Cavity Operational State क्लस्टर का इस्तेमाल करें. इस क्लस्टर को 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
}

ऑटोमेशन में ओवन का इस्तेमाल करना

ओवन के लिए ऑटोमेशन बनाते समय, ओवन कैविटी की ऑपरेशनल स्थिति वाले क्लस्टर का इस्तेमाल करें. साथ ही, यह जानने के लिए कि ओवन किस साइकल में है, 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
}

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