Prepara il Raspberry Pi per dimostrare la MQTT comunicazione tramite messaggi - 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à.

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.

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

  1. 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 certificateArn per utilizzarlo in un secondo momento.

    { "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" } }
  2. 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
  3. 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
  4. 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:
  1. 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 endpointAddress per utilizzarlo in seguito.

    { "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com" }
  2. 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" }
  3. Nella finestra terminale:

    1. Apri un editor di testo, ad esempio nano.

    2. 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" ] } ] }
    3. Nell'editor, in ogni Resource sezione del documento di policy, sostituisci us-west-2:57EXAMPLE833 con il tuo Regione AWS, un carattere con i due punti (:) e il tuo numero di 12 cifre Account AWS .

    4. Salva il file nell'editor di testo come ~/policies/pubsub_test_thing_policy.json.

  4. 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"
  5. Eseguire questo comando per attribuire la policy al certificato del dispositivo. Sostituisci certificateArn con il valore 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.

  6. Esegui questo comando per attribuire il certificato del dispositivo alle risorse dell'oggetto AWS IoT . Sostituisci certificateArn con il valore 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
  1. Nella finestra terminale del computer host locale connesso al Raspberry Pi:

    1. Apri un editor di testo, ad esempio nano.

    2. 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": "" } }
    3. 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.

    4. Salva il file nell'editor di testo come ~/dc-configs/dc-pubsub-config.json.

    5. Esegui questo comando per impostare le autorizzazioni sul nuovo file di configurazione.

      chmod 644 ~/dc-configs/dc-pubsub-config.json
  2. Per preparare il client MQTT di prova alla sottoscrizione di tutti i MQTT messaggi:

    1. Sul computer host locale, nella AWS IoT console, scegli MQTTtest client.

    2. Nella tabella Subscribe to a topic (Sottoscrivi un argomento), in Topic filter (Filtro argomenti), inserisci # (un solo segno di cancelletto) e scegli Subscribe (Sottoscrivi).

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