연습 - 풍력 터빈 자산에 Azure Digital Twins 데이터 연결 및 스트림

완료됨

Azure SignalR Service는 배포한 ARM 템플릿의 일부로 공개되었습니다. 이 서비스 및 관련 설정을 통해 Azure Digital Twins에 연결할 수 있습니다. 혼합 현실에서 실행되는 클라이언트 앱에서 추상화되는 디지털 트윈에서 데이터를 검색하는 데이터 파이프라인을 만들었습니다.

Azure SignalR Service 개요

Azure SignalR Service는 HTTP를 통해 애플리케이션에 실시간 웹 기능을 추가하는 프로세스를 간소화합니다. 이 실시간 기능을 사용하면 서비스가 연결된 클라이언트(예: 단일 페이지 웹 또는 모바일 애플리케이션)에 콘텐츠 업데이트를 푸시할 수 있습니다. 결과적으로 클라이언트는 서버를 폴링하거나 업데이트를 위해 새 HTTP 요청을 제출하지 않고도 업데이트됩니다. 서버에서 클라이언트로 데이터를 푸시해야 하는 모든 시나리오에서 Azure SignalR Service를 사용할 수 있습니다. 일반적으로 서버의 폴링이 필요한 기존 실시간 기능도 Azure SignalR Service를 사용할 수 있습니다.

Azure SignalR Service를 다른 Azure 서비스와 쉽게 통합할 수 있으므로 다른 가능한 시나리오가 열립니다. 예를 들어, Azure Functions는 REST API를 사용하여 Azure SignalR Service로 알림을 푸시할 수 있습니다. 그런 다음, Azure SignalR Service가 연결된 클라이언트에 실시간으로 데이터를 푸시합니다. IoT Hub와 함께 사용되는 Azure SignalR Service를 사용하면 실시간 센서 데이터를 연결된 클라이언트에 전송하여 실시간 모니터링 시나리오를 지원할 수 있습니다.

실시간 시나리오에서는 일반적으로 클라이언트와 서버 간에 높은 빈도의 데이터 흐름과 대량의 동시 연결이 발생합니다. 이 시나리오에서 기능을 대규모로 시작하고 실행하려면 간단하지 않은 인프라 설정이 필요합니다. 이 인프라를 대규모로 구성하는 것은 어렵습니다. 구성에는 일반적으로 다양한 네트워크 계층에서 애플리케이션별 논리가 필요합니다. Azure SignalR Service는 이러한 문제를 처리하므로 실시간 연결된 환경을 제공하는 애플리케이션 로직에 집중할 수 있습니다. 사용한 만큼만 요금을 결제하면서 실시간 기능을 동적으로 스케일링할 수 있습니다. 또한 이 서비스는 다양한 전송을 통한 영구 연결을 위해 Azure SignalR Service 기능을 상속합니다.

다양한 업계에서 실시간 콘텐츠 업데이트가 필요한 애플리케이션 유형에 Azure SignalR Service를 사용했습니다. Azure SignalR Service를 사용하는 데 좋은 몇 가지 예는 다음과 같습니다.

  • 빈도가 높은 데이터 업데이트: 게임, 투표, 투표 및 경매
  • 대시보드 및 모니터링: 회사 대시보드, 금융 시장 데이터, 인스턴트 판매 업데이트, 다중 플레이어 게임 리더 보드, IoT 모니터링
  • 지도의 실시간 위치 - 물류 추적, 배달 상태 추적, 운송 상태 업데이트 및 GPS 앱.
  • 실시간 타겟팅 광고: 맞춤형 실시간 푸시 광고 및 제품, 대화형 광고.
  • 공동 작업 앱: 공동 작성, 화이트보드 앱 및 팀 모임 소프트웨어
  • 푸시 알림: 소셜 네트워크, 전자 메일, 게임 및 여행 경고
  • 실시간 브로드캐스트 - 라이브 오디오/비디오 브로드캐스트, 실시간 캡션, 번역, 이벤트/뉴스 브로드캐스트.
  • IoT 및 연결된 디바이스: 실시간 IoT 메트릭, 원격 제어, 실시간 상태, 위치 추적.
  • 자동화: 업스트림 이벤트의 실시간 트리거.

풍력 터빈 사용 사례의 경우 Azure Digital Twins 풍력 터빈 데이터와 혼합 현실 디바이스 간의 통신 계층은 혼합 현실 앱에 포함된 Azure SignalR Service 및 SignalR 클라이언트를 사용합니다.

Azure Digital Twins를 사용하여 클라이언트 앱에 데이터를 노출하려면 Azure SignalR Service에 연결해야 합니다. 빌드 중인 혼합 현실 앱은 SignalR 클라이언트를 구현하여 SignalR 서비스에 연결합니다. SignalR 클라이언트와 Azure SignalR Service 간에 통신을 설정하려면 클라이언트가 SignalR Service에서 negotiate 함수를 호출해야 합니다.

이전 연습에서 캡처한 Azure Digital Twins 연결 매개 변수 및 인증 세부 정보를 사용하여 DeviceSimulator를 구성합니다.

