Удалить устройство

Демонтаж устройства подразумевает его вывод из эксплуатации. Пользователь может сделать это с помощью Google Home app (GHA) , а приложение может программно вывести из эксплуатации устройство умного дома. Существуют ограничения на то, какие устройства можно удалить. Кроме того, удаление устройства может повлиять на состояние здания и пользовательский опыт работы с приложением.

Что можно удалить

С помощью API Home вы можете программно удалить следующие устройства:

  • Matter устройства, для которых ваше приложение имеет разрешения.
  • Для подключения устройств Matter через мост необходимо, чтобы ваше приложение имело доступ ко всем устройствам, подключенным через этот мост. Удаление моста приведет к удалению всех подключенных к нему устройств Matter .

То, что нельзя удалить

Следующие устройства нельзя удалить программно через API Home:

  • Matter устройств, для которых у вашего приложения отсутствуют права доступа пользователей.
  • Отдельные устройства, соединенные за мостом Matter .
  • Устройства, связанные между собой Cloud-to-cloud .
  • Устройства с двойным каналом связи (устройства, реализующие как передачу Matter , так и Cloud-to-cloud ).

Важные моменты, которые следует учесть перед удалением устройства.

Когда ваше приложение удаляет устройство, оно удаляется из всей структуры, затрагивая всех пользователей и все приложения, включая GHA . В зависимости от типа устройства, могут возникнуть дополнительные побочные эффекты от его вывода из эксплуатации:

  • Устройства, реализующие несколько типов функций: Если устройство выполняет несколько функций — например, умный светильник, который также выступает в качестве концентратора, — его удаление также приведет к удалению всех связанных с ним устройств. Приложение должно информировать пользователя, если это повлияет на работу нескольких функций устройства.
  • История устройства: Удаление устройства может привести к удалению истории этого устройства.
  • Общие поверхности: Будьте осторожны при удалении устройств на общих поверхностях, поскольку это может иметь непредвиденные последствия для других пользователей.
  • Аутентификация: Извлечение устройства следует производить только на аутентифицированных поверхностях, таких как мобильный телефон, а не на неаутентифицированных устройствах, например, телевизорах. Это нарушает правила для разработчиков Google Home .

Извлечь устройство

Проверка возможности удаления устройства — дорогостоящий процесс, который следует проводить только в случае необходимости. Чтобы проверить возможность удаления устройства, используйте следующую команду:

swift let eligibility = try await device.decommissionEligibility

Материальные устройства

Если устройство Matter не находится за мостом Matter , его можно удалить программным способом.

Чтобы удалить устройство Matter , вызовите для него decommission() :

swift let decommissionedDeviceIDs = try await device.decommission()

Если вызов не вызывает ошибку, значит, он выполнен успешно.

Вы можете проверить, входит ли идентификатор устройства в число идентификаторов, возвращаемых функцией decommission() :

swift do { let decommissionedDeviceIDs = try await device.decommission() print("The following devices were decommissioned: \(decommissionedDeviceIDs)") } catch { print("An error occurred: \(error)") }

Устройства, не являющиеся материей

Устройства, не относящиеся к Matter , нельзя удалить программным способом. Для удаления устройства, не относящегося Matter , можно отправить запрос на синхронизацию (см. раздел «Запрос на синхронизацию ») или удалить интеграцию Cloud-to-cloud (см. раздел «Удаление запущенной интеграции между облаками »).

При вызове функции decommission() на устройстве, не относящемся Matter , будет выброшено исключение HomeError .

После удаления устройства, не относящегося Matter , проверьте наличие этого устройства, чтобы убедиться в его успешном удалении:

swift guard try await !self.context.devices().list().contains(where: { $0.id == deviceID }) else { // The device still exists in Home APIs }

Многоисточниковые устройства

Многоисточниковые устройства — это устройства, использующие как Cloud-to-cloud , так и API Matter . Если вы проверите возможность вывода такого устройства из эксплуатации, вы получите сообщение DecommissionIneligibleReason.multiSourceDevice , указывающее на то, что, поскольку устройство является многоисточниковым, его нельзя вывести из эксплуатации.

Для демонтажа устройства с несколькими источниками сигнала выполните следующую процедуру:

  1. Удалите связь Cloud-to-cloud , как описано в разделе «Устройства, не являющиеся материей» .
  2. Выведите из эксплуатации устройство Matter , как описано в разделе «Устройства Matter» .

Последовательность этих шагов важна. Если вы попытаетесь вывести устройство Matter из эксплуатации до удаления связи Cloud-to-cloud , будет выдана HomeError .