Le SDK Local Home améliore l'intégration de votre maison connectée à l'Assistant Google en ajoutant un chemin d'accès local pour router les intents de maison connectée.
Le SDK Local Home propose deux fonctionnalités: l'exécution locale et la requête locale.
- L'exécution locale permet d'exécuter des commandes en envoyant des intents
EXEC
via le chemin d'exécution local, au lieu d'effectuer un appel d'API cloud. Par exemple, la requête "Allume la lumière" peut être gérée par l'exécution locale. - La requête locale permet de gérer les requêtes concernant l'état de l'appareil en envoyant des intents
QUERY
via le chemin d'exécution local. Par exemple, la requête locale répondrait à la requête "Ma lumière est-elle allumée ?" sans effectuer d'appel d'API cloud.
Le SDK vous permet d'écrire une application de traitement en local, à l'aide de TypeScript ou de JavaScript, qui contient votre logique métier de maison connectée. Les appareils Google Home ou Google Nest peuvent charger et exécuter votre application sur l'appareil. Votre application communique directement avec vos appareils connectés existants via le Wi-Fi sur un réseau local (LAN) pour traiter les commandes des utilisateurs, via les protocoles existants.
L'intégration du SDK améliore les performances de votre intégration Cloud-to-cloud, y compris en termes de latence et de fiabilité. La validation locale est prise en charge pour tous les types et caractéristiques d'appareils, à l'exception de ceux qui utilisent la validation secondaire des utilisateurs.
Commencer à créer Essayer l'exemple
Comprendre le fonctionnement
Après avoir reçu une réponse SYNC
de votre traitement dans le cloud, la plate-forme Local Home analyse le réseau local de l'utilisateur à l'aide de mDNS, de la diffusion UDP ou d'UPnP pour détecter les appareils connectés à l'Assistant.
La plate-forme envoie un intent IDENTIFY
pour déterminer si l'appareil est contrôlable localement, en comparant l'ID de l'appareil dans la réponse IDENTIFY
à ceux renvoyés par la réponse SYNC
précédente. Si l'appareil détecté est un hub ou un pont, la plate-forme envoie un intent REACHABLE_DEVICES
et traite le hub comme l'appareil proxy pour la communication locale.
Lorsqu'elle reçoit une réponse confirmant un appareil local, la plate-forme établit un chemin de traitement local vers l'appareil Google Home ou Google Nest de l'utilisateur, puis achemine les commandes de l'utilisateur pour le traitement en local.
Lorsqu'un utilisateur déclenche une intégration Cloud-to-cloud avec un chemin d'accès local, l'Assistant envoie l'intent EXECUTE
ou l'intent QUERY
à l'appareil Google Home ou Google Nest plutôt qu'à l'exécution dans le cloud. L'appareil exécute ensuite l'application de traitement en local pour traiter l'intent.
La plate-forme Local Home ne choisit pas de manière déterministe l'appareil Google Home ou Google Nest à utiliser pour déclencher la commande. Les intents EXECUTE
et QUERY
peuvent provenir de n'importe quel appareil Google Home ou Google Nest défini dans la même structure Home Graph que l'appareil cible.
Application de traitement en local
L'application de traitement en local contient la logique métier permettant de traiter les intents envoyés par la plate-forme Local Home et d'accéder à votre appareil connecté via le réseau local. Aucune modification de votre matériel n'est nécessaire pour intégrer la fonctionnalité de traitement local. L'application répond aux requêtes d'intégration Cloud-to-cloud en envoyant des commandes de contrôle à l'appareil connecté via des protocoles de couche application, y compris HTTP, TCP ou UDP. En cas d'échec du chemin d'exécution local, votre traitement cloud est utilisé comme chemin d'exécution de remplacement.
Pour faciliter la création de l'application, le SDK Local Home fournit ces deux classes principales:
DeviceManager
: fournit des méthodes pour communiquer avec des appareils connectés à l'aide de sockets TCP, UDP ou de requêtes HTTP.App
: fournit des méthodes permettant d'associer des gestionnaires aux intents que Google envoie après avoir détecté des appareils contrôlables localement (IDENTIFY
,REACHABLE_DEVICES
). Cette classe exécute également les commandes utilisateur (EXECUTE
) et répond aux requêtes des utilisateurs sur l'état actuel de l'appareil (QUERY
).
Pendant le développement, vous pouvez créer et tester l'application en la chargeant sur votre propre serveur d'hébergement ou sur votre ordinateur de développement local. En production, Google héberge votre application dans un environnement de bac à sable JavaScript sécurisé sur l'appareil Google Home ou Google Nest de l'utilisateur.
L'API Report State n'est pas compatible avec le traitement local pour le moment. Google s'appuie sur votre traitement cloud pour traiter ces requêtes.
Cycle de vie de l'application
Votre application de traitement en local est chargée à la demande lorsque la plate-forme Local Home détecte de nouveaux appareils locaux correspondant à la configuration de recherche du projet ou dispose d'intents en attente à transmettre concernant un appareil précédemment identifié.
Les appareils Google Home ou Google Nest sont soumis à des contraintes de mémoire, et votre application de traitement local peut être arrêtée à tout moment en raison de la pression sur la mémoire du système. Cela peut se produire si votre application commence à consommer trop de mémoire ou si le système doit libérer de l'espace pour une autre application. La plate-forme Local Home ne redémarre votre application que lorsqu'il y a de nouveaux intents à diffuser et des ressources de mémoire suffisantes pour que l'application s'exécute.
La plate-forme Local Home décharge votre application après un délai d'inactivité lorsque l'utilisateur dissocie son compte ou qu'il n'y a plus d'appareils compatibles avec l'exécution locale associés à l'agentUserId
de l'utilisateur.
Appareils compatibles
La plate-forme Local Home exécute votre application de traitement local sur les appareils Google Home ou Google Nest compatibles. Le tableau suivant décrit les appareils compatibles et l'environnement d'exécution utilisé sur chaque appareil. Pour en savoir plus sur les exigences d'exécution, consultez la section Environnement d'exécution.
Appareil | Type | Environnement |
---|---|---|
Google Home | Haut-parleur | Chrome |
Google Home Mini | Haut-parleur | Chrome |
Google Home Max | Haut-parleur | Chrome |
Nest Mini | Haut-parleur | Chrome |
Nest Hub | Écran | Chrome |
Nest Hub Max | Écran | Chrome |
Nest Wifi | Routeur | Node.js |
Point | Chrome |
Environnement d'exécution
L'environnement d'exécution de votre application de traitement en local dépend de votre appareil. La plate-forme Local Home est compatible avec les environnements d'exécution suivants:
- Chrome: votre application de traitement local est exécutée dans le contexte d'un navigateur Chrome
window
exécutant Chrome M80 ou version ultérieure, compatible avec la version ES2018 d'ECMAScript. - Node.js: votre application de traitement local est exécutée en tant que script dans un processus Node.js exécutant Node v10.x LTS ou une version ultérieure, avec prise en charge de la version ES2018 d'ECMAScript.
Structure du code source
Nous vous recommandons de regrouper vos dépendances dans un seul fichier JavaScript à l'aide des configurations du bundleur fournies par le SDK Local Home et de empaqueter votre code source en tant qu'expression de fonction appelée immédiatement (IIFE).
Chemin d'accès de l'exécution
Pour utiliser le SDK Local Home pour votre intégration de maison connectée, vous devez effectuer les tâches suivantes:
1 | Configurer la configuration d'analyse | Configurez Google Home Developer Console avec les paramètres nécessaires pour que l'Assistant puisse détecter les appareils contrôlables localement. |
2 | Mettre à jour la réponse SYNC dans votre traitement cloud | Dans votre traitement cloud, modifiez le gestionnaire de requêtes SYNC pour prendre en charge le champ
otherDeviceIds que la plate-forme utilise pour établir un chemin d'exécution local. Dans ce champ, indiquez les ID des appareils pouvant être contrôlés localement.
|
3 | Implémenter l'application de traitement en local | Utilisez le SDK Local Home pour créer une application JavaScript permettant de gérer les intents IDENTIFY ,
EXECUTE et
QUERY . Pour les appareils proxy de hub ou de pont, vous devez également gérer l'intent REACHABLE_DEVICES .
|
4 | Tester et déboguer votre application | Testez votre intégration (ou autocertifiez-vous) à l'aide de la suite de test Google Home. |
Avant de commencer
- Familiarisez-vous avec les principes de base de la création d'une intégration Cloud-to-cloud.
- Dans Google Home Developer Console, assurez-vous d'avoir un projet de maison connectée existant et que l'association de comptes est configurée.
- Assurez-vous d'être connecté au même compte Google dans Developer Console et dans l'Assistant sur votre appareil de test.
- Vous aurez besoin d'un environnement Node.js pour écrire votre application. Pour installer Node.js et npm, nous vous recommandons d'utiliser Node Version Manager.
- Pour utiliser la dernière version du SDK Local Home, vous devez inscrire vos appareils de test au programme Preview de Cast.