앱 자격 증명 얻기

  1. Visual Studio에서 DeviceSimulator.sln을 열고 ARM 템플릿에서 만들어진 Azure Digital Twins 리소스 종류의 호스트 이름으로 DeviceSimulator를 구성합니다.

  2. 핵심 Azure Digital Twins 구성 매개 변수가 포함된 마지막 연습에서 만든 Azure_config_settings.txt 텍스트 파일을 텍스트 편집기를 사용하여 엽니다. 또는 PowerShell 세션이 활성 상태로 유지되면 get-content 명령의 출력을 찾습니다.

  3. Azure_config_settings.txt 파일 또는 PowerShell의 get-content 명령 출력에서 adtHostName 키에 대한 키/값 쌍을 찾아 값을 복사합니다. 다음과 유사하게 표시됩니다.

    https://myprojadtxxxxxxxxxx.api.eus.digitaltwins.azure.net
    

    get-content 명령 프롬프트를 실행하는 명령줄 인터페이스의 스크린샷

  4. Visual Studio DeviceSimulator 솔루션의 솔루션 탐색기에서 파일을 두 번 클릭하여 편집기에서 AzureIoTHub.cs 파일을 엽니다. 2단계에서 복사한 adtHostName 키/쌍의 값을 adtInstanceUrl 문자열 변수에 붙여넣습니다.

    Azure IoT Hub cs 파일이 열려 있고 호스트 이름 및 인스턴스 URL 값이 추가된 디바이스 시뮬레이터 솔루션의 스크린샷입니다.

기본 연결 문자열을 사용하여 디바이스 시뮬레이터 구성

ARM 템플릿에서 만든 IoT Hub에 대한 기본 연결 문자열을 사용하여 DeviceSimulator을(를) 구성합니다.

Important

이 모듈에는 공유 액세스 서명(대칭 키 인증이라고도 함)을 사용하여 디바이스를 연결하는 단계가 포함되어 있습니다. 이 인증 방법은 테스트와 평가에 편리하지만, X.509 인증서를 사용하여 디바이스를 인증하는 것이 더 안전한 방식입니다. 자세한 내용은 보안 모범 사례 > 연결 보안을 참조하세요.

  1. Azure_config_settings.txt 파일 또는 PowerShell의 get-content 명령 출력에서 connectionString 키에 대한 키/값 쌍을 찾아 값을 복사합니다. 다음과 유사하게 표시됩니다.

    HostName=myprojHubxxxxxxxxxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey= xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
    
  2. Visual Studio DeviceSimulator 솔루션의 편집기에서 AzureIoTHub.cs 파일을 열고 이전 단계에서 복사한 connectionString 값을 iotHubConnectionString 문자열 변수에 붙여넣습니다.

    Azure IoT Hub cs 파일이 열려 있고 IoT Hub 연결 문자열 값이 추가된 디바이스 시뮬레이터 솔루션의 스크린샷입니다.

인증 키를 사용하여 디바이스 시뮬레이터 구성

ARM 템플릿에서 만든 인증 키를 사용하여 DeviceSimulator를 구성합니다.

  1. 이전 연습에서 만든 AppCredentials.txt 텍스트 파일을 엽니다.

  2. Visual Studio DeviceSimulator 솔루션에서 PropUpdater.cs 파일을 편집기에서 엽니다. 텍스트 파일의 GUID(Globally Unique Identifier)를 복사하여 .cs 파일에 붙여넣습니다. .cs 변수에서 텍스트 파일의 JSON 데이터 출력으로 다음 매핑을 사용합니다.

    AppCredentials.txt PropUpdater.cs
    appId clientId
    password clientSecret
    tenant tenantId

    PropUpdater.cs 파일이 열려 있고 클라이언트, 비밀 및 테넌트 ID 값이 추가된 디바이스 시뮬레이터 솔루션의 스크린샷입니다.

  3. Visual Studio에서 작업 내용을 저장하려면 파일>모두 저장을 선택합니다.

DeviceSimulator에서 시뮬레이션된 원격 분석 데이터를 수신할 수 있도록 Unity의 Azure Digital Twins 프리팹을 디지털 트윈에 연결합니다.

Azure Digital Twins 연결 프리팹 추가

Azure Digital Twins 연결 프리팹 자산을 Unity 장면에 추가하고 구성합니다.

  1. Unity 프로젝트로 돌아갑니다.

  2. 계층 구조에서 ADTConnection 게임 개체를 선택합니다. 계층 구조에서 누락된 경우 Assets>ADTPrefabs>ADTConnection 프리팹 자산을 장면 계층 구조로 끕니다.

    주 장면이 강조 표시된 Unity 계층 구조의 스크린샷

  3. 마지막 연습에서 만든 텍스트 파일인 Azure_config_settings.txt를 텍스트 편집기에서 엽니다. 파일에는 주요 Azure Digital Twins 구성 매개 변수가 포함되어 있습니다. 또는 PowerShell 세션이 활성 상태로 유지되면 get-content 명령의 출력을 찾습니다.

  4. Azure_config_settings.txt 파일 또는 PowerShell의 get-content 명령 출력에서 signalRNegotiatePath 키에 대한 키/값 쌍을 찾아 값을 복사합니다. 다음과 유사하게 표시됩니다.

    https://myprojfuncappxxxxxxxxxx.azurewebsites.net/api/negotiate
    
  5. 1단계에서 가져오는 함수 Url을 사용하여 ADT 데이터 처리기(스크립트) 아래의 Url 매개 변수에 이 값을 추가합니다. …/api를 포함하여 URL의 모든 것을 포함합니다. 마지막 백슬래시 혹은 단어 negotiate을 포함하지 않습니다.

    Azure Digital Twins 연결 프리팹이 선택되고 ADT 데이터 처리기 스크립트가 추가된 Unity 편집기의 스크린샷입니다.

  6. 장면을 저장합니다.

Azure 서비스가 설정되고 적절한 포인터가 Unity 장면 내에 있으므로 이제 작업 데이터를 시각화하는 UI(사용자 인터페이스)를 만듭니다.