빠른 시작: 디바이스에서 IoT Hub로 원격 분석을 보내고 백 엔드 애플리케이션(Node.js)으로 읽습니다.Quickstart: Send telemetry from a device to an IoT hub and read it with a back-end application (Node.js)

IoT Hub는 스토리지 또는 처리를 위해 IoT 디바이스에서 클라우드로 다량의 원격 분석 데이터를 수집할 수 있게 해주는 Azure 서비스입니다.IoT Hub is an Azure service that enables you to ingest high volumes of telemetry from your IoT devices into the cloud for storage or processing. 이 빠른 시작에서는 시뮬레이션된 디바이스 애플리케이션에서 IoT Hub를 통해 백 엔드 애플리케이션으로 원격 분석을 처리를 위해 보냅니다.In this quickstart, you send telemetry from a simulated device application, through IoT Hub, to a back-end application for processing.

빠른 시작은 두 개의 미리 작성된 Node.js 애플리케이션을 사용합니다. 하나는 원격 분석을 보내고 다른 하나는 허브에서 원격 분석을 읽기 위한 것입니다.The quickstart uses two pre-written Node.js applications, one to send the telemetry and one to read the telemetry from the hub. 이 두 애플리케이션을 실행하기 전에 IoT 허브를 만들고 허브에 디바이스를 등록합니다.Before you run these two applications, you create an IoT hub and register a device with the hub.

Azure Cloud Shell 사용Use Azure Cloud Shell

Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell에서 bash 또는 PowerShell을 사용하여 Azure 서비스를 작업할 수 있습니다.Cloud Shell lets you use either bash or PowerShell to work with Azure services. 로컬 환경에 아무 것도 설치할 필요 없이 Azure Cloud Shell의 미리 설치된 명령을 사용하여 이 문서의 코드를 실행할 수 있습니다.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell을 시작하려면 다음을 수행합니다.To launch Azure Cloud Shell:

옵션Option 예제/링크Example/Link
코드 블록의 오른쪽 위 모서리에서 사용을 선택합니다.Select Try It in the upper-right corner of a code block. 사용해보기를 선택하면 코드가 Cloud Shell에 자동으로 복사되지 않습니다.Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell에 대한 사용 예제
https://shell.azure.com으로 이동하거나 Cloud Shell 시작 버튼을 선택하여 브라우저에서 Cloud Shell을 엽니다.Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. 새 창에서 Cloud Shell 시작Launch Cloud Shell in a new window
Azure Portal 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure Portal의 Cloud Shell 단추

이 문서의 코드를 Azure Cloud Shell에서 실행하려면 다음을 수행합니다.To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell을 시작합니다.Launch Cloud Shell.

  2. 코드 블록의 복사 단추를 선택하여 코드를 복사합니다.Select the Copy button on a code block to copy the code.

  3. Windows 및 Linux에서는 Ctrl+Shift+V 키를 눌러 Cloud Shell 세션에 코드를 붙여넣고, macOS에서는 Cmd+Shift+V 키를 눌러 붙여넣습니다.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.

  4. Enter 키를 눌러 코드를 실행합니다.Press Enter to run the code.

Azure 구독이 아직 없는 경우 시작하기 전에 무료 계정을 만듭니다.If you don’t have an Azure subscription, create a free account before you begin.

필수 조건Prerequisites

이 빠른 시작에서 실행하는 두 개의 샘플 애플리케이션은 Node.js를 사용하여 작성되었습니다.The two sample applications you run in this quickstart are written in Node.js. 개발 머신에 Node.js v10.x.x 이상이 필요합니다.You need Node.js v10.x.x or later on your development machine.

nodejs.org에서 여러 플랫폼에 대한 Node.js를 다운로드할 수 있습니다.You can download Node.js for multiple platforms from nodejs.org.

다음 명령을 사용하여 개발 컴퓨터에서 Node.js의 현재 버전을 확인할 수 있습니다.You can verify the current version of Node.js on your development machine using the following command:

node --version

