Lokale Auftragsausführung

Das Local Home SDK verbessert die Smart-Home-Integration in Google Assistant, da es einen Pfad für die lokale Ausführung von Smart-Home-Intents hinzufügt.

Mit dem SDK können Sie mit TypeScript oder JavaScript eine lokale App für die Auftragsausführung erstellen, die Ihre Geschäftslogik für Ihr Smart Home enthält. Google Home- oder Google Nest-Geräte können deine App auf dem Gerät laden und ausführen. Ihre Anwendung kommuniziert über WLAN in einem lokalen Netzwerk (LAN) direkt mit Ihren vorhandenen Smart-Home-Geräten, um Nutzerbefehle über vorhandene Protokolle auszuführen.

Durch die Einbindung des SDK werden Ihre Smart-Home-Aktion verbessert, einschließlich niedriger Latenz und höherer Zuverlässigkeit. Die lokale Auftragsausführung wird für alle Gerätetypen und Gerätemerkmale unterstützt, mit Ausnahme der Geräte, die die sekundäre Nutzerbestätigung verwenden.

Mit dem Erstellen beginnen Beispiel ausprobieren

Funktionsweise

Nachdem Sie von der Cloud-Auftragsausführung eine SYNC-Antwort erhalten haben, scannt die Local Home-Plattform das lokale Netzwerk des Nutzers mit mDNS, UDP-Broadcast oder UPnP, um Smart-Home-Geräte zu erkennen, die mit Assistant verbunden sind.

Die Plattform sendet einen IDENTIFY-Intent, um zu bestimmen, ob das Gerät lokal steuerbar ist. Dazu wird die Geräte-ID in der IDENTIFY-Antwort mit der Gerätenummer verglichen, die von der vorherigen SYNC-Antwort zurückgegeben wurde. Wenn das erkannte Gerät ein Hub oder eine Brücke 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 für ein lokales Gerät erhält, richtet die Plattform einen lokalen Auftragsausführungspfad zum Google Home- oder Google Nest-Gerät des Nutzers ein und leitet dann die Nutzerbefehle für die lokale Ausführung weiter.

Wenn ein Nutzer eine Smart-Home-Aktion mit einem lokalen Auftragsausführungspfad auslöst, sendet Assistant den Intent EXECUTE oder QUERY an das Google Home- oder Google Nest-Gerät und nicht an die Cloud-Ausfü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 die Absicht eines Nutzers von einem Smartphone mit Google Assistant. Anschließend wird sie von Google Cloud verarbeitet, dann lokal auf dem Google Home-Gerät 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: Pfad zur lokalen Auftragsausführung für die Smart-Home-Aktion hinzufügen

Die Auswahl der Google Home- oder Google Nest-Geräte, über die der Befehl ausgelöst wird, hängt von der lokalen Home-Plattform ab. Die Intents EXECUTE und QUERY können durch alle Google Home- oder Google Nest-Geräte geleitet werden, die in derselben Home Graph-Struktur wie das Zielgerät definiert sind.

App für Auftragsausführung

Die App für die lokale Auftragsausführung enthält eine Geschäftslogik, um die von der Local Home-Plattform gesendeten Intents zu verarbeiten und über das Local Area Network auf dein Smart-Home-Gerät zuzugreifen. Es wird voraussichtlich keine Änderung Ihrer Hardware vorgenommen, um die lokale Auftragsausführung einzubinden. Die App erfüllt die Smart-Home-Aktionsanfragen durch Senden von Steuerbefehlen an das Smart-Home-Gerät über Protokolle auf Anwendungsebene, u. a. HTTP, TCP oder UDP. Sollte der lokale Auftragsausführungspfad fehlschlagen, wird Ihre Cloud-Auftragsausführung als Fallback-Ausführungspfad verwendet.

