Raspberry Pi 또는 다른 디바이스 연결 - AWS IoT Core

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Raspberry Pi 또는 다른 디바이스 연결

이 섹션에서는 함께 사용할 Raspberry Pi를 구성해 보겠습니다. AWS IoT연결하려는 다른 디바이스가 있는 경우 Raspberry Pi에 대한 지침에는 이러한 지침을 디바이스에 적용하는 데 도움이 되는 참조가 포함되어 있습니다.

이 작업은 일반적으로 20분 정도 소요되지만 시스템 소프트웨어 업그레이드가 많은 경우 더 오래 걸릴 수 있습니다.

중요

이러한 지침을 다른 디바이스 및 운영 체제에 적용하는 것은 어려울 수 있습니다. 이러한 지침을 해석하고 디바이스에 적용할 수 있을 만큼 디바이스를 잘 이해해야 합니다.

장치를 구성하는 동안 문제가 발생하면 다른 장치 옵션 중 하나를 대안으로 사용해 볼 수 있습니다 (예: Amazon EC2를 사용하여 가상 디바이스 생성 또는윈도우 또는 리눅스 PC 또는 Mac을 장치로 사용하십시오. AWS IoT). AWS IoT

디바이스 설정

이 단계의 목표는 운영 체제(OS)를 시작하고 인터넷에 연결하며 명령줄 인터페이스에서 디바이스와 상호 작용할 수 있도록 디바이스를 구성하는 데 필요한 항목을 수집하는 것입니다.

이 튜토리얼을 완료하려면 다음이 필요합니다.

  • An AWS 계정. 없는 경우 계속하기 전에 설정하기 AWS 계정에서 설명하는 단계를 완료하세요.

  • Raspberry Pi 3 Model B 또는 최신 모델. 이 기능은 이전 버전의 Raspberry Pi에서 작동할 수 있지만 테스트되지 않았습니다.

  • Raspberry Pi OS(32비트) 이상. 최신 버전의 Raspberry OS를 사용하는 것이 좋습니다. 이전 버전의 OS는 작동하지만 테스트되지 않았습니다.

    이 예제를 실행하가 위해 GUI(그래픽 사용자 인터페이스)가 있는 데스크톱을 설치할 필요는 없지만, Raspberry Pi에 익숙하지 않고 Raspberry Pi 하드웨어가 GUI가 있는 데스크톱을 지원한다면 GUI가 있는 데스크탑을 사용하는 것이 더 쉬울 수 있습니다.

  • 이더넷 또는 WiFi 연결.

  • 키보드, 마우스, 모니터, 케이블, 전원 공급 장치, 및 디바이스에 필요한 기타 하드웨어.

중요

다음 단계를 진행하기 전에 디바이스에 운영 체제가 설치, 구성 및 실행되어야 합니다. 디바이스가 인터넷에 연결되어 있어야 하며 명령줄 인터페이스를 사용하여 디바이스에 액세스할 수 있어야 합니다. 명령줄 액세스는 직접 연결된 키보드, 마우스 및 모니터를 통해 또는 SSH 터미널 원격 인터페이스를 사용하여 수행할 수 있습니다.

그래픽 사용자 인터페이스(GUI)가 있는 Raspberry Pi에서 운영 체제를 실행 중인 경우 디바이스에서 터미널 창을 열고 해당 창에서 다음 지침을 수행합니다. 그렇지 않고 PuTTY와 같은 원격 터미널을 사용하여 디바이스에 연결하는 경우 디바이스에 대한 원격 터미널을 열고 사용하세요.

AWS IoT 디바이스 SDK에 필요한 도구 및 라이브러리를 설치합니다.

AWS IoT 기기 SDK와 샘플 코드를 설치하기 전에 시스템이 최신 상태이고 SDK를 설치하는 데 필요한 도구와 라이브러리가 있는지 확인하세요.

  1. 운영 체제 업데이트 및 필수 라이브러리 설치

    AWS IoT 기기 SDK를 설치하기 전에 기기의 터미널 창에서 다음 명령을 실행하여 운영체제를 업데이트하고 필요한 라이브러리를 설치하세요.

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install cmake
    sudo apt-get install libssl-dev
  2. Git 설치

    기기의 운영 체제에 Git이 설치되어 있지 않은 경우 Git을 설치하여 AWS IoT 기기 SDK를 설치해야 합니다. JavaScript

    1. 다음 명령을 실행하여 Git가 이미 설치되었는지 테스트합니다.

      git --version
    2. 앞의 명령이 Git 버전을 반환하면 Git가 이미 설치되어 있는 것이므로, 3단계로 건너뛸 수 있습니다.

    3. git 명령을 실행할 때 오류가 표시되는 경우 다음 명령을 실행하여 Git를 설치하세요.

      sudo apt-get install git
    4. 다음 명령을 실행하여 Git가 이미 설치되었는지 다시 테스트합니다.

      git --version
    5. Git가 설치된 경우 다음 섹션을 진행합니다. 그렇지 않은 경우 계속하기 전에 문제를 해결하고 오류를 수정하세요. 에 대한 AWS IoT 디바이스 SDK를 설치하려면 Git이 필요합니다. JavaScript

