Das Local Home SDK optimiert die Smart-Home-Integration mit Google Assistant, indem es einen Pfad für die lokale Ausführung von Smart-Home-Intents hinzufügt.
Das Local Home SDK bietet zwei Funktionen: die lokale Ausführung und die lokale Abfrage.
- Die lokale Ausführung bietet die Möglichkeit, Befehle auszuführen, indem
EXEC-Intents über den lokalen Ausführungspfad gesendet werden, anstatt einen Cloud API-Aufruf auszuführen. Die Anfrage „Schalte das Licht ein“ könnte beispielsweise über die lokale Ausführung verarbeitet werden. - Mit Lokale Abfrage können Abfragen zum Gerätestatus verarbeitet werden, indem
QUERY-Intents über den lokalen Ausführungspfad gesendet werden. Beispielsweise würde die lokale Abfrage die Anfrage „Ist mein Licht an?“ beantworten, ohne einen Cloud-API-Aufruf zu machen.
Mit dem SDK kannst du eine lokale Ausführungs-App mit TypeScript oder JavaScript schreiben, die deine Smart-Home-Geschäftslogik enthält. Google Home- oder Google Nest-Geräte können deine App auf dem Gerät laden und ausführen. Deine App kommuniziert direkt über WLAN in einem Local Area Network (LAN) mit deinen vorhandenen Smart-Home-Geräten, um Nutzerbefehle über vorhandene Protokolle auszuführen.
Die Einbindung des SDK bietet Leistungsverbesserungen für Ihre Cloud-to-cloud-Integration, einschließlich geringerer Latenz und höherer Zuverlässigkeit. Die lokale Ausführung wird für alle Gerätetypen und Geräteeigenschaften unterstützt, mit Ausnahme derer, die die sekundäre Nutzerbestätigung verwenden.
Loslegen Beispiel ausprobieren
Funktionsweise
Nachdem die Local Home-Plattform eine SYNC-Antwort von deiner Cloud-Auftragsausführung erhalten hat, scannt sie das Local Area Network des Nutzers mithilfe von mDNS, UDP-Broadcast oder UPnP, um mit Assistant verbundene Smart-Home-Geräte zu finden.
Die Plattform sendet einen IDENTIFY-Intent, um festzustellen, ob das Gerät lokal steuerbar ist. Dazu wird die Geräte-ID in der IDENTIFY-Antwort mit den IDs aus der vorherigen 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 Proxy-Gerät für die lokale Kommunikation.
Wenn die Plattform eine Antwort erhält, die ein lokales Gerät bestätigt, richtet sie einen lokalen Ausführungspfad zum Google Home- oder Google Nest-Gerät des Nutzers ein und leitet anschließend Nutzerbefehle für die lokale Ausführung weiter.
Wenn ein Nutzer eine Cloud-to-cloud-Integration mit einem Pfad für die lokale Ausführung 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 Ausführungs-App aus, um den Intent zu verarbeiten.
Die Local Home-Plattform wählt nicht deterministisch aus, welches Google Home- oder Google Nest-Gerät den Befehl auslösen soll. Die Intents EXECUTE und QUERY können von jedem Google Home- oder Google Nest-Gerät stammen, das in derselben Home Graph-Struktur wie das Zielgerät definiert ist.
App für die lokale Ausführung
Die lokale Ausführungs-App enthält die 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. Für die Integration der lokalen Ausführung ist keine Änderung Ihrer Hardware erforderlich. Die App erfüllt Cloud-to-cloud-Integrationsanfragen, indem sie Steuerbefehle über Protokolle der Anwendungsebene, einschließlich HTTP, TCP oder UDP, an das Smart-Home-Gerät sendet. Wenn der lokale Ausführungspfad fehlschlägt, wird die Cloud-Ausführung als Fallback-Ausführungspfad verwendet.
Zur Unterstützung der App-Entwicklung 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: Bietet Methoden zum Anhängen von Handlern für Intents, die Google nach dem Erkennen lokal steuerbarer Geräte (IDENTIFY,REACHABLE_DEVICES) sendet. Diese Klasse führt auch Nutzerbefehle (EXECUTE) aus und beantwortet Nutzeranfragen zum aktuellen Gerätestatus (QUERY).
Während der Entwicklung können Sie die App erstellen und testen, indem Sie sie auf Ihren eigenen Hosting-Server oder Ihre lokale Entwicklungsmaschine 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 Ausführung unterstützt. Google verwendet Ihre Cloud-Auftragsausführung, um diese Anfragen zu verarbeiten.
Anwendungslebenszyklus
Deine lokale Ausführungs-App wird bei Bedarf geladen, wenn die Local Home-Plattform neue lokale Geräte erkennt, die der Scan-Konfiguration des Projekts entsprechen, oder wenn ausstehende Intents für ein zuvor identifiziertes Gerät vorliegen.
Google Home- oder Google Nest-Geräte haben nur begrenzten Arbeitsspeicher. Deine App für die lokale Ausführung kann jederzeit beendet werden, wenn der Arbeitsspeicher im System knapp wird. Das kann passieren, wenn deine App zu viel Arbeitsspeicher verbraucht oder das System Platz für eine andere App schaffen muss. Die Local Home-Plattform startet deine App nur dann neu, wenn neue Intents bereitgestellt werden müssen und genügend Arbeitsspeicherressourcen für die Ausführung der App vorhanden sind.
Die Local Home-Plattform entlädt deine App nach einer Zeitüberschreitung, wenn der Nutzer die Verknüpfung seines Kontos aufhebt oder keine Geräte mehr vorhanden sind, die die lokale Ausführung unterstützen und mit dem agentUserId des Nutzers verknüpft sind.
Unterstützte Geräte
Die Local Home-Plattform führt deine App für die lokale Ausführung auf unterstützten Google Home- oder Google Nest-Geräten aus. In der folgenden Tabelle werden die unterstützten Geräte und die auf den einzelnen Geräten 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 | Display | Chrome |
| Nest Hub Max | Display | 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 App für die lokale Ausführung wird im Kontext eines Chrome-Browsers
windowmit Chrome M80 oder höher und Unterstützung für ECMAScript-Version ES2018 ausgeführt. - Node.js: Deine lokale Auftragsausführungs-App wird als Skript in einem Node.js-Prozess ausgeführt, auf dem Node v10.x LTS oder höher mit Unterstützung für ECMAScript-Version ES2018 ausgeführt wird.
Struktur des Quellcodes
Wir empfehlen, die Abhängigkeiten mithilfe der Bundler-Konfigurationen des Local Home SDK in einer einzigen JavaScript-Datei zu bündeln und den Quellcode als Immediately-invoked Function Expression (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 Aufgaben ausführen:
| 1 | Scankonfiguration einrichten | Konfiguriere die Google Home Developer Console mit den erforderlichen Parametern, damit Assistant lokal steuerbare Geräte finden kann. |
| 2 | SYNC-Antwort in der Cloud-Auftragsausführung aktualisieren | Ändere in deiner Cloud-Auftragsausführung den Anfrage-Handler SYNC so, dass er das Feld
otherDeviceIds unterstützt, das die Plattform zum Einrichten eines lokalen Auftragsausführungspfads verwendet. Geben Sie in diesem Feld die IDs der Geräte an, die lokal gesteuert werden können.
|
| 3 | Lokale Auftragsausführungs-App implementieren | Verwende das Local Home SDK, um eine JavaScript-App zu erstellen, die die Intents IDENTIFY,
EXECUTE und
QUERY verarbeitet. Bei Hub- oder Bridge-Proxy-Geräten solltest du auch den Intent REACHABLE_DEVICES verarbeiten.
|
| 4 | App testen und Fehler beheben | Teste deine Integration (oder zertifiziere sie selbst) mit der Google Home-Test-Suite. |
Hinweis
- Machen Sie sich mit den Grundlagen zum Erstellen einer Cloud-to-cloud-Integration vertraut.
- Prüfe in der Google Home Developer Console, ob du ein Smart-Home-Projekt hast und ob die Kontoverknüpfung konfiguriert ist.
- Achte darauf, dass du in der Developer Console und in Assistant auf deinem Testgerät mit demselben Google-Konto angemeldet bist.
- Sie benötigen eine Node.js-Umgebung, um Ihre Anwendung zu schreiben. Für die Installation von Node.js und npm wird der Node Version Manager empfohlen.
- Wenn du mit der aktuellen Version des Local Home SDK arbeiten möchtest, musst du deine Testgeräte für das Cast-Vorschauprogramm registrieren.