

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Operazioni relative ai modelli di stato per la raccolta e l’elaborazione dei dati
<a name="state-template-api-operations"></a>

**Importante**  
L'accesso a determinate FleetWise funzionalità AWS IoT è attualmente limitato. Per ulteriori informazioni, consulta [AWS Disponibilità di aree e funzionalità nell' AWS IoT FleetWise](fleetwise-regions.md).

Le sezioni seguenti descrivono come utilizzare i modelli di stato per attivare e disattivare la raccolta dei dati, eseguire un'operazione di recupero ed elaborare i dati sullo stato dei veicoli.

**Topics**
+ [

# Attiva e disattiva la raccolta di dati sullo stato utilizzando modelli di stato
](start-stop-data-ingestion.md)
+ [

# Recupera un'istantanea dello stato del veicolo utilizzando i modelli di stato
](on-demand-operations.md)
+ [

# Elabora gli ultimi dati noti relativi ai veicoli statali utilizzando la messaggistica MQTT
](process-last-known-state-vehicle-data.md)

# Attiva e disattiva la raccolta di dati sullo stato utilizzando modelli di stato
<a name="start-stop-data-ingestion"></a>

**Importante**  
L'accesso a determinate FleetWise funzionalità AWS IoT è attualmente limitato. Per ulteriori informazioni, consulta [AWS Disponibilità di aree e funzionalità nell' AWS IoT FleetWise](fleetwise-regions.md).

Le sezioni seguenti descrivono come attivare e disattivare l'ingestione di dati con modelli di stato utilizzando il. AWS CLI

**Importante**  
Prima di iniziare, assicurati di aver già creato un [modello di stato](state-templates.md) e di averlo associato e la relativa strategia di aggiornamento a un veicolo.

È necessario attivare un modello di stato in modo che Edge Agent possa inviare gli aggiornamenti dei segnali al cloud.

Per eseguire queste operazioni con i modelli di stato, create prima una risorsa di comando e poi avviate l'esecuzione del comando sul veicolo. La sezione seguente descrive come utilizzare questa API e come attivare e disattivare l'ingestione dei dati.