디바이스 SDK 설치 AWS IoT

AWS IoT 디바이스 SDK를 설치합니다.

Python

이 섹션에서는 Python, Python의 개발 도구, Python용 AWS IoT 장치 SDK를 장치에 설치합니다. 이 지침은 최신 Raspberry Pi OS를 실행하는 Raspberry Pi에 대한 것입니다. 다른 디바이스가 있거나 다른 운영 체제를 사용하는 경우 디바이스에 다음 지침을 적용해야 합니다.

  1. Python과 개발 도구 설치

    Python용 AWS IoT 디바이스 SDK를 사용하려면 Python v3.5 이상이 라즈베리 파이에 설치되어 있어야 합니다.

    디바이스의 터미널 창에서 다음 명령을 실행합니다.

    1. 다음 명령을 실행하여 디바이스에 설치된 Python의 버전을 확인합니다.

      python3 --version

      Python이 설치되어 있는 경우, 해당 버전이 표시됩니다.

    2. 표시된 버전이 Python 3.5 이상인 경우 2단계로 건너뛸 수 있습니다.

    3. 표시된 버전이 Python 3.5보다 작은 경우 다음 명령을 실행하여 올바른 버전을 설치할 수 있습니다.

      sudo apt install python3
    4. 다음 명령을 실행하여 올바른 버전의 Python이 설치되었는지 확인합니다.

      python3 --version
  2. pip3에 대한 테스트

    디바이스의 터미널 창에서 다음 명령을 실행합니다.

    1. pip3가 설치되어 있으면 다음 명령을 실행합니다.

      pip3 --version
    2. 명령이 버전 번호를 반환하면 pip3이(가) 설치되어 있는 것이므로, 3단계로 건너뛸 수 있습니다.

    3. 앞의 명령이 오류를 반환하면 다음 명령을 실행하여 pip3을(를) 설치합니다.

      sudo apt install python3-pip
    4. pip3가 설치되어 있으면 다음 명령을 실행합니다.

      pip3 --version
  3. 현재 Python용 AWS IoT 디바이스 SDK 설치

    Python용 AWS IoT 기기 SDK를 설치하고 샘플 앱을 기기에 다운로드합니다.

    디바이스에서 다음 명령을 실행합니다.

    cd ~ python3 -m pip install awsiotsdk
    git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
JavaScript

이 섹션에서는 Node.js, npm 패키지 관리자, 디바이스용 AWS IoT JavaScript 디바이스 SDK를 설치합니다. 이 지침은 Raspberry Pi OS를 실행하는 Raspberry Pi에 대한 것입니다. 다른 디바이스가 있거나 다른 운영 체제를 사용하는 경우 디바이스에 다음 지침을 적용해야 합니다.

  1. 최신 버전의 Node.js 설치

    용 AWS IoT 디바이스 SDK를 JavaScript 사용하려면 라즈베리 파이에 Node.js 및 npm 패키지 관리자를 설치해야 합니다.

    1. 다음 명령을 입력하여 노드 리포지토리의 최신 버전을 다운로드합니다.

      cd ~ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
    2. 노드와 npm을 설치합니다.

      sudo apt-get install -y nodejs
    3. 노드 설치를 확인합니다.

      node -v

      명령에 노드 버전이 표시되는지 확인합니다. 이 자습서에서는 Node v10.0 이상이 필요합니다. 노드 버전이 표시되지 않으면 노드 리포지토리를 다시 다운로드해 보세요.

    4. npm 설치를 확인합니다.

      npm -v

      명령이 npm 버전을 표시하는지 확인합니다. npm 버전이 표시되지 않으면 노드와 npm을 다시 설치하세요.

    5. 디바이스를 다시 시작합니다.

      sudo shutdown -r 0

      디바이스가 다시 시작된 후 계속하세요.

  2. 다음에 사용할 디바이스 SDK를 설치하세요. AWS IoT JavaScript

    라즈베리파이용 AWS IoT 디바이스 SDK를 JavaScript 설치하세요.

    1. JavaScript리포지토리용 AWS IoT 디바이스 SDK를 홈 aws-iot-device-sdk-js-v2 디렉터리의 디렉터리에 복제합니다. Raspberry Pi에서 디렉터리는 ~/이고, 이는 다음 명령의 디렉터리로 사용됩니다. 디바이스가 디렉터리의 다른 경로를 사용하는 경우 다음 명령에서 ~/을(를) 디바이스의 올바른 경로로 바꾸세요.

      이러한 명령은 ~/aws-iot-device-sdk-js-v2 디렉터리를 만들고 여기에 SDK 코드를 복사해 넣습니다.

      cd ~ git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
    2. 이전 단계에서 생성한 aws-iot-device-sdk-js-v2 디렉터리로 변경하고 npm install 명령을 실행하여 SDK를 설치합니다. npm install 명령은 aws-crt 라이브러리 빌드를 호출합니다(완료하는 데 몇 분 정도 걸릴 수 있음).

      cd ~/aws-iot-device-sdk-js-v2 npm install

