

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Operaciones de plantillas de estado para la recopilación y el procesamiento de datos
<a name="state-template-api-operations"></a>

**importante**  
El acceso a ciertas FleetWise funciones de AWS IoT está actualmente restringido. Para obtener más información, consulte [AWS Disponibilidad regional y de funciones en el AWS IoT FleetWise](fleetwise-regions.md).

En las siguientes secciones se describe cómo utilizar las plantillas de estado para activar y desactivar la recopilación de datos, realizar una operación de recuperación y procesar los datos de estado de sus vehículos.

**Topics**
+ [Active y desactive la recopilación de datos de estado mediante plantillas de estado](start-stop-data-ingestion.md)
+ [Obtenga una instantánea del estado del vehículo mediante plantillas de estado](on-demand-operations.md)
+ [Procese los datos del último estado conocido del vehículo mediante la mensajería MQTT](process-last-known-state-vehicle-data.md)

# Active y desactive la recopilación de datos de estado mediante plantillas de estado
<a name="start-stop-data-ingestion"></a>

**importante**  
El acceso a ciertas FleetWise funciones de AWS IoT está actualmente restringido. Para obtener más información, consulte [AWS Disponibilidad regional y de funciones en el AWS IoT FleetWise](fleetwise-regions.md).

En las siguientes secciones se describe cómo activar y desactivar la ingesta de datos con plantillas de estado mediante el. AWS CLI

**importante**  
Antes de empezar, asegúrate de haber creado una [plantilla de estado](state-templates.md) y de haberla asociado, junto con su estrategia de actualización, a un vehículo.

Debes activar una plantilla de estado para que el Edge Agent pueda enviar actualizaciones de señales a la nube.

Para realizar estas operaciones con plantillas de estado, primero cree un recurso de comando y, a continuación, inicie la ejecución del comando en el vehículo. En la siguiente sección, se describe cómo utilizar esta API y cómo activar y desactivar la ingesta de datos.

