Supporto del rilevamento dei dispositivi

Un percorso di evasione locale viene stabilito quando Google associa un dispositivo controllabile localmente a un dispositivo restituito nella risposta SYNC del tuo cloud fulfillment.

Per consentire a Google di rilevare il tuo dispositivo sulla rete locale e stabilire il percorso di evasione degli ordini locale, devi aggiungere le informazioni di rilevamento nella console Actions. Devi anche aggiornare la risposta SYNC del tuo cloud fulfillment per informare Google del dispositivo controllabile localmente.

Configura le informazioni sulla configurazione della scansione

Per specificare le informazioni sul rilevamento:

  1. Apri il progetto per la smart home nella console Actions.
  2. Nel menu di navigazione a sinistra, fai clic su Azioni.
  3. In Configura SDK Home locale (facoltativo) > Aggiungi configurazione di scansione del dispositivo, fai clic su Nuova configurazione di scansione.
  4. Seleziona un tipo di protocollo di corrispondenza della scansione dal menu a discesa e inserisci i valori da eseguire la scansione da parte di Google.

Le tabelle seguenti mostrano gli attributi che puoi aggiungere in base ai protocolli che vuoi che Google utilizzi per cercare il tuo dispositivo:

mDNS
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 instance.service.domain.

La piattaforma tratta questo valore come un'espressione regolare e restituisce tutti i dispositivi corrispondenti.
my-device-[0-9]{4}\._http\._tcp\.local
UPnP
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 di 24 bit che identifica il produttore del dispositivo. In genere, i primi tre ottetti dell'indirizzo MAC del dispositivo.
1A:2B:3C
UDP
Attributo Descrizione Valore di esempio
Indirizzo di broadcast 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
Pacchetto Discovery

Obbligatorio. Payload da inviare nella trasmissione UDP.

Formattato come stringa di byte con codifica esadecimale.
48454C4C4F

Aggiorna la risposta SYNC nell'implementazione nel cloud

L'intent SYNC comunica all'assistente i dispositivi controllati dall'utente e le relative funzionalità.

Per supportare il completamento locale, la piattaforma Local Home controlla la risposta SYNC proveniente dal completamento sul cloud dell'azione della smart home e tenta di abbinare gli ID dispositivo nel campo otherDeviceIds all'ID verifica restituito dall'handler IDENTIFY. Le voci dei dispositivi senza un campo otherDeviceIds sono escluse dall'evasione degli ordini locali.

Nel otherDeviceIds campo della risposta SYNC, devi impostare gli ID 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 evasione degli ordini locale su qualsiasi dispositivo con l'ID specificato.

Utilizza il campo customData per specificare eventuali dati aggiuntivi di cui Google ha bisogno per collegarsi a un dispositivo autonomo o per scegliere come target i dispositivi di destinazione tramite un hub (ad esempio il numero di porta e altre informazioni specifiche del protocollo).

Esempio

Lo snippet seguente mostra come creare l'handler SYNC.

Autonomo/hub
{
  "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": "..."
      }
    }]
  }
}