기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
클라이언트 장치 통신 테스트
클라이언트 장치는 AWS IoT Device SDK 를 사용하여 코어 장치를 검색, 연결 및 통신할 수 있습니다. 에서 Greengrass 검색 클라이언트를 사용하여 Greengrass 검색 API를 사용할 수 있습니다. Greengrass 검색 API는 클라이언트 장치가 연결할 수 있는 핵심 장치에 대한 정보를 반환합니다. AWS IoT Device SDK API 응답에는 연결할 MQTT 브로커 엔드포인트와 각 코어 디바이스의 ID를 확인하는 데 사용할 인증서가 포함됩니다. 그러면 클라이언트 디바이스가 코어 디바이스에 성공적으로 연결될 때까지 각 엔드포인트를 시도할 수 있습니다.
클라이언트 장치는 연결된 코어 장치만 검색할 수 있습니다. 클라이언트 장치와 코어 장치 간의 통신을 테스트하기 전에 클라이언트 장치를 코어 장치에 연결해야 합니다. 자세한 설명은 클라이언트 장치 연결 섹션을 참조하세요.
Greengrass 검색 API는 지정한 코어 디바이스 MQTT 브로커 엔드포인트를 반환합니다. IP 탐지기 구성 요소를 사용하여 이러한 엔드포인트를 관리하거나 각 코어 디바이스에 대해 수동으로 관리할 수 있습니다. 자세한 설명은 코어 디바이스 엔드포인트 관리 섹션을 참조하세요.
참고
Greengrass 검색 API를 사용하려면 클라이언트 장치에 권한이 있어야 합니다. greengrass:Discover
자세한 설명은 클라이언트 디바이스에 대한 최소 AWS IoT 정책 섹션을 참조하세요.
AWS IoT Device SDK는 여러 프로그래밍 언어로 제공됩니다. 자세한 내용은 AWS IoT Core 개발자 안내서의 AWS IoT 디바이스 SDK 섹션을 참조하세요.
테스트 통신 (Python)
이 섹션에서는 Python용 AWS IoT Device SDK v2의
중요
Python용 AWS IoT Device SDK v2를 사용하려면 기기에서 Python 3.6 이상을 실행해야 합니다.
통신을 테스트하려면 (Python의 경우 AWS IoT Device SDK v2)
-
AWS IoT Device SDKv2용 Python을
AWS IoT 다운로드하여 클라이언트 장치로 연결할 사물에 설치합니다. 클라이언트 기기에서 다음을 수행하십시오.
-
AWS IoT Device SDKv2 for Python 저장소를 복제하여 다운로드하십시오.
git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
-
Python용 AWS IoT Device SDK v2를 설치합니다.
python3 -m pip install --user ./aws-iot-device-sdk-python-v2
-
-
Python용 AWS IoT Device SDK v2의 샘플 폴더로 변경합니다.
cd aws-iot-device-sdk-python-v2/samples
-
샘플 Greengrass 검색 애플리케이션을 실행합니다. 이 애플리케이션에는 클라이언트 디바이스 사물 이름, 사용할 MQTT 주제 및 메시지, 연결을 인증하고 보호하는 인증서를 지정하는 인수가 필요합니다. 다음 예제에서는 주제에 Hello World 메시지를 보냅니다.
clients/
MyClientDevice1
/hello/world-
MyClientDevice1을
클라이언트 디바이스의 사물 이름으로 대체합니다. -
~/certs/ AmazonRoot ca1.pem을 클라이언트 디바이스의 Amazon 루트 CA 인증서 경로로
바꾸십시오. -
~/certs/device.pem.crt를
클라이언트 디바이스의 디바이스 인증서 경로로 바꾸십시오. -
~/certs/private.pem.key를
클라이언트 장치의 개인 키 파일 경로로 바꾸십시오. -
us-east-1을
클라이언트 디바이스 및 코어 디바이스가 운영되는 지역으로 바꾸십시오. AWS
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 Warn검색 샘플 애플리케이션은 메시지를 10번 전송하고 연결을 끊습니다. 또한 메시지를 게시하는 동일한 주제를 구독합니다. 애플리케이션에서 해당 주제에 대한 MQTT 메시지를 수신했다고 출력에 표시되면 클라이언트 기기는 코어 기기와 성공적으로 통신할 수 있습니다.
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}'애플리케이션이 대신 오류를 출력하는 경우 Greengrass 검색 문제 해결을 참조하십시오.
또한 코어 디바이스의 Greengrass 로그를 확인하여 클라이언트 디바이스가 성공적으로 연결하고 메시지를 전송하는지 확인할 수 있습니다. 자세한 설명은 모니터 AWS IoT Greengrass 로그 섹션을 참조하세요.
-
통신 테스트 (C++)
이 섹션에서는 C++용 AWS IoT Device SDK v2의
C++용 AWS IoT Device SDK v2를 빌드하려면 기기에 다음 도구가 있어야 합니다.
-
C++ 11 이상
-
CMake 3.1 이상
-
다음 컴파일러 중 하나:
-
GCC 4.8 이상
-
클랑 3.9 이상
-
MSVC 2015 이상
-
통신을 테스트하려면 (C++의 경우 AWS IoT Device SDK v2)
-
C++용 AWS IoT Device SDK v2를
다운로드하고 빌드하여 클라이언트 AWS IoT 기기로 연결할 수 있습니다. 클라이언트 기기에서 다음과 같이 하세요.
-
AWS IoT Device SDKv2 C++용 작업 영역용 폴더를 만들고 해당 작업 영역으로 변경합니다.
cd mkdir iot-device-sdk-cpp cd iot-device-sdk-cpp
-
C++용 AWS IoT Device SDK v2 저장소를 복제하여 다운로드하십시오.
--recursive
플래그는 하위 모듈을 다운로드하도록 지정합니다.git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
-
C++ 빌드 출력용 AWS IoT Device SDK v2용 폴더를 만들고 이 폴더로 변경합니다.
mkdir aws-iot-device-sdk-cpp-v2-build cd aws-iot-device-sdk-cpp-v2-build
-
C++용 AWS IoT Device SDK v2를 빌드하세요.
cmake -DCMAKE_INSTALL_PREFIX="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ../aws-iot-device-sdk-cpp-v2 cmake --build . --target install
-
-
AWS IoT Device SDKv2에서 C++용 Greengrass 검색 샘플 애플리케이션을 빌드하세요. 다음을 따릅니다.
-
C++용 AWS IoT Device SDK v2에서 Greengrass 디스커버리 샘플 폴더로 변경하십시오.
cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
-
Greengrass 디스커버리 샘플 빌드 출력을 위한 폴더를 만들고 이 폴더로 변경합니다.
mkdir build cd build
-
Greengrass 디스커버리 샘플 애플리케이션을 빌드하세요.
cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" .. cmake --build . --config "Release"
-
-
샘플 Greengrass 검색 애플리케이션을 실행합니다. 이 애플리케이션에는 클라이언트 디바이스 사물 이름, 사용할 MQTT 주제, 연결을 인증하고 보호하는 인증서를 지정하는 인수가 필요합니다. 다음
clients/
예제는 주제를 구독하고 명령줄에 입력한 메시지를 동일한 주제에 게시합니다.MyClientDevice1
/hello/world-
MyClientDevice1을
클라이언트 디바이스의 사물 이름으로 바꾸십시오. -
~/certs/ AmazonRoot ca1.pem을 클라이언트 디바이스의 Amazon 루트 CA 인증서 경로로
바꾸십시오. -
~/certs/device.pem.crt를
클라이언트 디바이스의 디바이스 인증서 경로로 바꾸십시오. -
~/certs/private.pem.key를
클라이언트 장치의 개인 키 파일 경로로 바꾸십시오. -
us-east-1을
클라이언트 디바이스 및 코어 디바이스가 운영되는 지역으로 바꾸십시오. AWS
./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
검색 샘플 애플리케이션은 주제를 구독하고 게시할 메시지를 입력하라는 메시지를 표시합니다.
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.
애플리케이션이 대신 오류를 출력하는 경우 Greengrass 검색 문제 해결을 참조하십시오.
-
-
메시지 (예
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!
애플리케이션이 주제에 대한 MQTT 메시지를 수신했다고 출력에 표시되면 클라이언트 디바이스는 코어 디바이스와 성공적으로 통신할 수 있습니다.
Operation on packetId 2 Succeeded Publish received on topic clients/MyClientDevice1/hello/world Message: Hello World!
또한 코어 디바이스의 Greengrass 로그를 확인하여 클라이언트 디바이스가 성공적으로 연결하고 메시지를 전송하는지 확인할 수 있습니다. 자세한 설명은 모니터 AWS IoT Greengrass 로그 섹션을 참조하세요.
통신 테스트 () JavaScript
이 섹션에서는 AWS IoT Device SDKv2
중요
AWS IoT Device SDKv2를 사용하려면 기기에서 Node v10.0 이상을 실행해야 합니다. JavaScript
통신을 테스트하려면 (AWS IoT Device SDKv2의 경우) JavaScript
-
AWS IoT Device SDKv2
for를 다운로드하여 클라이언트 AWS IoT 장치로 연결할 사물에 설치합니다. JavaScript 클라이언트 장치에서 다음을 수행하십시오.
-
AWS IoT Device SDKv2를 복제하여 JavaScript 저장소용 v2를 다운로드하세요.
git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
-
용 AWS IoT Device SDK v2를 설치합니다 JavaScript.
cd aws-iot-device-sdk-js-v2 npm install
-
-
AWS IoT Device SDKv2 양식에서 Greengrass 디스커버리 샘플 폴더로 변경하십시오. JavaScript
cd samples/node/basic_discovery
-
Greengrass 디스커버리 샘플 애플리케이션을 설치합니다.
npm install
-
샘플 Greengrass 검색 애플리케이션을 실행합니다. 이 애플리케이션에는 클라이언트 디바이스 사물 이름, 사용할 MQTT 주제 및 메시지, 연결을 인증하고 보호하는 인증서를 지정하는 인수가 필요합니다. 다음 예제에서는 주제에 Hello World 메시지를 보냅니다.
clients/
MyClientDevice1
/hello/world-
MyClientDevice1을
클라이언트 디바이스의 사물 이름으로 대체합니다. -
~/certs/ AmazonRoot ca1.pem을 클라이언트 디바이스의 Amazon 루트 CA 인증서 경로로
바꾸십시오. -
~/certs/device.pem.crt를
클라이언트 디바이스의 디바이스 인증서 경로로 바꾸십시오. -
~/certs/private.pem.key를
클라이언트 장치의 개인 키 파일 경로로 바꾸십시오. -
us-east-1을
클라이언트 디바이스 및 코어 디바이스가 운영되는 지역으로 바꾸십시오. AWS
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 warn검색 샘플 애플리케이션은 메시지를 10번 전송하고 연결을 끊습니다. 또한 메시지를 게시하는 동일한 주제를 구독합니다. 애플리케이션에서 해당 주제에 대한 MQTT 메시지를 수신했다고 출력에 표시되면 클라이언트 기기는 코어 기기와 성공적으로 통신할 수 있습니다.
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!애플리케이션이 대신 오류를 출력하는 경우 Greengrass 검색 문제 해결을 참조하십시오.
또한 코어 디바이스의 Greengrass 로그를 확인하여 클라이언트 디바이스가 성공적으로 연결하고 메시지를 전송하는지 확인할 수 있습니다. 자세한 설명은 모니터 AWS IoT Greengrass 로그 섹션을 참조하세요.
-
테스트 통신 (Java)
이 섹션에서는 AWS IoT Device SDKv2 for Java의
중요
Java용 AWS IoT Device SDK v2를 빌드하려면 기기에 다음 도구가 있어야 합니다.
-
Java 8 이상 버전, Java 폴더를
JAVA_HOME
가리키고 있어야 합니다. -
Apache Maven
통신을 테스트하려면 (Java의 경우 AWS IoT Device SDK v2)
-
AWS IoT Device SDKv2용 Java를
다운로드하고 빌드하여 클라이언트 장치로 연결할 수 있습니다. AWS IoT 클라이언트 기기에서 다음을 수행하십시오.
-
AWS IoT Device SDKv2 for Java 저장소를 복제하여 다운로드하십시오.
git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
-
Java용 AWS IoT Device SDK v2 폴더로 변경합니다.
-
자바용 AWS IoT Device SDK v2를 빌드하세요.
cd aws-iot-device-sdk-java-v2 mvn versions:use-latest-versions -Dincludes="software.amazon.awssdk.crt*" mvn clean install
-
-
샘플 Greengrass 검색 애플리케이션을 실행합니다. 이 애플리케이션에는 클라이언트 디바이스 사물 이름, 사용할 MQTT 주제, 연결을 인증하고 보호하는 인증서를 지정하는 인수가 필요합니다. 다음
clients/
예제는 주제를 구독하고 명령줄에 입력한 메시지를 동일한 주제에 게시합니다.MyClientDevice1
/hello/world-
MyClientDevice1의
두 인스턴스를 모두 클라이언트 디바이스의 사물 이름으로 바꿉니다. -
$HOME/certs/ AmazonRoot ca1.pem을 클라이언트 디바이스의 Amazon 루트 CA 인증서 경로로
대체하십시오. -
$HOME/certs/device.pem.crt를
클라이언트 디바이스의 디바이스 인증서 경로로 바꾸십시오. -
$HOME/certs/private.pem.key를
클라이언트 장치의 개인 키 파일 경로로 바꾸십시오. -
us-east-1을
클라이언트 디바이스 및 코어 디바이스가 작동하는 곳으로 바꾸십시오. AWS 리전
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"검색 샘플 애플리케이션은 주제를 구독하고 게시할 메시지를 입력하라는 메시지를 표시합니다.
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:
애플리케이션이 대신 오류를 출력하는 경우 Greengrass 검색 문제 해결을 참조하십시오.
-
-
메시지 (예
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!
애플리케이션이 주제에 대한 MQTT 메시지를 수신했다고 출력에 표시되면 클라이언트 디바이스는 코어 디바이스와 성공적으로 통신할 수 있습니다.
Message received on topic clients/MyClientDevice1/hello/world: Hello World!
또한 코어 디바이스의 Greengrass 로그를 확인하여 클라이언트 디바이스가 성공적으로 연결하고 메시지를 전송하는지 확인할 수 있습니다. 자세한 내용은 모니터 AWS IoT Greengrass 로그을(를) 참조하세요.