Mendix, AWS 및 사물 인터넷 | Mendix

메인 컨텐츠로 가기

Mendix, AWS 및 사물 인터넷

최근 AWS와의 전략적 관계 확대에 대한 발표를 보셨을 것입니다. Mendix AWS는 다양한 데모와 템플릿을 만들기 위해 협력해 왔습니다. 우리는 금융 서비스와 보험을 위한 엑셀러레이터처럼 이러한 훌륭한 플랫폼이 어떻게 함께 작동할 수 있는지 보여주고 싶었습니다.

우리가 여러분에게 보여주고 싶어하는 것 중 하나는 다음의 통합입니다. Mendix 그리고 AWS이 블로그에서는 우리가 만든 데모와 그것을 만든 방법을 설명합니다.

이 게시물은 다음과 관련하여 작성되었습니다. 시몬 블랙 (전도 및 기술 지원 부문 수석 관리자), 알리스테어 크로포드 (솔루션 전도사) 및 에이드리언 프레스턴 (솔루션 전도사).

시나리오

Cold Chain Logistics 블로그에서 논의했듯이, 우리는 콜드 체인 물류의 시나리오와 온도 조절 상품의 운송을 추적하는 방법을 배웠습니다. 이를 달성하기 위해 우리는 다음을 사용했습니다. Mendix AWS 서비스에서 지원하는 웹 애플리케이션 프런트엔드를 만들기 위해. 이러한 도구를 사용하여 다음을 빌드하고자 했습니다.

  • 사무실 사용자를 위한 웹 애플리케이션
  • 현장 근무 직원을 위한 모바일 버전
  • 데이터를 처리하고 제공하기 위한 지원 AWS 클라우드 아키텍처

데모 파트 1 구축: IoT 및 AWS

실제 데이터 시연을 간소화하고 센서가 달린 실제 트럭이 필요 없게 하기 위해 AWS 서비스에 데이터를 공급하는 데 사용할 데이터 시뮬레이터를 만들기로 했습니다.

AWS에서 IoT 데이터를 처리하기 위해 AWS Timestream을 사용하기로 했고, 거기서 시작했습니다. 온도와 습도에 대한 센서 데이터를 나타내는 Timestream에서 데이터 피드를 만들었습니다. 여정 데이터와 최종 IoT 기기, 잠금 장치, 백업 압축기의 데이터도 필요했습니다.

잠금 장치는 작동 중인지 여부를 저장하는 간단한 부울 값입니다. 백업 압축기도 켜짐 또는 꺼짐 부울 값이지만 Timestream 데이터에 대한 시뮬레이터로 다시 공급되므로 압축기가 켜졌을 때 온도 데이터는 하락 추세를 보입니다.

우리가 구현하기로 결정한 추가 AWS 기능 중 하나는 이미지 인식이었습니다. 주어진 시나리오에서 트럭은 신선한 농산물, 이 경우 과일을 운송하고 있으며 배달 시 검사를 받아야 합니다. 배달이 완료되고 반대편에서 상품을 검사하는 사람이 사진을 찍으면 AWS Rekognition에서 실행하여 제품이 양호한지 나쁜지 감지할 수 있습니다.

AWS에서 각 데이터 세트와 기능이 어떻게 생성되었는지 간략하게 살펴보겠습니다.

AWS IoT 설정

AWS IoT Core를 활용하여 장치에서 데이터를 수신했습니다.. 우리에게는 먼저 필요한 것이 있습니다ed IoT에서도 알려진 장치를 설정하려면 '것들'. 우리는 설정했습니다 "의회" 트럭의 차량 데이터와 트럭의 각 컨테이너에 대한 또 다른 사물입니다. 이를 통해 차량을 추적하고 컨테이너의 상태를 모니터링하는 데 도움이 됩니다. 

올바른 보안 정책으로 이를 설정하면 데이터를 보내고 받는 데 사용되는 MQTT 게시 및 구독 메커니즘에 자동으로 액세스할 수 있습니다.

마지막으로, AWS IoT Core에서 차량 및 컨테이너에서 수신되는 데이터를 TimestreamDB에 저장하여 나중에 사용할 수 있는 규칙을 구성할 수 있습니다.

Amazon Timestream 데이터베이스 설정

Amazon Timestream Database는 설정하기 쉽습니다. 'logistics'라는 데이터베이스를 만들었고, 그 안에 컨테이너 센서 데이터를 보관하는 'container'라는 테이블과 트럭 데이터를 수신하는 'conveyance'라는 테이블을 만들었습니다.

앱이 시작된 직후 Amazon Timestream Database에서 일부 과거 데이터를 사용할 수 있도록 앱은 데이터베이스에 무작위로 생성된 레코드 세트를 추가하여 "Things"를 초기화합니다. 이는 Timestream 레코드 쓰기 기능에 액세스하기 위해 AWS Java SDK와 인터페이스하는 Java 작업을 사용하여 수행됩니다.

