iOS'te çok parçalı cihazlar

Bazı Matter cihazlar, aynı cihaz türüne sahip birden fazla uç noktadan oluşur. Diğer Matter cihazları hiyerarşik olup uç noktalar diğer uç noktaların içine yerleştirilmiştir. Home API'lerinde her iki cihaz türü de çok parçalı cihazlar olarak adlandırılır.

Düz gösterim

Home API'lerin 1.8 sürümünden önce, çok parçalı cihazlar Home API'ler tarafından ayrı, ilişkisiz cihazlar kümesi olarak temsil edilir. Buna düz temsil denir.

Örneğin, dört anahtarı olan tek bir duvar paneli cihazı, Home API'lerinde dört farklı ve alakasız cihaz olarak görünür. Buzdolabı gibi hiyerarşik Matter bir cihaz, Home API'lerinde her biri uç noktalardan birine karşılık gelen bir cihaz grubu olarak temsil edilebilir.

  • Yerel Matter temsilini ve Home API'nin düz oluşturma özelliğini gösteren, birden fazla anahtara sahip duvar paneli örneği

    4 anahtarlı duvar panelinin düz temsili.

  • Yerel Matter temsilini ve Home API'nin düz oluşturma özelliğini gösteren buzdolabı örneği

    Buzdolabının düz temsili

Şekil 1: Düz oluşturma örnekleri

Çok parçalı temsil

Home API'lerin 1.8 sürümünden itibaren, çok parçalı bir cihaz API'de tek bir cihaz olarak temsil edilebilir. Bu davranışı etkinleştirmek için Home örneğinde devices() yöntemini çağırın ve enableMultipartDevices parametresini true olarak ayarlayın:

let multipartDevices = try await self.home.devices(enableMultipartDevices: true).list()
let multipartDevice = multipartDevices.first { $0.id == powerStrip.device.id }
let outlets = try await device.types.getAll(of: OnOffPluginUnitDeviceType.self)

Aşağıdaki şemalarda, enableMultipartDevices seçeneğinin Home API'lerde çok parçalı bir cihazın temsilini nasıl etkilediği gösterilmektedir:

  • Yerel Matter temsilini ve Home API'nin çok parçalı oluşturma özelliğini gösteren, birden fazla anahtara sahip duvar paneli örneği

    Duvar panelinin çok parçalı temsili.

  • Yerel Matter temsilini ve Home API'nin çok parçalı oluşturma özelliğini gösteren buzdolabı örneği

    Buzdolabının çok parçalı gösterimi.

Şekil 2: Çok parçalı oluşturma örnekleri

enableMultipartDevices parametresini atlayarak veya false olarak ayarlayarak düz gösterimi her zaman alabilirsiniz.

Çok parçalı bir cihazda, bir cihaz türünün her bileşen örneğine parça denir.

Parçalara doğrudan üst cihazdan veya hiyerarşik bir şekilde bir parçadan, cihaz türleri ya da Matter semantik etiketleri kullanılarak erişilebilir. Anlamsal etiketler, Home API'lerinde SemanticTag ile uygulanır.

DeviceType sınıfı, geliştiricilerin parts() yöntemiyle cihaz ağacında gezinmesine olanak tanır:

let outlet1 = await device.parts.getAll(of: OnOffPluginUnitDeviceType.self).first {
  $0.tags.contains(SemanticTag.CommonNumber.one)
}
let outlet3 = await device.parts.getAll(of: OnOffPluginUnitDeviceType.self).first {
  $0.tags.contains(SemanticTag.CommonNumber.three)
}

Bir sonraki örnekte, buzdolabı cihazının parçalarına nasıl erişileceği gösterilmektedir:

let refrigerator: RefrigeratorDeviceType? =
   await home.devices(enableMultipartDevices: true).first { $0.id == FRIDGE_ID }
// Get different cabinets of the refrigerator
let freezer = refrigerator!.parts(type: TemperatureControlledCabinetDeviceType.self).first {
  $0.tags.contains(SemanticTag.Refrigerator.freezer)
}