Un percorso di fulfillment locale viene stabilito quando Google associa un dispositivo controllabile localmente
a un dispositivo restituito nella risposta SYNC
del tuo fulfillment in cloud.
Per consentire a Google di rilevare il tuo dispositivo sulla rete locale e stabilire il percorso di fulfillment locale, devi aggiungere le informazioni di rilevamento nella console Actions.
Devi anche aggiornare la risposta SYNC dal tuo fulfillment cloud per informare Google del dispositivo controllabile localmente.
Configura le informazioni di configurazione della scansione
Per specificare le informazioni di discovery, segui questi passaggi:
Vai all'integrazione di Cloud-to-cloud in Google Home Developer Console:
Vai a Progetto > Cloud-to-cloud sul lato sinistro dello schermo, quindi seleziona Modifica per l'integrazione. Nella pagina Configurazione, scorri fino a Fulfillment locale e attiva l'impostazione. Inserisci il seguente URL in ogni campo dell'URL di test, inserisci l'ID progetto e fai clic su Salva:
https://<project-id>.web.app/local-home/index.htmlFai clic su + Aggiungi configurazione di scansione in Rilevamento dei dispositivi per aggiungere una nuova configurazione di scansione.
Seleziona un tipo di protocollo di corrispondenza della scansione dal menu a discesa e inserisci i valori per la scansione di Google.
Le seguenti tabelle mostrano gli attributi che puoi aggiungere, in base ai protocolli che vuoi che Google utilizzi per cercare il tuo dispositivo:
| Attributo | Descrizione | Valore di esempio |
|---|---|---|
| Nome servizio |
Obbligatorio. Nome del servizio pubblicato dal dispositivo nel formato service.domain.
|
_http._tcp.local |
| Nome |
Obbligatorio. Filtra per un'istanza di servizio univoca nel formato |
my-device-[0-9]{4}\._http\._tcp\.local |
| Attributo | Descrizione | Valore di esempio |
|---|---|---|
| Tipo di servizio |
Obbligatorio. Identificatore completo del servizio UPnP nel formato domain:service:type:version.
|
schemas-upnp-org:service:SwitchPower:1 |
| OUI |
Facoltativo. Organizationally Unique Identifier. Valore a 24 bit che identifica il produttore del dispositivo. In genere, i primi tre ottetti dell'indirizzo MAC del dispositivo. |
1A:2B:3C |
| Attributo | Descrizione | Valore di esempio |
|---|---|---|
| Indirizzo di rilevamento | Obbligatorio. Indirizzo IP di destinazione per la trasmissione UDP. | 255.255.255.255 |
| Porta di trasmissione | Obbligatorio. Porta di destinazione per la trasmissione UDP. | 5555 |
| Porta di ascolto | Obbligatorio. Porta di ascolto per la risposta di rilevamento UDP. | 5556 |
| Discovery Packet | Obbligatorio. Payload da inviare nella trasmissione UDP. Formattato come stringa di byte con codifica esadecimale. |
48454C4C4F |
Aggiorna la risposta SYNC nel fulfillment cloud
L'intent SYNC segnala all'assistente i dispositivi controllati dall'utente e le relative funzionalità.
Per supportare il fulfillment locale, la piattaforma Local Home controlla la risposta SYNC
del fulfillment cloud dell'azione per la smart home e tenta di abbinare gli ID dispositivo
nel campo otherDeviceIds all'ID di verifica restituito dal
gestore IDENTIFY. Le voci dei dispositivi senza un campo otherDeviceIds sono
escluse dall'evasione locale.
Nel campo otherDeviceIds della risposta SYNC, devi impostare gli ID dispositivo dei dispositivi per la smart home che possono essere controllati localmente. Il campo viene visualizzato a livello di device nella risposta. Google può stabilire un percorso di fulfillment locale su qualsiasi dispositivo con l'ID specificato.
Utilizza il campo customData per specificare eventuali dati aggiuntivi di cui Google ha bisogno per connettersi a un dispositivo autonomo o per scegliere come target i dispositivi finali utilizzando un hub (ad esempio, il numero di porta e altre informazioni specifiche del protocollo).
Esempio
Il seguente snippet mostra come creare il gestore 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": "..." } }] } }