이후 AWS IoT Core의 규칙에 의해 데이터베이스 테이블에 새 데이터가 추가됩니다. 규칙은 AWS IoT Core를 통해 센서/시뮬레이터가 게시한 선택된 메시지를 가져와 지정된 데이터베이스 테이블에 씁니다.

AWS Timestream Database 피드를 구축하고 실행한 후에는 여정 데이터를 생성해야 했습니다.

여행 데이터 생성

여행 및 장치 추적이 있는 실제 시나리오에서, 우리의 트럭 장치는 일반적으로 위치, 방향 및 속도 데이터를 전송하는 GPS 모듈을 가지고 있습니다. 이것은 우리에게 위도, 경도, MPH(또는 KPH) 및 가속도 데이터를 제공합니다.

여행 시뮬레이션을 위해 AWS 덕분에 대중에게 공개된 기존 시뮬레이션 경로를 활용했습니다. 출발지, 목적지, 그리고 그 사이에 현실적인 패턴으로 있는 단계 또는 지점의 배열이 있는 훌륭한 정적 경로 세트가 있습니다. 이는 모두 JSON 형식이며 쉽게 이해할 수 있습니다.

다른 대부분의 센서 데이터의 경우, 우리는 간단한 수학을 사용하여 임계값 내에 있는 임의의 값(예: 온도 및 습도)을 생성했습니다.

트럭 추적을 시뮬레이션할 수 있도록 여행 데이터를 생성한 후에는 이미지 인식 기능을 구현하고 데이터 세트를 구축해야 했습니다.

AWS 인식

제품(우리의 경우 과일)의 품질을 검사하는 과정을 더 단순하게 만들기 위해 우리는 AI를 구현하기로 했습니다. AWS는 여러 유형의 시나리오에 맞게 설계된 다양한 머신 러닝 및 AI 솔루션을 제공합니다. 이미지 및 비디오 인식의 경우 AWS는 AWS Rekognition을 제공합니다. Rekognition은 다양한 사전 학습된 머신 러닝 모델을 제공하며, 사용자가 직접 학습할 수 있도록 합니다. 우리의 사용 사례에서는 사용자가 과일 사진을 찍어 품질을 검사할 수 있도록 허용하고자 했습니다.

먼저, 우리는 Rekognition 모델을 훈련하여 좋은 과일과 나쁜 과일이 어떤지 이해해야 했습니다. 효과적인 모델을 구축하려면 좋은 데이터 세트가 있어야 합니다. 모델을 훈련하기 위해 제공할 수 있는 이미지가 많을수록 더 나은 결과를 얻을 수 있습니다. 다행히도 우리에게는 개발을 가속화하는 데 도움이 되는 무료 오픈 데이터 세트가 많이 있었습니다. 우리는 썩은 과일과 신선한 과일을 나타내는 수천 개의 이미지가 있는 이 데이터 세트를 찾았습니다.

https://www.kaggle.com/datasets/sriramr/fruits-fresh-and-rotten-for-classification

우리는 이 데이터 세트를 가져와 AWS S3에 업로드하여 AWS Rekognition이 이 이미지를 사용하여 스스로를 훈련하고 테스트할 수 있도록 했습니다. 사용자 지정 레이블을 감지하는 모델을 구축하는 것은 빠르고 쉽습니다. 6단계로 레이블을 감지하는 모델을 구축할 수 있습니다.

데이터 세트를 학습할 때AWS 인식력 S3에서 사용된 폴더 이름을 기반으로 이미지에 자동으로 레이블을 지정할 수 있고 수동으로 레이블을 추가할 수도 있습니다. 데이터 세트가 크기 때문에 자동 레이블 지정을 사용하기로 했습니다. 즉,t 데이터 세트를 구축할 때 모든 이미지에 수동으로 레이블을 추가할 필요가 없었습니다.. 이 SAVed 우리에게 많은 시간과 노력이 필요합니다. 데이터 세트를 빌드할 때는 학습 데이터 세트와 테스트 데이터 세트를 모두 제공하는 것이 중요합니다. 이를 통해 AWS 인식력 자신을 훈련하고 그 다음 테스트 훈련 세트를 사용하여 구축된 모델이 얼마나 정확한지입니다. 

 

데이터 세트를 사용하여 모델을 학습한 후(약 30분 소요) 모델을 시작해야 합니다. 학습하고 모델을 시작하면 AWS API를 통해 요청을 수락할 준비가 되며, 자세한 내용은 이 게시물에서 나중에 확인할 수 있습니다. 이미지 입력을 기반으로 레이블을 감지합니다.

데모 파트 2 구축: Mendix

