Cihazı kaldırma

Bir cihazı kaldırmak, cihazın yapıdan devre dışı bırakılmasını gerektirir. Kullanıcılar bunu Google Home app (GHA) ile yapabilir ve uygulamalar, akıllı ev cihazlarını programatik olarak devre dışı bırakabilir. Hangi cihazların kaldırılabileceği konusunda sınırlamalar vardır. Ayrıca, bir cihazın kaldırılması uygulamanızın yapısını ve kullanıcı deneyimlerini etkileyebilir.

Kaldırabilecekleriniz

Aşağıdaki cihazları Home API'leri aracılığıyla programatik olarak kaldırabilirsiniz:

  • Uygulamanızın izinlere sahip olduğu Matter cihaz.
  • Matter köprüleri, uygulamanızın köprü üzerinden bağlı tüm cihazlara erişebilmesi koşuluyla. Köprünün kaldırılması, ona bağlı tüm Matter cihazlarını kaldırır.

Kaldıramayacaklarınız

Aşağıdaki cihazlar, Home API'leri aracılığıyla programatik olarak kaldırılamaz:

  • Uygulamanızın kullanıcı izinlerinin eksik olduğu Matter cihaz.
  • Matter köprüsü üzerinden bağlanan bağımsız cihazlar.
  • Cloud-to-cloud bağlı cihaz.
  • Çift cihazlar (hem Matter hem de Cloud-to-cloud'yi uygulayan cihazlar).

Cihazı kaldırmadan önce dikkat edilmesi gereken önemli noktalar

Uygulamanız bir cihazı kaldırdığında bu cihaz, tüm yapıdan kaldırılır. Bu durum, GHA dahil olmak üzere tüm kullanıcıları ve tüm uygulamaları etkiler. Cihazın türüne bağlı olarak, devre dışı bırakmanın ek yan etkileri olabilir:

  • Birden fazla cihaz türü uygulayan cihazlar: Bir cihazın birden fazla işlevi varsa (ör. hem akıllı ışık hem de hub olarak işlev gören bir cihaz) bu cihazı kaldırdığınızda ilişkili tüm cihazlar da kaldırılır. Uygulama, birden fazla cihaz işlevinin etkileneceği durumlarda kullanıcıyı bilgilendirmelidir.
  • Cihaz Geçmişi: Bir cihazın silinmesi, cihazın geçmişinin kaldırılmasına neden olabilir.
  • Paylaşılan Yüzeyler: Paylaşılan yüzeylerdeki cihazları silerken dikkatli olun. Bu işlem, diğer kullanıcılar için istenmeyen sonuçlara yol açabilir.
  • Kimlik doğrulama: Cihaz kaldırma işlemi yalnızca kimliği doğrulanmış yüzeylerde (ör. cep telefonu) yapılmalıdır. Kimliği doğrulanmamış cihazlarda (ör. TV) yapılmamalıdır. Bu durum, Google Home Geliştirici Politikaları'nı ihlal eder.

Cihaz kaldırma

Bir cihazın kaldırılmaya uygun olup olmadığını kontrol etmek maliyetlidir ve yalnızca gerektiğinde yapılmalıdır. Bir cihazın kaldırılmaya uygun olup olmadığını kontrol etmek için aşağıdaki komutu kullanın:

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 cihazları

Cihaz bir Matter köprüsünün arkasında değilse Matter cihazını programatik olarak kaldırabilirsiniz.

Bir Matter cihazı kaldırmak için cihazda decommissionDevice() işlevini çağırın:

val decommissionedDeviceIds = device.decommissionDevice()

Çağrı hata vermiyorsa başarılı olmuştur.

Cihazın kimliğinin decommissionDevice() tarafından döndürülenler arasında olup olmadığını kontrol edebilirsiniz: decommissionDevice() :

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

Matter olmayan cihazlar

Matter olmayan cihazlar programatik olarak kaldırılamaz. Matter olmayan bir cihazı kaldırmak için Senkronizasyon isteği gönderebilir (bkz. Senkronizasyon İsteğinde Bulunma) veya Cloud-to-cloud entegrasyonunu silebilirsiniz (bkz. Başlatılan bir Buluttan Buluta Entegrasyonunu Silme).

decommissionDevice() işlevini Matter olmayan bir cihazda çağırırsanız HomeException oluşur.

Matter dışı bir cihazı kaldırdıktan sonra, cihazın başarıyla kaldırıldığını doğrulamak için cihazın varlığını kontrol edin:

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

Çok kaynaklı cihazlar

Çok kaynaklı cihazlar, hem Cloud-to-cloud hem de Matter API'lerini kullanan cihazlardır. Bu tür bir cihazın hizmetten çıkarma uygunluğunu kontrol ederseniz cihazın çok kaynaklı olması nedeniyle hizmetten çıkarılamayacağını belirten bir DecommissionIneligibleReason.multiSourceDevice alırsınız.

Çok kaynaklı bir cihazı kaldırmak için aşağıdaki prosedürü uygulayın:

  1. Cloud-to-cloud ilişkilendirmesini Non-Matter devices (Non-Matter cihazlar) bölümünde açıklandığı şekilde kaldırın.
  2. Matter cihazını, Matter cihazları bölümünde açıklandığı şekilde hizmetten kaldırın.

Bu adımların sırası önemlidir. Cloud-to-cloud ilişkilendirmesini kaldırmadan önce Matter cihazını devre dışı bırakmaya çalışırsanız HomeException hatası oluşur.