Das SDK unterstützt zwei Hauptklassen:

  • DeviceManager: Bietet Methoden zur Kommunikation mit Smart-Home-Geräten über TCP, UDP-Sockets oder HTTP-Anfragen.
  • App: Bietet Methoden zum Anhängen von Handlern für Intents, die Google nach dem Erkennen von lokal steuerbaren Geräten (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 Ihrem eigenen Hosting-Server oder lokalen Rechner laden. In der Produktion hostet Google Ihre App in einer sicheren JavaScript-Sandbox-Umgebung auf dem Google Home- oder Google Nest-Gerät des Nutzers.

Die Report State API wird derzeit für den lokalen Verkauf nicht unterstützt. Google nutzt diese Auftragsausführung in der Cloud, um diese Anfragen zu verarbeiten.

Anwendungslebenszyklus

Ihre App für die lokale Auftragsausführung wird on demand geladen, wenn die lokale Home-Plattform neue lokale Geräte erkennt, die der Konfiguration des Projektscans entsprechen, oder ausstehende Auslieferungen in Bezug auf ein zuvor identifiziertes Gerät hat.

Google Home- oder Google Nest-Geräte sind speicherabhängig und Ihre lokale App für die Auftragsausführung kann aufgrund von Speicherauslastung im System jederzeit beendet werden. Dies kann passieren, wenn die Anwendung zu viel Arbeitsspeicher verbraucht oder das System Platz für eine andere App schaffen muss. Die Plattform wird auf der lokalen Startseite nur dann neu gestartet, wenn neue Intents für die Bereitstellung vorliegen und genügend Arbeitsspeicherressourcen zum Ausführen der App vorhanden sind.

Die lokale Startseite entladen Ihre App nach einer Zeitüberschreitung bei Inaktivität, wenn der Nutzer die Verknüpfung seines Kontos aufhebt oder es keine Geräte mehr gibt, die die lokale Auftragsausführung mit der agentUserId des Nutzers unterstützen.

Unterstützte Geräte

Auf der lokalen Google Home-Plattform wird Ihre App für die lokale Ausführung auf unterstützten Google Home- oder Google Nest-Geräten ausgeführt. In der folgenden Tabelle werden die unterstützten Geräte und die Laufzeit angegeben, die auf den einzelnen Geräten verwendet wird. 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 Anwendung für die Auftragsausführung hängt vom Gerät ab. Die lokale Startseite unterstützt die folgenden Laufzeitumgebungen:

  • Chrome: Ihre lokale Anwendung für die Auftragsausführung wird im Kontext eines Chrome-Browsers window ausgeführt, in dem Chrome M80 oder höher mit der Unterstützung für ECMAScript-Version ES2018 ausgeführt wird.
  • Node.js: Ihre lokale Anwendung für die Auftragsausführung wird als Skript innerhalb eines Node.js-Prozesses ausgeführt, der Node v10.x LTS oder höher mit Unterstützung für ECMAScript-Version ES2018 ausführt.

Struktur des Quellcodes

Wir empfehlen, die Abhängigkeiten in einer einzigen JavaScript-Datei zu bündeln. Verwenden Sie dazu die vom Bundle „Local Home SDK“ bereitgestellten Bundler-Konfigurationen und verpacken Sie den Quellcode als Unmittelbar aufgerufener Funktionsausdruck (IIFE).

Vorgehensweise bei der Implementierung

Damit Sie das Local Home SDK für Ihre Smart-Home-Integration verwenden können, sind folgende Schritte erforderlich:

1 Scankonfiguration einrichten Konfigurieren Sie die Actions Console mit den erforderlichen Parametern, damit Assistant lokal steuerbare Geräte erkennen kann.
2 Angaben zur SYNC in Ihrer Cloud-Auftragsausführung aktualisieren Ändern Sie in der Cloud-Auftragsausführung den Anfrage-Handler SYNC, um das Feld otherDeviceIds zu unterstützen, mit dem die Plattform einen lokalen Auftragsausführungspfad erstellt. Geben Sie in diesem Feld die IDs von Geräten an, die lokal gesteuert werden können.
3 App für die lokale Auftragsausführung implementieren Mit dem Local Home SDK kannst du eine JavaScript-App erstellen, um die Intents IDENTIFY, EXECUTE und QUERY zu verarbeiten. Bei Hub- oder Bridge-Proxy-Geräten sollten Sie auch den Intent REACHABLE_DEVICES verarbeiten.
4 App testen und Fehler beheben Testen Sie Ihre Integration (oder selbstzertifiziert) mithilfe der Google Home Test Suite.

Hinweis