데이터 흐름 및 필수 리소스 이해
이 단원에서는 시나리오를 설정하고 샘플 데이터 흐름을 빌드할 준비를 합니다.
시나리오 및 데이터 흐름 이해
이 모듈의 샘플 시나리오는 스마트 온도 조절 장치가 장착된 많은 객실을 포함하는 스마트 빌딩입니다. 이 모듈에서는 건물의 한 객실(Room 21)과 해당 객실의 온도 조절 장치(Thermostat 67)에 중점을 둡니다. 이러한 간소화는 디바이스 데이터를 Azure Digital Twins에 연결하는 프로세스를 더 쉽게 알아볼 수 있도록 하기 위한 것입니다. 대규모 건물 시나리오에서는 보다 실제 또는 시뮬레이션된 온도 조절기의 데이터를 사용하여 이 프로세스를 확장하여 더 많은 객실 및 온도 조절기 트윈을 채울 수 있습니다.
다음은 이 시나리오에 사용되는 여러 Azure 서비스를 통한 데이터 흐름을 보여 주는 다이어그램.
흐름 A는 디바이스 데이터를 Azure Digital Twins로 수집합니다. 데이터 흐름은 다음 경로를 따릅니다.
- 시뮬레이션된 디바이스인 Thermostat 67은 온도 데이터를 생성합니다.
- 온도 데이터는 클라우드로 전송되어 IoT Hub에 도착합니다.
- IoT Hub는 온도 데이터를 사용자 지정 Azure 함수(IoTHubToADT)로 라우팅합니다.
- Azure 함수 코드는 온도 데이터를 사용하여 Azure Digital Twins의 해당 Thermostat67 트윈에서 온도 속성을 업데이트합니다.
다음으로 Flow B는 디지털 트윈 그래프를 통해 데이터를 전파합니다. 데이터 흐름은 다음 경로를 따릅니다.
- Thermostat 67 트윈은 온도 속성이 변경되었다는 알림을 생성합니다. Azure Digital Twins는 이 알림 데이터를 Event Grid로 라우팅합니다.
- Event Grid는 알림 데이터를 다른 사용자 지정 Azure 함수(ADTToADT)로 보냅니다.
- Azure 함수 코드는 알림 데이터를 사용하여 연결된 트윈을 적절하게 업데이트합니다. 이 경우에는 Room21 트윈의 온도 속성을 업데이트하여 객실에 포함된 Thermostat67 트윈의 온도 값과 일치하도록 값을 설정합니다.
이 모듈의 3, 4단원에서 이러한 데이터 흐름을 설정합니다. 하지만 먼저 다음 단계에 따라 Azure Digital Twins 인스턴스와 디바이스 시뮬레이터를 준비하여 시나리오를 준비합니다.
실습 세션 설정
Azure Digital Twins에 대한 실습 환경을 위해 이 단원에서는 Azure 구독으로 실행할 수 있는 Azure CLI 명령을 제공합니다. 아직 Azure 구독이 없다면 지금 무료로 구독합니다.
다른 브라우저 창에서 Azure Cloud Shell로 이동합니다. 이 모듈의 명령은 기본적으로 이미 선택되어 있을 수 있는 Cloud Shell의 bash 환경용으로 작성되었습니다.
Cloud Shell에서 다음 명령을 실행하여 세션을 설정하고 이 단원에 사용할 리소스 그룹을 만듭니다. 또한 모듈 전체에서 향후 명령에 재사용할 수 있도록 구독 ID, 리소스 그룹, Cloud Shell 세션의 위치를 저장하는 환경 변수도 만들어집니다. 기본적으로 리소스 그룹 이름은 azure-digital-twins-training으로 지정되며 westus2 지역에 만들어집니다. Azure 구독 ID 값을 입력할 수 있는 자리 표시자가 하나 있습니다.
AZURE_SUBSCRIPTION="<your-Azure-subscription-ID>"
RESOURCE_GROUP="azure-digital-twins-training"
REGION="westus2"
az account set --subscription $AZURE_SUBSCRIPTION
az group create --name $RESOURCE_GROUP --location $REGION
echo "Your resource group is $RESOURCE_GROUP and your location is $REGION."
다음으로 Azure Digital Twins 인스턴스를 만듭니다. Cloud Shell에서 다음 명령을 실행하여 인스턴스의 임의 이름을 만든 후 해당 이름으로 새 인스턴스를 만듭니다. 이 명령의 일부로 azure-iot
확장을 설치하라는 메시지가 표시되면 설치합니다.
INSTANCE_NAME="Digital-Twins-$RANDOM"
az dt create --dt-name $INSTANCE_NAME --resource-group $RESOURCE_GROUP --location $REGION
echo "Your Azure Digital Twins instance name is $INSTANCE_NAME."
마지막으로 다음 명령을 실행하여 데이터를 편집하는 데 필요한 인스턴스에 대한 Azure Digital Twins 데이터 소유자 역할을 자신에게 부여합니다.
Important
이 명령은 Azure 리소스에 대한 액세스를 관리할 수 있는 구독 수준 권한이 있는 사람만 실행할 수 있습니다. 예를 들어, 고유의 구독을 만들었고 소유자인 경우 해당 구독을 실행할 수 있습니다. 구독에 기여자 역할만 있는 경우 이 명령은 오류를 반환합니다.
이 명령을 실행할 수 없고 이 단원의 실습을 따라 하고 싶다면 높은 권한을 가진 사람(예: 소유자, 계정 관리자 또는 사용자 액세스 관리자 + 기여자)이 사용자를 대신하여 이 명령을 실행하도록 합니다. 현재 로그인된 사용자 계정에 역할을 할당하는 대신 assignee
매개 변수에 대해 Azure 계정과 연결된 이메일을 입력할 수 있습니다.
AZURE_USER=$(az ad signed-in-user show --query id -o tsv)
az dt role-assignment create --dt-name $INSTANCE_NAME --assignee $AZURE_USER --role "Azure Digital Twins Data Owner"
이제 이 모듈에서 사용할 Azure Digital Twins 인스턴스와 해당 데이터를 관리할 수 있는 권한이 있습니다.
시나리오 그래프 만들기
그런 다음, 다음 Azure CLI 명령을 실행하여 온도 조절기와 객실 모델, Thermostat67 및 Room21 트윈, 그리고 객실에서 온도 조절기에 대한 포함 관계를 만듭니다.
# Create models
az dt model create -n $INSTANCE_NAME --models '[{"@id":"dtmi:example:Thermostat;1","@type":"Interface","displayName":"Thermostat model","@context":"dtmi:dtdl:context;3","contents":[{"@type":"Property","name":"DisplayName","schema":"string"},{"@type":"Property","name":"FirmwareVersion","schema":"string"},{"@type":"Property","name":"Temperature","schema":"double"}]}, {"@id":"dtmi:example:Room;1","@type":"Interface","displayName":"Room model","@context":"dtmi:dtdl:context;3","contents":[{"@type":"Property","name":"DisplayName","schema":"string"},{"@type":"Property","name":"Temperature","schema":"double"},{"@type":"Relationship","name":"contains","displayName":"contains","target":"dtmi:example:Thermostat;1"}]}]'
# Create twins
az dt twin create -n $INSTANCE_NAME --dtmi "dtmi:example:Thermostat;1" --twin-id Thermostat67 --properties '{"DisplayName": "Thermostat 67","FirmwareVersion": "1.2.4","Temperature": 0.0}'
az dt twin create -n $INSTANCE_NAME --dtmi "dtmi:example:Room;1" --twin-id Room21 --properties '{"DisplayName": "Room 21","Temperature": 0.0}'
# Create relationship
az dt twin relationship create -n $INSTANCE_NAME --relationship-id room21_contains_thermostat67 --relationship contains --twin-id Room21 --target Thermostat67
객실과 디바이스가 많은 실제 시나리오에서는 환경의 각 엔터티가 그래프에 표시되도록 계속해서 더 많은 디지털 트윈을 만듭니다.
디바이스 시뮬레이터 다운로드
Azure Digital Twins 엔드투엔드 샘플 프로젝트로 이동하고 제목 아래에 있는 코드 찾아보기 단추를 선택하여 디바이스 시뮬레이터 코드를 가져옵니다.
이 단추를 누르면 코드 단추와 ZIP 다운로드를 차례로 선택하여 .zip으로 다운로드할 수 있는 샘플에 대한 GitHub 리포지토리로 이동합니다.
그러면 .zip 폴더가 digital-twins-samples-main.zip으로 컴퓨터에 다운로드됩니다. 폴더의 압축을 풀고 파일을 추출합니다.
디바이스 시뮬레이터는 digital-twins-samples-main/DeviceSimulator 폴더에 있습니다. 이 모듈에는 이 폴더의 콘텐츠만 필요하며, 원하는 경우 컴퓨터에서 다른 파일과 폴더를 제거할 수 있습니다.
이 모듈의 뒷부분에서는 디바이스 시뮬레이터 애플리케이션을 실행하여 스마트 빌딩 시나리오의 온도 조절기에서 방출되는 데이터를 시뮬레이션합니다.