구축을 시작하기 위해 우리는 일부 와이어프레임과 프로세스 흐름을 계획하였고 UX 디자이너는 애플리케이션의 모양과 느낌을 안내하는 Figma 디자인을 고안해냈습니다.

이제 우리는 결국 어떤 모습이 될지 대략 알았으므로 다양한 조각들을 조립하기 시작할 수 있었습니다.

  • Integrations
  • 도메인 모델
  • 어플리케이션

빌드는 시스템을 지원하는 관리 도구와 데이터를 시스템에 미리 채우는 방법으로 시작되었습니다. 트럭, 컨테이너, 운전자, 운송될 상품에 필요한 정보를 저장하기 위해 도메인 모델 엔터티를 만들었습니다. 그런 다음 데모를 위한 샘플 데이터로 미리 채우고 나중에 다른 사람들이 쉽게 사용할 수 있도록 루틴을 만들었습니다.

그런 다음 트럭은 여행 데이터에 연결되었고 컨테이너는 Timestream 데이터 소스에 연결되었습니다.

통합 Mendix AWS Timestream을 사용하여
물류 앱이 Timestream에서 과거 IoT 데이터를 검색해야 하는 경우, SELECT 문을 설정하고 Timestream 쿼리 Java 액션을 통해 실행하면 됩니다. 이는 AWS Java SDK를 사용하여 Timestream 데이터베이스에 대한 쿼리를 실행하고 결과를 반환하도록 빌드된 Java 액션입니다.

데이터 생성을 지원하고 모든 것이 제대로 작동하는지 확인하기 위해 데이터를 미리 보고, 수정하고, 내보내기 위한 몇 가지 관리 페이지를 만들었습니다. 내보내기는 특히 유용한데, 만든 JSON 파일을 데모 애플리케이션 내에서 사전 채우기 위한 데이터 소스로 사용할 수 있기 때문입니다.

다음으로, 우리는 개요 페이지에서 우리가 만든 트럭과 운전자 정보를 제시했습니다. 이를 통해 백오피스 사용자는 어떤 차량을 보고 싶은지 선택할 수 있습니다. 데모를 위해 가동된 차량은 단 하나뿐이었지만, 여러 대가 있었다면 선택하기 쉬웠을 것입니다.

트럭을 클릭하면 해당 트럭의 세부 정보와 현재 상태를 볼 수 있습니다. 여기서 시뮬레이션 정보가 등장합니다. 위에서 아래로 작업하면서 컨테이너 선택기부터 시작했습니다. 시스템의 모든 트럭에는 컨테이너가 두 개 있으며, 이는 아래 섹션의 모니터 보기를 제어합니다.

다음은 오른쪽 위의 지도입니다. Mendix'의 기본 위젯은 위치를 표시하기에 완벽하지만 당시에는 경로선을 그리거나 움직이는 트럭을 쉽게 표시하기 위한 기본 제공 옵션이 없었습니다. 마켓플레이스에서 잠깐 검색해 보았지만 우리가 원하는 것을 하는 것은 없었기 때문에 우리만의 위젯을 만들었습니다. 플러그형 위젯 React와 JavaScript를 사용합니다. 이 새로운 위젯은 경로선, 선을 따라 이동하는 트럭, 그리고 향하는 방향을 보여줍니다.

하단 섹션에는 선택한 컨테이너 내의 온도와 습도, 그리고 운송하는 제품에 대한 업데이트가 표시됩니다. 또한 백업 압축기와 잠금장치의 토글도 표시됩니다. 이 모든 것이 Timestream 데이터에 연결되어야 합니다.

그런 다음 데이터는 주기적으로 새로 고쳐져 최신 정보를 제공합니다. 온도 또는 습도가 임계값을 초과하여 트리거된 모든 알림은 거의 즉각적인 업데이트를 위해 웹 소켓을 통해 클라이언트로 전달됩니다. 우리는 이 기능을 Amazon SNS로 확장하여 SMS 및 이메일 알림도 제공했습니다.

모든 액션은 기록되고 트럭의 여정에서 주요 이벤트를 보여주는 타임라인에 표시됩니다. 경고에서 문이 잠긴 시점, 문이 잠금 해제된 시점까지. 모든 센서 데이터도 자세한 보기로 표시됩니다.

 

퍼즐의 마지막 조각은 현장 기반 사용자를 위한 모바일 애플리케이션입니다. 이 데모에서는 네이티브 모바일이 아닌 반응형 웹 애플리케이션을 사용하기로 했습니다. 그래서 많은 디자인이 백오피스 시스템과 모바일 버전 사이에서 재사용 가능했습니다.

    