**Topics**
+ [Mediante la API de `CreateCommand`](#start-stop-ingestion-create-command)
+ [Ejemplo: activar una plantilla de estado](#start-stop-ingestion-activate-template)
+ [Ejemplo: desactivar una plantilla de estado](#start-stop-ingestion-deactivate-template)

## Mediante la API de `CreateCommand`
<a name="start-stop-ingestion-create-command"></a>

Cree un recurso de comandos en el espacio de nombres `AWS-IoTFleetwise` «» y utilice los siguientes parámetros al crear o enviar un recurso de comandos para una plantilla de estado:
+ `$stateTemplate.name`— El nombre de la plantilla de estado en la que se va a realizar la operación. La plantilla de estado debe aplicarse al vehículo antes de poder realizar una operación. Para obtener más información, consulte [Asociar una plantilla de FleetWise estado de AWS IoT a un vehículo](state-templates.md#apply-state-templates).
+ `$stateTemplate.operation`— La operación que se va a realizar en la plantilla de estado. Utilice uno de los siguientes valores para este parámetro:
  + `activate`— El Edge Agent comienza a enviar actualizaciones de señales a la nube en función de `stateTemplateUpdateStrategy` lo que especificaste (con cambios o periódicas) al aplicar la plantilla de estado al vehículo. Para obtener más información, consulte [Asociar una plantilla de FleetWise estado de AWS IoT a un vehículo](state-templates.md#apply-state-templates).

    Además, puedes definir una hora de desactivación automática de la plantilla de estado para detener las actualizaciones después de un período de tiempo específico. Si no se proporciona una hora de desactivación automática, las plantillas de estado seguirán enviando actualizaciones hasta que se emita una llamada de desactivación. 

    Tan pronto como se reciba el `activate` comando, el dispositivo debería enviar las señales especificadas en la plantilla de estado de acuerdo con la estrategia de actualización. AWS IoT FleetWise recomienda que cuando el dispositivo reciba un comando de activación, el primer mensaje que envíe contenga una instantánea de todas las señales de la plantilla de estado. Los mensajes siguientes deben enviarse de acuerdo con la estrategia de actualización.
  + `deactivate`— El Edge Agent deja de enviar actualizaciones de señales a la nube.
  + `fetchSnapshot`— El Edge Agent envía una sola vez una instantánea de las señales definidas en la plantilla de estado, independientemente de las `stateTemplateUpdateStrategy` que haya especificado al aplicar la plantilla de estado al vehículo. 
+ (Opcional)`$stateTemplate.deactivateAfterSeconds`: la plantilla de estado se desactiva automáticamente una vez transcurrido el tiempo especificado. Este parámetro solo se puede utilizar cuando el valor del `$stateTemplate.operation` parámetro es «activar». Si no se especifica este parámetro, o si el valor de este parámetro es 0, el Edge Agent sigue enviando actualizaciones de señales a la nube hasta que se reciba una operación de «desactivación» de la plantilla de estado. La plantilla de estado nunca se desactiva automáticamente.

  Valor mínimo: 0, valor máximo: 4294967295.

**nota**  
La API devuelve el resultado correcto en respuesta a una solicitud de activación de una plantilla que ya está en estado activo.
La API devuelve el resultado correcto en respuesta a una solicitud de desactivación de una plantilla que ya se encuentra en estado de desactivación.
La solicitud más reciente que realices en una plantilla de estado es la que surte efecto. Por ejemplo, si solicita la desactivación de una plantilla de estado en una hora y, a continuación, hace una segunda solicitud para que la misma plantilla se desactive en cuatro horas, la desactivación de cuatro horas entrará en vigor debido a que es la solicitud más reciente. 

**importante**  
Se puede producir una excepción de validación en cualquiera de los siguientes escenarios:  
Se proporciona una plantilla de estado que no corresponde `ASSOCIATED` a un vehículo.
Se ha realizado una solicitud para activar una plantilla de estado, pero no ha estado `DEPLOYED` en un vehículo.
Se hace una solicitud a una plantilla de estado, pero se hace `DELETED` en un vehículo.

## Ejemplo: activar una plantilla de estado
<a name="start-stop-ingestion-activate-template"></a>

Para activar una plantilla de estado, cree primero un recurso de comando. A continuación, puede enviar el siguiente comando al vehículo en el que desee activar la plantilla de estado. En este ejemplo se muestra cómo se pueden especificar los valores por defecto para los parámetros al crear un comando. Estos parámetros y sus valores se utilizan al iniciar la ejecución del comando para activar la plantilla de estado.

1. 

**Creación de un recurso de comandos**

   Antes de poder enviar un comando al vehículo, debe crear un recurso de comando. Puede especificar valores alternativos para los parámetros obligatorios al enviar el comando al vehículo. Para obtener más información, consulte [Creación de un recurso de comandos](create-manage-remote-command-cli.md#create-remote-command-cli).
**importante**  
`$stateTemplate.name`y `$stateTemplate.operation` los parámetros deben proporcionarse como un tipo de datos de cadena. Si se proporciona cualquier otro tipo de datos, o si falta alguno de estos dos parámetros, se produce un error en la ejecución del comando y se produce una excepción de validación. El `$stateTemplate.deactivateAfterSeconds` parámetro debe proporcionarse como un tipo `Long` de datos.

   ```
   aws iot create-command \
       --description "This command activates a state template on a vehicle"
       --command-id ActivateStateTemplate \
       --display-name "Activate State Template" \
       --namespace AWS-IoTFleetWise \
       --mandatory-parameters '[
       {
           "name": "$stateTemplate.name",
           "defaultValue": {"S": "ST123"}
       },
       {
           "name": "$stateTemplate.operation",
           "defaultValue": {"S": "activate"}
       },
       {
           "name": "$stateTemplate.deactivateAfterSeconds",
           "defaultValue": {"L": "120"}
       } 
   ]'
   ```

1. 

**Inicie la ejecución del comando en el vehículo**

   Una vez creado el comando, envíelo al vehículo. Si no especificó valores para los parámetros obligatorios al crear el recurso de comando, debe especificarlos ahora. Para obtener más información, consulte [Envía un comando ()AWS CLI](send-monitor-remote-command-cli.md#send-remote-command-cli).
**importante**  
Asegúrese de utilizar el punto final de la API del plano de datos de AWS IoT trabajos específico de la cuenta para la operación de la API.

   ```
   aws iot-jobs-data start-command-execution \
       --endpoint-url <endpoint-url> \
       --command-arn arn:aws:iot:region:111122223333:command/ActivateStateTemplate \
       --target-arn arn:aws:iot:region:111122223333:thing/<VEHICLE_NAME>
   ```

1. 

**Recupera el estado de la operación de la plantilla de estado**

   Tras iniciar la ejecución del comando, puede utilizar la `GetCommandExecution` API para recuperar la plantilla de estado.

   ```
   aws iot get-command-execution --execution-id <EXECUTION_ID> 
   ```

## Ejemplo: desactivar una plantilla de estado
<a name="start-stop-ingestion-deactivate-template"></a>

Para desactivar una plantilla de estado, cree primero un recurso de comando. A continuación, puede enviar el siguiente comando al vehículo en el que desee desactivar la plantilla de estado. En este ejemplo se muestra cómo se pueden especificar los valores por defecto para los parámetros al crear un comando. Estos parámetros y sus valores se utilizan al iniciar la ejecución del comando para desactivar la plantilla de estado.

1. 

**Creación de un recurso de comandos**

   Antes de poder enviar un comando al vehículo, debe crear un recurso de comando. Puede especificar valores alternativos para los parámetros obligatorios al enviar el comando al vehículo. Para obtener más información, consulte [Creación de un recurso de comandos](create-manage-remote-command-cli.md#create-remote-command-cli).

   ```
   aws iot create-command \
       --description "This command deactivates a state template on a vehicle"
       --command-id DeactivateStateTemplate \
       --display-name "Deactivate State Template" \
       --namespace AWS-IoTFleetWise \
       --mandatory-parameters '[
       {
           "name": "$stateTemplate.name",
           "defaultValue": {"S": "ST123"}
       },
       {
           "name": "$stateTemplate.operation",
           "defaultValue": {"S": "deactivate"}
       }    
   ]'
   ```

1. 

**Inicie la ejecución del comando en el vehículo**

   Una vez creado el comando, envíelo al vehículo. Si no especificó valores para los parámetros obligatorios al crear el recurso de comando, debe especificarlos ahora. Para obtener más información, consulte [Envía un comando ()AWS CLI](send-monitor-remote-command-cli.md#send-remote-command-cli).

   ```
   aws iot-jobs-data start-command-execution \
       --endpoint-url <endpoint-url> \
       --command-arn arn:aws:iot:region:111122223333:command/DeactivateStateTemplate \
       --target-arn arn:aws:iot:region:111122223333:thing/<VEHICLE_NAME>
   ```

1. 

**Recupera el estado de la operación de la plantilla de estado**

   Tras iniciar la ejecución del comando, puede utilizar la `GetCommandExecution` API para recuperar la plantilla de estado.

   ```
   aws iot get-command-execution  --execution-id <EXECUTION_ID> 
   ```

# Obtenga una instantánea del estado del vehículo mediante plantillas de estado
<a name="on-demand-operations"></a>

**importante**  
El acceso a ciertas FleetWise funciones de AWS IoT está actualmente restringido. Para obtener más información, consulte [AWS Disponibilidad regional y de funciones en el AWS IoT FleetWise](fleetwise-regions.md).

Puede obtener el último estado conocido de un vehículo mediante la operación de la API del plano de [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html) AWS IoT Core control o la FleetWise consola AWS IoT.

**importante**  
Se puede producir una excepción de validación en cualquiera de los siguientes escenarios:  
Se proporciona una plantilla de estado que no corresponde `ASSOCIATED` a un vehículo.
Se ha realizado una solicitud para activar una plantilla de estado, pero no ha estado `DEPLOYED` en un vehículo.
Se hace una solicitud a una plantilla de estado, pero se hace `DELETED` en un vehículo.

## Obtenga una instantánea del estado del vehículo (consola)
<a name="fetch-state-console"></a>

Puedes usar la FleetWise consola AWS IoT para buscar el último estado conocido de un vehículo. AWS IoT FleetWise creará un comando para que obtengas datos.

**Para obtener el estado de un vehículo**

1. Abre la [ FleetWise consola AWS de IoT](https://console.aws.amazon.com/iotfleetwise).

1. En el panel de navegación, elija **Vehículos**.

1. Elige un vehículo de la lista para abrir su página de detalles.

1. En la pestaña **Plantillas de estado**, selecciona **Obtener datos**.

1. Seleccione el rol de IAM que otorga FleetWise permisos de AWS IoT para enviar un comando y obtener datos. Consulte [Controlar el acceso](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/controlling-access.html#generate-command-payload).

1. Seleccione **Fetch state.**

## Obtenga una instantánea del estado del vehículo ()AWS CLI
<a name="fetch-state-cli"></a>

Para obtener una instantánea de estado, primero cree un recurso de comando. A continuación, puede enviar el siguiente comando al vehículo del que quiere obtener la instantánea de estado. Para obtener más información sobre el uso de la `CreateCommand` API y sus parámetros, consulte[Mediante la API de `CreateCommand`](start-stop-data-ingestion.md#start-stop-ingestion-create-command).

1. 

**Creación de un recurso de comandos**

   En el siguiente ejemplo, se muestra cómo crear el recurso de comando para realizar la operación de recuperación. Puede especificar valores alternativos para los parámetros obligatorios al enviar el comando al vehículo. Para obtener más información, consulte [Creación de un recurso de comandos](create-manage-remote-command-cli.md#create-remote-command-cli).

   ```
   aws iot create-command \
       --command-id <COMMAND_ID> \
       --display-name "FetchSnapshot State Template" \
       --namespace AWS-IoTFleetWise \
       --mandatory-parameters '[
         {
             "name": "$stateTemplate.name",
             "defaultValue": {"S": "ST123"}
         }, 
         {
             "name": "$stateTemplate.operation",
             "defaultValue": {"S": "fetchSnapshot"}
         }
       ]'
   ```

   Respuesta:

   ```
   { 
       "commandId": "<COMMAND_ID>",
       "commandArn": "arn:aws:iot:<REGION>:111122223333:command/<COMMAND_ID>"
   }
   ```

1. 

**Inicie la ejecución del comando para obtener una instantánea del estado**

   Una vez creado el comando, envíelo al vehículo. Si no especificó valores para los parámetros obligatorios al crear el recurso de comando, debe especificarlos ahora. Para obtener más información, consulte [Envía un comando ()AWS CLI](send-monitor-remote-command-cli.md#send-remote-command-cli).

   ```
   aws iot-jobs-data start-command-execution \
       --command-arn arn:aws:iot:region:111122223333:command/<COMMAND_ID> \
       --target-arn arn:aws:iot:region:111122223333:thing/<VEHICLE_NAME>
   ```

   Respuesta:

   ```
   {
       "executionId": "<UNIQUE_UUID>"
   }
   ```

1. Recupera el estado de la operación de la plantilla de estado

   Tras iniciar la ejecución del comando, puede utilizar la `GetCommandExecution` API para recuperar la plantilla de estado.

   ```
   aws iot get-command-execution --execution-id <EXECUTION_ID> 
   ```

# Procese los datos del último estado conocido del vehículo mediante la mensajería MQTT
<a name="process-last-known-state-vehicle-data"></a>

**importante**  
El acceso a ciertas FleetWise funciones de AWS IoT está actualmente restringido. Para obtener más información, consulte [AWS Disponibilidad regional y de funciones en el AWS IoT FleetWise](fleetwise-regions.md).

Para recibir actualizaciones de su vehículo y procesar sus datos, suscríbase al siguiente tema de MQTT. Para obtener más información, consulte [Temas MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-connect-devices.html) en la *Guía para desarrolladores de AWS IoT Core *.

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

Es posible que los últimos mensajes de actualización de la señal de estado conocidos se reciban fuera de servicio, ya que MQTT no garantiza el pedido. Cualquier cliente que utilice MQTT para recibir y procesar los datos del vehículo debe encargarse de ello. Los últimos mensajes de actualización de señal de estado conocidos siguen el protocolo de mensajería MQTT 5.

El encabezado de cada mensaje MQTT tiene las siguientes propiedades de usuario:
+ **VehicleName**[: un identificador único de los vehículos.](vehicles.md)
+ **stateTemplateName**— Un identificador único de la última plantilla de [estado](state-templates.md) conocida.

Además, puede especificar [los atributos del vehículo](signal-catalogs.md) que se incluirán en el encabezado del mensaje MQTT especificando el parámetro de `metadataExtraDimensions` solicitud al actualizar o crear una plantilla de estado. (Consulte las [plantillas de estado](state-templates.md)).

Las propiedades de usuario del encabezado de los mensajes de MQTT son útiles para enrutar los mensajes a diferentes destinos sin inspeccionar la carga útil. 

La carga útil de los mensajes MQTT contiene los datos recopilados de los vehículos. Puede especificar los atributos del vehículo que se incluirán en la carga útil del mensaje MQTT especificando el parámetro de `extraDimensions` solicitud al crear o actualizar una plantilla de estado (consulte). [Cree una plantilla AWS de FleetWise estado de IoT](state-templates.md) Las dimensiones adicionales enriquecen los datos recopilados de los vehículos al asociarles dimensiones adicionales.

La carga útil del mensaje MQTT está codificada en búferes de protocolo (Protobuf) y el encabezado del mensaje MQTT contiene un indicador de tipo de contenido definido como aplicación/flujo de octetos. El esquema de codificación de Protobuf es el siguiente:

```
// 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;
  }
}
```

Donde:
+ `time_ms`:

  La marca temporal absoluta (en milisegundos desde la época de Unix) del momento en que se desencadenó el evento en el vehículo. El software Edge Agent se utiliza en el reloj del vehículo para esta marca de tiempo.
+ `signal`:

  Matriz de `Signal` s que contiene la información de la señal: `name` (cadena) y `signalValue` que admite los siguientes tipos de datos: `double``bool`,`int8`,`uint8`,`int16`,,`uint16`,`int32`,`uint32`, `int64``uint64`,`float`. `string`
+ `extra_dimensions`:

  Una matriz `ExtraDimensions` que contiene la información sobre los atributos del vehículo: `name` (cadena) y `extraDimensionValue` que actualmente solo admite el tipo de `string` datos.