Model danych na iOS

Interfejsy Home API na iOS prezentują wszystkie urządzenia w ekosystemie Google Home w ujednoliconym modelu danych. Ten model danych obejmuje wszystkie typy urządzeń (od Google Nest lub producentów zewnętrznych) niezależnie od technologii inteligentnego domu (takiej jak Matter lub Cloud-to-cloud) i zapewnia wspólny interfejs API do tworzenia rozwiązań dla użytkowników zarówno dla deweloperów smart home, jak i deweloperów aplikacji mobilnych.

Typy urządzeń

Typy urządzeń prezentowane w interfejsach Home API to ujednolicenie modeli danych Matter i Cloud-to-cloud. Niektóre pochodzą bezpośrednio z Matter, inne są rozszerzeniem typów urządzeń Matter, a jeszcze inne pochodzą z Cloud-to-cloud.

Typy urządzeń zawierają cechy, które służą do sterowania urządzeniami i zarządzania nimi. Podobnie jak typy urządzeń, cechy są uzyskiwane z klastrów Matter i cech Cloud-to-cloud i są prezentowane w jednolitym formacie, który jest podobny do formatu klastrów Matter. W interfejsach Home API cechy pochodzące z Matter są nazywane cechami, a nie klastrami.

Dlatego typy i cechy urządzeń w interfejsach Home API są przeznaczone do obsługi Matter. Typ urządzenia lub cecha Matter ma pierwszeństwo przed odpowiednikiem Cloud-to-cloud.

Listę typów urządzeń i ich cech znajdziesz w artykule Obsługiwane typy urządzeń na iOS.

Cechy

Wersje cech w języku Swift są generowane do użytku w interfejsach Home API i zawierają dodatkowe funkcje specyficzne dla interfejsów Home API (których nie ma w Matter ani w Cloud-to-cloud). Na przykład każda cecha ma metody sprawdzania, czy obsługuje określony atrybut lub polecenie. Jest to przydatne, gdy chcesz określić, czy na urządzeniu użytkownika można odczytać stan lub wykonać określone działania, ponieważ nie wszystkie urządzenia danego typu muszą mieć te same funkcje.

Aby zaimportować cechy i typy urządzeń, zaimportuj moduł GoogleHomeTypes do aplikacji:

import GoogleHomeTypes

Możesz też użyć typealias w nazwach cech i typów urządzeń, aby skrócić kod i uniknąć powtarzania przestrzeni nazw:

import GoogleHomeTypes

typealias OpenCloseTrait = Google.OpenCloseTrait
typealias OnOffTrait = Matter.OnOffTrait
typealias FanDevice = Matter.FanDeviceType

Większość cech jest obsługiwana w automatyzacjach, a niektóre cechy są dostępne tylko w automatyzacjach. Więcej informacji znajdziesz w artykule Obsługa cech interfejsu Automation API na Androidzie.

Skład typów urządzeń

Interfejsy Home API obsługują większość klastrów aplikacji Matter jako cechy w modelu danych. Klastry konfiguracji niskiego poziomu, które nie oferują bezpośredniej użyteczności dla użytkowników, takie jak Binding, nie są udostępniane bezpośrednio przez interfejsy Home API. Więcej informacji o grupach urządzeń znajdziesz w artykule Interfejsy API struktury.

Cechy pochodzące z cech inteligentnego domu Cloud-to-cloud zwykle mają taką samą nazwę w Cloud-to-cloud i interfejsach Home API, jak w przykładzie OpenCloseTrait. Inne są reprezentowane jako rozszerzenia cech Matter, utworzone za pomocą rozszerzeń Matter specyficznych dla producenta. Te cechy wypełniają lukę w przypadku cechy smart home, której funkcje są podzielone między pakiet SDK Matter i ekosystem Google Home. Konkretnym przykładem są typy urządzeń Google*, które pochodzą z Cloud-to-cloud, ale nie mają jeszcze odpowiedników w Matter.

Typy urządzeń składają się z cech z jednego lub obu źródeł: Matter lub Cloud-to-cloud.

Na przykład FanDeviceType składa się z obu tych elementów i ma 3 cechy:

  • Atrybut IdentifyTrait Matter zapewnia wszystkie funkcje atrybutu Matter IdentifyTrait.
  • Atrybut FanControlTrait Matter zapewnia wszystkie funkcje atrybutu Matter FanControlTrait.
  • Cecha ExtendedFanControlTrait Google zapewnia wszystkie funkcje Google smart home FanSpeedTrait, które nie są objęte cechą FanControlTrait Matter.

Ten typ kompozycji cech zapewnia elastyczny model pełnej funkcjonalności typu urządzenia, który abstrakcyjnie przedstawia podstawowe modele danych smart home.

Grupy urządzeń

Grupa urządzeń to zdefiniowany przez użytkownika zbiór urządzeń w ramach jednej struktury. Członkostwo w grupie jest zachowywane w usługach Google i jest widoczne dla innych członków struktury oraz innych aplikacji mających dostęp do struktury.

Grupy urządzeń są reprezentowane przez element DeviceGroup, który różni się od elementu HomeDevice. Każdy obiekt HomeDevice zawiera listę grup, do których należy, w polu GroupMembershipTrait, dzięki czemu aplikacja może sprawdzać członkostwo w grupach i bezpośrednio iterować po urządzeniach należących do grupy. Dodatkowo DeviceGroup jest zgodny z protokołem HasParts, aby udostępniać typy urządzeń obsługiwane przez urządzenia członkowskie, gdy kierowanie jest ustawione na całą grupę.

Więcej informacji o grupach urządzeń znajdziesz w artykule Interfejsy API struktury i Sterowanie grupą urządzeń.