**Topics**
+ [

## Utilizzo dell’API `CreateCommand`
](#start-stop-ingestion-create-command)
+ [

## Esempio: attivare un modello di stato
](#start-stop-ingestion-activate-template)
+ [

## Esempio: disattivare un modello di stato
](#start-stop-ingestion-deactivate-template)

## Utilizzo dell’API `CreateCommand`
<a name="start-stop-ingestion-create-command"></a>

Create una risorsa di comando nello spazio dei nomi `AWS-IoTFleetwise` "" e utilizzate i seguenti parametri quando create o inviate una risorsa di comando per un modello di stato:
+ `$stateTemplate.name`— Il nome del modello di stato su cui eseguire l'operazione. Il modello di stato deve essere applicato al veicolo prima di poter eseguire un'operazione. Per ulteriori informazioni, consulta [Associare un modello di FleetWise stato AWS IoT a un veicolo](state-templates.md#apply-state-templates).
+ `$stateTemplate.operation`— L'operazione da eseguire sul modello di stato. Utilizzate uno dei seguenti valori per questo parametro:
  + `activate`— L'Edge Agent inizia a inviare gli aggiornamenti dei segnali al cloud in base al `stateTemplateUpdateStrategy` valore specificato (in modifica o periodico) quando hai applicato il modello di stato al veicolo. Per ulteriori informazioni, consulta [Associare un modello di FleetWise stato AWS IoT a un veicolo](state-templates.md#apply-state-templates).

    Inoltre, è possibile definire un orario di disattivazione automatico del modello di stato per interrompere gli aggiornamenti dopo un periodo di tempo specificato. Se non viene fornito un orario di disattivazione automatico, i modelli di stato continueranno a inviare aggiornamenti fino all'emissione di una chiamata di disattivazione. 

    Non appena il `activate` comando viene ricevuto, il dispositivo deve inviare i segnali specificati nel modello di stato in base alla strategia di aggiornamento. AWS FleetWise L'IoT consiglia che quando il dispositivo riceve un comando di attivazione, il primo messaggio inviato contenga un'istantanea di tutti i segnali nel modello di stato. I messaggi successivi devono essere inviati in base alla strategia di aggiornamento.
  + `deactivate`— L'Edge Agent interrompe l'invio degli aggiornamenti dei segnali al cloud.
  + `fetchSnapshot`— L'Edge Agent invia un'istantanea una tantum dei segnali definiti nel modello di stato indipendentemente da `stateTemplateUpdateStrategy` quello specificato quando è stato applicato il modello di stato al veicolo. 
+ (Facoltativo)`$stateTemplate.deactivateAfterSeconds`: il modello di stato viene disattivato automaticamente dopo il tempo specificato. Questo parametro può essere utilizzato solo quando il valore del `$stateTemplate.operation` parametro è «attiva». Se questo parametro non è specificato o se il valore di questo parametro è 0, Edge Agent continua a inviare aggiornamenti dei segnali al cloud fino a quando non viene ricevuta un'operazione di «disattivazione» per il modello di stato. Il modello di stato non viene mai disattivato automaticamente.

  Valore minimo: 0, valore massimo: 4294967295.

**Nota**  
L'API restituisce l'esito positivo in risposta a una richiesta di attivazione per un modello già nello stato attivo.
L'API restituisce l'esito positivo in risposta a una richiesta di disattivazione per un modello già in stato di disattivazione.
La richiesta più recente effettuata su un modello di stato è quella che ha effetto. Ad esempio, se si richiede la disattivazione di un modello di stato entro un'ora, quindi si effettua una seconda richiesta per la disattivazione dello stesso modello entro quattro ore, la disattivazione di quattro ore ha effetto in quanto si tratta della richiesta più recente. 

**Importante**  
Un'eccezione di convalida può verificarsi in uno dei seguenti scenari:  
Viene fornito un modello di stato che non è `ASSOCIATED` abbinato a un veicolo.
Viene effettuata una richiesta per attivare un modello di stato, ma questo non è stato `DEPLOYED` installato su un veicolo.
Viene inviata una richiesta a un modello di stato ma si trova `DELETED` su un veicolo.

## Esempio: attivare un modello di stato
<a name="start-stop-ingestion-activate-template"></a>

Per attivare un modello di stato, crea prima una risorsa di comando. È quindi possibile inviare il seguente comando al veicolo su cui si desidera attivare il modello di stato. Questo esempio mostra come è possibile specificare i valori predefiniti per i parametri durante la creazione di un comando. Questi parametri e i relativi valori vengono utilizzati all'avvio dell'esecuzione del comando per attivare il modello di stato.

1. 

**Crea una risorsa di comando**

   Prima di poter inviare un comando al veicolo, è necessario creare una risorsa di comando. È possibile specificare valori alternativi per i parametri obbligatori quando si invia il comando al veicolo. Per ulteriori informazioni, consulta [Crea una risorsa di comando](create-manage-remote-command-cli.md#create-remote-command-cli).
**Importante**  
`$stateTemplate.name`e `$stateTemplate.operation` i parametri devono essere forniti come tipo di dati stringa. Se viene fornito un altro tipo di dati o se manca uno di questi due parametri, l'esecuzione del comando ha esito negativo con un'eccezione di convalida. Il `$stateTemplate.deactivateAfterSeconds` parametro deve essere fornito come tipo di `Long` dati.

   ```
   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. 

**Avvia l'esecuzione del comando sul veicolo**

   Dopo aver creato il comando, invia il comando al veicolo. Se non hai specificato i valori per i parametri obbligatori quando hai creato la risorsa di comando, devi specificarli ora. Per ulteriori informazioni, consulta [Invia un comando ()AWS CLI](send-monitor-remote-command-cli.md#send-remote-command-cli).
**Importante**  
Assicurati di utilizzare l'endpoint API AWS IoT Jobs Data Plane specifico dell'account per il funzionamento dell'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 lo stato dell'operazione del modello di stato**

   Dopo aver avviato l'esecuzione del comando, puoi utilizzare l'`GetCommandExecution`API per recuperare il modello di stato.

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

## Esempio: disattivare un modello di stato
<a name="start-stop-ingestion-deactivate-template"></a>

Per disattivare un modello di stato, crea prima una risorsa di comando. È quindi possibile inviare il seguente comando al veicolo su cui si desidera disattivare il modello di stato. Questo esempio mostra come è possibile specificare i valori predefiniti per i parametri durante la creazione di un comando. Questi parametri e i relativi valori vengono utilizzati all'avvio dell'esecuzione del comando per disattivare il modello di stato.

1. 

**Crea una risorsa di comando**

   Prima di poter inviare un comando al veicolo, è necessario creare una risorsa di comando. È possibile specificare valori alternativi per i parametri obbligatori quando si invia il comando al veicolo. Per ulteriori informazioni, consulta [Crea una risorsa di comando](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. 

**Avvia l'esecuzione del comando sul veicolo**

   Dopo aver creato il comando, invia il comando al veicolo. Se non hai specificato i valori per i parametri obbligatori quando hai creato la risorsa di comando, devi specificarli ora. Per ulteriori informazioni, consulta [Invia 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. 

**Recuperate lo stato dell'operazione del modello di stato**

   Dopo aver avviato l'esecuzione del comando, puoi utilizzare l'`GetCommandExecution`API per recuperare il modello di stato.

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

# Recupera un'istantanea dello stato del veicolo utilizzando i modelli di stato
<a name="on-demand-operations"></a>

**Importante**  
L'accesso a determinate FleetWise funzionalità AWS IoT è attualmente limitato. Per ulteriori informazioni, consulta [AWS Disponibilità di aree e funzionalità nell' AWS IoT FleetWise](fleetwise-regions.md).

Puoi recuperare l'ultimo stato noto di un veicolo utilizzando l'operazione dell'API del piano di [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 controllo o la FleetWise console AWS IoT.

**Importante**  
Un'eccezione di convalida può verificarsi in uno dei seguenti scenari:  
Viene fornito un modello di stato che non è `ASSOCIATED` abbinato a un veicolo.
Viene effettuata una richiesta per attivare un modello di stato, ma questo non è stato `DEPLOYED` installato su un veicolo.
Viene inviata una richiesta a un modello di stato ma si trova `DELETED` su un veicolo.

## Recupera un'istantanea dello stato del veicolo (console)
<a name="fetch-state-console"></a>

Puoi utilizzare la FleetWise console AWS IoT per recuperare l'ultimo stato noto di un veicolo. AWS IoT FleetWise creerà un comando per recuperare i dati.

**Per recuperare lo stato di un veicolo**

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

1. Nel pannello di navigazione, scegli **Veicoli**.

1. Scegli un veicolo dall'elenco per aprirne la pagina dei dettagli.

1. Nella scheda **Modelli di stato**, scegli **Recupera dati**.

1. Seleziona il ruolo IAM che concede FleetWise le autorizzazioni AWS IoT per inviare un comando e recuperare dati. [Vedi Controllo dell'accesso.](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/controlling-access.html#generate-command-payload)

1. Scegli **Fetch state**.

## Recupera un'istantanea dello stato del veicolo ()AWS CLI
<a name="fetch-state-cli"></a>

Per recuperare un'istantanea dello stato, crea prima una risorsa di comando. È quindi possibile inviare il seguente comando al veicolo per il quale si desidera recuperare l'istantanea dello stato. Per ulteriori informazioni sull'utilizzo dell'`CreateCommand`API e dei relativi parametri, consulta. [Utilizzo dell’API `CreateCommand`](start-stop-data-ingestion.md#start-stop-ingestion-create-command)

1. 

**Creare una risorsa di comando**

   L'esempio seguente mostra come creare la risorsa di comando per eseguire l'operazione di recupero. È possibile specificare valori alternativi per i parametri obbligatori quando si invia il comando al veicolo. Per ulteriori informazioni, consulta [Crea una risorsa di comando](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"}
         }
       ]'
   ```

   Risposta:

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

1. 

**Avvia l'esecuzione del comando per recuperare l'istantanea dello stato**

   Dopo aver creato il comando, invia il comando al veicolo. Se non hai specificato i valori per i parametri obbligatori quando hai creato la risorsa di comando, devi specificarli ora. Per ulteriori informazioni, consulta [Invia 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>
   ```

   Risposta:

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

1. Recuperate lo stato dell'operazione del modello di stato

   Dopo aver avviato l'esecuzione del comando, puoi utilizzare l'`GetCommandExecution`API per recuperare il modello di stato.

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

# Elabora gli ultimi dati noti relativi ai veicoli statali utilizzando la messaggistica MQTT
<a name="process-last-known-state-vehicle-data"></a>

**Importante**  
L'accesso a determinate FleetWise funzionalità AWS IoT è attualmente limitato. Per ulteriori informazioni, consulta [AWS Disponibilità di aree e funzionalità nell' AWS IoT FleetWise](fleetwise-regions.md).

Per ricevere aggiornamenti dal veicolo ed elaborarne i dati, iscriviti al seguente argomento MQTT. Per ulteriori informazioni, consultate [gli argomenti relativi a MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-connect-devices.html) nella Guida per gli *AWS IoT Core sviluppatori*.

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

Gli ultimi messaggi noti di aggiornamento del segnale di stato potrebbero essere ricevuti fuori servizio, poiché MQTT non garantisce l'ordine. Tutti i client che utilizzano MQTT per ricevere ed elaborare i dati del veicolo devono occuparsene. Gli ultimi messaggi noti di aggiornamento del segnale di stato seguono il protocollo di messaggistica MQTT 5.

L'intestazione del messaggio per ogni messaggio MQTT ha le seguenti proprietà utente:
+ **VehicleName**[: un identificatore univoco dei veicoli.](vehicles.md)
+ **stateTemplateName**[— Un identificatore univoco dell'ultimo modello di stato conosciuto.](state-templates.md)

Inoltre, è possibile specificare [gli attributi del veicolo](signal-catalogs.md) da includere nell'intestazione del messaggio MQTT specificando il parametro di `metadataExtraDimensions` richiesta durante l'aggiornamento o la creazione di un modello di stato. (Vedi Modelli di [stato](state-templates.md).)

Le proprietà utente nell'intestazione del messaggio MQTT sono utili per instradare i messaggi verso destinazioni diverse senza ispezionare il payload. 

Il payload dei messaggi MQTT contiene i dati raccolti dai veicoli. È possibile specificare gli attributi del veicolo da includere nel payload dei messaggi MQTT specificando il parametro di `extraDimensions` richiesta durante la creazione o l'aggiornamento di un modello di stato (vedere). [Crea un modello di FleetWise stato AWS IoT](state-templates.md) Le dimensioni aggiuntive arricchiscono i dati raccolti dai veicoli associando loro dimensioni aggiuntive.

Il payload dei messaggi MQTT è codificato con buffer di protocollo (Protobuf) e l'intestazione del messaggio MQTT contiene un indicatore del tipo di contenuto definito come application/octet-stream. Lo schema di codifica Protobuf è il seguente:

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

Dove:
+ `time_ms`:

  Il timestamp assoluto (in millisecondi dall'epoca Unix) di quando l'evento è stato attivato nel veicolo. Il software Edge Agent utilizza questo timestamp sull'orologio del veicolo.
+ `signal`:

  Una matrice di `Signal` messaggi che contiene le informazioni sul segnale: `name` (stringa) e `signalValue` che supporta i seguenti tipi di dati: `double``bool`,`int8`,`uint8`,`int16`,,`uint16`,`int32`,`uint32`, `int64``uint64`,`float`. `string`
+ `extra_dimensions`:

  Un array `ExtraDimensions` che contiene informazioni sugli attributi del veicolo: `name` (stringa) e `extraDimensionValue` che attualmente supporta solo il tipo di `string` dati.