Azure Logic Apps를 사용하여 IoT Hub에서 들어오는 디바이스 원격 분석을 모니터링하고 경고가 트리거될 때 알림을 보냅니다.
Azure Logic Apps 는 온-프레미스 및 클라우드 서비스, 여러 엔터프라이즈 및 다양한 프로토콜에서 워크플로를 오케스트레이션하는 데 도움이 될 수 있습니다. 논리 앱은 트리거로 시작한 다음, 조건 및 반복기와 같은 기본 제공 컨트롤을 사용하여 시퀀스할 수 있는 하나 이상의 작업이 뒤따릅니다. 이러한 유연성을 통해 Logic Apps는 IoT 모니터링 시나리오에 이상적인 IoT 솔루션입니다. 예를 들어 IoT Hub 엔드포인트의 디바이스에서 데이터가 도착하면 논리 앱 워크플로를 시작하여 Azure Storage Blob에 데이터를 웨어하우스하고, 이메일 경고를 보내 데이터 이상에 대해 경고하고, 디바이스에서 오류를 보고하는 경우 기술자 방문을 예약할 수 있습니다.
이 자습서에서는 다음 작업을 수행합니다.
Service Bus 큐를 만듭니다. 메시지에 비정상적인 온도 판독값이 포함된 경우 메시지를 Service Bus 큐로 보내는 IoT Hub에 경로를 만듭니다. 큐에 도착하는 메시징을 감시하고 이메일 경고를 보내는 논리 앱을 만듭니다.
디바이스에서 실행되는 클라이언트 코드는 IoT Hub에 보내는 모든 원격 분석 메시지에서 애플리케이션 속성을 temperatureAlert설정합니다. 클라이언트 코드가 지정된 임계값을 초과하는 온도를 감지하면 이 속성을 true로 설정하고, 그렇지 않으면 속성을 false로 설정합니다.
IoT Hub에 도착하는 메시지는 본문에 포함된 원격 분석 데이터와 temperatureAlert 애플리케이션 속성에 포함된 속성(시스템 속성은 표시되지 않음)과 유사합니다.
{
"body": {
"messageId": 18,
"deviceId": "Raspberry Pi Web Client",
"temperature": 27.796111770668457,
"humidity": 66.77637926438427
},
"applicationProperties": {
"temperatureAlert": "false"
}
}
Azure 구독이 없는 경우, 시작하기 전에 무료 계정을 만드십시오.
필수 조건
이 자습서를 시작하기 전에 다음 필수 구성 요소를 준비합니다.
활성화된 Azure 구독.
구독의 IoT 허브.
Azure IoT Hub에 온도 데이터를 보내는 클라이언트 앱입니다. 이 자습서에서는 라는
temperatureAlert메시지 속성을 기반으로 디바이스-클라우드 메시지를 필터링합니다. 이 속성을 사용하여 메시지를 생성하는 일부 샘플은 다음과 같습니다.- .NET SDK: SimulatedDevice
- Java SDK: send-event
- Node.js SDK: simple_sample_device
- C SDK: iothub_II_client_shared_sample
- 코드 없는: Raspberry Pi 온라인 시뮬레이터
Service Bus 네임스페이스 및 큐 만들기
Service Bus 네임스페이스 및 큐를 만듭니다. 이 문서의 뒷부분에서는 온도 경고가 포함된 메시지를 Service Bus 큐로 보내는 라우팅 규칙을 IoT Hub에 만듭니다. 논리 앱은 들어오는 메시지에 대한 큐를 모니터링하고 각 경고에 대한 알림을 보냅니다.
Service Bus 네임스페이스 만들기
Azure Portal에서 검색 창을 사용하여 Service Bus를 검색하고 선택합니다.
만들기를 선택하여 Service Bus 네임스페이스를 만듭니다.
네임스페이스 만들기 창에서 다음 정보를 제공합니다.
매개 변수 가치 Subscription IoT Hub를 포함하는 동일한 구독을 선택합니다. 리소스 그룹 IoT Hub를 포함하는 동일한 리소스 그룹을 선택합니다. 네임스페이스 이름 Service Bus 네임스페이스의 이름을 제공합니다. 네임스페이스는 Azure에서 고유해야 합니다. 위치 IoT Hub에서 사용하는 것과 동일한 위치를 선택합니다. 가격 책정 계층 드롭다운 목록에서 기본 을 선택합니다. 기본 계층은 이 자습서에 충분합니다. Review + create를 선택합니다.
선택하고생성합니다.
배포가 완료될 때까지 기다린 다음 리소스로 이동을 선택합니다.
네임스페이스에 Service Bus 큐 추가
Service Bus 네임스페이스의 개요 페이지에서 큐를 선택합니다.
이름 필드에서 큐의 이름을 입력합니다. 다른 필드의 기본값을 적용하고 만들기를 선택합니다.
Service Bus 네임스페이스의 리소스 메뉴의 설정 섹션에서 공유 액세스 정책을 선택합니다.
RootManageSharedAccessKey 정책을 선택하여 세부 정보를 엽니다.
기본 연결 문자열의 값을 복사하고 논리 앱을 구성할 때 이 자습서의 뒷부분에서 사용하도록 저장합니다.
IoT Hub에 사용자 지정 엔드포인트 및 라우팅 규칙 추가
Service Bus 큐에 대한 사용자 지정 엔드포인트를 IoT Hub에 추가합니다. 그런 다음, 온도 경고가 포함된 메시지를 논리 앱에서 선택하는 해당 엔드포인트로 보내는 메시지 라우팅 규칙을 만듭니다. 라우팅 규칙은 라우팅 쿼리 temperatureAlert = "true"를 사용하여 디바이스에서 실행되는 클라이언트 코드에 의해 설정된 애플리케이션 속성의 temperatureAlert 값에 따라 메시지를 전달합니다. 자세한 내용은 메시지 속성에 따라 메시지 라우팅 쿼리를 참조하세요.
사용자 지정 엔드포인트 및 경로 추가
Azure Portal에서 IoT Hub로 이동합니다.
허브 설정 아래의 리소스 메뉴에서 메시지 라우팅을 선택한 다음, 추가를 선택합니다.
엔드포인트 탭에서 다음 정보를 제공하여 Service Bus 큐에 대한 엔드포인트를 만듭니다.
매개 변수 가치 엔드포인트 유형 Service Bus 큐를 선택합니다. 엔드포인트 이름 Service Bus 큐에 매핑되는 새 엔드포인트의 이름을 제공합니다. Service Bus 네임스페이스 드롭다운 메뉴를 사용하여 이전 섹션에서 만든 Service Bus 네임스페이스를 선택합니다. Azure Service Bus 큐 드롭다운 메뉴를 사용하여 네임스페이스에서 만든 Service Bus 큐를 선택합니다.
만들기 + 다음을 선택합니다.
경로 탭에서 다음 정보를 입력하여 Service Bus 큐 엔드포인트를 가리키는 경로를 만듭니다.
매개 변수 가치 이름 경로의 고유한 이름을 제공합니다. 데이터 원본 기본 디바이스 원격 분석 메시지 데이터 원본을 유지합니다. 라우팅 쿼리 temperatureAlert = "true"을 쿼리 문자열로 입력합니다.
보강 만들기 + 건너뛰기를 선택합니다.
알림에 대한 Logic Apps 구성
이전 섹션에서는 온도 경고가 포함된 메시지를 Service Bus 큐로 라우팅하도록 IoT Hub를 설정합니다. 이제 Service Bus 큐를 모니터링하고 큐에 메시지가 추가될 때마다 전자 메일 알림을 보내도록 논리 앱을 설정합니다.
논리 앱 만들기
Azure Portal에서 Logic Apps를 검색하고 선택합니다.
추가를 선택하여 새 논리 앱을 만듭니다.
논리 앱 만들기의 기본 사항 탭에 다음 정보를 입력합니다.
매개 변수 가치 리소스 그룹 IoT Hub를 포함하는 동일한 리소스 그룹을 선택합니다. 이름 논리 앱의 이름을 제공합니다. 지역 가까운 위치를 선택합니다. 계획 유형 이 자습서에 충분한 소비를 선택합니다.
Review + create를 선택합니다.
선택하고생성합니다.
배포가 완료되면 리소스로 이동하여 논리 앱을 엽니다.
논리 앱 트리거 구성
Azure Portal의 논리 앱 리소스 페이지에서 리소스 메뉴의 개발 도구 섹션에서 논리 앱 디자이너를 엽니다.
디자이너에서 템플릿 까지 아래로 스크롤하고 빈 논리 앱을 선택합니다.
모두 탭을 선택하여 모든 커넥터 및 트리거를 표시한 다음 Service Bus를 선택합니다.
트리거에서 하나 이상의 메시지가 큐에 도착하는 경우를 선택합니다(자동 완성).
Service Bus 연결을 생성합니다.
연결 이름을 입력한 다음 Service Bus 네임스페이스에서 복사한 연결 문자열을 붙여넣습니다.
선택하고생성합니다.
다음 화면에서 드롭다운 메뉴를 사용하여 Service Bus 네임스페이스에서 만든 큐를 선택합니다. 그런 다음
175입력 합니다.
논리 앱 디자이너 메뉴에서 저장 을 선택하여 변경 내용을 저장합니다.
논리 앱 작업 구성
논리 앱 디자이너에서 새 단계를 선택합니다.
SMTP 서비스 연결을 만듭니다.
SMTP를 검색하고 선택합니다.
이 단계에 대한 작업으로 이메일 보내기(V3) 를 선택합니다.
연결 이름을 입력한 다음, 알림 메시지를 보내는 데 사용할 전자 메일 계정에 대한 SMTP 정보로 나머지 필드를 채웁니다.
메일 공급자에 따라 다음 링크를 사용하여 SMTP 정보를 찾습니다.
비고
연결을 설정하려면 TLS/SSL을 사용하지 않도록 설정해야 할 수 있습니다. 이 경우 연결이 설정된 후 TLS를 다시 사용하도록 설정하려면 이 섹션의 끝에 있는 선택적 단계를 참조하세요.
선택하고생성합니다.
전자 메일 보내기 작업을 구성합니다.
이메일 보내기 단계의 새 매개 변수 추가 드롭다운에서 다음 매개 변수를 선택합니다.
- From
- 에서
- 제목
- 몸
화면의 아무 곳이나 클릭하거나 탭하여 선택 상자를 닫습니다.
이전 단계에서 선택한 전자 메일 매개 변수에 대해 다음 정보를 입력합니다.
매개 변수 가치 From SMTP 연결에 대해 구성한 이메일 주소입니다. 에서 알림 전자 메일을 보내려는 전자 메일 주소 또는 주소입니다. 제목 High temperature detected;몸 High temperature detected;동적 콘텐츠 추가 대화 상자가 열리면 숨기기를 선택하여 닫습니다. 이 자습서에서는 동적 콘텐츠를 사용하지 않습니다.
저장을 선택하여 SMTP 연결을 저장합니다.
(선택 사항) 전자 메일 공급자와의 연결을 설정하기 위해 TLS를 사용하지 않도록 설정해야 하고 다시 사용하도록 설정하려면 다음 단계를 수행합니다.
논리 앱 창의 개발 도구에서 API 연결을 선택합니다.
API 연결 목록에서 SMTP 연결을 선택합니다.
smtp API 연결 창의일반 아래에서 API 연결 편집을 선택합니다.
API 연결 편집 창에서 SSL 사용?을 선택하고 전자 메일 계정의 암호를 다시 입력한 다음 저장을 선택합니다.
이제 논리 앱이 Service Bus 큐에서 온도 경고를 처리하고 전자 메일 계정에 알림을 보낼 준비가 되었습니다.
논리 앱 테스트
모니터링 및 알림 파이프라인을 테스트하기 위해 IoT 디바이스에서 온도 메시지 보내기를 시작합니다.
디바이스에서 클라이언트 애플리케이션을 시작합니다. 클라이언트 코드는 원격 분석 메시지를 임의로 출력하며, 온도가 30°C를 초과할 때 속성을
temperatureAlert로 설정합니다.논리 앱에서 보낸 전자 메일 알림 수신을 시작해야 합니다.
비고
전자 메일 서비스 공급자가 전자 메일을 보내는 사용자인지 확인하기 위해 보낸 사람 ID를 확인해야 할 수 있습니다.
자원을 정리하세요
이 자습서에서 만든 리소스가 더 이상 필요하지 않은 경우 포털에서 해당 리소스 및 리소스 그룹을 삭제합니다. 이렇게 하려면 IoT Hub가 포함된 리소스 그룹을 선택하고 삭제를 선택합니다.
또는 CLI를 사용합니다.
# Delete your resource group and its contents
az group delete --name <RESOURCE_GROUP_NAME>
다음 단계
이 자습서에서는 온도 모니터링 및 알림을 위해 IoT Hub와 사서함을 연결하는 논리 앱을 만들었습니다.
Azure IoT Hub를 계속 시작하고 모든 확장된 IoT 시나리오를 탐색하려면 다음을 참조하세요.