Chime डिवाइस टाइप को स्टैंडर्ड Matter-आधारित Matter.ChimeTrait या Google के कस्टम वर्शन Google.ChimeTrait का इस्तेमाल करके लागू किया जा सकता है. Matter स्टैंडर्ड में बताई गई सुविधाओं के अलावा, यह बाहरी चाइम को भी सपोर्ट करता है.
चाइम डिवाइस में Matter.IdentifyTrait भी लागू किया जा सकता है. इससे चाइम डिवाइस को देखकर या उसकी आवाज़ सुनकर पहचाना जा सकता है.
किसी भी सुविधा का इस्तेमाल करने या एट्रिब्यूट अपडेट करने से पहले, हमेशा यह देख लें कि डिवाइस के लिए एट्रिब्यूट और कमांड काम करती हैं या नहीं. ज़्यादा जानकारी के लिए, iOSपर डिवाइसों को कंट्रोल करना लेख पढ़ें.
| Home APIs डिवाइस टाइप | विशेषताएं | Swift का सैंपल ऐप्लिकेशन | इस्तेमाल का उदाहरण |
|---|---|---|---|
|
चाइम
ऐसा डिवाइस जिसमें पहले से इंस्टॉल किए गए कई तरह के साउंड चलाए जा सकते हैं. आम तौर पर, इसका इस्तेमाल दरवाज़े की घंटी, ऑडियो डोरबेल या वीडियो डोरबेल के साथ किया जाता है. |
ज़रूरी ट्रेट matter ChimeTrait |
डोरबेल |
किसी डिवाइस के बारे में बुनियादी जानकारी पाना
iOS के लिए सैंपल ऐप्लिकेशन में लागू किया गया
BasicInformation
ट्रेट में, डिवाइस के लिए वेंडर का नाम, वेंडर आईडी, प्रॉडक्ट आईडी, प्रॉडक्ट का नाम (इसमें मॉडल की जानकारी शामिल है), और सॉफ़्टवेयर वर्शन जैसी जानकारी शामिल होती है:
let vendorName = basicInfoTrait.attributes.vendorName! let vendorID = basicInfoTrait.attributes.vendorID! let productID = basicInfoTrait.attributes.productID! let productName = basicInfoTrait.attributes.productName! let softwareVersion = basicInfoTrait.attributes.softwareVersion!
कई हिस्सों में बंटे वीडियो के लिए सहायता
घंटी में कई तरह के डिवाइस शामिल हो सकते हैं. जैसे, घंटी और स्पीकर (वैकल्पिक). इसके अलावा, कुछ घंटियों में Thread Border Router (TBR) भी शामिल होता है. ज़्यादा से ज़्यादा डिवाइसों के साथ काम करने के लिए, होम एपीआई ऐप्लिकेशन को इस तरह से लिखा जाना चाहिए कि वे मल्टीपार्ट घंटी डिवाइसों के साथ काम कर सकें. ज़्यादा जानकारी के लिए, एक से ज़्यादा पार्ट वाले डिवाइस देखें.
ऐप्लिकेशन में, मल्टीपार्ट चाइम वाले हर डिवाइस को एक ही टाइल से दिखाया जाना चाहिए. Chime डिवाइस, प्राइमरी डिवाइस होना चाहिए. साथ ही, बच्चे के स्पीकर को Chime डिवाइस के साथ कनेक्ट किया जाना चाहिए.
स्पीकर की आवाज़, Chime डिवाइस की प्राइमरी सेटिंग के तौर पर दिखनी चाहिए.
OnOff मैपिंग
अगर किसी डिवाइस में घंटी और स्पीकर, दोनों तरह की सुविधाएं हैं, तो कंट्रोल करने वाले ऐप्लिकेशन में मौजूद चालू/बंद करने के बटन को घंटी के Enabled एट्रिब्यूट पर मैप किया जाना चाहिए.
Matter डिवाइस लाइब्रेरी के स्पेसिफ़िकेशन के मुताबिक, Chime trait के Enabled एट्रिब्यूट को False पर सेट करने से, Chime की सुविधा बंद हो सकती है. इसके अलावा, यह एक ग्लोबल म्यूट स्विच की तरह काम कर सकता है. इससे सुनाई देने वाले और दिखने वाले सभी इंडिकेटर बंद हो जाते हैं.
ऑटोमेशन से जुड़ी सहायता
जैसा कि पहले बताया गया है, ChimeDeviceType में कई हिस्से हो सकते हैं. इसलिए, डेवलपर को सभी चाइम को मल्टीपार्ट डिवाइस के तौर पर इस्तेमाल करने का सुझाव दिया जाता है. साथ ही, चाइम का इस्तेमाल करने वाले ऑटोमेशन के मामले में भी यह सुझाव लागू होता है.
ऑटोमेशन स्टार्टर और कार्रवाइयों में, सूचनाओं का इस्तेमाल किया जा सकता है.
ऑटोमेशन में इस्तेमाल किए जाने वाले पैरंट Chime डिवाइस के किसी भी कॉम्पोनेंट पार्ट डिवाइस को AutomationPartPath का इस्तेमाल करके रेफ़रंस दिया जाना चाहिए.
यहां दिए गए ऑटोमेशन में, मल्टीपार्ट चाइम के साथ ऑटोमेशन बनाने का तरीका बताया गया है. इसमें Chime trait के साथ-साथ स्पीकर को भी लागू किया जाता है. सामने का दरवाज़ा खुलने पर, ऑटोमेशन ट्रिगर हो जाता है:
import GoogleHomeSDK import GoogleHomeTypes typealias ChimeTrait = Matter.ChimeTrait typealias OpenCloseTrait = Google.OpenCloseTrait // Fetch devices using the multipart device model. let multipartDevices = try await home.devices(enableMultipartDevices: true).list() guard let chimeParentDevice = multipartDevices.first(where: { $0.types.contains(ChimeDeviceType.self) }) else { return } guard let doorDevice = multipartDevices.first(where: { $0.types.contains(GoogleDoorDeviceType.self) }) else { return } // Extract the AutomationPartPath for the specific Chime part guard let chimeType = await chimeParentDevice.types.get(ChimeDeviceType.self), let chimePartPath = chimeParentDevice.automationPart(chimeType) else { return } let starterNode = starter(doorDevice, GoogleDoorDeviceType.self, OpenCloseTrait.self) let doorOpenClose = stateReader(doorDevice, GoogleDoorDeviceType.self, OpenCloseTrait.self) // Build the automation let chimeAutomation = automation( name: "Multipart Chime Demo", description: "Activate the chime when the door is opened" ) { starterNode condition { starterNode.openPercent.unwrapOptional().greaterThan(0) } // Action: Play a chime sound action(chimePartPath) { ChimeTrait.playChimeSound() } }
एक से ज़्यादा डिवाइसों के साथ काम करने वाले डिवाइसों का इस्तेमाल करके ऑटोमेशन सेट अप करने के बारे में ज़्यादा जानने के लिए, एक से ज़्यादा डिवाइसों के साथ काम करने वाले डिवाइसों के लिए ऑटोमेशन लेख पढ़ें.
किसी डिवाइस के लिए कनेक्टिविटी की जांच करना
किसी डिवाइस के लिए कनेक्टिविटी की जांच, डिवाइस टाइप के लेवल पर की जाती है. इसकी वजह यह है कि कुछ डिवाइस, कई तरह के डिवाइस टाइप के साथ काम करते हैं. जवाब में, डिवाइस की सभी विशेषताओं के लिए कनेक्टिविटी की स्थितियों का कॉम्बिनेशन दिखाया जाता है.
let lightConnectivity = dimmableLightDeviceType.metadata.sourceConnectivity .connectivityState
इंटरनेट कनेक्शन न होने पर, अलग-अलग तरह के डिवाइसों के लिए partiallyOnline स्थिति दिख सकती है. Matter की स्टैंडर्ड
ट्रेट, लोकल राउटिंग की वजह से अब भी ऑनलाइन हो सकती हैं. हालांकि, क्लाउड पर आधारित ट्रेट ऑफ़लाइन हो जाएंगी.
डिवाइस का आईपी पता पाना
डिवाइस का आईपी पता ढूंढने के लिए, GeneralDiagnosticsTrait के networkInterfaces एट्रिब्यूट का इस्तेमाल करें.
पते, Data ऑब्जेक्ट के तौर पर दिखाए जाते हैं. इन्हें Network फ़्रेमवर्क का इस्तेमाल करके, स्टैंडर्ड आईपीवी4 या आईपीवी6 स्ट्रिंग के तौर पर फ़ॉर्मैट किया जा सकता है:
func getIpAddresses(trait: Matter.GeneralDiagnosticsTrait) -> [String] {
let interfaces = trait.attributes.networkInterfaces ?? []
var ipAddresses: [String] = []
for interface in interfaces {
for data in interface.iPv4Addresses {
if let ipv4 = IPv4Address(data) {
ipAddresses.append(String(describing: ipv4))
}
}
for data in interface.iPv6Addresses {
if let ipv6 = IPv6Address(data) {
ipAddresses.append(String(describing: ipv6))
}
}
}
return ipAddresses
}