Lokale Auftragsausführung

Das Local Home SDK verbessert die Smart-Home-Integration mit Google Assistant, indem es einen Pfad für die lokale Auftragsausführung zum Weiterleiten von Smart-Home-Intents hinzufügt.

Mit dem SDK können Sie eine lokale Auftragsausführungs-App mit TypeScript oder JavaScript schreiben, die Ihre Smart-Home-Geschäftslogik enthält. Ihre App kann von Google Home- oder Google Nest-Geräten auf dem Gerät geladen und ausgeführt werden. Ihre App kommuniziert direkt über WLAN in einem LAN (Local Area Network) mit Ihren vorhandenen Smart-Home-Geräten, um Nutzerbefehle über vorhandene Protokolle auszuführen.

Die Integration des SDK bietet Leistungsverbesserungen für deine Smart-Home-Aktion, einschließlich geringerer Latenz und höherer Zuverlässigkeit. Die lokale Auftragsausführung wird für alle Gerätetypen und Gerätemerkmale unterstützt, mit Ausnahme von Geräten, für die die sekundäre Nutzerbestätigung verwendet wird.

Mit dem Erstellen beginnen Beispiel ausprobieren

Funktionsweise

Nachdem die Cloud-Auftragsausführung eine SYNC-Antwort erhalten hat, scannt die Local Home-Plattform das Local Area Network des Nutzers mithilfe von mDNS, UDP Broadcast oder UPnP, um Smart-Home-Geräte zu finden, die mit Assistant verbunden sind.

Die Plattform sendet einen IDENTIFY-Intent, um festzustellen, ob das Gerät lokal gesteuert werden kann. Dazu wird die Geräte-ID in der IDENTIFY-Antwort mit den IDs der früheren SYNC-Antwort verglichen. Wenn das erkannte Gerät ein Hub oder eine Bridge ist, sendet die Plattform einen REACHABLE_DEVICES-Intent und behandelt den Hub als Proxygerät für die lokale Kommunikation.

Wenn sie eine Antwort zur Bestätigung eines lokalen Geräts erhält, erstellt die Plattform einen lokalen Auftragsausführungspfad zum Google Home- oder Google Nest-Gerät des Nutzers und leitet anschließend Nutzerbefehle zur lokalen Auftragsausführung weiter.

Wenn ein Nutzer eine Smart-Home-Aktion mit einem lokalen Ausführungspfad auslöst, sendet Assistant den Intent EXECUTE oder QUERY an das Google Home- oder Google Nest-Gerät statt an die Cloud-Auftragsausführung. Das Gerät führt dann die lokale Auftragsausführungs-App aus, um den Intent zu verarbeiten.

Diese Abbildung zeigt den Ausführungsablauf für die lokale Auftragsausführung. Der Ausführungspfad erfasst den Intent eines Nutzers auf einem Smartphone mit Google Assistant. Der Nutzer-Intent wird dann von Google Cloud verarbeitet, lokal auf dem Google Home-Gerät ausgeführt und der Befehl direkt an den Geräte-Hub oder direkt an das Gerät gesendet. Die Entwickler-Cloud ist als Cloud-Fallback verfügbar.
Abbildung 1: Lokalen Ausführungspfad für deine Smart-Home-Aktion hinzufügen

Die Local Home-Plattform ist bei der Auswahl, welches Google Home- oder Google Nest-Gerät der Befehl auslöst, nicht deterministisch. Die Intents EXECUTE und QUERY können von jedem Google Home- oder Google Nest-Gerät stammen, das mit derselben Home Graph-Struktur wie das Zielgerät definiert ist.

App für lokale Auftragsausführung

Die App für die lokale Auftragsausführung enthält die Geschäftslogik, um die von der Local Home-Plattform gesendeten Intents zu verarbeiten und über das Local Area Network auf Ihr Smart-Home-Gerät zuzugreifen. Für die lokale Auftragsausführung sind keine Änderungen der Hardware zu erwarten. Die App führt Smart-Home-Aktionsanfragen durch, indem sie Steuerbefehle über Protokolle auf Anwendungsebene, einschließlich HTTP, TCP oder UDP, an das Smart-Home-Gerät sendet. Falls der lokale Auftragsausführungspfad fehlschlägt, wird die Auftragsausführung in der Cloud als Fallback-Ausführungspfad verwendet.

Um die Erstellung der App zu unterstützen, bietet das Local Home SDK die folgenden beiden Hauptklassen:

  • DeviceManager: Bietet Methoden zur Kommunikation mit Smart-Home-Geräten über TCP-, UDP-Sockets oder HTTP-Anfragen.
  • App: Stellt Methoden zum Anhängen von Handlern für Intents bereit, die Google nach Erkennung lokal steuerbarer Geräte (IDENTIFY, REACHABLE_DEVICES) sendet. Diese Klasse führt auch Nutzerbefehle (EXECUTE) aus und beantwortet Nutzerabfragen zum aktuellen Gerätestatus (QUERY).

