

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# MQTT 메시징을 사용하여 마지막으로 알려진 상태 차량 데이터 처리
<a name="process-last-known-state-vehicle-data"></a>

**중요**  
특정 AWS IoT FleetWise 기능에 대한 액세스는 현재 게이트됩니다. 자세한 내용은 [AWS AWS IoT FleetWise의 리전 및 기능 가용성](fleetwise-regions.md) 단원을 참조하십시오.

차량에서 업데이트를 수신하고 데이터를 처리하려면 다음 MQTT 주제를 구독하세요. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [MQTT 주제](https://docs.aws.amazon.com/iot/latest/developerguide/iot-connect-devices.html)를 참조하세요.

```
$aws/iotfleetwise/vehicles/$vehicle_name/last_known_state/$state_template_name/data
```

MQTT는 순서 지정을 보장하지 않으므로 마지막으로 알려진 상태 신호 업데이트 메시지가 순서에 맞지 않게 수신될 수 있습니다. MQTT를 사용하여 차량 데이터를 수신하고 처리하는 모든 클라이언트는 이를 처리해야 합니다. 마지막으로 알려진 상태 신호 업데이트 메시지는 MQTT 5 메시징 프로토콜을 따릅니다.

각 MQTT 메시지의 메시지 헤더에는 다음과 같은 사용자 속성이 있습니다.
+ **vehicleName** - [차량의](vehicles.md) 고유 식별자입니다.
+ **stateTemplateName** - 마지막으로 알려진 [상태 템플릿](state-templates.md)의 고유 식별자입니다.

또한 상태 템플릿을 업데이트하거나 생성하는 동안 `metadataExtraDimensions` 요청 파라미터를 지정하여 MQTT 메시지 헤더에 포함할 [차량 속성을](signal-catalogs.md) 지정할 수 있습니다. ([상태 템플릿](state-templates.md) 참조)

MQTT 메시지 헤더의 사용자 속성은 페이로드를 검사하지 않고 메시지를 다른 대상으로 라우팅하는 데 유용합니다.

MQTT 메시지 페이로드에는 차량에서 수집된 데이터가 포함됩니다. 상태 템플릿을 생성하거나 업데이트하는 동안 `extraDimensions` 요청 파라미터를 지정하여 MQTT 메시지 페이로드에 포함할 차량 속성을 지정할 수 있습니다( 참조[AWS IoT FleetWise 상태 템플릿 생성](state-templates.md)). 추가 차원은 추가 차원을 차량에 연결하여 차량에서 수집된 데이터를 보강합니다.

MQTT 메시지 페이로드는 프로토콜 버퍼(Protobuf)로 인코딩되며 MQTT 메시지 헤더에는 application/octet-stream으로 정의된 콘텐츠 유형 표시기가 포함되어 있습니다. Protobuf 인코딩 스키마는 다음과 같습니다.

```
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

syntax = "proto3";

option java_package = "com.amazonaws.iot.autobahn.schemas.lastknownstate";
package Aws.IoTFleetWise.Schemas.CustomerMessage;

message LastKnownState {

  /*
   * The absolute timestamp in milliseconds since Unix Epoch of when the event was triggered in vehicle.
   */
  uint64 time_ms = 1;

  /*
   * This field is deprecated, use signals instead
   */
  repeated Signal signal = 2 [ deprecated = true ];

  repeated Signal signals = 3;

  repeated ExtraDimension extra_dimensions = 4;
}

message Signal {

  /*
   * The Fully Qualified Name of the signal is the path to the signal plus the signal's name.
   * For example, Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringState
   * The fully qualified name can have up to 150 characters. Valid characters: a-z, A-Z, 0-9, : (colon), and _ (underscore).
   */
  string name = 1;

  /*
   * The FWE reported signal value can be one of the following data types.
   */
  oneof SignalValue {
    double double_value = 2;

    bool boolean_value = 3;

    sint32 int8_value = 4;

    uint32 uint8_value = 5;

    sint32 int16_value = 6;

    uint32 uint16_value = 7;

    sint32 int32_value = 8;

    uint32 uint32_value = 9;

    sint64 int64_value = 10;

    uint64 uint64_value = 11;

    float float_value = 12;
    /*
     * An UTF-8 encoded or 7-bit ASCII string
     */
    string string_value = 13;
  }
}

message ExtraDimension {
  /*
   * The Fully Qualified Name of the attribute is the path to the attribute plus the attribute's name.
   * For example, Vehicle.Model.Color
   * The fully qualified name can have up to 150 characters. Valid characters: a-z, A-Z, 0-9, : (colon), and _ (underscore).
   */
  string name = 1;

  oneof ExtraDimensionValue {
    /*
     * An UTF-8 encoded or 7-bit ASCII string
     */
    string string_value = 2;
  }
}
```

위치:
+ `time_ms`:

  차량에서 이벤트가 트리거된 시간의 절대 타임스탬프(Unix Epoch 이후 밀리초). Edge Agent 소프트웨어는이 타임스탬프에 대해 차량의 시계에서를 사용합니다.
+ `signal`:

  (`name`문자열) 및 신호 정보를 `Signal`포함하는의 배열로, , `double`, `bool`, `int8`, `uint8`, `int16`, `uint16``int32`, `uint32`, `int64``uint64`, `float`, 등의 데이터 형식을 `signalValue` 지원합니다`string`.
+ `extra_dimensions`:

  차량 속성 정보`name`(문자열)를 `ExtraDimensions` 포함하고 `extraDimensionValue` 현재 `string` 데이터 유형만 지원하는의 배열입니다.