다음 명령을 실행하여 Cloud Shell 인스턴스에 Azure CLI용 Microsoft Azure IoT 확장을 추가합니다.Run the following command to add the Microsoft Azure IoT Extension for Azure CLI to your Cloud Shell instance. IOT 확장은 Azure CLI에 IoT Hub, IoT Edge 및 IoT DPS(Device Provisioning Service)별 명령을 추가합니다.The IOT Extension adds IoT Hub, IoT Edge, and IoT Device Provisioning Service (DPS) specific commands to Azure CLI.

az extension add --name azure-cli-iot-ext

https://github.com/Azure-Samples/azure-iot-samples-node/archive/master.zip 에서 샘플 Node.js 프로젝트를 다운로드하고 ZIP 보관 파일을 추출합니다.Download the sample Node.js project from https://github.com/Azure-Samples/azure-iot-samples-node/archive/master.zip and extract the ZIP archive.

IoT Hub 만들기Create an IoT hub

이 섹션에서는 Azure Portal을 사용하여 IoT Hub를 만드는 방법에 대해 설명합니다.This section describes how to create an IoT hub using the Azure portal.

  1. Azure Portal에 로그인합니다.Sign in to the Azure portal.

  2. 리소스 만들기를 클릭한 후 Marketplace 검색 필드에 IoT Hub를 입력합니다.Choose Create a resource, and then enter IoT Hub in the Search the Marketplace field.

  3. 검색 결과에서 IoT Hub, 만들기를 차례로 선택합니다.Select IoT Hub from the search results, and then select Create.

  4. 기본 탭에서 다음과 같이 필드를 완성합니다.On the Basics tab, complete the fields as follows:

    • 구독: 허브에 사용할 구독을 선택합니다.Subscription: Select the subscription to use for your hub.

    • 리소스 그룹: 리소스 그룹을 선택하거나 새로 만듭니다.Resource Group: Select a resource group or create a new one. 새 리소스 그룹을 만들려면 새로 만들기를 선택하고 사용하려는 이름을 입력합니다.To create a new one, select Create new and fill in the name you want to use. 기존 리소스 그룹을 사용하려면 해당 기존 리소스 그룹을 선택합니다.To use an existing resource group, select that resource group. 자세한 내용은 Azure Resource Manager 리소스 그룹 관리를 참조하세요.For more information, see Manage Azure Resource Manager resource groups.

    • 지역: 허브를 배치할 지역을 선택합니다.Region: Select the region in which you want your hub to be located. 가장 가까운 위치를 선택합니다.Select the location closest to you.

    • IoT Hub 이름: 허브 이름을 입력합니다.IoT Hub Name: Enter a name for your hub. 이 이름은 전역적으로 고유해야 합니다.This name must be globally unique. 입력한 이름을 사용할 수 있으면 녹색 확인 표시가 나타납니다.If the name you enter is available, a green check mark appears.

    중요

    IoT 허브는 DNS 엔드포인트로 공개적으로 검색될 수 있기 때문에 이름을 지정할 때 민감하거나 개인을 식별할 수 있는 정보는 입력하지 마십시오.Because the IoT hub will be publicly discoverable as a DNS endpoint, be sure to avoid entering any sensitive or personally identifiable information when you name it.

    Azure Portal에서 허브 만들기

  5. 완료되면 다음: 크기 및 규모를 선택하여 허브를 계속 만듭니다.Select Next: Size and scale to continue creating your hub.

    Azure Portal을 사용하여 새 허브의 크기 및 배율 설정

    이 화면에서 다음 값을 설정할 수 있습니다.This screen allows you to set the following values:

    • 가격 책정 및 크기 조정 계층: 선택한 계층입니다.Pricing and scale tier: Your selected tier. 원하는 기능 수와 하루에 솔루션을 통해 보내는 메시지 수에 따라 여러 계층에서 선택할 수 있습니다.You can choose from several tiers, depending on how many features you want and how many messages you send through your solution per day. 무료 계층은 테스트와 평가를 위해 제공됩니다.The free tier is intended for testing and evaluation. 허브에 500개 디바이스를 연결할 수 있으며 하루에 8,000개 메시지까지 허용합니다.It allows 500 devices to be connected to the hub and up to 8,000 messages per day. 각 Azure 구독은 무료 계층에 하나의 IoT Hub를 만들 수 있습니다.Each Azure subscription can create one IoT Hub in the free tier.

    • IoT Hub 단위: 하루 단위당 허용되는 메시지의 수는 허브의 가격 책정 계층에 따라 다릅니다.IoT Hub units: The number of messages allowed per unit per day depends on your hub's pricing tier. 예를 들어 허브가 700,000개의 메시지 수신을 지원하려면 S1 계층 단위 2개를 선택합니다.For example, if you want the hub to support ingress of 700,000 messages, you choose two S1 tier units. 다른 계층 옵션에 대한 자세한 내용은 적절한 IoT Hub 계층 선택을 참조하세요.For details about the other tier options, see Choosing the right IoT Hub tier.

    • 고급 설정 > 디바이스-클라우드 파티션: 이 속성은 디바이스-클라우드 메시지를 메시지의 동시 판독기 수와 연결합니다.Advanced Settings > Device-to-cloud partitions: This property relates the device-to-cloud messages to the number of simultaneous readers of the messages. 대부분의 허브에는 4개의 파티션만 필요합니다.Most hubs need only four partitions.

  6. 이 문서에서는 기본 선택 항목을 적용한 다음, 검토 + 만들기를 선택하여 선택 항목을 검토합니다.For this article, accept the default choices, and then select Review + create to review your choices. 다음 화면과 비슷하게 표시됩니다.You see something similar to this screen.

    새 허브를 만들기 위한 정보 검토

  7. 만들기를 선택하여 새 허브를 만듭니다.Select Create to create your new hub. 허브를 만드는 데 몇 분이 걸립니다.Creating the hub takes a few minutes.

