

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Implementa AWS. DiscoverDevices operazione
<a name="discover-devices-op"></a>

Device Discovery allinea l'elenco dei dispositivi fisici di proprietà dell'utente finale con le rappresentazioni digitali di tali dispositivi degli utenti finali gestite nelle integrazioni gestite per AWS IoT Device Management. Viene eseguita da un AWS cliente su dispositivi di proprietà dell'utente finale solo dopo aver completato il collegamento dell'account tra l'utente e le integrazioni gestite per AWS IoT Device Management. Il rilevamento dei dispositivi è un processo asincrono in cui le integrazioni gestite per AWS IoT Device Management richiamano un connettore per avviare la richiesta di rilevamento dei dispositivi. Un connettore C2C restituisce un elenco di dispositivi degli utenti finali rilevati in modo asincrono con un identificatore di riferimento (denominato «) generato da integrazioni gestite. `deviceDiscoveryId`

Il diagramma seguente illustra il flusso di lavoro di rilevamento dei dispositivi tra l'utente finale e le integrazioni gestite per AWS IoT Device Management:

![\[AWS. DiscoverDevices flusso di lavoro\]](http://docs.aws.amazon.com/it_it/iot-mi/latest/devguide/images/device-discovery-workflow.png)


**AWS. DiscoverDevices flusso di lavoro**

1. Il cliente avvia il processo di scoperta del dispositivo per conto dell'utente finale.

1. Le integrazioni gestite per la AWS IoT Device Management generazione di un identificatore di riferimento richiesto `deviceDiscoveryId` per la richiesta di rilevamento del dispositivo generata dal Cliente. AWS 

1. Integrazioni gestite per l' AWS IoT Device Management invio di una richiesta di rilevamento del dispositivo al connettore C2C utilizzando l'interfaccia `AWS.DiscoverDevices` operativa, inclusa una richiesta valida per OAuth `accessToken` l'utente finale e la. `deviceDiscoveryId`

1. Gli archivi del connettore `deviceDiscoveryId` devono essere inclusi nell'evento. `DEVICE_DISCOVERY` Questo evento conterrà anche un elenco dei dispositivi degli utenti finali scoperti e dovrà essere inviato alle integrazioni gestite per AWS IoT Device Management con l'`SendConnectorEvent`API come `DEVICE_DISCOVERY` evento.

1. Il connettore C2C chiamerà il server di risorse per recuperare tutti i dispositivi di proprietà dell'utente finale.

1. Il connettore C2C Lambda risponde all'invocazione Lambda `invokeFunction` () con la risposta ACK alle integrazioni gestite per AWS IoT Device Management, fungendo da risposta iniziale per l'operazione. `AWS.DiscoverDevices` Managed Integrations notifica al cliente con un ACK il processo di scoperta dei dispositivi avviato.

1. Il server di risorse ti invia un elenco di dispositivi posseduti e gestiti dall'utente finale.

1. Il connettore converte ogni dispositivo dell'utente finale nelle integrazioni gestite per il formato del dispositivo richiesto da AWS IoT Device Management`ConnectorDeviceId`, `ConnectorDeviceName` incluso un report sulle capacità per ogni dispositivo.

1. Il connettore C2C fornisce anche informazioni sul proprietario `UserId` dei dispositivi rilevati. Può essere recuperato dal server di risorse come parte dell'elenco dei dispositivi o in una chiamata separata a seconda dell'implementazione del server di risorse.

1. Successivamente, il connettore C2C chiamerà le integrazioni gestite per l'API AWS IoT Device Management`SendConnectorEvent`, tramite SigV4 utilizzando Account AWS credenziali e con il parametro operativo impostato come «DEVICE\$1DISCOVERY». Ogni dispositivo nell'elenco dei dispositivi inviati alle integrazioni gestite per AWS IoT Device Management sarà rappresentato da parametri specifici del dispositivo come`connectorDeviceId`, `connectorDeviceName` e a. `capabilityReport`

   1. In base alla risposta del tuo server di risorse, devi notificare di conseguenza le integrazioni gestite per AWS IoT Device Management.

     Ad esempio, se il tuo server di risorse riceve una risposta in pagine all'elenco dei dispositivi rilevati per un utente finale, per ogni sondaggio puoi inviare un singolo evento `DEVICE_DISCOVERY` operativo, con un parametro di. `statusCode` `3xx` Se il rilevamento dei dispositivi è ancora in corso, ripeti i passaggi 5, 6 e 7.

1. Managed Integrations for AWS IoT Device Management invia una notifica al cliente in merito alla scoperta dei dispositivi dell'utente finale.

1. Se il connettore C2C invia un evento `DEVICE_DISCOVERY` operativo con il `statusCode` parametro aggiornato con un valore di 200, le integrazioni gestite notificheranno al cliente il completamento del flusso di lavoro di individuazione dei dispositivi.
**Importante**  
Se lo si desidera, i passaggi da 7 a 11 possono verificarsi prima del passaggio 6. Ad esempio, se la piattaforma di terze parti dispone di un'API per elencare i dispositivi di un utente finale, l'evento DEVICE\$1DISCOVERY può essere inviato `SendConnectorEvent` prima che il connettore C2C Lambda risponda con il tipico ACK.

## Requisiti del connettore C2C per il rilevamento dei dispositivi
<a name="connector-device-discovery-requirements"></a>

L'elenco seguente descrive i requisiti del connettore C2C per facilitare la corretta individuazione dei dispositivi.
+ Il connettore C2C Lambda a può elaborare un messaggio di richiesta di rilevamento del dispositivo proveniente da integrazioni gestite per AWS IoT Device Management e gestirne l'operazione. `AWS.DiscoverDevices`
+ Il connettore C2C può chiamare le integrazioni gestite per AWS IoT Device Management APIs tramite SigV4 utilizzando le credenziali utilizzate per la registrazione del Account AWS connettore.

## Processo di scoperta dei dispositivi
<a name="device-discovery-process"></a>

I passaggi seguenti descrivono il processo di scoperta dei dispositivi con il connettore C2C e le integrazioni gestite per AWS IoT Device Management.

**Processo di scoperta dei dispositivi**

1. Le integrazioni gestite attivano il rilevamento dei dispositivi:

   1. Invia una richiesta POST a `DiscoverDevices` con il seguente payload JSON:

     ```
     /DiscoverDevices
     {
        "header": {
             "auth": {                 
                 "token": "ashriu32yr97feqy7afsaf",  
                 "type": "OAuth2.0"
             }
        },
        "payload": {
             "operationName": "AWS.DiscoverDevices",
             "operationVersion": "1.0",
             "connectorId": "Your-Connector-Id",
             "deviceDiscoveryId": "12345678"
        }
     }
     ```

1. Il connettore conferma la scoperta:

   1. Il connettore invia una conferma con la seguente risposta JSON:

     ```
     {
          "header": {
               "responseCode":200
          },
          "payload": {
               "responseMessage": "Discovering devices for discovery-job-id '12345678' with connector-id `Your-Connector-Id`"
          }
     }
     ```

1. Il connettore invia l'evento Device Discovery:

   1. Invia una richiesta POST a `/connector-event/{your_connector_id}` con il seguente payload JSON:

     ```
     AWS API - /SendConnectorEvent
     URI – POST /connector-event/{your_connector_id}
     {
        "UserId": "6109342",
        "Operation": "DEVICE_DISCOVERY",
        "OperationVersion": "1.0",
        "StatusCode": 200,
        "DeviceDiscoveryId": "12345678",
        "ConnectorId": "Your_connector_Id",
        "Message": "Device discovery for discovery-job-id '12345678' successful",
        "Devices": [
             {
                 "ConnectorDeviceId": "Your_Device_Id_1",
                 "ConnectorDeviceName": "Your-Device-Name",
                 "CapabilityReport": {
      	      		"nodeId":"1",
      			"version":"1.0.0", 
       			"endpoints":[{
      				"id":"1",
      				"deviceTypes":["Camera"],
      				"clusters":[{
      					"id":"0x0006",
      					"revision":1, 
      					"attributes":[{
      						"id":"0x0000",
      					}],
      					"commands":["0x00","0x01"],
      					"events":["0x00"]
      				}]
      			}]
      		} 
             }
         ]
     }
     ```

## Costruisci un CapabilityReport per l'evento DISCOVER\$1DEVICES
<a name="capability-report-discover-devices"></a>

Come illustrato nella struttura degli eventi sopra definita, ogni dispositivo segnalato in un evento DISCOVER\$1DEVICES, che funge da risposta a un'`AWS.DiscoverDevices`operazione, richiederà una CapbilityReport descrizione delle funzionalità del dispositivo corrispondente. Un `CapabilityReport` indica le integrazioni gestite per le funzionalità dei dispositivi AWS IoT Device Management in un formato conforme a Matter. I seguenti campi devono essere forniti nel ``: CapabilityReport
+ `nodeId`, String: identificatore per il nodo dei dispositivi contenente quanto segue `endpoints`
+ `version`, String: versione di questo nodo del dispositivo, impostata dallo sviluppatore del connettore
+ `endpoints`, Elenco<Cluster>: Elenco delle AWS implementazioni del Matter Data Model supportate da questo endpoint del dispositivo.
  + `id`, String: identificatore dell'endpoint impostato dallo sviluppatore del connettore
  + `deviceTypes`, Elenco<String>: elenco dei tipi di dispositivi acquisiti da questo endpoint, ad esempio «Fotocamera».
  + `clusters`, Elenco<Cluster>: Elenco delle AWS implementazioni del Matter Data Model supportate da questo endpoint.
    + `id`, String: identificatore del cluster come definito dallo standard Matter.
    + `revision`, Numero intero: numero di revisione del cluster definito dallo standard Matter.
    + `attributes`, Mappa<String, Object>: mappa degli identificatori degli attributi e dei corrispondenti valori di stato correnti del dispositivo, con identificatori e valori validi definiti dallo standard Matter.
      + `id`, String: ID dell'attributo definito dalle AWS implementazioni del Matter Data Model.
      + `value`, Oggetto: il valore corrente dell'attributo definito dall'attributo ID. Il tipo di «valore» può cambiare a seconda dell'attributo. Il `value` campo è facoltativo per ogni attributo e deve essere incluso solo se il connettore lambda è in grado di determinare lo stato corrente durante il rilevamento.
    + `commands`, Elenco<String>: Elenco dei comandi IDs supportati da questo cluster come definito dallo standard Matter.
    + `events`, Elenco<String>: Elenco degli eventi IDs supportati da questo cluster come definito dallo standard Matter.

Per l'elenco corrente delle funzionalità supportate e le relative [AWS implementazioni del Matter Data Model](matter-data-model.md), fate riferimento all'ultima versione della documentazione del modello di dati.