Usa il tuo PC o Mac Windows o Linux come AWS IoT dispositivo - AWS IoT Core

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 AWS IoT dispositivo

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 che installa tutto il software in una macchina virtuale.

Configurare il tuo personal computer

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 Dispositivo SDK per Python

In questa sezione, installerai Python e AWS IoT Dispositivo SDK per Python sul tuo computer.

Installa e usa la versione più recente di Git e di Python

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 e installa Git per il tuo computer.

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

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

  4. Apri https://www.python.org/downloads/ e scarica il programma di installazione per il tuo computer.

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

  6. 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 AWS IoT Dispositivo SDK per Python

Per installare il AWS IoT Dispositivo SDK per Python sul tuo computer
  1. Installa la v2 di AWS IoT Dispositivo SDK per Python.

    python3 -m pip install awsiotsdk
  2. Clona il AWS IoT Deposito SDK per il repository 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 stai installando home.

    La posizione effettiva del home la directory dipende dal sistema operativo in uso.

    Linux/macOS

    In macOS e Linux, home la directory è~.

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

    In Windows, puoi trovare home percorso della 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é 1cmd.exe, utilizza il seguente comando.

    echo $home

Per ulteriori informazioni, consultare la .AWS IoT Dispositivo SDK per il repository Python GitHub .

Preparazione dell'esecuzione delle applicazioni di esempio

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

    File

    Percorso del file

    Chiave privata

    ~/certs/private.pem.key

    Certificato del dispositivo

    ~/certs/device.pem.crt

    Un certificato emesso da una CA root

    ~/certs/Amazon-root-CA-1.pem

    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

    File

    Percorso del file

    Chiave privata

    %USERPROFILE%\certs\private.pem.key

    Certificato del dispositivo

    %USERPROFILE%\certs\device.pem.crt

    Un certificato emesso da una CA root

    %USERPROFILE%\certs\Amazon-root-CA-1.pem

    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

In questa sezione, imposterai la tua policy ed eseguirai lo script di pubsub.py esempio che si trova nella aws-iot-device-sdk-python-v2/samples directory del SDK per dispositivi AWS IoT per Python. Questo script mostra come il dispositivo utilizza la MQTT libreria per pubblicare e sottoscrivere MQTT i messaggi.

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
  1. Nella AWS IoT console, nel menu a sinistra, scegli Impostazioni.

  2. Sulla pagina Settings (Impostazioni) l'endpoint viene visualizzato nella sezione Device data endpoint (Endpoint dei dati del dispositivo).

Il your-iot-endpoint il valore ha un formato di: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 AWS IoT console, nell'elenco Cose, trova la risorsa oggetto che rappresenta il tuo dispositivo.

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

  3. 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 ce n'è più di uno, scegli il certificato i cui file sono installati sul tuo dispositivo e che verrà utilizzato per la connessione a 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.

  4. Nella pagina di panoramica della politica, trova l'JSONeditor e scegli Modifica documento di policy per rivedere e modificare il documento di policy, se necessario.

  5. La politica JSON viene visualizzata nell'esempio seguente. 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:region:account:topic/test/topic" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account:topicfilter/test/topic" ] }, { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:region:account:client/test-*" ] } ] }
Linux/macOS
Per eseguire lo script di esempio su Linux/macOS
  1. Nella finestra della riga di comando, accedi alla ~/aws-iot-device-sdk-python-v2/samples/node/pub_sub directory SDK creata utilizzando questi comandi.

    cd ~/aws-iot-device-sdk-python-v2/samples
  2. 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 della riga di comando, accedi alla %USERPROFILE%\aws-iot-device-sdk-python-v2\samples directory che hai SDK creato e installa l'app di esempio utilizzando questi comandi.

    cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
  2. 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 per il tuo account.

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

  3. Pubblica 10 messaggi sull'argomento test/argomento.

  4. 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'app di esempio.

È 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 nel AWS IoT console

Puoi vedere i messaggi dell'app di esempio mentre passano attraverso il broker di messaggi utilizzando il client di MQTT test in AWS IoT console.

Per visualizzare i MQTT messaggi pubblicati dall'app di esempio
  1. Verificare Visualizza MQTT i messaggi con AWS IoT MQTTcliente. Questo ti aiuta a imparare a usare il client di MQTT test in AWS IoT console per visualizzare MQTT i messaggi mentre passano attraverso il broker di messaggi.

  2. Apri il client di MQTT test nel AWS IoT console.

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

  4. Nella finestra della riga di comando, esegui nuovamente l'app di esempio e guarda i messaggi nel MQTTclient nel AWS IoT console.

    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 come AWS IoT Core supporta il protocollo, vedere MQTT.

Esecuzione dell'esempio Sottoscrizione condivisa in Python

AWS IoT Core supporta gli abbonamenti condivisi 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 di una sottoscrizione condivisa: $share/{ShareName}/{TopicFilter}.

Per configurare la policy ed eseguire l'esempio Sottoscrizione condivisa
  1. Per eseguire l'esempio dell'abbonamento condiviso, devi impostare la politica del tuo oggetto come documentato in MQTT5 Shared Subscription.

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

    Linux/macOS
    Per eseguire lo script di esempio su Linux/macOS
    1. Nella finestra della riga di comando, accedi alla ~/aws-iot-device-sdk-python-v2/samples directory SDK creata utilizzando questi comandi.

      cd ~/aws-iot-device-sdk-python-v2/samples
    2. 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 della riga di comando, accedi alla %USERPROFILE%\aws-iot-device-sdk-python-v2\samples directory che hai SDK creato e installa l'app di esempio utilizzando questi comandi.

      cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
    2. 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.

  3. 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!
  4. Apri il client di MQTT test nel AWS IoT console. 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, consulta l'esempio di Python di MQTT 5 Shared Subscriptions e Shared Subscriptions from AWS IoT Core Guida per gli sviluppatori.

    Nella finestra della riga di comando, esegui nuovamente l'app di esempio e osserva la distribuzione dei messaggi nel client di MQTT prova del AWS IoT console e riga di comando.

    La pagina di output delle sottoscrizioni condivise.