Während der Entwicklung können Sie die Anwendung erstellen und testen, indem Sie sie auf Ihren eigenen Hostingserver oder einen lokalen Entwicklungscomputer laden. In der Produktion hostet Google deine App in einer sicheren JavaScript-Sandbox-Umgebung auf dem Google Home- oder Google Nest-Gerät des Nutzers.

Die Report State API wird derzeit nicht für die lokale Auftragsausführung unterstützt. Google benötigt zur Verarbeitung dieser Anfragen Ihre Cloud-Auftragsausführung.

Anwendungslebenszyklus

Ihre lokale Auftragsausführungs-App wird bei Bedarf geladen, wenn die Local Home-Plattform neue lokale Geräte erkennt, die der Scankonfiguration des Projekts entsprechen, oder ausstehende Lieferabsichten in Verbindung mit einem zuvor identifizierten Gerät hat.

Der Arbeitsspeicher von Google Home- und Google Nest-Geräten ist begrenzt und Ihre App für die lokale Auftragsausführung kann jederzeit aufgrund von Speicherauslastung im System beendet werden. Dies kann passieren, wenn Ihre App zu viel Arbeitsspeicher verbraucht oder das System Platz für eine andere App schaffen muss. Die Local Home-Plattform startet Ihre App nur dann neu, wenn neue Intents zur Bereitstellung vorhanden sind und genügend Arbeitsspeicherressourcen für die Ausführung der App vorhanden sind.

Die Local Home-Plattform entlädt Ihre App nach einer Zeitüberschreitung bei Inaktivität, wenn der Nutzer die Verknüpfung seines Kontos aufhebt oder keine Geräte mehr unterstützen, die die lokale Auftragsausführung unterstützen, die mit der agentUserId des Nutzers verknüpft sind.

Unterstützte Geräte

Die Local Home-Plattform führt die App für die lokale Auftragsausführung auf unterstützten Google Home- oder Google Nest-Geräten aus. In der folgenden Tabelle werden die unterstützten Geräte und die jeweils verwendete Laufzeit beschrieben. Weitere Informationen zu Laufzeitanforderungen finden Sie unter Ausführungsumgebung.

Gerät Typ Umgebung
Google Home Lautsprecher Chrome
Google Home Mini Lautsprecher Chrome
Google Home Max Lautsprecher Chrome
Nest Mini Lautsprecher Chrome
Nest Hub Displaynetzwerk Chrome
Nest Hub Max Displaynetzwerk Chrome
Nest Wifi Router Node.js
Punkt Chrome

Ausführungsumgebung

Die Ausführungsumgebung für Ihre lokale Auftragsausführungs-App hängt von Ihrem Gerät ab. Die Local Home-Plattform unterstützt die folgenden Laufzeitumgebungen:

  • Chrome: Ihre lokale Auftragsausführungs-App wird im Kontext eines Chrome-Browsers window ausgeführt, auf dem Chrome M80 oder höher mit Unterstützung der ECMAScript-Version ES2018 ausgeführt wird.
  • Node.js: Die lokale Auftragsausführungsanwendung wird als Skript in einem Node.js-Prozess ausgeführt, der Node v10.x LTS oder höher mit Unterstützung der ECMAScript-Version ES2018 ausführt.

Struktur des Quellcodes

Wir empfehlen, die Abhängigkeiten mithilfe der vom Local Home SDK bereitgestellten Bundler-Konfigurationen in einer einzigen JavaScript-Datei zu bündeln und den Quellcode als Sofort aufgerufene Funktionsausdruck (IIFE) zu verpacken.

Vorgehensweise bei der Implementierung

Wenn du das Local Home SDK für deine Smart-Home-Integration verwenden möchtest, musst du die folgenden Schritte ausführen:

1 Scankonfiguration einrichten Konfigurieren Sie die Actions Console mit den erforderlichen Parametern, damit Assistant lokal steuerbare Geräte erkennen kann.
2 SYNC-Antwort in der Cloud-Auftragsausführung aktualisieren Ändern Sie in der Cloud-Auftragsausführung den Anfrage-Handler SYNC so, dass das Feld otherDeviceIds unterstützt wird, mit dem die Plattform einen lokalen Auftragsausführungspfad erstellt. Geben Sie in diesem Feld die IDs der Geräte an, die lokal gesteuert werden können.
3 App für die lokale Auftragsausführung implementieren Erstelle mit dem Local Home SDK eine JavaScript-App zur Verarbeitung der Intents IDENTIFY, EXECUTE und QUERY. Bei Hub- oder Bridge-Proxygeräten sollten Sie auch den Intent REACHABLE_DEVICES verarbeiten.
4 App testen und Fehler beheben Teste deine Integration (oder lasse dich selbst zertifizieren) mit der Google Home Test Suite.

Hinweis