iOS के लिए Home API, Google Home के पूरे इकोसिस्टम में मौजूद सभी डिवाइसों को एक ही डेटा मॉडल में दिखाता है. यह डेटा मॉडल, Google Nest या तीसरे पक्ष की कंपनियों के सभी डिवाइसों के साथ काम करता है. इससे कोई फ़र्क़ नहीं पड़ता कि डिवाइस में स्मार्ट होम टेक्नोलॉजी (जैसे, Matter या Cloud-to-cloud) कौनसी है. साथ ही, यह smart home और मोबाइल ऐप्लिकेशन डेवलपर, दोनों के लिए एक सामान्य एपीआई उपलब्ध कराता है, ताकि वे लोगों के लिए बेहतर अनुभव तैयार कर सकें.
Device types
Home API में दिखाए गए डिवाइस टाइप, Matter और Cloud-to-cloud डेटा मॉडल का यूनिफ़िकेशन हैं. कुछ डिवाइसों की जानकारी सीधे Matter से मिलती है, कुछ Matter के डिवाइस टाइप का एक्सटेंशन होती है, और कुछ Cloud-to-cloud से मिलती है.
डिवाइस टाइप में ऐसी ट्रेट होती हैं जिनका इस्तेमाल डिवाइसों को कंट्रोल और मैनेज करने के लिए किया जाता है. डिवाइस टाइप की तरह, एट्रिब्यूट भी Matter क्लस्टर और Cloud-to-cloud एट्रिब्यूट से लिए जाते हैं. इन्हें एक सामान्य फ़ॉर्मैट में दिखाया जाता है, जो Matter क्लस्टर के फ़ॉर्मैट से मिलता-जुलता होता है. Home APIs में, Matter-डिराइव की गई ट्रेट को ट्रेट कहा जाता है, न कि क्लस्टर.
इसलिए, Home API में डिवाइस टाइप और ट्रेट को Matter-फ़र्स्ट के तौर पर डिज़ाइन किया गया है. Cloud-to-cloud डिवाइस टाइप या विशेषता को Cloud-to-cloud ऐनलॉग की जगह प्राथमिकता दी जाती है.Matter
डिवाइस टाइप और उनकी विशेषताओं की सूची देखने के लिए, iOS पर काम करने वाले डिवाइस टाइप देखें.
विशेषताएं
होम एपीआई में इस्तेमाल करने के लिए, लक्षणों के Swift वर्शन जनरेट किए जाते हैं. इनमें होम एपीआई के लिए खास तौर पर बनाई गई अतिरिक्त सुविधाएं होती हैं. ये सुविधाएं, Matter या Cloud-to-cloud में नहीं मिलती हैं. उदाहरण के लिए, हर लक्षण में यह जांच करने के तरीके होते हैं कि कोई लक्षण किसी एट्रिब्यूट या कमांड के साथ काम करता है या नहीं. इससे यह तय करने में मदद मिलती है कि किसी उपयोगकर्ता के डिवाइस पर, स्थिति को पढ़ा जा सकता है या कुछ कार्रवाइयां की जा सकती हैं या नहीं. ऐसा इसलिए, क्योंकि एक ही तरह के डिवाइसों में सभी सुविधाएं एक जैसी नहीं होती हैं.
ट्रेट और डिवाइस टाइप इंपोर्ट करने के लिए, अपने ऐप्लिकेशन में GoogleHomeTypes मॉड्यूल इंपोर्ट करें:
import GoogleHomeTypes
इसके अलावा, कोड को छोटा करने और नेमस्पेस को दोहराने से बचने के लिए, typealias का इस्तेमाल किया जा सकता है. इसका इस्तेमाल, ट्रेट और डिवाइस टाइप के नामों के लिए किया जाता है:
import GoogleHomeTypes
typealias OpenCloseTrait = Google.OpenCloseTrait
typealias OnOffTrait = Matter.OnOffTrait
typealias FanDevice = Matter.FanDeviceType
ज़्यादातर ट्रेट, ऑटोमेशन के साथ इस्तेमाल की जा सकती हैं. हालांकि, कुछ ट्रेट सिर्फ़ ऑटोमेशन के लिए उपलब्ध हैं. ज़्यादा जानकारी के लिए, Android पर Automation API की सुविधा के साथ काम करने वाले डिवाइसों की सूची देखें.
डिवाइस टाइप कंपोज़िशन
Home APIs, डेटा मॉडल में ज़्यादातर Matter ऐप्लिकेशन क्लस्टर को एट्रिब्यूट के तौर पर इस्तेमाल करते हैं. डिवाइस कंट्रोल या स्थितियों से जुड़ी नहीं होने वाली और असली उपयोगकर्ताओं के लिए किसी काम की नहीं होने वाली विशेषताओं को Home API के ज़रिए ऐक्सेस नहीं किया जा सकता. जैसे, बाइंडिंग और ग्रुप.
Cloud-to-cloud स्मार्ट होम की सुविधाओं से मिली ट्रेट के नाम, आम तौर पर Cloud-to-cloud और Home APIs के बीच एक जैसे होते हैं. जैसे, OpenCloseTrait के उदाहरण में दिखाया गया है. अन्य एट्रिब्यूट को Matter एट्रिब्यूट के एक्सटेंशन के तौर पर दिखाया जाता है. इन्हें Matter मैन्युफ़ैक्चरर के हिसाब से बनाए गए एक्सटेंशन का इस्तेमाल करके बनाया जाता है. ये ट्रेट, smart home ट्रेट के लिए अंतर को कम करती हैं. इस ट्रेट के फ़ंक्शन, Matter SDK टूल और Google Home के इकोसिस्टम के बीच बांटे जाते हैं. इसका एक उदाहरण Google* डिवाइस टाइप हैं. ये Cloud-to-cloud से आते हैं, लेकिन इनमें अब तक Matter के ऐनलॉग नहीं हैं.
डिवाइस टाइप में, एक या दोनों सोर्स, Matter या Cloud-to-cloud से मिले ट्रेड्स शामिल होते हैं.
उदाहरण के लिए, FanDeviceType में ये दोनों शामिल हैं और इसमें तीन विशेषताएं हैं:
IdentifyTraitMatter ट्रेट, MatterIdentifyTraitकी सभी सुविधाएं उपलब्ध कराती है.FanControlTraitMatter ट्रेट, MatterFanControlTraitकी सभी सुविधाएं उपलब्ध कराती है.ExtendedFanControlTraitGoogle की विशेषता, Google smart homeFanSpeedTraitकी वे सभी सुविधाएं उपलब्ध कराती है जोFanControlTraitMatter की विशेषता में शामिल नहीं हैं.
इस तरह की ट्रेट कंपोज़िशन, डिवाइस टाइप की पूरी फ़ंक्शनैलिटी के लिए एक फ़्लेक्सिबल मॉडल उपलब्ध कराती है. साथ ही, यह smart home के डेटा मॉडल को ऐब्स्ट्रैक्ट करती है.