Das Local Home SDK optimiert die Smart-Home-Integration mit Google Assistant, indem ein Pfad für die lokale Ausführung von Smart-Home-Intents hinzugefügt wird.
Das Local Home SDK bietet zwei Funktionen: lokale Ausführung und lokale Abfrage.
- Mit der lokalen Ausführung können Befehle ausgeführt werden, indem
EXEC
-Intents über den lokalen Ausführungspfad gesendet werden, anstatt einen Cloud API-Aufruf auszuführen. So könnte die Anfrage „Schalte das Licht ein“ beispielsweise von der lokalen Ausführung verarbeitet werden. - Mit Local Query können Sie Abfragen zum Gerätestatus verarbeiten, indem Sie
QUERY
-Intents über den lokalen Ausführungspfad senden. So würde die lokale Abfrage beispielsweise die Abfrage „Ist meine Lampe an?“ beantworten, ohne einen Cloud-API-Aufruf auszuführen.
Mit dem SDK können Sie eine lokale Fulfillment-App mit TypeScript oder JavaScript schreiben, die Ihre Smart-Home-Geschäftslogik enthält. Google Home- oder Google Nest-Geräte können Ihre App auf dem Gerät laden und ausführen. Ihre App kommuniziert direkt über WLAN in einem lokalen Netzwerk (LAN) mit Ihren vorhandenen Smart-Home-Geräten, um Nutzerbefehle über bestehende Protokolle auszuführen.
Die Integration des SDKs bietet Leistungsverbesserungen für Ihre Cloud-to-cloud-Integration, einschließlich niedrigerer Latenz und höherer Zuverlässigkeit. Die lokale Auslieferung wird für alle Gerätetypen und Gerätemerkmale unterstützt, mit Ausnahme derjenigen, die die sekundäre Nutzerbestätigung verwenden.
Jetzt loslegen Beispiel ausprobieren
Funktionsweise
Nachdem die Plattform für lokales Smart Home eine SYNC
-Antwort von der Cloud-Ausführung erhalten hat, scannt sie das lokale Netzwerk des Nutzers mit mDNS, UDP-Broadcast oder UPnP, um Smart-Home-Geräte zu finden, die mit Assistant verbunden sind.
Die Plattform sendet einen IDENTIFY
-Intent, um zu ermitteln, ob das Gerät lokal steuerbar ist. Dazu wird die Geräte-ID in der IDENTIFY
-Antwort mit derjenigen verglichen, die in der vorherigen SYNC
-Antwort zurückgegeben wurde. Wenn das erkannte Gerät ein Hub oder eine Bridge ist, sendet die Plattform eine REACHABLE_DEVICES
-Intent und behandelt den Hub als Proxygerät für die lokale Kommunikation.
Wenn die Plattform eine Antwort erhält, die ein lokales Gerät bestätigt, stellt sie einen lokalen Pfad zur Auftragsausführung zum Google Home- oder Google Nest-Gerät des Nutzers her und leitet Nutzerbefehle zur lokalen Auftragsausführung weiter.
Wenn ein Nutzer eine Cloud-to-cloud-Integration mit einem Pfad für die lokale Ausführung auslöst, sendet Assistant den EXECUTE
-Intent oder QUERY
-Intent nicht an die Cloud-Ausführung, sondern an das Google Home- oder Google Nest-Gerät. Das Gerät führt dann die lokale App zur Auftragsausführung aus, um die Absicht zu verarbeiten.
Die lokale Home-Plattform wählt nicht deterministisch aus, welches Google Home- oder Google Nest-Gerät den Befehl auslösen soll. Die EXECUTE
- und QUERY
-Intents können über jedes Google Home- oder Google Nest-Gerät gesendet werden, das in derselben Home Graph-Struktur wie das Zielgerät definiert ist.
App für lokales Fulfillment
Die App zur lokalen Auftragsausführung enthält die Geschäftslogik, mit der die von der Local Home-Plattform gesendeten Intents verarbeitet und über das Local Area Network auf Ihr Smart-Home-Gerät zugegriffen wird. Für die Einbindung der lokalen Abwicklung ist keine Änderung Ihrer Hardware erforderlich. Die App erfüllt Cloud-to-cloud-Integrationsanfragen, indem sie Steuerbefehle über Protokolle der Anwendungsschicht an das Smart-Home-Gerät sendet, einschließlich HTTP, TCP oder UDP. Wenn der lokale Ausführungspfad fehlschlägt, wird die Cloud-Ausführung als Fallback-Ausführungspfad verwendet.
Das Local Home SDK bietet zwei Hauptklassen, die Sie beim Erstellen der App unterstützen:
DeviceManager
: bietet Methoden zur Kommunikation mit Smart-Home-Geräten über TCP-, UDP-Sockets oder HTTP-Anfragen.App
: Bietet Methoden zum Anhängen von Handlers für Intents, die Google sendet, nachdem lokal steuerbare Geräte gefunden wurden (IDENTIFY
,REACHABLE_DEVICES
). Diese Klasse führt auch Nutzerbefehle aus (EXECUTE
) und beantwortet Nutzeranfragen 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 Ihren lokalen Entwicklungscomputer 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 nicht für die lokale Auftragsausführung unterstützt. Google nutzt Ihre Cloud-Ausführung, um diese Anfragen zu bearbeiten.
Anwendungslebenszyklus
Ihre App für die lokale Auftragsausführung wird auf Anfrage geladen, wenn die Local Home-Plattform neue lokale Geräte erkennt, die der Projekt-Scankonfiguration entsprechen, oder ausstehende Übermittlungsabsichten im Zusammenhang mit einem zuvor erkannten Gerät vorliegen.
Google Home- oder Google Nest-Geräte haben einen begrenzten Arbeitsspeicher und Ihre lokale Fulfillment-App kann jederzeit aufgrund von Arbeitsspeichermangel im System beendet werden. Das 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 es neue Intents zu senden gibt und genügend Arbeitsspeicherressourcen für die Ausführung der App vorhanden sind.
Die Local Home-Plattform entlädt Ihre App nach einem Inaktivitätstimeout, wenn der Nutzer die Verknüpfung seines Kontos aufhebt oder es keine Geräte mehr gibt, die die lokale Auslieferung unterstützen und mit dem agentUserId
des Nutzers verknüpft sind.
Unterstützte Geräte
Die Local Home-Plattform führt Ihre 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 auf den einzelnen Geräten verwendete Laufzeit beschrieben. Weitere Informationen zu den 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 Fulfillment-App hängt von Ihrem Gerät ab. Die Local Home-Plattform unterstützt die folgenden Laufzeitumgebungen:
- Chrome: Ihre lokale Fulfillment-App wird im Kontext eines Chrome-Browsers
window
ausgeführt, in dem Chrome M80 oder höher mit Unterstützung für ECMAScript-Version ES2018 installiert ist. - Node.js: Ihre lokale Fulfillment-Anwendung wird als Script in einem Node.js-Prozess ausgeführt, der Node v10.x (LTS) oder höher mit Unterstützung für ECMAScript-Version ES2018 verwendet.
Struktur des Quellcodes
Wir empfehlen, Ihre Abhängigkeiten mithilfe der vom Local Home SDK bereitgestellten Bundler-Konfigurationen in einer einzigen JavaScript-Datei zu bündeln und Ihren Quellcode als Immediately-invoked Function Expression (IIFE) zu verpacken.
Vorgehensweise bei der Implementierung
Wenn Sie das Local Home SDK für Ihre Smart-Home-Integration verwenden möchten, müssen Sie die folgenden Aufgaben ausführen:
1 | Scankonfiguration einrichten | Konfigurieren Sie die Google Home Developer Console mit den erforderlichen Parametern, damit Assistant lokal steuerbare Geräte erkennen kann. |
2 | SYNC-Antwort in der Cloud-Ausführung aktualisieren | Ändern Sie in Ihrer Cloud-Ausführung den SYNC -Anfrage-Handler so, dass das Feld
otherDeviceIds unterstützt wird, das die Plattform zum Festlegen eines lokalen Ausführungspfads verwendet. 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 | Erstellen Sie mit dem Local Home SDK eine JavaScript-App, um die Intents IDENTIFY ,
EXECUTE und
QUERY zu verarbeiten. Bei Hub- oder Bridge-Proxy-Geräten sollten Sie auch die REACHABLE_DEVICES -Intent verarbeiten.
|
4 | App testen und debuggen | Testen Sie Ihre Integration mit der Google Home Test Suite oder zertifizieren Sie sie selbst. |
Hinweis
- Machen Sie sich mit den Grundlagen zum Erstellen einer Cloud-to-cloud-Integration vertraut.
- Achten Sie darauf, dass Sie in Google Home Developer Console ein Smart-Home-Projekt haben und die Kontoverknüpfung konfiguriert ist.
- Achte darauf, dass du auf deinem Testgerät in Developer Console und in Assistant mit demselben Google-Konto angemeldet bist.
- Sie benötigen eine Node.js, um Ihre App zu schreiben. Für die Installation von Node.js und npm wird der Node Version Manager empfohlen.
- Wenn Sie die neueste Version des Local Home SDK verwenden möchten, müssen Sie Ihre Testgeräte für das Cast-Vorab-Programm registrieren.