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à.
I dispositivi client possono utilizzare il SDK per dispositivi AWS IoT per rilevare, connettersi e comunicare con un dispositivo principale. È possibile utilizzare il Greengrass discovery client SDK per dispositivi AWS IoT per utilizzare l'API Greengrass discovery, che restituisce informazioni sui dispositivi principali a cui un dispositivo client può connettersi. La risposta dell'API include gli endpoint del broker MQTT da connettere e i certificati da utilizzare per verificare l'identità di ciascun dispositivo principale. Quindi, il dispositivo client può provare ogni endpoint fino a quando non si connette correttamente a un dispositivo principale.
I dispositivi client possono rilevare solo i dispositivi principali a cui vengono associati. Prima di testare le comunicazioni tra un dispositivo client e un dispositivo principale, è necessario associare il dispositivo client al dispositivo principale. Per ulteriori informazioni, consulta Associa i dispositivi client.
L'API Greengrass discovery restituisce gli endpoint del broker MQTT del dispositivo principale specificati. Puoi utilizzare il componente IP Detector per gestire questi endpoint al posto tuo oppure puoi gestirli manualmente per ogni dispositivo principale. Per ulteriori informazioni, consulta Gestisci gli endpoint principali dei dispositivi.
Nota
Per utilizzare l'API di scoperta Greengrass, un dispositivo client deve disporre dell'greengrass:Discover
autorizzazione. Per ulteriori informazioni, consulta AWS IoT Policy minima per i dispositivi client.
SDK per dispositivi AWS IoT È disponibile in più linguaggi di programmazione. Per ulteriori informazioni, consulta AWS IoT Device SDKs nella AWS IoT Core Developer Guide.
Argomenti
Comunicazioni di test (Python)
In questa sezione, si utilizza l'esempio di scoperta di Greengrass nella versione 2 SDK per dispositivi AWS IoT per Python
Importante
Per utilizzare la versione SDK per dispositivi AWS IoT v2 per Python, un dispositivo deve eseguire Python 3.6 o versione successiva.
Per testare le comunicazioni (SDK per dispositivi AWS IoT v2 per Python)
-
Scarica e installa la SDK per dispositivi AWS IoT versione 2 per Python
AWS IoT sull'oggetto da connettere come dispositivo client. Sul dispositivo client, procedi come segue:
-
Clona il repository SDK per dispositivi AWS IoT v2 for Python per scaricarlo.
git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
-
Installa la SDK per dispositivi AWS IoT v2 per Python.
python3 -m pip install --user ./aws-iot-device-sdk-python-v2
-
-
Passa alla cartella samples nella SDK per dispositivi AWS IoT v2 per Python.
cd aws-iot-device-sdk-python-v2/samples
-
Esegui l'applicazione Greengrass discovery di esempio. Questa applicazione prevede argomenti che specifichino il nome dell'oggetto del dispositivo client, l'argomento e il messaggio MQTT da utilizzare e i certificati che autenticano e proteggono la connessione. L'esempio seguente invia un messaggio Hello World all'argomento.
clients/
MyClientDevice1
/hello/world-
Sostituire
MyClientDevice1
con il nome dell'oggetto del dispositivo client. -
Sostituisci
~/certs/AmazonRootCA1.pem
con il percorso del certificato Amazon root CA sul dispositivo client. -
Sostituisci
~/certs/device.pem.crt
con il percorso del certificato del dispositivo sul dispositivo client. -
Sostituisci
~/certs/private.pem.key
con il percorso del file della chiave privata sul dispositivo client. -
Sostituiscilo
us-east-1
con la AWS regione in cui operano il dispositivo client e il dispositivo principale.
python3 basic_discovery.py \\ --thing_name
MyClientDevice1
\\ --topic 'clients/MyClientDevice1
/hello/world' \\ --message 'Hello World!' \\ --ca_file~/certs/AmazonRootCA1.pem
\\ --cert~/certs/device.pem.crt
\\ --key~/certs/private.pem.key
\\ --regionus-east-1
\\ --verbosity WarnL'applicazione di esempio Discovery invia il messaggio 10 volte e si disconnette. Inoltre, sottoscrive lo stesso argomento in cui pubblica i messaggi. Se l'output indica che l'applicazione ha ricevuto messaggi MQTT sull'argomento, il dispositivo client può comunicare correttamente con il dispositivo principale.
Performing greengrass discovery... awsiot.greengrass_discovery.DiscoverResponse(gg_groups=[awsiot.greengrass_discovery.GGGroup(gg_group_id='greengrassV2-coreDevice-MyGreengrassCore', cores=[awsiot.greengrass_discovery.GGCore(thing_arn='arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore', connectivity=[awsiot.greengrass_discovery.ConnectivityInfo(id='203.0.113.0', host_address='203.0.113.0', metadata='', port=8883)])], certificate_authorities=['-----BEGIN CERTIFICATE-----\
MIICiT...EXAMPLE=
\ -----END CERTIFICATE-----\ '])]) Trying core arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore at host 203.0.113.0 port 8883 Connected! Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 0} Publish received on topic clients/MyClientDevice1/hello/world b'{"message": "Hello World!", "sequence": 0}' Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 1} Publish received on topic clients/MyClientDevice1/hello/world b'{"message": "Hello World!", "sequence": 1}'...
Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 9} Publish received on topic clients/MyClientDevice1/hello/world b'{"message": "Hello World!", "sequence": 9}'Se invece l'applicazione genera un errore, consulta Risoluzione dei problemi di rilevamento di Greengrass.
Puoi anche visualizzare i log di Greengrass sul dispositivo principale per verificare se il dispositivo client si connette e invia messaggi correttamente. Per ulteriori informazioni, consulta Monitora AWS IoT Greengrass i registri.
-
Comunicazioni di test (C++)
In questa sezione, si utilizza l'esempio di scoperta di Greengrass nella versione SDK per dispositivi AWS IoT 2 per C++ per
Per creare la SDK per dispositivi AWS IoT v2 per C++, un dispositivo deve disporre dei seguenti strumenti:
-
C++ 11 o versione successiva
-
CMake 3.1 o successivo
-
Uno dei seguenti compilatori:
-
GCC 4.8 o successivo
-
Clang 3.9 o successivo
-
MSVC 2015 o versione successiva
-
Per testare le comunicazioni (SDK per dispositivi AWS IoT v2 per C++)
-
Scarica e crea la versione SDK per dispositivi AWS IoT v2 per C++
su cui AWS IoT connetterti come dispositivo client. Sul dispositivo client, procedi come segue:
-
Create una cartella per l'area di lavoro SDK per dispositivi AWS IoT v2 for C++ e modificatela.
cd mkdir iot-device-sdk-cpp cd iot-device-sdk-cpp
-
Clona il repository SDK per dispositivi AWS IoT v2 for C++ per scaricarlo. Il
--recursive
flag specifica di scaricare i sottomoduli.git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
-
Crea una cartella per l'output della build SDK per dispositivi AWS IoT v2 for C++ e modificala.
mkdir aws-iot-device-sdk-cpp-v2-build cd aws-iot-device-sdk-cpp-v2-build
-
Crea la SDK per dispositivi AWS IoT v2 per C++.
cmake -DCMAKE_INSTALL_PREFIX="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ../aws-iot-device-sdk-cpp-v2 cmake --build . --target install
-
-
Crea l'applicazione di esempio Greengrass discovery nella versione SDK per dispositivi AWS IoT 2 per C++. Esegui questa operazione:
-
Passate alla cartella di esempio Greengrass discovery nella versione SDK per dispositivi AWS IoT 2 per C++.
cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
-
Crea una cartella per l'output della build di esempio di Greengrass discovery e modificala.
mkdir build cd build
-
Crea l'applicazione di esempio Greengrass discovery.
cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" .. cmake --build . --config "Release"
-
-
Esegui l'applicazione Greengrass discovery di esempio. Questa applicazione prevede argomenti che specifichino il nome dell'oggetto del dispositivo client, l'argomento MQTT da utilizzare e i certificati che autenticano e proteggono la connessione. L'esempio seguente sottoscrive l'
clients/
argomento e pubblica un messaggio immesso nella riga di comando relativo allo stesso argomento.MyClientDevice1
/hello/world-
Sostituire
MyClientDevice1
con il nome dell'oggetto del dispositivo client. -
Sostituisci
~/certs/AmazonRootCA1.pem
con il percorso del certificato Amazon root CA sul dispositivo client. -
Sostituisci
~/certs/device.pem.crt
con il percorso del certificato del dispositivo sul dispositivo client. -
Sostituisci
~/certs/private.pem.key
con il percorso del file della chiave privata sul dispositivo client. -
Sostituiscilo
us-east-1
con la AWS regione in cui operano il dispositivo client e il dispositivo principale.
./basic-discovery \ --thing_name
MyClientDevice1
\ --topic 'clients/MyClientDevice1
/hello/world' \ --ca_file~/certs/AmazonRootCA1.pem
\ --cert~/certs/device.pem.crt
\ --key~/certs/private.pem.key
\ --regionus-east-1
L'applicazione di esempio Discovery sottoscrive l'argomento e richiede all'utente di inserire un messaggio da pubblicare.
Connecting to group greengrassV2-coreDevice-MyGreengrassCore with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883 Connected to group greengrassV2-coreDevice-MyGreengrassCore, using connection to 203.0.113.0:8883 Successfully subscribed to clients/MyClientDevice1/hello/world Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program.
Se invece l'applicazione genera un errore, consulta Risoluzione dei problemi di rilevamento di Greengrass.
-
-
Inserisci un messaggio, ad esempio.
Hello World!
Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program. Hello World!
Se l'output indica che l'applicazione ha ricevuto il messaggio MQTT sull'argomento, il dispositivo client può comunicare correttamente con il dispositivo principale.
Operation on packetId 2 Succeeded Publish received on topic clients/MyClientDevice1/hello/world Message: Hello World!
Puoi anche visualizzare i log di Greengrass sul dispositivo principale per verificare se il dispositivo client si connette e invia messaggi correttamente. Per ulteriori informazioni, consulta Monitora AWS IoT Greengrass i registri.
Comunicazioni di prova () JavaScript
In questa sezione, si utilizza Greengrass discovery sample nella versione SDK per dispositivi AWS IoT 2 per JavaScript
Importante
Per utilizzare la versione SDK per dispositivi AWS IoT v2 for JavaScript, un dispositivo deve eseguire Node v10.0 o versione successiva.
Per testare le comunicazioni (v2 for)SDK per dispositivi AWS IoT JavaScript
-
Scarica e installa la SDK per dispositivi AWS IoT versione 2
sull' AWS IoT oggetto JavaScript da connettere come dispositivo client. Sul dispositivo client, procedi come segue:
-
Clona il JavaScript repository SDK per dispositivi AWS IoT v2 for per scaricarlo.
git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
-
Installa la v2 per SDK per dispositivi AWS IoT . JavaScript
cd aws-iot-device-sdk-js-v2 npm install
-
-
Passa alla cartella di esempio Greengrass discovery nella versione 2 per SDK per dispositivi AWS IoT . JavaScript
cd samples/node/basic_discovery
-
Installa l'applicazione di esempio Greengrass discovery.
npm install
-
Esegui l'applicazione Greengrass discovery di esempio. Questa applicazione prevede argomenti che specifichino il nome dell'oggetto del dispositivo client, l'argomento e il messaggio MQTT da utilizzare e i certificati che autenticano e proteggono la connessione. L'esempio seguente invia un messaggio Hello World all'argomento.
clients/
MyClientDevice1
/hello/world-
Sostituire
MyClientDevice1
con il nome dell'oggetto del dispositivo client. -
Sostituisci
~/certs/AmazonRootCA1.pem
con il percorso del certificato Amazon root CA sul dispositivo client. -
Sostituisci
~/certs/device.pem.crt
con il percorso del certificato del dispositivo sul dispositivo client. -
Sostituisci
~/certs/private.pem.key
con il percorso del file della chiave privata sul dispositivo client. -
Sostituiscilo
us-east-1
con la AWS regione in cui operano il dispositivo client e il dispositivo principale.
node dist/index.js \ --thing_name
MyClientDevice1
\ --topic 'clients/MyClientDevice1
/hello/world' \ --message 'Hello World!' \ --ca_file~/certs/AmazonRootCA1.pem
\ --cert~/certs/device.pem.crt
\ --key~/certs/private.pem.key
\ --regionus-east-1
\ --verbose warnL'applicazione di esempio Discovery invia il messaggio 10 volte e si disconnette. Inoltre, sottoscrive lo stesso argomento in cui pubblica i messaggi. Se l'output indica che l'applicazione ha ricevuto messaggi MQTT sull'argomento, il dispositivo client può comunicare correttamente con il dispositivo principale.
Discovery Response: {"gg_groups":[{"gg_group_id":"greengrassV2-coreDevice-MyGreengrassCore","cores":[{"thing_arn":"arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore","connectivity":[{"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}]}],"certificate_authorities":["-----BEGIN CERTIFICATE-----\n
MIICiT...EXAMPLE=
\n-----END CERTIFICATE-----\n"]}]} Trying endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""} [WARN] [2021-06-12T00:46:45Z] [00007f90c0e8d700] [socket] - id=0x7f90b8018710 fd=26: setsockopt() for NO_SIGNAL failed with errno 92. If you are having SIGPIPE signals thrown, you may want to install a signal trap in your application layer. Connected to endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":1} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":2} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":3} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":4} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":5} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":6} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":7} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":8} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":9} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":10} Complete!Se invece l'applicazione genera un errore, consulta Risoluzione dei problemi di rilevamento di Greengrass.
Puoi anche visualizzare i log di Greengrass sul dispositivo principale per verificare se il dispositivo client si connette e invia messaggi correttamente. Per ulteriori informazioni, consulta Monitora AWS IoT Greengrass i registri.
-
Comunicazioni di test (Java)
In questa sezione, si utilizza Greengrass discovery sample nella versione SDK per dispositivi AWS IoT 2 per Java per
Importante
Per creare la versione SDK per dispositivi AWS IoT v2 per Java, un dispositivo deve disporre dei seguenti strumenti:
-
Java 8 o versione successiva, con
JAVA_HOME
puntamento alla cartella Java. -
Apache Maven
Per testare le comunicazioni (SDK per dispositivi AWS IoT v2 per Java)
-
Scaricate e create la SDK per dispositivi AWS IoT versione v2 per Java
su un AWS IoT dispositivo da connettere come dispositivo client. Sul dispositivo client, effettuate le seguenti operazioni:
-
Clona il repository SDK per dispositivi AWS IoT v2 for Java per scaricarlo.
git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
-
Passa alla cartella SDK per dispositivi AWS IoT v2 for Java.
-
Crea la SDK per dispositivi AWS IoT v2 per Java.
cd aws-iot-device-sdk-java-v2 mvn versions:use-latest-versions -Dincludes="software.amazon.awssdk.crt*" mvn clean install
-
-
Esegui l'applicazione Greengrass discovery di esempio. Questa applicazione prevede argomenti che specifichino il nome dell'oggetto del dispositivo client, l'argomento MQTT da utilizzare e i certificati che autenticano e proteggono la connessione. L'esempio seguente sottoscrive l'
clients/
argomento e pubblica un messaggio immesso nella riga di comando relativo allo stesso argomento.MyClientDevice1
/hello/world-
Sostituisci entrambe le istanze di
MyClientDevice1
con il nome dell'oggetto del dispositivo client. -
Sostituisci
$HOME/certs/AmazonRootCA1.pem
con il percorso del certificato Amazon root CA sul dispositivo client. -
Sostituisci
$HOME/certs/device.pem.crt
con il percorso del certificato del dispositivo sul dispositivo client. -
Sostituisci
$HOME/certs/private.pem.key
con il percorso del file della chiave privata sul dispositivo client. -
Sostituiscilo
us-east-1
con il Regione AWS luogo in cui funzionano il dispositivo client e il dispositivo principale.
DISCOVERY_SAMPLE_ARGS="--thing_name
MyClientDevice1
\ --topic 'clients/MyClientDevice1
/hello/world' \ --ca_file$HOME/certs/AmazonRootCA1.pem
\ --cert$HOME/certs/device.pem.crt
\ --key$HOME/certs/private.pem.key
\ --regionus-east-1
" mvn exec:java -pl samples/Greengrass \ -Dexec.mainClass=greengrass.BasicDiscovery \ -Dexec.args="$DISCOVERY_SAMPLE_ARGS"L'applicazione Discovery Sample sottoscrive l'argomento e richiede all'utente di inserire un messaggio da pubblicare.
Connecting to group ID greengrassV2-coreDevice-MyGreengrassCore, with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883 Started a clean session Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program:
Se invece l'applicazione genera un errore, consulta Risoluzione dei problemi di rilevamento di Greengrass.
-
-
Inserisci un messaggio, ad esempio.
Hello World!
Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program: Hello World!
Se l'output indica che l'applicazione ha ricevuto il messaggio MQTT sull'argomento, il dispositivo client può comunicare correttamente con il dispositivo principale.
Message received on topic clients/MyClientDevice1/hello/world: Hello World!
Puoi anche visualizzare i log di Greengrass sul dispositivo principale per verificare se il dispositivo client si connette e invia messaggi correttamente. Per ulteriori informazioni, consulta Monitora AWS IoT Greengrass i registri.