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

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

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

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

अवन

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

प्रॉपर्टी मैपिंग

हमारा सुझाव है कि Matter अवन डिवाइस को लागू करने के लिए, अवन मोड और ऑन/ऑफ़ क्लस्टर का इस्तेमाल न करें. इसके बजाय, अवन कैविटी ऑपरेशनल स्टेट क्लस्टर का इस्तेमाल करें. इस क्लस्टर को Home APIs में, OvenCavityOperationalState प्रॉपर्टी के तौर पर दिखाया जाता है. यह Cloud-to-cloud RunCycle प्रॉपर्टी से मैप होता है. यह "प्री-हीटिंग", "प्री-हीटेड", और "कूलिंग डाउन" जैसे फ़ेज़ तय करता है.

Home APIs Cloud-to-cloud
OvenCavityOperationalState RunCycle

Cloud-to-cloud अवन डेटा मॉडल की कुछ सीमाएं हैं. अवन डेटा मॉडल में, सिर्फ़ एक चेंबर और एक RunCycle की अनुमति होती है.Cloud-to-cloud इसके उलट, Matter में एक से ज़्यादा चेंबर वाले अवन को, हर चेंबर के लिए अवन कैविटी ऑपरेशनल स्टेट क्लस्टर वाले डिवाइस एंडपॉइंट के तौर पर मॉडल किया जाता है.

कुछ अवन डिवाइसों के लिए, रनटाइम के दौरान फ़ेज़ की सूची में बदलाव करना सही हो सकता है. उदाहरण के लिए, प्रीहीटिंग की सुविधा वाले अवन में, प्रीहीटिंग फ़ेज़ के दौरान फ़ेज़ की सूची में अलग-अलग एंट्री हो सकती हैं. वहीं, हीटिंग या कूलडाउन फ़ेज़ के दौरान अलग एंट्री हो सकती हैं.

जैसा कि पिछले सेक्शन में बताया गया है, Matter अवन को लागू करने के लिए, अवन कैविटी ऑपरेशनल स्टेट क्लस्टर का इस्तेमाल करना चाहिए. इसे Home APIs में, OvenCavityOperationalState प्रॉपर्टी के तौर पर मॉडल किया जाता है.

सबसे अच्छे नतीजे पाने के लिए, पक्का करें कि आपके Cloud-to-cloud अवन डिवाइस में RunCycle प्रॉपर्टी लागू हो. साथ ही, मौजूदा स्थिति पब्लिश करने के लिए, currentRunCycle एट्रिब्यूट सेट करें. एट्रिब्यूट के ज़रिए, Home APIs इस एट्रिब्यूट को देख सकते हैं.OvenCavityOperationalState.phaseListOvenCavityOperationalState.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
}

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