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à.
Prepara il Raspberry Pi per dimostrare la MQTT comunicazione tramite messaggi
Questa procedura crea le risorse all'interno AWS IoT e nel Raspberry Pi per dimostrare la comunicazione dei MQTT messaggi utilizzando il AWS IoT Device Client.
Procedure in questa sezione:
Crea i file di certificato per dimostrare la comunicazione MQTT
Questa procedura crea i file di certificato del dispositivo per questa demo.
Per creare e scaricare i file di certificato del dispositivo per il tuo Raspberry Pi
-
Nella finestra terminale del computer host locale, immettere questi comandi per creare i file di certificato del dispositivo per il dispositivo.
mkdir ~/certs/pubsub aws iot create-keys-and-certificate \ --set-as-active \ --certificate-pem-outfile "~/certs/pubsub/device.pem.crt" \ --public-key-outfile "~/certs/pubsub/public.pem.key" \ --private-key-outfile "~/certs/pubsub/private.pem.key"
Questo comando restituisce una risposta simile alla seguente. Salva il
per utilizzarlo in un secondo momento.certificateArn
{ "certificateArn": "
arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269
", "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269", "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n" } } -
Inserisci i seguenti comandi per impostare le autorizzazioni sulla directory dei certificati e sui relativi file.
chmod 700 ~/certs/pubsub chmod 644 ~/certs/pubsub/* chmod 600 ~/certs/pubsub/private.pem.key
-
Esegui questo comando per rivedere le autorizzazioni sulle directory e sui file dei certificati.
ls -l ~/certs/pubsub
L'output del comando dovrebbe essere lo stesso di quello che vedi qui, tranne per le date e gli orari del file.
-rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key -rw-r--r-- 1 pi pi 451 Oct 28 13:02 public.pem.key
-
Inserisci questi comandi per creare le directory per i file di log.
mkdir ~/.aws-iot-device-client mkdir ~/.aws-iot-device-client/log chmod 745 ~/.aws-iot-device-client/log echo " " > ~/.aws-iot-device-client/log/aws-iot-device-client.log echo " " > ~/.aws-iot-device-client/log/pubsub_rx_msgs.log chmod 600 ~/.aws-iot-device-client/log/*
Predisponi il tuo dispositivo per dimostrare MQTT la comunicazione
Questa sezione crea le AWS IoT risorse che forniscono il tuo Raspberry Pi AWS IoT.
Per effettuare il provisioning del dispositivo in AWS IoT:
-
Nella finestra terminale del computer host locale, immettere il seguente comando per ottenere l'indirizzo dell'endpoint dati del dispositivo per l' Account AWS.
aws iot describe-endpoint --endpoint-type IoT:Data-ATS
Il valore dell'endpoint non è cambiato dal momento in cui hai eseguito questo comando per il tutorial precedente. Il comando viene eseguito nuovamente per trovare e incollare facilmente il valore dell'endpoint dei dati nel file di configurazione utilizzato in questo tutorial.
Questo comando restituisce una risposta simile alla seguente. Registra il valore
per utilizzarlo in seguito.endpointAddress
{ "endpointAddress": "
a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com
" } -
Inserisci questo comando per creare una nuova AWS IoT risorsa per il tuo Raspberry Pi.
aws iot create-thing --thing-name "PubSubTestThing"
Poiché una risorsa AWS IoT oggetto è una rappresentazione virtuale del tuo dispositivo nel cloud, possiamo creare più risorse di oggetti AWS IoT da utilizzare per scopi diversi. Possono essere utilizzati tutti dallo stesso dispositivo IoT fisico per rappresentare diversi aspetti del dispositivo.
Questi tutorial utilizzeranno solo una risorsa alla volta per rappresentare il Raspberry Pi. In questo modo, in questi tutorial, rappresentano le diverse demo in modo che, dopo aver creato le AWS IoT risorse per una demo, sia possibile tornare indietro e ripetere la demo utilizzando le risorse create appositamente per ciascuna di esse.
Se la risorsa AWS IoT oggetto è stata creata, il comando restituisce una risposta come questa.
{ "thingName": "PubSubTestThing", "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/PubSubTestThing", "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd" }
-
Nella finestra terminale:
-
Apri un editor di testo, ad esempio
nano
. -
Copia questo JSON documento e incollalo nell'editor di testo aperto.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:
us-west-2:57EXAMPLE833
:client/PubSubTestThing" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833
:topic/test/dc/pubtopic" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833
:topicfilter/test/dc/subtopic" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833
:topic/test/dc/subtopic" ] } ] } -
Nell'editor, in ogni
Resource
sezione del documento di policy, sostituiscius-west-2:57EXAMPLE833
con il tuo Regione AWS, un carattere con i due punti (:) e il tuo numero di 12 cifre Account AWS . -
Salva il file nell'editor di testo come
~/policies/pubsub_test_thing_policy.json
.
-
-
Esegui questo comando per utilizzare il documento di policy dei passaggi precedenti per creare una AWS IoT politica.
aws iot create-policy \ --policy-name "PubSubTestThingPolicy" \ --policy-document "file://~/policies/pubsub_test_thing_policy.json"
Se la policy viene creata, verrà visualizzata una risposta simile alla seguente.
{ "policyName": "PubSubTestThingPolicy", "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/PubSubTestThingPolicy", "policyDocument": "{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Connect\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Publish\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Subscribe\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Receive\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*\"\n]\n}\n]\n}\n", "policyVersionId": "1"
-
Eseguire questo comando per attribuire la policy al certificato del dispositivo. Sostituisci
con il valorecertificateArn
certificateArn
salvato in precedenza in questa sezione.aws iot attach-policy \ --policy-name "PubSubTestThingPolicy" \ --target "
certificateArn
"In caso di successo, questo comando non restituisce alcun risultato.
-
Esegui questo comando per attribuire il certificato del dispositivo alle risorse dell'oggetto AWS IoT . Sostituisci
con il valorecertificateArn
certificateArn
salvato in precedenza in questa sezione.aws iot attach-thing-principal \ --thing-name "PubSubTestThing" \ --principal "
certificateArn
"In caso di successo, questo comando non restituisce alcun risultato.
Dopo aver effettuato correttamente il provisioning del dispositivo AWS IoT, sei pronto per continuareConfigura il file di configurazione del AWS IoT Device Client e MQTT prova il client per dimostrare la comunicazione MQTT.
Configura il file di configurazione del AWS IoT Device Client e MQTT prova il client per dimostrare la comunicazione MQTT
Questa procedura crea un file di configurazione per testare il AWS IoT Device Client.
Per creare il file di configurazione per testare il AWS IoT Device Client
-
Nella finestra terminale del computer host locale connesso al Raspberry Pi:
-
Apri un editor di testo, ad esempio
nano
. -
Copia questo JSON documento e incollalo nell'editor di testo aperto.
{ "endpoint": "
a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com
", "cert": "~/certs/pubsub/device.pem.crt", "key": "~/certs/pubsub/private.pem.key", "root-ca": "~/certs/AmazonRootCA1.pem", "thing-name": "PubSubTestThing", "logging": { "enable-sdk-logging": true, "level": "DEBUG", "type": "STDOUT", "file": "" }, "jobs": { "enabled": false, "handler-directory": "" }, "tunneling": { "enabled": false }, "device-defender": { "enabled": false, "interval": 300 }, "fleet-provisioning": { "enabled": false, "template-name": "", "template-parameters": "", "csr-file": "", "device-key": "" }, "samples": { "pub-sub": { "enabled": true, "publish-topic": "test/dc/pubtopic", "publish-file": "", "subscribe-topic": "test/dc/subtopic", "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log" } }, "config-shadow": { "enabled": false }, "sample-shadow": { "enabled": false, "shadow-name": "", "shadow-input-file": "", "shadow-output-file": "" } } -
Sostituisci il
endpoint
valore con device data endpoint per il tuo dispositivo Account AWS che hai trovato inEffettua il provisioning del dispositivo in AWS IoT Core. -
Salva il file nell'editor di testo come
~/dc-configs/dc-pubsub-config.json
. -
Esegui questo comando per impostare le autorizzazioni sul nuovo file di configurazione.
chmod 644 ~/dc-configs/dc-pubsub-config.json
-
-
Per preparare il client MQTT di prova alla sottoscrizione di tutti i MQTT messaggi:
-
Sul computer host locale, nella AWS IoT console
, scegli MQTTtest client. -
Nella tabella Subscribe to a topic (Sottoscrivi un argomento), in Topic filter (Filtro argomenti), inserisci
#
(un solo segno di cancelletto) e scegli Subscribe (Sottoscrivi). -
Sotto l'etichetta Subscriptions (Sottoscrizioni), conferma di vedere
#
(un solo segno di cancelletto).
Lascia aperta la finestra con il client di MQTT test mentre continui questo tutorial.
-
Dopo aver salvato il file e configurato il client di MQTT test, sei pronto per continuareDimostra la pubblicazione di messaggi con AWS IoT Device Client.