디바이스 등록Register a device

연결을 위해 디바이스를 IoT Hub에 등록해야 합니다.A device must be registered with your IoT hub before it can connect. 이 빠른 시작에서는 Azure Cloud Shell을 사용하여 시뮬레이션된 디바이스를 등록합니다.In this quickstart, you use the Azure Cloud Shell to register a simulated device.

  1. Azure Cloud Shell에서 다음 명령을 실행하여 디바이스 ID를 만듭니다.Run the following command in Azure Cloud Shell to create the device identity.

    YourIoTHubName: 이 자리 표시자를 IoT 허브용으로 선택한 이름으로 바꿉니다.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

    MyNodeDevice: 등록 중인 디바이스의 이름입니다.MyNodeDevice: This is the name of the device you're registering. 표시된 대로 MyNodeDevice를 사용하는 것이 좋습니다.It's recommended to use MyNodeDevice as shown. 다른 디바이스 이름을 선택하는 경우 이 문서 전체에서도 해당 이름을 사용해야 하며, 샘플 애플리케이션에서 디바이스 이름을 업데이트한 후 실행해야 합니다.If you choose a different name for your device, you'll also need to use that name throughout this article, and update the device name in the sample applications before you run them.

    az iot hub device-identity create --hub-name {YourIoTHubName} --device-id MyNodeDevice
    
  2. Azure Cloud Shell에서 다음 명령을 실행하여 방금 등록한 디바이스의 _디바이스 연결 문자열_을 가져옵니다.Run the following command in Azure Cloud Shell to get the device connection string for the device you just registered:

    YourIoTHubName: 이 자리 표시자를 IoT 허브용으로 선택한 이름으로 바꿉니다.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

    az iot hub device-identity show-connection-string --hub-name {YourIoTHubName} --device-id MyNodeDevice --output table
    

    다음과 같은 디바이스 연결 문자열을 기록해 둡니다.Make a note of the device connection string, which looks like:

    HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyNodeDevice;SharedAccessKey={YourSharedAccessKey}

    이 값은 빠른 시작의 뒷부분에서 사용합니다.You'll use this value later in the quickstart.

  3. 또한 백 엔드 애플리케이션을 IoT 허브에 연결하여 메시지를 검색할 수 있게 하려면 _서비스 연결 문자열_이 필요합니다.You also need a service connection string to enable the back-end application to connect to your IoT hub and retrieve the messages. 다음 명령은 IoT Hub에 대한 서비스 연결 문자열을 검색합니다.The following command retrieves the service connection string for your IoT hub:

    YourIoTHubName: 이 자리 표시자를 IoT 허브용으로 선택한 이름으로 바꿉니다.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

    az iot hub show-connection-string --name {YourIoTHubName} --policy-name service --output table
    

    다음과 같은 서비스 연결 문자열을 기록해 둡니다.Make a note of the service connection string, which looks like:

    HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

    이 값은 빠른 시작의 뒷부분에서 사용합니다.You'll use this value later in the quickstart. 서비스 연결 문자열은 이전 단계에서 기록한 디바이스 연결 문자열과 다릅니다.This service connection string is different from the device connection string you noted in the previous step.