샘플 앱 설치 및 실행

이 섹션에서는 AWS IoT 기기 SDK에 있는 pubsub 샘플 앱을 설치하고 실행해 보겠습니다. 이 앱은 디바이스가 MQTT 라이브러리를 사용하여 MQTT 메시지를 게시 및 구독하는 방법을 보여줍니다. 샘플 앱은 topic_1 주제를 구독하고, 해당 주제에 10개의 메시지를 게시하고, 메시지 브로커로부터 받은 메시지를 표시합니다.

인증서 파일 설치

샘플 앱에서는 디바이스를 인증하는 인증서 파일을 디바이스에 설치해야 합니다.

샘플 앱에 대한 디바이스 인증서 파일을 설치하려면
  1. 다음 명령을 사용하여 디렉터리에 certs 하위 디렉터리를 만듭니다.

    cd ~ mkdir certs
  2. AWS IoT 리소스 생성에서 생성한 프라이빗 키, 디바이스 인증서 및 루트 CA 인증서를 ~/certs 디렉터리에 복사합니다.

    인증서 파일을 디바이스에 복사하는 방법은 디바이스 및 운영 체제에 따라 다르며 여기서는 설명하지 않습니다. 그러나 디바이스가 그래픽 사용자 인터페이스(GUI)를 지원하고 웹 브라우저를 사용하는 경우 디바이스의 웹 브라우저에서 AWS IoT 리소스 생성에 설명된 절차를 수행하여 결과 파일을 디바이스에 직접 다운로드할 수 있습니다.

    다음 섹션의 명령은 이 표에 표시된 대로 키 및 인증서 파일이 디바이스에 저장되어 있다고 가정합니다.

    인증서 파일 이름

    파일

    파일 경로

    루트 CA 인증서

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

    디바이스 인증서

    ~/certs/device.pem.crt

    프라이빗 키

    ~/certs/private.pem.key

샘플 앱을 실행하려면 다음 정보가 필요합니다.

애플리케이션 파라미터 값

파라미터

값을 찾을 수 있는 위치

your-iot-endpoint

AWS IoT 콘솔에서 All devices(모든 디바이스)를 선택한 다음 Things(사물)를 선택합니다.

AWS IoT 메뉴의 설정 페이지에서. 엔드포인트는 디바이스 데이터 엔드포인트(Device data endpoint) 섹션에 표시됩니다.

your-iot-endpoint값의 형식은 다음과 같습니다 (예:endpoint_id-ats.iot.region.amazonaws.com)a3qj468EXAMPLE-ats.iot.us-west-2.amazonaws.com.

