본문 바로가기

AWS

AWS IoT FleetWise 캠페인을 여러 차량에 배포하기

728x90

Fleet이란?

Fleet 개념

  • Fleet은 여러 대의 차량을 동시에 관리할 수 있습니다.
  • 하나의 차량과 하나의 Fleet이 연결될 수 있습니다.
  • 하나의 차량이 여러 개의 Fleet에 속할 수 있습니다.

Fleet 관련 CLI

Fleet의 목록 출력하기

aws iotfleetwise list-fleets

 

Fleet 생성하기

aws iotfleetwise create-fleet \
   --fleet-id {fleet의 id} \
   --description {설명} \
   --signal-catalog-arn {신호 카탈로그의 ARN}

Fleet과 차량을 연결하기

aws iotfleetwise associate-vehicle-fleet --fleet-id {fleet의 ID} --vehicle-name {차량 이름}

Fleet에 어떤 차량이 연결되어 있는지 확인하기

aws iotfleetwise list-fleets-for-vehicle --vehicle-name {차량 이름}
aws iotfleetwise list-vehicles-in-fleet --fleet-id {fleet의 ID}

Fleet과 차량 연결 해제하기

aws iotfleetwise disassociate-vehicle-fleet --fleet-id {Fleet의 ID} --vehicle-name {차량 이름}

Timestream DB

  • Timestream DB를 CLI로 생성하여 캠페인 배포 시 데이터가 수집되어 Timestream으로 저장될 수 있도록 한다.

Timestream DB 생성

aws timestream-write create-database --database-name {Timestream DB 이름}

Timestream DB 테이블 생성

aws timestream-write create-table \
    --database-name {Timestream DB 이름} \
    --table-name {생성할 Timestream DB 테이블 이름} \
    --retention-properties "{\"MemoryStoreRetentionPeriodInHours\":2, \
        \"MagneticStoreRetentionPeriodInDays\":2}"

캠페인

캠페인 관련 CLI

캠페인 생성

  • 차량이 연결된 Fleet에 캠페인을 배포합니다.
aws iotfleetwise create-campaign --name {생성할 캠페인 이름} --signal-catalog-arn {신호 카탈로그 ARN} --target-arn {캠페인을 배포할 Fleet의 ARN} --cli-input-json {데이터 수집 규칙이 있는 json 캠페인 파일} --data-destination-configs "[{\"s3Config\":{\"bucketArn\":\"{S3 버킷 ARN}\",\"prefix\":\"test-campaign-s3-collected-data\",\"dataFormat\":\"JSON\",\"storageCompressionFormat\":\"NONE\"}}]"

 

캠페인 승인

  • 각 차량에 접속해서 캠페인 배포를 승인합니다.
aws iotfleetwise update-campaign --name {캠페인 이름} --action APPROVE

캠페인 관련 콘솔 작업

1. IoT FleetWise > 캠페인 > 캠페인 생성

2. 1단계 캠페인 구성

  • 캠페인 이름 : test-campaign
  • 구성 옵션 선택 : 데이터 수집 체계 업로드
    • json 파일을 업로드 합니다.
{
  "compression": "SNAPPY",
  "diagnosticsMode": "OFF",
  "spoolingMode": "TO_DISK",
  "collectionScheme": {
    "conditionBasedCollectionScheme": {
      "conditionLanguageVersion": 1,
      "expression": "$variable.`Vehicle.ABS.DemoBrakePedalPressure` > 7000",
      "minimumTriggerIntervalMs": 1000,
      "triggerMode": "ALWAYS"
    }
  },
  "postTriggerCollectionDuration": 1000,
  "signalsToCollect": [
    {
      "name": "Vehicle.ECM.DemoEngineTorque"
    },
    {
      "name": "Vehicle.ABS.DemoBrakePedalPressure"
    }
  ]
}
  • json 파일을 업로드하면 데이터 수집 체계 세부 정보에 자동으로 내용이 채워집니다.
  • 여기에서 캠페인 기간을 추가로 설정해줍니다.

3. 2단계 스토리지 대상 정의

  • 다음과 같이 설정해줍니다.

  • Timestream에 대한 서비스 액세스의 IAM 역할은 다음 신뢰관계와 정책을 가지고 있는 역할을 선택합니다.
  • 신뢰관계
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "iotfleetwise.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
  • 정책
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "timestreamIngestion",
            "Effect": "Allow",
            "Action": [
                "timestream:WriteRecords",
                "timestream:Select",
                "timestream:DescribeTable"
            ],
            "Resource": "arn:aws:timestream:eu-central-1:{계정번호}:database/{Timestream DB 이름}/*"
        },
        {
            "Sid": "timestreamDescribeEndpoint",
            "Effect": "Allow",
            "Action": [
                "timestream:DescribeEndpoints"
            ],
            "Resource": "*"
        }
    ]
}

4. 3단계 차량 추가 단계에서는 목록에 있는 차량을 선택해줍니다.

5. 캠페인의 상태가 RUNNING이고 캠페인 배포 상태가 HEALTHY이면 데이터가 정상적으로 수집되는 것을 확인할 수 있습니다.

 


Fleet을 이용해 CLI로 여러 차량으로부터 데이터를 수집하는 방법과 콘솔을 이용해 수집하는 방법에 대해 알아보았습니다.

728x90