Un chemin d'exécution local est établi lorsque Google associe un appareil contrôlable localement à un appareil renvoyé dans la réponse SYNC de votre exécution cloud.
Pour permettre à Google de détecter votre appareil sur le réseau local et d'établir le chemin de traitement en local, vous devez ajouter des informations de détection dans la console Actions.
Vous devez également mettre à jour la réponse SYNC de votre traitement cloud pour informer Google de l'appareil contrôlable localement.
Configurer les informations de configuration de l'analyse
Pour spécifier les informations de découverte, procédez comme suit :
Accédez à votre intégration Cloud-to-cloud dans Google Home Developer Console :
Accédez à Project > Cloud-to-cloud (Projet > Cloud-to-cloud) sur le côté gauche de l'écran, puis sélectionnez Edit (Modifier) pour l'intégration. Sur la page Configuration, faites défiler l'écran jusqu'à Exécution locale et activez le paramètre. Saisissez l'URL suivante dans chaque champ d'URL de test, insérez l'ID de votre projet, puis cliquez sur Enregistrer :
https://<project-id>.web.app/local-home/index.htmlCliquez sur + Ajouter une configuration d'analyse sous Détection d'appareils pour ajouter une nouvelle configuration d'analyse.
Sélectionnez un type de protocole de correspondance d'analyse dans la liste déroulante, puis saisissez les valeurs que Google doit analyser.
Les tableaux suivants présentent les attributs que vous pouvez ajouter, en fonction des protocoles que vous souhaitez que Google utilise pour rechercher votre appareil :
| Attribut | Description | Exemple de valeur |
|---|---|---|
| Nom du service |
Obligatoire. Nom du service publié par l'appareil au format service.domain.
|
_http._tcp.local |
| Nom |
Obligatoire. Filtrez les résultats pour une instance de service unique au format |
my-device-[0-9]{4}\._http\._tcp\.local |
| Attribut | Description | Exemple de valeur |
|---|---|---|
| Type de service |
Obligatoire. Identifiant complet du service UPnP au format domain:service:type:version.
|
schemas-upnp-org:service:SwitchPower:1 |
| OUI |
Facultatif. Organizationally Unique Identifier. Valeur de 24 bits identifiant le fabricant de l'appareil. En général, il s'agit des trois premiers octets de l'adresse MAC de l'appareil. |
1A:2B:3C |
| Attribut | Description | Exemple de valeur |
|---|---|---|
| Adresse de découverte | Obligatoire. Adresse IP de destination pour la diffusion UDP. | 255.255.255.255 |
| Port de diffusion | Obligatoire. Port de destination pour la diffusion UDP. | 5555 |
| Port d'écoute | Obligatoire. Port d'écoute pour la réponse de détection UDP. | 5556 |
| Paquet de découverte | Obligatoire. Charge utile à envoyer dans la diffusion UDP. Formaté sous forme de chaîne d'octets encodée en hexadécimal. |
48454C4C4F |
Mettre à jour la réponse SYNC dans le traitement cloud
L'intent SYNC indique à l'Assistant les appareils contrôlés par l'utilisateur et leurs fonctionnalités.
Pour prendre en charge l'exécution locale, la plate-forme Local Home vérifie la réponse SYNC de l'exécution cloud de votre action pour la maison connectée et tente de faire correspondre les ID d'appareil du champ otherDeviceIds avec l'ID de validation renvoyé par le gestionnaire IDENTIFY. Les entrées d'appareil sans champ otherDeviceIds sont exclues de l'exécution locale.
Dans le champ otherDeviceIds de la réponse SYNC, vous devez définir les ID des appareils connectés pouvant être contrôlés localement. Le champ apparaît au niveau device dans la réponse. Google peut établir un chemin d'exécution local sur n'importe quel appareil avec l'ID donné.
Utilisez le champ customData pour spécifier les données supplémentaires dont Google a besoin pour se connecter à un appareil autonome ou pour cibler des appareils finaux à l'aide d'un hub (par exemple, le numéro de port et d'autres informations spécifiques au protocole).
Exemple
L'extrait de code suivant montre comment créer votre gestionnaire SYNC.
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "agentUserId": "1836.15267389", "devices": [{ "id": "123", "type": "action.devices.types.OUTLET", "traits": [ "action.devices.traits.OnOff" ], "name": { "name": "Night light" }, "willReportState": false, "otherDeviceIds": [{ "deviceId": "local-device-id" }], "customData": { "port": 5555, "authToken": "..." } }] } }