Python
샘플 앱을 설치하고 실행하려면
  1. 샘플 앱 디렉터리로 이동합니다.

    cd ~/aws-iot-device-sdk-python-v2/samples
  2. 명령줄 창에서 표시된 your-iot-endpoint대로 바꾸고 이 명령을 실행합니다.

    python3 pubsub.py --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
  3. 샘플 앱에서 다음 사항을 확인합니다.

    1. 계정의 AWS IoT 서비스에 연결합니다.

    2. 메시지 주제 topic_1을 구독하고 해당 주제에 대해 수신하는 메시지 표시.

    3. topic_1 주제에 10개의 메시지 게시.

    4. 다음과 유사한 출력 표시.

    Connecting to a3qEXAMPLEffp-ats.iot.us-west-2.amazonaws.com with client ID 'test-0c8ae2ff-cc87-49d2-a82a-ae7ba1d0ca5a'... Connected! Subscribing to topic 'topic_1'... Subscribed with QoS.AT_LEAST_ONCE Sending 10 message(s) Publishing message to topic 'topic_1': Hello World! [1] Received message from topic 'topic_1': b'Hello World! [1]' Publishing message to topic 'topic_1': Hello World! [2] Received message from topic 'topic_1': b'Hello World! [2]' Publishing message to topic 'topic_1': Hello World! [3] Received message from topic 'topic_1': b'Hello World! [3]' Publishing message to topic 'topic_1': Hello World! [4] Received message from topic 'topic_1': b'Hello World! [4]' Publishing message to topic 'topic_1': Hello World! [5] Received message from topic 'topic_1': b'Hello World! [5]' Publishing message to topic 'topic_1': Hello World! [6] Received message from topic 'topic_1': b'Hello World! [6]' Publishing message to topic 'topic_1': Hello World! [7] Received message from topic 'topic_1': b'Hello World! [7]' Publishing message to topic 'topic_1': Hello World! [8] Received message from topic 'topic_1': b'Hello World! [8]' Publishing message to topic 'topic_1': Hello World! [9] Received message from topic 'topic_1': b'Hello World! [9]' Publishing message to topic 'topic_1': Hello World! [10] Received message from topic 'topic_1': b'Hello World! [10]' 10 message(s) received. Disconnecting... Disconnected!

    샘플 앱을 실행하는 데 문제가 있는 경우 샘플 앱을 사용한 문제 해결를 검토합니다.

    샘플 앱이 수행 중인 작업에 대한 자세한 메시지를 표시하도록 명령줄에 --verbosity Debug 파라미터를 추가할 수도 있습니다. 이 정보는 문제를 해결하는 데 필요한 도움을 제공할 수 있습니다.

JavaScript
샘플 앱을 설치하고 실행하려면
  1. 명령줄 창에서 다음 명령을 사용하여 SDK가 만든 ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub 디렉터리로 이동하고 샘플 앱을 설치합니다. npm install 명령은 aws-crt 라이브러리 빌드를 호출합니다(완료하는 데 몇 분 정도 걸릴 수 있음).

    cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub npm install
  2. 명령줄 창에서 표시된 your-iot-endpoint대로 바꾸고 이 명령을 실행합니다.

    node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
  3. 샘플 앱에서 다음 사항을 확인합니다.

    1. 계정의 AWS IoT 서비스에 연결합니다.

    2. 메시지 주제 topic_1을 구독하고 해당 주제에 대해 수신하는 메시지 표시.

    3. topic_1 주제에 10개의 메시지 게시.

    4. 다음과 유사한 출력 표시.

    Publish received on topic topic_1 {"message":"Hello world!","sequence":1} Publish received on topic topic_1 {"message":"Hello world!","sequence":2} Publish received on topic topic_1 {"message":"Hello world!","sequence":3} Publish received on topic topic_1 {"message":"Hello world!","sequence":4} Publish received on topic topic_1 {"message":"Hello world!","sequence":5} Publish received on topic topic_1 {"message":"Hello world!","sequence":6} Publish received on topic topic_1 {"message":"Hello world!","sequence":7} Publish received on topic topic_1 {"message":"Hello world!","sequence":8} Publish received on topic topic_1 {"message":"Hello world!","sequence":9} Publish received on topic topic_1 {"message":"Hello world!","sequence":10}

    샘플 앱을 실행하는 데 문제가 있는 경우 샘플 앱을 사용한 문제 해결를 검토합니다.

    샘플 앱이 수행 중인 작업에 대한 자세한 메시지를 표시하도록 명령줄에 --verbosity Debug 파라미터를 추가할 수도 있습니다. 이 정보는 문제를 해결하는 데 필요한 도움을 제공할 수 있습니다.

AWS IoT 콘솔에서 샘플 앱의 메시지 보기

AWS IoT 콘솔에서 MQTT 테스트 클라이언트를 사용하여, 샘플 앱의 메시지가 메시지 브로커를 통과할 때 해당 메시지를 볼 수 있습니다.

샘플 앱에서 게시한 MQTT 메시지를 보려면
  1. MQTT 클라이언트에서 MQTT 메시지를 확인하세요 AWS IoT .을(를) 검토합니다. 이는 MQTT 메시지가 메시지 브로커를 통과할 때 해당 메시지를 보기 위해 AWS IoT 콘솔에서 MQTT 테스트 클라이언트를 사용하는 방법을 파악하는 데 도움이 됩니다.

  2. AWS IoT 콘솔에서 MQTT 테스트 클라이언트를 엽니다.

  3. topic_1 주제를 구독합니다.

  4. 명령줄 창에서 샘플 앱을 다시 실행하고 AWS IoT 콘솔MQTT 클라이언트에서 메시지를 확인합니다.

    Python
    cd ~/aws-iot-device-sdk-python-v2/samples python3 pubsub.py --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
    JavaScript
    cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint