किसी डिवाइस को हटाना

किसी डिवाइस को हटाने का मतलब है कि उसे स्ट्रक्चर से हटाना. उपयोगकर्ता Google Home app (GHA) का उपयोग करके ऐसा कर सकता है, और ऐप प्रोग्रामेटिक रूप से स्मार्ट होम डिवाइस को बंद कर सकता है. कुछ डिवाइसों को ही हटाया जा सकता है. डिवाइस हटाने से, आपके ऐप्लिकेशन के स्ट्रक्चर और उपयोगकर्ता अनुभव पर भी असर पड़ सकता है.

क्या-क्या हटाया जा सकता है

Home API की मदद से, इन डिवाइसों को प्रोग्राम के हिसाब से हटाया जा सकता है:

  • Matter डिवाइसों के लिए, आपके ऐप्लिकेशन के पास अनुमतियां हैं.
  • Matter ब्रिज, बशर्ते आपके ऐप्लिकेशन के पास ब्रिज से कनेक्ट किए गए सभी डिवाइसों का ऐक्सेस हो. ब्रिज को हटाने से, उससे कनेक्ट किए गए सभी Matter डिवाइस हट जाते हैं.

क्या-क्या नहीं हटाया जा सकता

Home API के ज़रिए, इन डिवाइसों को प्रोग्राम के हिसाब से नहीं हटाया जा सकता:

  • Matter डिवाइस जिनके लिए आपके ऐप्लिकेशन में उपयोगकर्ता अनुमतियां नहीं हैं.
  • Matter ब्रिज से कनेक्ट किए गए अलग-अलग डिवाइस.
  • Cloud-to-cloud लिंक किए गए डिवाइस.
  • दोहरे-पथ वाले डिवाइस (ऐसे डिवाइस जो Matter और Cloud-to-cloud दोनों को लागू करते हैं).

किसी डिवाइस को हटाने से पहले ध्यान रखने वाली ज़रूरी बातें

जब आपका ऐप्लिकेशन किसी डिवाइस को हटाता है, तो उसे पूरे स्ट्रक्चर से हटा दिया जाता है. इससे सभी उपयोगकर्ताओं और सभी ऐप्लिकेशन पर असर पड़ता है. इसमें GHA भी शामिल है. डिवाइस के टाइप के हिसाब से, डिवाइस को बंद करने के कुछ और साइड इफ़ेक्ट हो सकते हैं:

  • एक से ज़्यादा तरह के डिवाइसों को कंट्रोल करने वाले डिवाइस: अगर किसी डिवाइस में एक से ज़्यादा फ़ंक्शन हैं, तो उसे हटाने पर उससे जुड़े सभी डिवाइस भी हट जाते हैं. उदाहरण के लिए, स्मार्ट लाइट जो हब के तौर पर भी काम करती है. अगर एक से ज़्यादा डिवाइस फ़ंक्शन पर असर पड़ेगा, तो ऐप्लिकेशन को उपयोगकर्ता को इसकी सूचना देनी चाहिए.
  • डिवाइस इतिहास: किसी डिवाइस को हटाने से डिवाइस का इतिहास हट सकता है.
  • शेयर किए गए प्लैटफ़ॉर्म: शेयर किए गए प्लैटफ़ॉर्म पर डिवाइसों को मिटाते समय सावधान रहें, क्योंकि इससे अन्य लोगों को अनचाहे नतीजे मिल सकते हैं.
  • पुष्टि: डिवाइस को सिर्फ़ पुष्टि की गई जगहों से हटाया जाना चाहिए. जैसे, मोबाइल फ़ोन. पुष्टि नहीं किए गए डिवाइसों, जैसे कि टीवी से डिवाइस नहीं हटाया जाना चाहिए. ऐसा करने से, Google Home के डेवलपर के लिए बनी नीतियों का उल्लंघन होता है.

किसी डिवाइस को हटाना

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

val eligibility = device.checkDecommissionEligibility()

if (eligibility is DecommissionEligibility.Ineligible) {
  println("The device cannot be decommissioned.")
} else if (eligibility is DecommissionEligibility.EligibleWithSideEffects) {
  println("The device can be decommissioned but there will be side effects on other devices.")
} else if (eligibility is DecommissionEligibility.Eligible) {
  println("The device can be decommissioned.")
}

Matter वाले डिवाइस

अगर डिवाइस, Matter ब्रिज से कनेक्ट नहीं है, तो उसे प्रोग्राम के ज़रिए हटाया जा सकता है.Matter

किसी Matter डिवाइस को हटाने के लिए, उस पर decommissionDevice() कॉल करें:

val decommissionedDeviceIds = device.decommissionDevice()

अगर कॉल में कोई गड़बड़ी नहीं होती है, तो इसका मतलब है कि कॉल पूरा हो गया है.

यह देखा जा सकता है कि डिवाइस का आईडी, decommissionDevice() से मिले आईडी में शामिल है या नहीं:

if (decommissionedDeviceIds.contains(deviceId)) {
  println("Decommission successful!")
} else {
  println("Decommission failed!")
}

Matter के साथ काम न करने वाले डिवाइस

Matter के अलावा अन्य डिवाइसों को प्रोग्राम के ज़रिए नहीं हटाया जा सकता. Matter से कनेक्ट नहीं किए गए डिवाइस को हटाने के लिए, सिंक करने का अनुरोध करें (सिंक करने का अनुरोध करें देखें) या Cloud-to-cloud इंटिग्रेशन मिटाएं (लॉन्च किए गए क्लाउड-टू-क्लाउड इंटिग्रेशन को मिटाना देखें).

अगर किसी ऐसे डिवाइस पर decommissionDevice() को कॉल किया जाता है जो Matter नहीं है, तो HomeException थ्रो किया जाता है.

Matter के अलावा किसी अन्य डिवाइस को हटाने के बाद, यह देखने के लिए कि डिवाइस को हटाया गया है या नहीं, डिवाइस की मौजूदगी की जांच करें:

var removedDevice: HomeDevice? = null
runBlockingCustom {
  try {
    removedDevice = homeManager.devices().get(deviceId)
  } catch (exception: Exception) {
    println("removal successful!")
  }
}
if (removedDevice != null) {
  println("removal failed!")
}

एक से ज़्यादा सोर्स वाले डिवाइस

मल्टी-सोर्स डिवाइस ऐसे डिवाइस होते हैं जो Cloud-to-cloud और Matter दोनों एपीआई का इस्तेमाल करते हैं. अगर ऐसे डिवाइस के लिए, इस्तेमाल बंद करने की ज़रूरी शर्तें देखी जाती हैं, तो आपको DecommissionIneligibleReason.multiSourceDevice दिखेगा. इसका मतलब है कि डिवाइस में कई सोर्स से डेटा आता है. इसलिए, इसका इस्तेमाल बंद नहीं किया जा सकता.

एक से ज़्यादा सोर्स वाले डिवाइस को हटाने के लिए, यह तरीका अपनाएं:

  1. Matter के साथ काम न करने वाले डिवाइस में बताए गए तरीके से, Cloud-to-cloud का असोसिएशन हटाएं.
  2. Matter डिवाइस को बंद करें. इसके बारे में Matter डिवाइस में बताया गया है.

इन चरणों का क्रम ज़रूरी है. अगर Matter डिवाइस को हटाने से पहले, Cloud-to-cloud असोसिएशन को हटाने की कोशिश की जाती है, तो HomeException दिखेगा.