Die Home APIs für Android stellen alle Geräte im Google Home-System in einem einheitlichen Datenmodell dar. Dieses Datenmodell deckt alle Arten von Geräten (von Google Nest oder Drittanbietern) ab, unabhängig von der zugrunde liegenden Smart-Home-Technologie (z. B. Matter oder Cloud-to-cloud). Es bietet eine gemeinsame API-Oberfläche, um Nutzererfahrungen sowohl für smart home als auch für App-Entwickler mobiler Apps zu erstellen.
Gerätetypen
Die in den Home APIs dargestellten Gerätetypen sind eine Vereinheitlichung der Datenmodelle von Matter und Cloud-to-cloud. Einige werden direkt von Matter abgeleitet, andere sind eine Erweiterung von Matter-Gerätetypen und wieder andere werden von Cloud-to-cloud abgeleitet.
Gerätetypen enthalten Eigenschaften, die zum Steuern und Verwalten von Geräten verwendet werden. Wie Gerätetypen werden auch Eigenschaften von Matter-Clustern und Cloud-to-cloud-Eigenschaften abgeleitet und in einem gemeinsamen Format dargestellt, das dem von Matter-Clustern ähnelt. In den Home APIs werden von Matter abgeleitete Traits als Traits und nicht als Cluster bezeichnet.
Daher sind Gerätetypen und Eigenschaften in den Home APIs auf Matter ausgerichtet. Ein Matter-Gerätetyp oder -Merkmal hat Vorrang vor einem Cloud-to-cloud-Analogon.
Eine Liste der Gerätetypen und ihrer Attribute findest du unter Unterstützte Gerätetypen unter Android.
Merkmale
Kotlin-Versionen von Traits werden für die Verwendung in den Home APIs generiert und enthalten zusätzliche Funktionen, die für die Home APIs spezifisch sind (nicht in Matter oder Cloud-to-cloud enthalten). Jeder Trait hat beispielsweise Methoden, mit denen geprüft werden kann, ob ein Trait ein bestimmtes Attribut oder einen bestimmten Befehl unterstützt. Dies ist nützlich, wenn du feststellen möchtest, ob der Status oder bestimmte Aktionen auf dem Gerät eines Nutzers gelesen werden können, da nicht alle Geräte eines Gerätetyps dieselben Funktionen haben.
Jedes Attribut ist in einem eigenen Namespace enthalten und muss zur Verwendung einzeln importiert werden.
Wenn du beispielsweise das Attribut Matter „An/Aus“ und den Gerätetyp „An/Aus-Steckdose“ verwenden möchtest, importiere die folgenden Pakete in deine Anwendung:
import com.google.home.matter.standard.OnOff
import com.google.home.matter.standard.OnOffPluginUnitDevice
Für den Gerätetyp „Garage“ (aus dem Google Smart Home) solltest du eine Mischung aus Matter- und Google-Attributen verwenden:
import com.google.home.google.LockUnlock
import com.google.home.matter.standard.DoorLock
import com.google.home.matter.standard.GoogleGarageDevice
Android Studio bietet eine Funktion zur automatischen Vervollständigung und übernimmt oft die vollständigen Paketnamen für Sie, wenn Sie den Quelldateien in Ihrem Projekt import-Zeilen hinzufügen. Paketnamen sind jedoch nicht für alle Gerätetypen und -eigenschaften einheitlich. In der Referenz finden Sie den korrekten Paketnamen für jede DeviceType oder Trait.
Die meisten Merkmale werden für die Verwendung mit Automatisierungen unterstützt und einige Merkmale sind nur für Automatisierungen verfügbar. Weitere Informationen findest du unter Unterstützung von Automation API-Merkmalen unter Android.
Zusammensetzung nach Gerätetyp
Die Home APIs unterstützen die meisten Matter-Anwendungscluster als Eigenschaften im Datenmodell. Cluster mit Low-Level-Konfigurationen, die für Endnutzer keinen direkten Nutzen haben, z. B. Binding, werden nicht über die Home APIs verfügbar gemacht.
Attribute, die von Cloud-to-cloud-Smart-Home-Attributen abgeleitet sind, haben in der Regel denselben Namen in Cloud-to-cloud und den Home APIs, wie im Beispiel von OpenClose. Andere werden als Erweiterungen von Matter-Eigenschaften dargestellt, die mit herstellerspezifischen Matter-Erweiterungen erstellt wurden. Diese Attribute schließen die Lücke für ein smart home-Attribut, bei dem die Funktionalität zwischen dem Matter SDK und dem Google Home-Ökosystem aufgeteilt ist. Ein konkretes Beispiel hierfür sind die Google*-Gerätetypen, die von Cloud-to-cloud stammen, aber noch keine Matter-Analoga haben.
Gerätetypen bestehen aus Attributen aus einer oder beiden Quellen, Matter oder Cloud-to-cloud.
Der Gerätetyp „Ventilator“ besteht beispielsweise aus beiden und hat drei Eigenschaften:
- Das
Identify-Matter-Attribut bietet alle Funktionen des Matter-Identify. - Das
FanControl-Matter-Attribut bietet alle Funktionen des Matter-FanControl-Attributs. - Das Google-Attribut
ExtendedFanControlbietet alle Funktionen des Google-Attributs smart homeFanSpeed, die nicht vom AttributFanControlMatter abgedeckt werden.
Diese Art der Attributzusammensetzung bietet ein flexibles Modell für die vollständige Funktionalität des Gerätetyps und abstrahiert die zugrunde liegenden smart home-Datenmodelle.
Gerätegruppen
Eine Gerätegruppe ist eine benutzerdefinierte Sammlung von Geräten innerhalb eines einzelnen Gebäudes. Die Gruppenmitgliedschaft bleibt in Google-Diensten erhalten und ist für andere Mitglieder des Gebäudes und andere Apps mit Zugriff auf das Gebäude sichtbar.
Gerätegruppen werden durch die Entität DeviceGroup dargestellt, die sich von HomeDevice unterscheidet.
Jedes HomeDevice listet die Gruppen, zu denen es gehört, über das Merkmal GroupMembership auf (reaktiv mit group.devices() aufgelöst). So kann Ihre App Gruppenmitgliedschaften prüfen und direkt die Geräte der Mitglieder einer Gruppe durchlaufen. Darüber hinaus implementiert DeviceGroup die Schnittstelle PartsProvider, um die von den Mitgliedsgeräten unterstützten Gerätetypen offenzulegen, wenn die Gruppe als Ganzes als Ziel festgelegt wird.
Weitere Informationen zu Gerätegruppen findest du unter Structure APIs und Gerätegruppe steuern.