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şiktir ve 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'lerinin 1.8 sürümünden önce, çok parçalı cihazlar Home API'leri tarafından ayrı ve ilişkisiz bir cihaz grubu olarak temsil ediliyordu. Bu, düz gösterim olarak adlandırılır.

Örneğin, dört anahtarlı tek bir duvar paneli cihazı, Home API'lerinde dört ayrı ve ilişkisiz cihaz olarak görünür. Ayrıca, buzdolabı gibi hiyerarşik bir Matter cihaz, Home API'lerinde her biri uç noktalardan birine karşılık gelen bir cihaz grubu olarak temsil edilebilir.

  • Yerel Matter gösterimini ve Home API'nin düz oluşturma işlemini gösteren, birden fazla anahtar içeren duvar paneli örneği

    4 anahtarlı bir duvar panelinin düz temsili.

  • Matter'ın doğal gösterimini ve Home API'nin düz oluşturmasını gösteren buzdolabı örneği

    Buzdolabının düz gösterimi

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

Çok parçalı gösterim

Home API'lerinin 1.8 sürümünden itibaren, çok parçalı bir cihaz API'de tek bir cihaz olarak gösterilebilir. 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 çok parçalı bir cihazın Home API'lerinde nasıl gösterildiği açıklanmaktadır:

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

    Duvar panelinin çok parçalı temsili.

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

    Buzdolabının çok parçalı temsili.

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

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

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

Parçalara doğrudan üst cihazdan veya cihaz türleri ya da Matter semantik etiketleri kullanılarak hiyerarşik bir şekilde 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)
}

Sonraki örnekte, bir 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)
}