

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à.

# Usa il tuo PC o Mac Windows o Linux come dispositivo AWS IoT
<a name="using-laptop-as-device"></a>

In questo tutorial, configurerai un personal computer da utilizzare con AWS IoT. Queste istruzioni supportano Windows, Linux PCs e Mac. Per eseguire questa operazione, è necessario installare alcuni software sul computer. Se non desideri installare software sul computer, puoi provare [Crea un dispositivo virtuale con Amazon EC2](creating-a-virtual-thing.md) che installa tutto il software in una macchina virtuale.

**Topics**
+ [Configurare il tuo personal computer](#gs-pc-prereqs)
+ [Installa Git, Python e AWS IoT Device SDK per Python](#gs-pc-sdk-node)
+ [Configurare la policy ed eseguire l'applicazione di esempio](#gs-pc-python-app-run)
+ [Visualizza i messaggi dell'app di esempio nella AWS IoT console](#gs-pc-view-msg)
+ [Esecuzione dell'esempio Sottoscrizione condivisa in Python](#gs-pc-shared-subscription-example)

## Configurare il tuo personal computer
<a name="gs-pc-prereqs"></a>

Per completare questo tutorial, è necessario un PC Windows o Linux o un Mac con connessione a Internet.

Prima di continuare con la fase successiva, assicurati di poter aprire una finestra della riga di comando nel computer. Utilizza **cmd.exe** su un PC Windows. Su un PC Linux o un Mac, usa **Terminal**.

## Installa Git, Python e AWS IoT Device SDK per Python
<a name="gs-pc-sdk-node"></a>

In questa sezione installerai Python e AWS IoT Device SDK for Python sul tuo computer. 

### Installa e usa la versione più recente di Git e di Python
<a name="gs-pc-node-runtime"></a>

Questa procedura spiega come installare l'ultima versione di Git e Python sul tuo personal computer.

**Per scaricare e installare Git e Python sul tuo computer**

1. Verificare che sia installato Git nel computer. Nella riga di comando, immetti questo comando.

   ```
   git --version
   ```

   Se il comando visualizza la versione Git, Git è installato e puoi continuare con la fase successiva.

   Se il comando visualizza un errore, apri [https://git-scm.com/download](https://git-scm.com/download) e installa Git per il tuo computer.

1. Verifica che Python non sia già installato. Inserisci questo comando nella riga di comando.

   ```
   python -V
   ```
**Nota**  
Se questo comando dà un errore: `Python was not found`, potrebbe essere perché il tuo sistema operativo chiama l'eseguibile Python v3.x come `Python3`. In tal caso, sostituisci tutte le istanze di `python` con `python3` e continua il resto di questo tutorial.

   Se il comando visualizza la versione Python, Python è già installato. Questo tutorial richiede Python v3.7 o versioni successive.

1. Se Python è installato, puoi ignorare i passaggi rimanenti in questa sezione. Altrimenti, continua.

1. Apri [https://www.python.org/downloads/](https://www.python.org/downloads/) e scarica il programma di installazione per il tuo computer.

1. Se il download non ha avviato automaticamente l'installazione, esegui il programma scaricato per installare Python.

1. Verificare l'installazione di Python.

   ```
   python -V
   ```

   Conferma che il comando visualizzi la versione di Python. Se la versione di Python non viene visualizzata, prova a scaricare e installare nuovamente Python.

### Installa l'SDK AWS IoT del dispositivo per Python
<a name="gs-pc-python-intall-sdk"></a>

**Per installare AWS IoT Device SDK for Python sul tuo computer**

1. Installa la v2 del AWS IoT Device SDK for Python.

   ```
   python3 -m pip install awsiotsdk
   ```

1. Clona il repository AWS IoT Device SDK for Python nella directory aws-iot-device-sdk -python-v2 della tua home directory. Questa procedura si riferisce alla directory di base per i file come installi. *home*

   La posizione effettiva della *home* directory dipende dal sistema operativo in uso.

------
#### [ Linux/macOS ]

   In macOS e Linux, la *home* directory è. `~`

   ```
   cd ~ 
   git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
   ```

------
#### [ Windows ]

   In Windows, puoi trovare il percorso della *home* directory eseguendo questo comando nella `cmd` finestra.

   ```
   echo %USERPROFILE%
   cd %USERPROFILE%
   git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
   ```

------
**Nota**  
Se utilizzi Windows PowerShell anziché 1**cmd.exe**, utilizza il seguente comando.  

   ```
   echo $home
   ```

Per ulteriori informazioni, consultate il repository [AWS IoT Device SDK for GitHub Python](https://github.com/aws/aws-iot-device-sdk-python-v2).

### Preparazione dell'esecuzione delle applicazioni di esempio
<a name="gs-pc-python-config-app"></a>

**Per preparare il sistema all'esecuzione dell'applicazione di esempio**
+ Creazione della directory `certs`. Nella directory `certs`, copia i file della chiave privata, del certificato del dispositivo e del certificato CA root salvati quando è stato creato e registrato l'oggetto in [Crea AWS IoT risorse](create-iot-resources.md). I nomi di file di ogni file nella directory di destinazione devono corrispondere a quelli della tabella.

   I comandi della sezione successiva presuppongono che i file di chiave e certificato siano memorizzati sul dispositivo, come illustrato in questa tabella.

------
#### [ Linux/macOS ]

  Esegui questo comando per creare la sottodirectory `certs` che verrà utilizzata quando si eseguono le applicazioni di esempio.

  ```
  mkdir ~/certs
  ```

  Nella nuova sottodirectory, copia i file nei percorsi dei file di destinazione indicati nella tabella riportata di seguito.  
**Nomi dei file dei certificati**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/using-laptop-as-device.html)

  Esegui questo comando per elencare i file nella directory `certs` e confrontarli con quelli elencati nella tabella.

  ```
  ls -l ~/certs
  ```

------
#### [ Windows ]

  Esegui questo comando per creare la sottodirectory `certs` che verrà utilizzata quando si eseguono le applicazioni di esempio.

  ```
  mkdir %USERPROFILE%\certs
  ```

  Nella nuova sottodirectory, copia i file nei percorsi dei file di destinazione indicati nella tabella riportata di seguito.  
**Nomi dei file dei certificati**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/using-laptop-as-device.html)

  Esegui questo comando per elencare i file nella directory `certs` e confrontarli con quelli elencati nella tabella.

  ```
  dir %USERPROFILE%\certs
  ```

------

## Configurare la policy ed eseguire l'applicazione di esempio
<a name="gs-pc-python-app-run"></a>

In questa sezione imposterai la policy ed eseguirai lo script di esempio `pubsub.py` trovato nella directory `aws-iot-device-sdk-python-v2/samples` di SDK per dispositivi AWS IoT per Python. Questo script mostra come il dispositivo utilizza la libreria MQTT per pubblicare e effettuare la sottoscrizione ai messaggi MQTT.

L'app di esempio `pubsub.py` sottoscrive un argomento `test/topic`, pubblica 10 messaggi in tale argomento e visualizza i messaggi ricevuti dal broker messaggi.

Per eseguire l'applicazione di esempio `pubsub.py` sono necessarie le seguenti informazioni:


**Valori dei parametri dell'applicazione**  

|  Parametro  |  Dove trovare il valore  | 
| --- | --- | 
| your-iot-endpoint |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/using-laptop-as-device.html)  | 

Il *your-iot-endpoint* valore ha il formato:`endpoint_id-ats.iot.region.amazonaws.com`, ad esempio,. `a3qj468EXAMPLE-ats.iot.us-west-2.amazonaws.com`

Prima di eseguire lo script, assicurati che le policy relative alle informazioni forniscano le autorizzazioni per lo script di esempio per connettersi, sottoscrivere, pubblicare e ricevere. 

**Per trovare e rivedere il documento della policy per una risorsa oggetto**

1. Nella [console AWS IoT](https://console.aws.amazon.com//iot/home#/thinghub), nell'elenco **Things (Oggetti)**, trova la risorsa oggetto che rappresenta il tuo dispositivo.

1. Scegli il link di **Name (Nome)** della risorsa oggetto che rappresenta il tuo dispositivo per aprire la pagina **Thing details (Dettagli dell'oggetto)**.

1. Nella pagina **Thing details (Dettagli dell'oggetto)**, nella scheda **Certificates (Certificati)**, scegli il certificato allegato alla risorsa oggetto. Dovrebbe esserci un solo certificato nell'elenco. Se ci sono più certificati, scegli il certificato i cui sono installati i file sul tuo dispositivo e che verrà utilizzato per connetterti ad AWS IoT Core.

   Nella pagina dei dettagli del **Certificate (Certificato)**, nella scheda **Policies (Policy)**, scegli la policy allegata al certificato. Dovrebbe essercene solo uno. Se ce n'è più di uno, ripeti il passaggio successivo per assicurarti che almeno una policy conceda l'accesso richiesto.

1. Nella pagina di panoramica **Policy**, trova l'editor JSON e scegli **Edit policy document (Modifica documento della policy)** per rivedere e modificare il documento della policy secondo necessità.

1. Nell'esempio seguente viene visualizzata la policy JSON. Nell'`"Resource"`elemento, sostituisci `region:account` con il tuo Regione AWS e Account AWS in ciascuno dei `Resource` valori.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "iot:Publish",
                   "iot:Receive"
               ],
               "Resource": [
               "arn:aws:iot:us-east-1:123456789012:topic/test/topic"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iot:Subscribe"
               ],
               "Resource": [
               "arn:aws:iot:us-east-1:123456789012:topicfilter/test/topic"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iot:Connect"
               ],
               "Resource": [
               "arn:aws:iot:us-east-1:123456789012:client/test-*"
               ]
           }
       ]
   }
   ```

------
#### [ Linux/macOS ]

**Per eseguire lo script di esempio su Linux/macOS**

1. Nella finestra a riga di comando passa alla directory `~/aws-iot-device-sdk-python-v2/samples/node/pub_sub` che l'SDK ha creato utilizzando questi comandi.

   ```
   cd ~/aws-iot-device-sdk-python-v2/samples
   ```

1. Nella finestra della riga di comando, sostituisci *your-iot-endpoint* come indicato ed esegui questo comando.

   ```
   python3 pubsub.py --endpoint your-iot-endpoint --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key
   ```

------
#### [ Windows ]

**Per eseguire l'applicazione di esempio su un PC Windows**

1. Nella finestra a riga di comando passa alla directory `%USERPROFILE%\aws-iot-device-sdk-python-v2\samples` che l'SDK ha creato e installa l'app di esempio utilizzando questi comandi.

   ```
   cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
   ```

1. Nella finestra della riga di comando, sostituisci *your-iot-endpoint* come indicato ed esegui questo comando.

   ```
   python3 pubsub.py --endpoint your-iot-endpoint --ca_file %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key
   ```

------

Lo script di esempio:

1. Si connette al AWS IoT Core file per il tuo account.

1. Sottoscrive l'argomento del messaggio **test/argomento** e visualizza i messaggi ricevuti su tale argomento.

1. Pubblica 10 messaggi sull'argomento **test/argomento**.

1. L'output sia simile a quello riportato di seguito:

```
Connected!
Subscribing to topic 'test/topic'...
Subscribed with QoS.AT_LEAST_ONCE
Sending 10 message(s)
Publishing message to topic 'test/topic': Hello World! [1]
Received message from topic 'test/topic': b'"Hello World! [1]"'
Publishing message to topic 'test/topic': Hello World! [2]
Received message from topic 'test/topic': b'"Hello World! [2]"'
Publishing message to topic 'test/topic': Hello World! [3]
Received message from topic 'test/topic': b'"Hello World! [3]"'
Publishing message to topic 'test/topic': Hello World! [4]
Received message from topic 'test/topic': b'"Hello World! [4]"'
Publishing message to topic 'test/topic': Hello World! [5]
Received message from topic 'test/topic': b'"Hello World! [5]"'
Publishing message to topic 'test/topic': Hello World! [6]
Received message from topic 'test/topic': b'"Hello World! [6]"'
Publishing message to topic 'test/topic': Hello World! [7]
Received message from topic 'test/topic': b'"Hello World! [7]"'
Publishing message to topic 'test/topic': Hello World! [8]
Received message from topic 'test/topic': b'"Hello World! [8]"'
Publishing message to topic 'test/topic': Hello World! [9]
Received message from topic 'test/topic': b'"Hello World! [9]"'
Publishing message to topic 'test/topic': Hello World! [10]
Received message from topic 'test/topic': b'"Hello World! [10]"'
10 message(s) received.
Disconnecting...
Disconnected!
```

In caso di problemi nell'esecuzione dell'app di esempio, consulta [Risolvi i problemi con l'applicazione di esempio](gs-device-troubleshoot.md).

È inoltre possibile aggiungere il parametro `--verbosity Debug` alla riga di comando in modo che l'app di esempio visualizzi messaggi dettagliati su ciò che sta facendo. Tali informazioni potrebbero aiutarti a correggere il problema.

## Visualizza i messaggi dell'app di esempio nella AWS IoT console
<a name="gs-pc-view-msg"></a>

È possibile visualizzare i messaggi dell'app di esempio durante il passaggio attraverso il broker di messaggi utilizzando il **client di test MQTT** nella **console AWS IoT **.

**Per visualizzare i messaggi MQTT pubblicati dall'app di esempio**

1. Verificare [Visualizza i messaggi MQTT con il AWS IoT client MQTT](view-mqtt-messages.md). In questo modo si impara come utilizzare il **client di test MQTT** nella **console AWS IoT ** per visualizzare i messaggi MQTT durante il passaggio attraverso il broker di messaggi.

1. Apri il **client di test MQTT** nella **console AWS IoT **.

1. In **Subscribe to a topic** (Sottoscrizione a un argomento), effettua la sottoscrizione all'argomento, **test/topic**.

1. Nella finestra a riga di comando, esegui di nuovo l'app di esempio e guarda i messaggi nel **Client MQTT** nella **console AWS IoT **.

------
#### [ Linux/macOS ]

   ```
   cd ~/aws-iot-device-sdk-python-v2/samples
   python3 pubsub.py --topic test/topic --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
   ```

------
#### [ Windows ]

   ```
   cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
   python3 pubsub.py --topic test/topic --ca_file %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key --endpoint your-iot-endpoint
   ```

------

Per ulteriori informazioni su MQTT e su come AWS IoT Core supporta il protocollo, vedere [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html).

## Esecuzione dell'esempio Sottoscrizione condivisa in Python
<a name="gs-pc-shared-subscription-example"></a>

AWS IoT Core supporta [sottoscrizioni condivise](mqtt.md#mqtt5-shared-subscription) sia per MQTT 3 che per MQTT 5. Sottoscrizioni condivise consentono a più client di condividere una sottoscrizione a un argomento e solo un client riceverà i messaggi pubblicati su tale argomento utilizzando una distribuzione casuale. Per utilizzare Sottoscrizioni condivise, i client effettuano la sottoscrizione al [filtro di argomenti](https://docs.aws.amazon.com//iot/latest/developerguide/topics.html#topicfilters) di una sottoscrizione condivisa: `$share/{ShareName}/{TopicFilter}`. 

**Per configurare la policy ed eseguire l'esempio Sottoscrizione condivisa**

1. Per eseguire l'esempio Sottoscrizione condivisa, è necessario impostare la policy dell'oggetto come documentato in [MQTT 5 Shared Subscription](https://github.com/aws/aws-iot-device-sdk-python-v2/blob/main/samples/mqtt5_shared_subscription.md#mqtt5-shared-subscription). 

1. Per eseguire l'esempio Sottoscrizione condivisa, esegui i comandi seguenti.

------
#### [ Linux/macOS ]

**Per eseguire lo script di esempio su Linux/macOS**

   1. Nella finestra a riga di comando passa alla directory `~/aws-iot-device-sdk-python-v2/samples` che l'SDK ha creato utilizzando questi comandi.

      ```
      cd ~/aws-iot-device-sdk-python-v2/samples
      ```

   1. Nella finestra della riga di comando, sostituisci *your-iot-endpoint* come indicato ed esegui questo comando.

      ```
      python3 mqtt5_shared_subscription.py --endpoint your-iot-endpoint --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --group_identifier consumer
      ```

------
#### [ Windows ]

**Per eseguire l'applicazione di esempio su un PC Windows**

   1. Nella finestra a riga di comando passa alla directory `%USERPROFILE%\aws-iot-device-sdk-python-v2\samples` che l'SDK ha creato e installa l'app di esempio utilizzando questi comandi.

      ```
      cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
      ```

   1. Nella finestra della riga di comando, sostituisci *your-iot-endpoint* come indicato ed esegui questo comando.

      ```
      python3 mqtt5_shared_subscription.py --endpoint your-iot-endpoint --ca_file %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key --group_identifier consumer
      ```

------
**Nota**  
Facoltativamente, puoi specificare un identificatore gruppo in base alle tue esigenze quando esegui l'esempio (ad esempio, `--group_identifier consumer`). Se non viene specificato, `python-sample` è l'identificatore gruppo predefinito.

1. L'aspetto dell'output nella riga di comando può essere simile al seguente:

   ```
   Publisher]: Lifecycle Connection Success
   [Publisher]: Connected
   Subscriber One]: Lifecycle Connection Success
   [Subscriber One]: Connected
   Subscriber Two]: Lifecycle Connection Success
   [Subscriber Two]: Connected
   [Subscriber One]: Subscribed to topic 'test/topic' in shared subscription group 'consumer'.
   [Subscriber One]: Full subscribed topic is: '$share/consumer/test/topic' with SubAck code: [<SubackReasonCode.GRANTED_QOS_1: 1>]
   [Subscriber Two]: Subscribed to topic 'test/topic' in shared subscription group 'consumer'.
   [Subscriber Two]: Full subscribed topic is: '$share/consumer/test/topic' with SubAck code: [<SubackReasonCode.GRANTED_QOS_1: 1>]
   [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0>
   [Subscriber Two] Received a publish
           Publish received message on topic: test/topic
           Message: b'"Hello World!  [1]"'
   [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0>
   [Subscriber One] Received a publish
           Publish received message on topic: test/topic
           Message: b'"Hello World!  [2]"'
   [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0>
   [Subscriber Two] Received a publish
           Publish received message on topic: test/topic
           Message: b'"Hello World!  [3]"'
   [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0>
   [Subscriber One] Received a publish
           Publish received message on topic: test/topic
           Message: b'"Hello World!  [4]"'
   [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0>
   [Subscriber Two] Received a publish
           Publish received message on topic: test/topic
           Message: b'"Hello World!  [5]"'
   [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0>
   [Subscriber One] Received a publish
           Publish received message on topic: test/topic
           Message: b'"Hello World!  [6]"'
   [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0>
   [Subscriber Two] Received a publish
           Publish received message on topic: test/topic
           Message: b'"Hello World!  [7]"'
   [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0>
   [Subscriber One] Received a publish
           Publish received message on topic: test/topic
           Message: b'"Hello World!  [8]"'
   [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0>
   [Subscriber Two] Received a publish
           Publish received message on topic: test/topic
           Message: b'"Hello World!  [9]"'
   [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0>
   [Subscriber One] Received a publish
           Publish received message on topic: test/topic
           Message: b'"Hello World!  [10]"'
   [Subscriber One]: Unsubscribed to topic 'test/topic' in shared subscription group 'consumer'.
   [Subscriber One]: Full unsubscribed topic is: '$share/consumer/test/topic' with UnsubAck code: [<UnsubackReasonCode.SUCCESS: 0>]
   [Subscriber Two]: Unsubscribed to topic 'test/topic' in shared subscription group 'consumer'.
   [Subscriber Two]: Full unsubscribed topic is: '$share/consumer/test/topic' with UnsubAck code [<UnsubackReasonCode.SUCCESS: 0>]
   Publisher]: Lifecycle Disconnected
   [Publisher]: Lifecycle Stopped
   [Publisher]: Fully stopped
   Subscriber One]: Lifecycle Disconnected
   [Subscriber One]: Lifecycle Stopped
   [Subscriber One]: Fully stopped
   Subscriber Two]: Lifecycle Disconnected
   [Subscriber Two]: Lifecycle Stopped
   [Subscriber Two]: Fully stopped
   Complete!
   ```

1. Apri **Client di test MQTT** nella **console AWS IoT **. In **Sottoscrizione a un argomento**, effettua la sottoscrizione all'argomento della Sottoscrizione condivisa, ad esempio: `$share/consumer/test/topic`. Puoi specificare un identificatore gruppo in base alle tue esigenze quando esegui l'esempio (ad esempio, `--group_identifier consumer`). Se non specifichi un identificatore gruppo, il valore predefinito è `python-sample`. Per ulteriori informazioni, consultare [esempio Python MQTT 5 Shared Subscription](https://github.com/aws/aws-iot-device-sdk-python-v2/blob/main/samples/mqtt5_shared_subscription.md#mqtt5-shared-subscription) e [Sottoscrizioni condivise](mqtt.md#mqtt5-shared-subscription) nella *Guida per gli sviluppatori di AWS IoT Core *.

   Nella finestra a riga di comando, esegui nuovamente l'app di esempio e guarda la distribuzione dei messaggi nel **Client di test MQTT** della **Console AWS IoT ** e la riga di comando.  
![\[La pagina di output delle sottoscrizioni condivise.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/shared-subscription-output.png)