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

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

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

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

अवन

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

ट्रेट मैपिंग

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

Home APIs Cloud-to-cloud
OvenCavityOperationalState RunCycle

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

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

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

बेहतर नतीजों के लिए, पक्का करें कि आपके Cloud-to-cloud ओवन डिवाइस में RunCycle ट्रेट लागू हो और currentRunCycle एट्रिब्यूट सेट करके, मौजूदा स्थिति पब्लिश की गई हो. इस एट्रिब्यूट को Home API के ज़रिए, OvenCavityOperationalStateTrait.phaseList और OvenCavityOperationalStateTrait.currentPhase एट्रिब्यूट के ज़रिए देखा जा सकता है.

ओवन डिवाइस को भी, रन साइकल की सूचना पब्लिश करनी चाहिए. इसके लिए, उसे RunCycle के priority, status, और currentCycleRemainingTime एट्रिब्यूट अपडेट करने होंगे. नीचे दिए गए उदाहरण से, OperationalStateTrait.OperationCompletion इवेंट भेजा जाता है. इसका इस्तेमाल यह बताने के लिए किया जा सकता है कि ओवन, 'प्री-हीटिंग' साइकल से 'प्री-हीटेड' साइकल में बदल गया है:

{
  "currentRunCycle": [
    {
      "currentCycle": "pre-heating",
      "nextCycle": "pre-heated",
      "lang": "en"
    }
  ],
  "currentTotalRemainingTime": 1200,
  "currentCycleRemainingTime": 300
}

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

ओवन के लिए ऑटोमेशन बनाते समय, ओवन कैविटी की चालू स्थिति वाले क्लस्टर का इस्तेमाल करें. साथ ही, यह जानने के लिए कि ओवन किस साइकल में है, currentPhase एट्रिब्यूट का रेफ़रंस दें:

sequential {
  let operationalState = starter(
    oven,
    OvenDeviceType.self,
    OvenCavityOperationalStateTrait.self
  )
  operationalState
  condition {
    operationalState.phaseList[operationalState.currentPhase.toUInt()].equals("pre-heated")
  }
  for speaker in speakers {
    action(speaker, SpeakerDeviceType.self) {
      Google.AssistantBroadcastTrait.broadcast(msg: "Oven Cycle Complete")
    }
  }
}

पूरे उदाहरण के लिए, अगर ओवन का साइकल पूरा होने पर टीवी चालू है, तो लिविंग रूम की लाइटें टिमटिमाती हैं और स्मार्ट स्पीकर "ओवन का साइकल पूरा हुआ" ब्रॉडकास्ट करता है देखें.