Automatisierung entwerfen

Bevor Sie die Automation API verwenden, sollten Sie Ihre automatisierten Abläufe entwerfen.

Legen Sie für jede Automatisierung die folgenden Parameter fest:

  • Die Umstände, unter denen die Automatisierung dem Nutzer vorgeschlagen werden soll. Wenn der Nutzer beispielsweise gerade drei neue Lampen in seinem Zuhause hinzugefügt hat, könnte er an einer bestimmten Automatisierung interessiert sein, die speziell auf die Steuerung von Lampen zugeschnitten ist.
  • Welche Gerätetypen für die Automatisierung erforderlich sind. Wenn der Nutzer beispielsweise gerade drei neue Lampen in seinem Zuhause installiert hat, könnte er an einer bestimmten Automatisierung für die Steuerung von Lampen interessiert sein. Beispiele für Lampentypen sind OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice oder ExtendedColorLightDevice.
  • Welche Merkmalattribute und Befehle für die Automatisierung erforderlich sind und ob sie von der Automation API unterstützt werden.
  • Die Merkmale, die die Automatisierung als Auslöser aktivieren sollen. Auslöser werden unter Automatisierungskomponenten beschrieben.
  • Zusätzliche Bedingungen, die festlegen, ob die Automatisierung tatsächlich ausgeführt werden soll und welche Aktionen ausgeführt werden sollen.
  • Der Ablauf der Ausführung der Automatisierung. Soll sie sequenziell oder parallel ausgeführt werden? Benötigen Sie mehrere Logikpfade?

Beim Entwerfen kann es hilfreich sein, den Ablauf der Automatisierung Knoten für Knoten mit der für jeden Schritt erforderlichen Logik zu skizzieren.

Nachdem Sie eine Automatisierung entworfen haben, können Sie sie mit der Automation DSL erstellen. Die von Ihnen erstellte Automatisierung ist im Grunde eine „Vorlage“. Alle darin enthaltenen Gebäude und Geräte sind Platzhalter und werden mit den spezifischen Gebäuden und Geräten jedes Nutzers ausgefüllt, wenn er die Automatisierung für seine eigene Nutzung „übernimmt“.

Im Folgenden finden Sie verschiedene Arten von Automatisierungen, die mit den Home APIs in einer App erstellt werden können. Auf der Seite Automatisierung erstellen finden Sie Codeausschnitte zu diesen Beispielen.

Einfache Automatisierung

Angenommen, Sie müssen eine App schreiben, die eine Automatisierung erstellt, mit der die Jalousien um 8:00 Uhr morgens hochgefahren werden. Dazu benötigt die App eine Liste der Jalousien (Geräte vom Typ WindowCoveringDevice) im Gebäude, die Automatisierungen unterstützen. Diese Liste kann von der Discovery API bereitgestellt werden.

Bei Automatisierungen, die zu einer bestimmten Zeit ausgeführt werden müssen, muss der Nutzer außerdem dafür sorgen, dass er in der Google Home app (GHA) eine Adresse für das ausgewählte Gebäude angegeben hat. Andernfalls kennt die Automatisierung nicht die Zeitzone, in der sie ausgeführt wird. Mit der Discovery API können Sie feststellen, ob dem Gebäude eine Adresse zugewiesen wurde.

Der Ablauf der Ausführung würde also in etwa so aussehen:

  1. Erfassen Sie mit der Discovery API die Liste der WindowCoveringDevice-Geräte.
  2. Wenn die Adresse nicht ausgefüllt ist, informiere den Nutzer, dass er eine Adresse angeben muss, und beende die Ausführung.
  3. Andernfalls definieren Sie die Automatisierung so:
    1. Die Automatisierung soll um 8:00 Uhr gestartet werden.
    2. Rufen Sie für jede Jalousie den Befehl upOrOpen des Attributs WindowCovering auf.

Komplexe Automatisierung

Stellen Sie sich eine App vor, die eine Automatisierung erstellt, die blinkende Lampen auslöst, wenn Bewegung erkannt wird.

Eine der ersten Aufgaben bei der Implementierung dieser App besteht darin, mithilfe der Discovery API herauszufinden, welche Lampen im Zuhause des Nutzers verfügbar sind. Mit diesen Informationen kann Ihre App jetzt die verfügbaren Lampen anzeigen und dem Nutzer möglicherweise die Möglichkeit geben, auszuwählen, welche Lampen blinken sollen.

Ablauf der Ausführung:

  1. Erfassen Sie mit der Discovery API die Liste der im Gebäude vorhandenen Lampen. Dazu gehören alle Geräte mit dem Gerätetyp OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice oder ExtendedColorLightDevice.
  2. Bieten Sie eine Möglichkeit, die zu blinkenden Lampen auszuwählen, z. B. über ein benutzerdefiniertes Steuerfeld.
  3. Automatisierung definieren:
    1. Starten Sie die Automatisierung, wenn jemand das Gebäude verlässt oder betritt, indem Sie AreaPresenceState überwachen.
    2. Wenn das presenceState angibt, dass das Gebäude besetzt ist, blinken die ausgewählten Lampen.

Allgemeine Automatisierung

Ein Beispiel für eine komplexere Automatisierung wäre eine, bei der der Nutzer durch die Erstellung einer offenen Automatisierung geführt wird, die auf einem oder mehreren Geräten in seinem Zuhause basiert.

Die Automatisierung fordert den Nutzer möglicherweise zuerst auf, ein Gebäude auszuwählen.

Die Automatisierung könnte dann alle Räume im Gebäude in einer ausziehbaren Übersicht anzeigen, in der beim Maximieren eines Raums die darin enthaltenen Geräte angezeigt werden. Wenn Sie ein Gerät maximieren, werden die Auslöser und Befehle angezeigt, die von diesem Gerät unterstützt werden.

Der Nutzer kann die Geräte, Auslöser und Befehle auswählen, die er verwenden möchte. Die Automatisierung führt ihn dann durch die Erstellung einer Automatisierung.

Wenn alle Auswahlmöglichkeiten und Entscheidungen des Nutzers endgültig sind, wird die Automatisierung generiert und in der ausgewählten Struktur gespeichert.

Grob gesagt müsste eine solche Automatisierung mithilfe der Structure API, der Device API und der Discovery API mehrere Datensätze zum Zuhause des Nutzers erfassen.

Tabelle 1: Home APIs und die von ihnen bereitgestellten Informationen
APIInformationen
Gebäude-API
  • Welche Strukturen sind verfügbar?
  • Welche Räume befinden sich im Gebäude?
Device API
  • Welche Geräte sich im ausgewählten Gebäude befinden
  • Wo sich diese Geräte befinden (in welchem Raum)
Discovery API
  • Welche Merkmale werden von den Geräten unterstützt
  • Welche Auslöser und Befehle für diese Eigenschaften verfügbar sind
  • Welche Einschränkungen gelten für die Parameter dieser Befehle?