시뮬레이션된 원격 분석 전송Send simulated telemetry

시뮬레이션된 디바이스 애플리케이션은 IoT 허브의 디바이스 관련 엔드포인트에 연결하고 시뮬레이션된 온도 및 습도 원격 분석을 전송합니다.The simulated device application connects to a device-specific endpoint on your IoT hub and sends simulated temperature and humidity telemetry.

  1. 로컬 터미널 창을 열고 샘플 Node.js 프로젝트의 루트 폴더로 이동합니다.Open your local terminal window, navigate to the root folder of the sample Node.js project. 그런 다음, iot-hub\Quickstarts\simulated-device 폴더로 이동합니다.Then navigate to the iot-hub\Quickstarts\simulated-device folder.

  2. 원하는 텍스트 편집기에서 SimulatedDevice.js 파일을 엽니다.Open the SimulatedDevice.js file in a text editor of your choice.

    connectionString 변수의 값을 이전에 기록해 둔 디바이스 연결 문자열로 바꿉니다.Replace the value of the connectionString variable with the device connection string you made a note of earlier. 그런 다음, 변경 내용을 SimulatedDevice.js에 저장합니다.Then save your changes to SimulatedDevice.js.

  3. 로컬 터미널 창에서 다음 명령을 실행하여 필요한 라이브러리를 설치하고 시뮬레이션된 디바이스 애플리케이션을 실행합니다.In the local terminal window, run the following commands to install the required libraries and run the simulated device application:

    npm install
    node SimulatedDevice.js
    

    다음 스크린샷에서는 시뮬레이션된 디바이스 애플리케이션에서 IoT 허브에 원격 분석을 보낼 때의 출력을 보여 줍니다.The following screenshot shows the output as the simulated device application sends telemetry to your IoT hub:

    시뮬레이션된 디바이스 실행

허브에서 원격 분석 읽기Read the telemetry from your hub

백 엔드 애플리케이션은 IoT Hub의 서비스 측 이벤트 엔드포인트에 연결합니다.The back-end application connects to the service-side Events endpoint on your IoT Hub. 애플리케이션은 시뮬레이션된 디바이스에서 전송하는 디바이스-클라우드 메시지를 받습니다.The application receives the device-to-cloud messages sent from your simulated device. IoT Hub 백 엔드 애플리케이션은 일반적으로 클라우드에서 실행되며 디바이스-클라우드 메시지를 수신하고 처리합니다.An IoT Hub back-end application typically runs in the cloud to receive and process device-to-cloud messages.

  1. 또 다른 로컬 터미널 창을 열고 샘플 Node.js 프로젝트의 루트 폴더로 이동합니다.Open another local terminal window, navigate to the root folder of the sample Node.js project. 그런 다음, iot-hub\Quickstarts\read-d2c-messages 폴더로 이동합니다.Then navigate to the iot-hub\Quickstarts\read-d2c-messages folder.

  2. 원하는 텍스트 편집기에서 ReadDeviceToCloudMessages.js 파일을 엽니다.Open the ReadDeviceToCloudMessages.js file in a text editor of your choice.

    connectionString 변수의 값을 이전에 기록해 둔 서비스 연결 문자열로 바꿉니다.Replace the value of the connectionString variable with the service connection string you made a note of earlier. 그런 다음, 변경 내용을 ReadDeviceToCloudMessages.js에 저장합니다.Then save your changes to ReadDeviceToCloudMessages.js.

  3. 로컬 터미널 창에서 다음 명령을 실행하여 필요한 라이브러리를 설치하고 백 엔드 애플리케이션을 실행합니다.In the local terminal window, run the following commands to install the required libraries and run the back-end application:

    npm install
    node ReadDeviceToCloudMessages.js
    

    다음 스크린샷에서는 시뮬레이션된 디바이스에서 허브에 보낸 원격 분석을 백 엔드 애플리케이션에서 받을 때의 출력을 보여 줍니다.The following screenshot shows the output as the back-end application receives telemetry sent by the simulated device to the hub:

    백 엔드 애플리케이션 실행