마지막으로 구현한 것은 검사 양식과 Rekognition API였습니다. 양식은 충분히 간단합니다. 상품 사진, 도착 날짜, 그리고 상품 상태에 대한 평가입니다. 사진을 찍으면 Rekognition API에 제출되고, 우리는 대량의 이미지 샘플을 기반으로 좋은 사과와 나쁜 사과를 인식하도록 훈련했습니다. 좋은 사과와 나쁜 사과에 대한 품질 평가와 결과에 대한 확신도를 반환합니다.

통합 Mendix AWS Rekognition을 사용하여

통합하기 쉽습니다 Mendix AWS Rekognition을 사용하면 AWS는 종종 플랫폼에 통합하는 여러 가지 방법을 제공합니다. 원하는 언어를 사용하여 SDK를 사용하거나 기본 API를 사용하도록 선택할 수 있습니다. Mendix 우리에게는 두 가지 옵션이 있었습니다. AWS Java SDK를 사용하거나 다음을 사용하여 API에 통합하는 것입니다. Mendix REST Microflow 작업. 우리는 Java 종속성을 최소화하고 최대한 네이티브를 사용하기 위해 REST 경로를 선택했습니다. Mendix 가능한 한 (Mendix (REST API와 통합하는 것은 우리가 익숙하지 않은 SDK와 통합하는 것과 달리 직관적인 과정이기 때문에 지금까지 가장 간단하고 빠른 경로입니다.)

우리는 먼저 사용자 정의 레이블을 감지하는 주요 활동을 구현하는 데 집중했습니다. 이 API를 사용하여 매핑을 빌드할 수 있었습니다. Mendix: https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DetectCustomLabels.html

먼저, 응답에 대한 JSON 스니펫과 응답을 처리하기 위한 가져오기 매핑을 작성했습니다.

다음으로, 우리는 이미지를 Base64 인코딩된 문자열로 "바이트" 속성에 AWS로 보낼 방법이 필요했습니다. 이를 위해 우리는 메시지 정의를 만들었습니다. Mendix System.Image에서 Contents 특성을 선택하고 외부 이름을 "Bytes"로 변경했습니다.

그런 다음 내보내기 매핑과 위의 메시지 정의를 사용하여 이미지를 올바른 JSON 형식으로 변환할 수 있었습니다.

마지막으로, 이미지를 AWS 인식으로 보내고 머신 러닝 모델에서 감지한 레이블을 반환하기 위해 Microflow 호출이 필요합니다. 이 Microflow 호출 내부에는 AWS Rekognition에서 요구하는 일련의 매개변수가 있습니다. 먼저 Microflow는 이미지를 "Bytes"라는 하나의 속성이 있는 JSON 객체 문자열로 내보냅니다. 그런 다음 이것은 REST 작업의 페이로드 내부의 다른 매개변수와 함께 사용됩니다.

REST 작업 내부에서 매개변수로 전달된 AWS 리전을 사용하여 위치를 정의합니다. API에 필요한 HTTP 헤더를 추가합니다. 필요한 요청 페이로드와 응답 매핑을 추가합니다.

우리가 시연을 위해 만든 마지막 마법의 작품은 조금 더 기술적입니다. 이불 속에 숨어서. AWS API는 모든 API 호출이 Sig4라는 프로세스를 사용하여 서명되도록 요구합니다. AccessKey와 SecretKey를 사용하여 HTTP 요청을 보내기 전에 서명하여 진짜인지 확인합니다. After Startup Microflow에서 AWS Rekognition에 대한 모든 호출을 가로채고 보내기 전에 추가로 필요한 Sig4 헤더를 추가하는 Java Action을 추가했습니다.

AWS Rekognition 및 Sig4 Interceptor에 대한 모든 통합은 다음에서 제공됩니다. Mendix 곧 Marketplace가 출시됩니다. 이를 통해 AWS Rekognition과의 통합이 더욱 간소화되어 비디오에서 보여준 대로 AWS Rekognition을 사용할 수 있습니다.

포장하기

데모 애플리케이션은 출처에서 매장으로 운송하는 동안 제품을 추적하고 모니터링하는 방법을 보여줍니다. AWS IoT Core를 사용하여 AWS Timestream 서비스로 온도, 습도 및 위치를 모니터링하고 Rekognition으로 이미지를 분석했습니다. 그런 다음 Mendix 다양한 서비스에 연결하고 다양한 장치 유형에 실시간으로 데이터를 제공하기 위해 반응형 프런트 엔드를 빠르게 구축합니다.

사용 방법에 대해 자세히 알고 싶다면 Mendix AWS와 함께 30월 XNUMX일에 열리는 웨비나에 등록하세요. 이 웨비나에서 우리는 다음과 같은 가능성을 선보일 것입니다. Mendix AWS 서비스로 구동되는 플랫폼입니다. 부패하기 쉬운 상품의 운송 물류를 개선하기 위한 스마트 앱이 만들어지는 모습을 볼 수 있는 데모를 준비했습니다. 여기에서 가입하세요!

언어를 선택하세요