리소스 정리Clean up resources

다음 권장 문서를 계속 진행하려는 경우 지금까지 만든 리소스를 그대로 두고 다시 사용할 수 있습니다.If you will be continuing to the next recommended article, you can keep the resources you've already created and reuse them.

더 이상 진행하지 않을 경우 요금이 발생하지 않도록 이 문서에서 만든 Azure 리소스를 삭제해도 됩니다.Otherwise, you can delete the Azure resources created in this article to avoid charges.

중요

리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다.Deleting a resource group is irreversible. 리소스 그룹 및 그 안에 포함된 모든 리소스가 영구적으로 삭제됩니다.The resource group and all the resources contained in it are permanently deleted. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 해야 합니다.Make sure that you do not accidentally delete the wrong resource group or resources. 보관할 리소스가 포함된 기존 리소스 그룹 내에 IoT Hub를 만든 경우 리소스 그룹을 삭제하지 말고 IoT Hub 리소스만 삭제하면 됩니다.If you created the IoT Hub inside an existing resource group that contains resources you want to keep, only delete the IoT Hub resource itself instead of deleting the resource group.

리소스 그룹을 이름으로 삭제하려면:To delete a resource group by name:

  1. Azure Portal에 로그인하고 리소스 그룹을 선택합니다.Sign in to the Azure portal and select Resource groups.

  2. 이름을 기준으로 필터링 텍스트 상자에 IoT Hub가 들어 있는 리소스 그룹의 이름을 입력합니다.In the Filter by name textbox, type the name of the resource group containing your IoT Hub.

  3. 결과 목록의 리소스 그룹 오른쪽에서 ... 를 선택한 다음, 리소스 그룹 삭제를 선택합니다.To the right of your resource group in the result list, select ... then Delete resource group.

    삭제

  4. 리소스 그룹을 삭제할지 확인하는 메시지가 표시됩니다.You will be asked to confirm the deletion of the resource group. 리소스 그룹의 이름을 다시 입력하여 확인한 다음, 삭제를 선택합니다.Type the name of your resource group again to confirm, and then select Delete. 잠시 후, 리소스 그룹 및 해당 그룹에 포함된 모든 리소스가 삭제됩니다.After a few moments, the resource group and all of its contained resources are deleted.

다음 단계Next steps

이 빠른 시작에서 IoT 허브를 설치하고, 디바이스를 등록하고 Node.js 애플리케이션을 사용하여 허브에 시뮬레이션된 원격 분석을 보내고, 간단한 백 엔드 애플리케이션을 사용하여 허브에서 원격 분석을 읽습니다.In this quickstart, you set up an IoT hub, registered a device, sent simulated telemetry to the hub using a Node.js application, and read the telemetry from the hub using a simple back-end application.

백 엔드 애플리케이션에서 시뮬레이션된 디바이스를 제어하는 방법을 알아보려면 다음 빠른 시작을 계속합니다.To learn how to control your simulated device from a back-end application, continue to the next quickstart.