

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

# Asset industriali modello
<a name="industrial-asset-models"></a>

## Panoramica degli asset
<a name="assets-overview"></a>

È possibile creare rappresentazioni virtuali delle proprie operazioni industriali con AWS IoT SiteWise gli asset. Una **risorsa** rappresenta un dispositivo, un'apparecchiatura o un processo che carica uno o più flussi di dati sul cloud. AWS Ad esempio, un dispositivo di asset può essere una turbina eolica che invia le misurazioni delle serie temporali della temperatura dell'aria, della velocità di rotazione dell'elica e dell'uscita di potenza alle proprietà degli asset in AWS IoT SiteWise.

![\[AWS IoT SiteWise asset che rappresentano i dispositivi in un'operazione industriale.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/sitewise-asset.png)


## Gli alias di proprietà identificano i flussi di dati delle apparecchiature
<a name="property-aliases"></a>

Ogni flusso di dati corrisponde a un alias di proprietà univoco. L'alias `/company/windfarm/3/turbine/7/temperature`, ad esempio, identifica in modo univoco il flusso di dati relativi alla temperatura proveniente dalla turbina \$17 nel parco eolico \$13. È possibile configurare le AWS IoT SiteWise risorse per trasformare i dati di misurazione in entrata utilizzando espressioni matematiche, ad esempio per convertire i dati di temperatura da gradi Celsius a gradi Fahrenheit.

## Le gerarchie degli asset rappresentano le relazioni tra le apparecchiature
<a name="asset-hierarchies"></a>

Un asset può anche rappresentare un raggruppamento logico di dispositivi, ad esempio un intero parco eolico. È possibile associare gli asset ad altri asset per creare gerarchie di asset che rappresentano operazioni industriali complesse. Le risorse possono accedere ai dati all'interno delle risorse secondarie associate. In questo modo, è possibile utilizzare AWS IoT SiteWise le espressioni per calcolare metriche aggregate, come la potenza netta in uscita di un parco eolico.

![\[AWS IoT SiteWise gerarchie di asset che rappresentano le relazioni tra dispositivi.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/sitewise-asset-hierarchy.png)


## I modelli di asset standardizzano la rappresentazione delle apparecchiature
<a name="asset-models-overview"></a>

È necessario creare ogni risorsa a partire da un **modello di asset**. I modelli di asset sono strutture dichiarative che standardizzano il formato degli asset. I modelli di asset applicano informazioni coerenti su più asset dello stesso tipo in modo da poter elaborare i dati in risorse che rappresentano gruppi di dispositivi. Ad esempio, uno stabilimento di produzione potrebbe disporre di un modello di asset per macchine CNC che definisce proprietà quali temperatura, tempi di inattività e velocità di produzione. Nel diagramma precedente, si utilizza lo stesso modello di asset per tutte e tre le turbine perché condividono un insieme comune di proprietà.

## Opzioni di modellazione per apparecchiature industriali
<a name="modeling-options"></a>

Nel progettare la rappresentazione degli asset industriali, prendete in considerazione queste opzioni:
+ **I modelli di asset** rappresentano tipi specifici di apparecchiature o processi. È necessario creare ogni risorsa fisica a partire da un modello di asset. Ad esempio, un impianto di trattamento chimico potrebbe disporre di modelli di asset separati per reattori, miscelatori e serbatoi di stoccaggio.
+ **I modelli di componenti** definiscono sottoassiemi riutilizzabili che è possibile includere nei modelli di asset o in altri modelli di componenti. Ad esempio, è possibile includere un modello di componente di un sensore di temperatura in più modelli di asset di apparecchiature in una fabbrica.
+ **Le interfacce dei modelli di asset** applicano standard a diversi modelli di asset. Ad esempio, un'interfaccia «Rotating Equipment» potrebbe definire proprietà standard di vibrazione, temperatura e giri/min applicabili a pompe, turbine e motori, nonostante ognuno abbia il proprio modello di asset unico.

## Creazione e gestione di risorse
<a name="creating-assets"></a>

Dopo averne definito i modelli, è possibile creare gli asset industriali. Per creare un asset, bisogna innanzitutto selezionarne un modello `ACTIVE`. e successivamente inserire le informazioni del caso, quali gli attributi e alias del flusso di dati. Nel diagramma precedente, si creano tre asset turbina da un modello di asset e quindi si associano gli alias del flusso di dati come `/company/windfarm/3/turbine/7/temperature` per ogni turbina.

Potete anche aggiornare ed eliminare risorse, modelli di asset e modelli di componenti esistenti. Quando si aggiorna un modello, ogni asset su di esso basato assimila le modifiche apportate. Quando aggiornate un modello di componente, ciò si applica a ogni asset basato su ogni modello di asset che fa riferimento al modello di componente.

## Gestione di modelli di asset complessi
<a name="complex-models"></a>

I modelli di asset possono essere molto complessi, ad esempio quando si modella un'apparecchiatura complicata con molti sottocomponenti. Per contribuire a mantenere tali modelli di asset organizzati e gestibili, potete utilizzare modelli compositi personalizzati per raggruppare proprietà correlate o riutilizzare componenti condivisi. Per ulteriori informazioni, consulta [Modelli compositi personalizzati (componenti)](custom-composite-models.md).

**Topics**

# Stati di asset e modelli
<a name="asset-and-model-states"></a>

Quando create, aggiornate o eliminate una risorsa, un modello di asset o un modello di componente, la propagazione delle modifiche richiede tempo. AWS IoT SiteWise risolve queste operazioni in modo asincrono e aggiorna lo stato di ogni risorsa. Ogni asset, modello di asset e modello di componente ha un campo di stato che contiene lo stato della risorsa e qualsiasi messaggio di errore, se applicabile. Lo stato può essere uno dei seguenti valori:
+ `ACTIVE`— La risorsa è attiva. Questo è l'unico stato in cui è possibile interrogare e interagire con risorse, modelli di asset e modelli di componenti.
+ `CREATING`— La risorsa è in fase di creazione.
+ `UPDATING`— La risorsa è in fase di aggiornamento.
+ `DELETING`— La risorsa viene eliminata.
+ `PROPAGATING`— (Solo modelli di asset e modelli di componenti) Le modifiche si propagano a tutte le risorse dipendenti (dal modello di asset agli asset o dal modello di componente ai modelli di asset).
+ `FAILED`— La risorsa non è stata convalidata durante un'operazione di creazione o aggiornamento, probabilmente a causa di un riferimento circolare in un'espressione. È possibile eliminare le risorse presenti nello `FAILED` stato.

Alcune delle operazioni di creazione, aggiornamento ed eliminazione eseguono una risorsa, un modello di asset o un modello di componente in uno stato diverso da quello in cui `ACTIVE` l'operazione è risolta. AWS IoT SiteWise Per interrogare o interagire con una risorsa dopo aver eseguito una di queste operazioni, è necessario attendere che lo stato cambi a. `ACTIVE` In caso contrario, le tue richieste avranno esito negativo.

**Topics**
+ [Controllate lo stato di una risorsa](check-asset-status.md)
+ [Controllate lo stato di un modello di asset o componente](check-model-status.md)

# Controllate lo stato di una risorsa
<a name="check-asset-status"></a>

Puoi utilizzare la AWS IoT SiteWise console o l'API per verificare lo stato di una risorsa.

**Topics**
+ [Verifica lo stato di una risorsa (console)](#check-asset-status-console)
+ [Controlla lo stato di una risorsa (AWS CLI)](#check-asset-status-cli)

## Verifica lo stato di una risorsa (console)
<a name="check-asset-status-console"></a>

Per verificare lo stato di un asset nella console AWS IoT SiteWise , attieniti alla procedura descritta di seguito.

**Per controllare lo stato di un asset (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Nel riquadro di navigazione, scegli **Asset**.

1. Scegli l'asset da controllare.
**Suggerimento**  <a name="sitewise-expand-asset-hierarchy"></a>
Puoi scegliere l'icona a forma di freccia per espandere una gerarchia di asset e trovare il tuo asset.

1. Trova **Stato** nel pannello **Dettagli dell'asset**.  
![\[AWS IoT SiteWise Pannello dei dettagli della risorsa con lo stato attivo.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/sitewise-view-asset-status-console.png)

## Controlla lo stato di una risorsa (AWS CLI)
<a name="check-asset-status-cli"></a>

Puoi usare il AWS Command Line Interface (AWS CLI) per controllare lo stato di una risorsa.

Per verificare lo stato di una risorsa, utilizzate l'[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)operazione con il `assetId` parametro.

**Per controllare lo stato di una risorsa (AWS CLI)**
+ Immetti il seguente comando per descrivere l'asset. Sostituisci *asset-id* con l'ID o l'ID esterno della risorsa. L'ID esterno è un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

  ```
  aws iotsitewise describe-asset --asset-id asset-id
  ```

  L'operazione restituisce una risposta contenente i dettagli dell'asset. La risposta contiene un `assetStatus` oggetto con la seguente struttura:

  ```
  {
      ...
      "assetStatus": {
        "state": "String",
        "error": {
           "code": "String",
           "message": "String"
        }
      }
    }
  ```

  Lo stato dell'asset si trova in `assetStatus.state` dell'oggetto JSON.

# Controllate lo stato di un modello di asset o componente
<a name="check-model-status"></a>

È possibile utilizzare la AWS IoT SiteWise console o l'API per verificare lo stato di un modello di asset o di un modello di componente.

**Topics**
+ [Verifica lo stato di un modello di asset o di un modello di componente (console)](#check-model-status-console)
+ [Verifica lo stato di un modello di asset o di un modello di componente ()AWS CLI](#check-model-status-cli)

## Verifica lo stato di un modello di asset o di un modello di componente (console)
<a name="check-model-status-console"></a>

Utilizzate la seguente procedura per verificare lo stato di un modello di asset o di un modello di componente nella AWS IoT SiteWise console.

**Suggerimento**  
I modelli di asset e i modelli di componenti sono entrambi elencati in **Modelli** nel pannello di navigazione. Il pannello **Dettagli** del modello di asset o del modello di componente selezionato indica di che tipo si tratta.

**Per verificare lo stato di un modello di asset o di un modello di componente (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Nel riquadro di navigazione selezionare **Models (Modelli)**.

1. Scegliete il modello da controllare.

1. Trova **Stato** nel pannello **Dettagli**.  
![\[AWS IoT SiteWise Schermata della pagina «Modello di asset» con lo stato del modello di asset evidenziato.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/sitewise-view-model-status-console.png)

## Verifica lo stato di un modello di asset o di un modello di componente ()AWS CLI
<a name="check-model-status-cli"></a>

È possibile utilizzare il AWS CLI per verificare lo stato di un modello di asset o di un modello di componente.

Per verificare lo stato di un modello di asset o di un modello di componente, utilizzate l'[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)operazione con il `assetModelId` parametro.

**Suggerimento**  
 AWS CLI definisce i modelli di componenti come un tipo di modello di asset. Pertanto, si utilizza la stessa [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)operazione per entrambi i tipi di modello. Il `assetModelType` campo nella risposta indica se è un `ASSET_MODEL` o un`COMPONENT_MODEL`. 

**Per verificare lo stato di un modello di asset o di un modello di componente (AWS CLI)**
+ Eseguite il comando seguente per descrivere il modello. *asset-model-id*Sostituitelo con l'ID o l'ID esterno del modello di asset o del modello di componente. L'ID esterno è un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

  ```
  aws iotsitewise describe-asset-model --asset-model-id asset-model-id
  ```

  L'operazione restituisce una risposta che contiene i dettagli del modello. La risposta contiene un oggetto `assetModelStatus` che ha la seguente struttura.

  ```
  {
      ...
      "assetModelStatus": {
        "state": "String",
        "error": {
           "code": "String",
           "message": "String"
        }
      }
    }
  ```

  Lo stato del modello si trova `assetModelStatus.state` nell'oggetto JSON.

# Versioni del modello di asset
<a name="model-active-version"></a>

 AWS IoT SiteWise supporta l'elaborazione asincrona delle operazioni di creazione e aggiornamento su modelli di asset e modelli di componenti. Inoltre aggiorna lo stato del modello. 

 AWS IoT SiteWise propaga le modifiche di un modello valido nelle richieste di creazione e aggiornamento alle risorse dipendenti (dal modello di asset agli asset o dal modello di componente ai modelli di asset). Quindi colloca il modello in `ACTIVE` uno stato. 

 Se la definizione del modello fornita non è valida, AWS IoT SiteWise colloca il modello in uno `FAILED` stato. Le modifiche non vengono propagate alle risorse dipendenti. Le risorse dipendenti si riferiscono all'ultima definizione del modello propagata quando il modello era in uno `ACTIVE` stato. 

 In base alle informazioni di cui sopra, le definizioni dei modelli hanno due tipi di versioni del modello: 

1. **Versione più recente:** la definizione più recente accettata come parte di una richiesta di creazione o aggiornamento.

1. **Versione attiva:** l'ultima definizione è stata elaborata correttamente e lo stato del modello è`ACTIVE`.

 Per impostazione predefinita, i dettagli della versione più recente del modello vengono restituiti quando le descrizioni APIs vengono richiamate su un modello di asset o un modello di componente. Esistono scenari in cui è necessaria la versione attiva del modello di asset o del modello di componente. Di seguito sono riportati gli scenari di esempio: 
+  Un'operazione di aggiornamento con una definizione non valida pone il modello di asset in uno `FAILED` stato. È necessario annullare le modifiche recuperando la versione attiva del modello di asset e creando un'altra richiesta di aggiornamento che faccia riferimento a questa definizione valida. 
+  AWS IoT SiteWise Esiste un'applicazione in cui i clienti possono visualizzare gli asset e i modelli di asset corrispondenti. Quando un utente fa riferimento alla definizione del modello di asset corrispondente a un particolare asset e il modello di asset si trova in uno `FAILED` stato transitorio o transitorio `UPDATING``PROPAGATING`, l'ultima versione restituisce la definizione del modello di asset che non è ancora stata propagata agli asset in questione. In questo caso, è necessario restituire ai clienti la versione attiva del modello di asset. 

**Topics**
+ [Recuperate la versione attiva di un modello di asset o di un modello di componente (console)](#active-console)
+ [Recuperate la versione attiva di un modello di asset o di un modello di componente ()AWS CLI](#active-cli)

## Recuperate la versione attiva di un modello di asset o di un modello di componente (console)
<a name="active-console"></a>

Seguite questa procedura per recuperare la versione attiva di un modello di asset o di un modello di componente nella AWS IoT SiteWise console.

**Suggerimento**  
I modelli di asset e i modelli di componenti sono entrambi elencati in **Modelli** nel pannello di navigazione. Il pannello **Dettagli** del modello di asset o del modello di componente selezionato indica di che tipo si tratta.

**Per recuperare la versione attiva di un modello di asset o di un modello di componente (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Nel riquadro di navigazione selezionare **Models (Modelli)**.

1. Scegliete il modello per recuperare la versione attiva.

   1.  Se il modello è in uno `ACTIVE` stato, stai visualizzando la sua versione attiva. 

   1.  Se il modello è in uno `FAILED` stato transitorio `UPDATING` o transitorio, trova la voce **Visualizza versione attiva** in **Stato** nel pannello **Dettagli**. `PROPAGATING` 

## Recuperate la versione attiva di un modello di asset o di un modello di componente ()AWS CLI
<a name="active-cli"></a>

Utilizzate il AWS CLI per recuperare la versione attiva di un modello di asset o di un modello di componente.

Per recuperare la versione attiva di un modello di asset o di un modello di componente, utilizzate l'[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)operazione con il `assetModelVersion` parametro.

**Suggerimento**  
 AWS CLI definisce i modelli di componenti come un tipo di modello di asset. Pertanto, si utilizza la stessa [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)operazione per entrambi i tipi di modello. Il `assetModelType` campo nella risposta indica se è un `ASSET_MODEL` o un`COMPONENT_MODEL`. 

**Per recuperare la versione attiva di un modello di asset o di un modello di componente ()AWS CLI**
+ Eseguite il comando seguente per descrivere il modello. *asset-model-id*Sostituitelo con l'ID o l'ID esterno del modello di asset o del modello di componente. L'ID esterno è un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

  ```
  aws iotsitewise describe-asset-model --asset-model-id asset-model-id --asset-model-version ACTIVE
  ```

  L'operazione restituisce una risposta con i dettagli del modello. La risposta contiene un `assetModelStatus` oggetto con la seguente struttura.

  ```
  {
      ...
      "assetModelName": "string",
      "assetModelProperties": [ ... ],
      ...,
      "assetModelVersion": "string"
  }
  ```

# Modelli compositi personalizzati (componenti)
<a name="custom-composite-models"></a>

 Quando si modella un asset industriale particolarmente complesso, ad esempio un macchinario complicato composto da molte parti, può diventare una sfida mantenere i modelli di asset organizzati e gestibili.

In questi casi, puoi aggiungere modelli compositi personalizzati, o componenti, se utilizzi la console, ai modelli di asset e ai modelli di componenti esistenti. Questi vi aiutano a rimanere organizzati raggruppando le proprietà correlate e riutilizzando le definizioni dei sottocomponenti.

Esistono due tipi di modelli compositi personalizzati:
+ I modelli compositi personalizzati **in linea** definiscono un insieme di proprietà raggruppate che si applicano al modello di asset o al modello di componente a cui appartiene il modello composito personalizzato. Li utilizzate per raggruppare le proprietà correlate. Sono costituiti da un nome, una descrizione e un insieme di proprietà del modello di asset. Non sono riutilizzabili.
+ I modelli compositi omponent-model-based personalizzati **C** fanno riferimento a un modello di componente che si desidera includere nel modello di asset o nel modello di componente. Li utilizzate per includere sottoassiemi standard nel modello. Sono costituiti da un nome, una descrizione e l'ID del modello di componente a cui fanno riferimento. Non hanno proprietà proprie; il modello di componente a cui si fa riferimento fornisce le proprietà associate a tutti gli asset creati.

Le seguenti sezioni illustrano come utilizzare modelli compositi personalizzati nei progetti.

**Topics**
+ [Modelli compositi personalizzati in linea](#inline-composite-models)
+ [Component-model-based modelli compositi personalizzati](#component-based-custom-composite-models)
+ [Utilizzate i percorsi per fare riferimento alle proprietà personalizzate del modello composito](#property-paths)

## Modelli compositi personalizzati in linea
<a name="inline-composite-models"></a>

I modelli compositi personalizzati in linea consentono di organizzare il modello di asset raggruppando le proprietà correlate.

Ad esempio, supponete di voler modellare un asset robotico. Il robot include un servomotore, un alimentatore e una batteria. Ciascuna di queste parti costituenti ha le proprie proprietà che si desidera includere nel modello. È possibile definire un modello di asset denominato `robot_model` con proprietà come le seguenti.


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/custom-composite-models.html)  | 

Tuttavia, in alcuni casi, potrebbero esserci molti sottoassiemi oppure i sottoassiemi stessi potrebbero avere molte proprietà. In questi casi, potrebbero esserci così tante proprietà da rendere complicato il riferimento e la gestione in un unico elenco semplice alla radice del modello, come nell'esempio precedente.

Per gestire tali situazioni, è possibile utilizzare un modello composito personalizzato in linea per raggruppare le proprietà. Un modello composito personalizzato in linea è un modello composito personalizzato che definisce le proprie proprietà. Ad esempio, puoi modellare il tuo robot nel modo seguente.


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/custom-composite-models.html)  | 

Nell'esempio precedente, `servo``powersupply`, e `battery` sono i nomi dei modelli compositi personalizzati in linea definiti all'interno del modello di `robot_model` asset. Ciascuno di questi modelli compositi definisce quindi le proprie proprietà.

**Nota**  
In questo caso, ogni modello composito personalizzato definisce le proprie proprietà, in modo che tutte le proprietà facciano parte del modello di asset stesso (`robot_model`in questo caso). Queste proprietà non sono condivise con altri modelli di asset o modelli di componenti. Ad esempio, se avete creato un altro modello di asset che aveva anche un modello composito personalizzato in linea chiamato`servo`, apportare una modifica all'`servo`interno non `robot_model` influirebbe sulla `servo` definizione dell'altro modello di asset.  
 Se desiderate implementare tale condivisione (ad esempio, avere una sola definizione per un servo, condivisibile da tutti i vostri modelli di asset), dovreste invece creare un modello a componenti relativo al servo e quindi creare modelli **component-model-based**compositi che vi facciano riferimento. Per i dettagli, consultate la sezione seguente. 

Per informazioni su come creare modelli compositi personalizzati in linea, vedere[Crea modelli compositi personalizzati (componenti)](create-custom-composite-models.md).

## Component-model-based modelli compositi personalizzati
<a name="component-based-custom-composite-models"></a>

È possibile creare un modello di componente in AWS IoT SiteWise per definire un sottoassieme standard riutilizzabile. Dopo aver creato un modello di componente, potete aggiungere riferimenti ad esso negli altri modelli di asset e modelli di componenti. A tale scopo, aggiungete un **modello composito component-model-based personalizzato** a qualsiasi modello in cui desiderate fare riferimento al componente. È possibile aggiungere riferimenti al componente da molti modelli o più volte all'interno dello stesso modello.

In questo modo, è possibile evitare di duplicare le stesse definizioni tra i modelli. Inoltre, semplifica la manutenzione dei modelli, poiché qualsiasi modifica apportata a un modello componente si rifletterà su tutti i modelli di asset che lo utilizzano.

Ad esempio, supponete che l'impianto industriale disponga di molti tipi di apparecchiature che utilizzano tutte lo stesso tipo di servomotore. Alcuni di essi hanno molti servomotori in un'unica apparecchiatura. Crei un modello di asset per ogni tipo di apparecchiatura, ma non vuoi duplicare la definizione di `servo` ogni volta. Volete modellarlo una sola volta e utilizzarlo nei vari modelli di asset. Se successivamente apporti una modifica alla definizione di`servo`, questa verrà aggiornata in tutti i tuoi modelli e asset.

Per modellare il robot dell'esempio precedente in questo modo, potete definire servomotori, alimentatori e batterie come modelli di componenti, in questo modo.


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/custom-composite-models.html)  | 


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/custom-composite-models.html)  | 


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/custom-composite-models.html)  | 

È quindi possibile definire modelli di asset, ad esempio `robot_model` che fanno riferimento a questi componenti. Più modelli di asset possono fare riferimento allo stesso modello di componente. È inoltre possibile fare riferimento allo stesso modello di componente più volte in un unico modello di asset, ad esempio se il robot è dotato di più servomotori.


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/custom-composite-models.html)  | 

Per informazioni su come creare modelli di componenti, vedere[Crea modelli di componenti](create-component-models.md).

Per informazioni su come fare riferimento ai modelli di componenti in altri modelli, vedere[Crea modelli compositi personalizzati (componenti)](create-custom-composite-models.md).

## Utilizzate i percorsi per fare riferimento alle proprietà personalizzate del modello composito
<a name="property-paths"></a>

Quando create una proprietà su un modello di asset, un modello di componente o un modello composito personalizzato, potete farvi riferimento da altre proprietà che ne utilizzano il valore, come [trasformazioni](transforms.md) e [metriche](metrics.md).

AWS IoT SiteWise offre diversi modi per fare riferimento alla proprietà. Il modo più semplice è spesso quello di utilizzare l'ID della proprietà. Tuttavia, se la proprietà a cui desiderate fare riferimento si trova su un modello composito personalizzato, potrebbe essere più utile farvi riferimento invece tramite *il percorso*.

Un percorso è una sequenza ordinata di *segmenti di percorso* che specifica una proprietà in termini di posizione tra i modelli compositi annidati all'interno di un modello di asset e di un modello composito.

### Ottieni i percorsi delle proprietà
<a name="obtaining-property-paths"></a>

Puoi ottenere il percorso di una proprietà dal `path` campo della sua [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html).

Ad esempio, supponete di avere un modello di asset `robot_model` che contiene un modello composito personalizzato`servo`, dotato di una proprietà`position`. Se chiami [DescribeAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModelCompositeModel.html)on`servo`, la `position` proprietà elencherà un `path` campo simile al seguente: 

```
"path": [
    {
       "id": "asset model ID",
       "name": "robot_model"
    },
    {
       "id": "composite model ID",
       "name": "servo"
    },
    {
       "id": "property ID",
       "name": "position"
    }
]
```

### Utilizzo dei percorsi delle proprietà
<a name="using-property-paths"></a>

È possibile utilizzare un percorso di proprietà quando si definisce una proprietà che fa riferimento ad altre proprietà, ad esempio una trasformazione o una metrica.

Una proprietà utilizza una *variabile* per fare riferimento a un'altra proprietà. Per ulteriori informazioni sull'utilizzo delle variabili, vedere[Usa le variabili nelle espressioni delle formule](expression-variables.md).

Quando si definisce una variabile per fare riferimento a una proprietà, è possibile utilizzare l'ID della proprietà o il relativo percorso.

Per definire una variabile che utilizza il percorso della proprietà di riferimento, specificate il `propertyPath` campo del relativo valore.

Ad esempio, per definire un modello di asset con una metrica che fa riferimento a una proprietà utilizzando un percorso, potete passare un payload come questo a: [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html)

```
{
    ...
    "assetModelProperties": [
        {
            ...
            "type": {
                "metric": {
                    ...
                    "variables": [
                        {
                            "name": "variable name",
                            "value": {
                                "propertyPath": [
                                    path segments
                                ]
                            }
                        }
                    ],
                    ...
                }
            },
            ...
        },
        ...
    ],
    ...
}
```

# Interfacce del modello di asset
<a name="model-interfaces"></a>

AWS IoT SiteWise le interfacce stabiliscono gli standard per diversi modelli di asset. Definiscono una struttura comune che garantisce la coerenza pur consentendo variazioni nell'implementazione.

Le interfacce condividono la stessa struttura dei modelli di asset (proprietà, modelli compositi e gerarchie), ma non è possibile creare risorse direttamente da essi. Al contrario, le interfacce vengono applicate ai modelli di asset esistenti per garantire la standardizzazione. I modelli di componenti non sono supportati per le interfacce.

L'utilizzo delle interfacce offre diversi vantaggi:
+ Proprietà e metriche standardizzate in diverse varianti del modello di asset
+ Definizioni metriche semplificate a livello di interfaccia
+ Gestione più efficiente di gerarchie di asset complesse
+ Gestione indipendente del ciclo di vita delle proprietà per ogni variante del modello di asset
+ Collaborazione migliorata tra team in cui i team operativi si concentrano sulla rappresentazione degli asset fisici mentre i team addetti ai dati stabiliscono gli standard per tutte le apparecchiature

Ti consigliamo di creare innanzitutto i tuoi modelli di asset per modellare le tue apparecchiature industriali reali. Ogni tipo di apparecchiatura, con il proprio insieme di proprietà, può essere rappresentato dai propri modelli di asset. 

## Caso d'uso per la standardizzazione dei modelli di asset
<a name="interface-powertrain-shop-example"></a>

Le interfacce aiutano a standardizzare le proprietà tra diversi modelli di asset preservandone le caratteristiche uniche.

Ad esempio, in un'officina propulsori ci sono quattro stazioni: motore, trasmissione, differenziale e assemblaggio. Ogni stazione contiene vari tipi di apparecchiature. Ad esempio, la stazione motore include macchine CNC, ma differiscono nelle specifiche: alcune sono a 3 assi, mentre altre a 5 assi.

![\[Diagramma che mostra la gerarchia delle apparecchiature dell'officina propulsori utilizzando solo modelli e asset degli asset. Il reparto propulsori si trova nella parte superiore, mentre al secondo piano si trovano tutti i modelli di equipaggiamento relativi al motore, alla trasmissione, al differenziale e alle stazioni di assemblaggio. Al terzo livello più in basso, ci sono le singole macchine CNC suddivise per asse, derivate dal modello di base della stazione motore. Al contrario, esistono anche modelli di asset derivanti dal modello di stazione di assemblaggio. Al quarto livello, ciascuno degli asset rappresenta per nome le singole macchine CNC o i bracci robotici.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/models-interface-hierarchy.png)


Tuttavia, le interfacce consentono di creare standard per i punti in comune presenti nelle macchine CNC. È possibile utilizzare le proprietà ripetibili in un'interfaccia anziché creare modelli di asset per ogni proprietà.

Ad esempio, puoi:

1. Create modelli di asset separati per ogni categoria di tipi di macchine. In questo esempio, si tratta delle «macchine CNC a 3 assi» e delle «macchine CNC a 5 assi».

1. Definisci un'interfaccia standard con proprietà e metriche comuni. In questo esempio, `Temperature-in-C``Down-time`, e `Running-time` sono tutte proprietà comuni che si applicano a entrambe le macchine CNC.

1. Applica questa interfaccia a tutti i modelli di asset delle macchine CNC, tenendo comunque conto delle proprietà specifiche del dispositivo sui singoli modelli di asset.

![\[Diagramma che mostra come le interfacce semplificano l'organizzazione dei modelli di asset rispetto al diagramma precedente. Mostra diversi parametri ripetibili per le macchine CNC della stazione motore, ora regolate dalle interfacce che trasferiscono le varie proprietà dei modelli di macchine CNC a 3 e 5 assi, consentendo anche proprietà specifiche del dispositivo su ciascuna di esse.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/models-interface-to-asset-models.png)


È inoltre possibile definire le metriche di disponibilità a livello di interfaccia. Ad esempio, `Avail = avg(Down-time, Running-time)` calcola la disponibilità in base ai valori del tempo di inattività e del tempo di esecuzione.

L'utilizzo delle interfacce semplifica la gestione dei modelli di asset garantendo definizioni e metriche delle proprietà coerenti tra le apparecchiature applicabili, pur mantenendo le caratteristiche uniche di ogni tipo di macchina.

## Struttura e componenti
<a name="interface-structure"></a>

Le interfacce includono gli stessi tipi di proprietà dei modelli di asset: attributi, misurazioni, trasformazioni e metriche. Quando vengono sovrapposte a un modello di asset, mappate le proprietà esistenti alle relative controparti di interfaccia. Le proprietà dell'interfaccia non mappate vengono create automaticamente nel modello di asset.

Le gerarchie di interfacce definiscono le metriche di rollup, mentre le gerarchie dei modelli di asset consentono le associazioni di asset. Quando si utilizza un'interfaccia, il servizio mapperà automaticamente le gerarchie dei modelli di asset alle gerarchie di interfaccia durante il calcolo delle metriche di rollup. Dopo aver applicato un'interfaccia, le metriche di rollup vengono definite tramite la gerarchia dell'interfaccia anziché la gerarchia propria del modello di asset.

## Considerazioni
<a name="interface-considerations"></a>

Quando lavorate con le interfacce, tenete a mente queste considerazioni:
+ Il modello di asset e le proprietà dell'interfaccia possono essere mappate automaticamente per nome o mappate manualmente. Le gerarchie vengono mappate automaticamente dal servizio durante il calcolo delle metriche di rollup.
+ Non è possibile definire metriche aggiuntive nel modello di asset collegato che utilizzano metriche di interfaccia come input.
+ Un modello di asset può essere collegato a una sola interfaccia. Tuttavia, è possibile applicare più modelli di asset alla stessa interfaccia.
+ Gli allarmi non sono supportati nelle interfacce.
+ I modelli di componenti non sono supportati per le interfacce.

**Topics**
+ [Caso d'uso per la standardizzazione dei modelli di asset](#interface-powertrain-shop-example)
+ [Struttura e componenti](#interface-structure)
+ [Considerazioni](#interface-considerations)
+ [Comprendi la relazione tra modello interfaccia-asset](interface-asset-model-relationship.md)
+ [Crea un'interfaccia](interface-create.md)
+ [Applicare un'interfaccia a un modello di asset](interfaces-link-asset-model.md)
+ [Gestisci interfacce, modelli di asset collegati e proprietà](interfaces-manage.md)
+ [Esempi di interfaccia aggiuntivi](interface-additional-examples.md)

# Comprendi la relazione tra modello interfaccia-asset
<a name="interface-asset-model-relationship"></a>

Le interfacce e i modelli di asset collaborano in una relazione complementare:


**Interfacce e modelli di asset**  

| Aspetto | Interfacce | Modelli di asset | 
| --- | --- | --- | 
| Scopo | Definisci gli standard e applica la coerenza | Rappresenta risorse fisiche o logiche | 
| Creazione di risorse | Impossibile creare risorse direttamente | Utilizzato per creare risorse | 
| Properties | Definire le proprietà standard che devono essere implementate nei modelli | Può avere proprietà uniche e applicate all'interfaccia | 
| Metriche | Definire calcoli standard | Implementa metriche di interfaccia e può avere metriche aggiuntive | 
| Gerarchie | Definisci le relazioni gerarchiche di calcolo dei dati per le metriche di rollup | Definisci le relazioni gerarchiche fisiche per le associazioni di asset | 

Quando applicate un'interfaccia a un modello di asset:
+ Il modello di asset deve mappare tutte le proprietà definite nell'interfaccia.
+ Le mappature delle proprietà definiscono in che modo le proprietà dell'interfaccia corrispondono alle proprietà del modello di asset.
+ Le proprietà del modello di asset mappato devono rimanere sincronizzate con le proprietà di interfaccia corrispondenti e non possono essere modificate in modo da causare incoerenze tra le due.
+ Le proprietà dell'interfaccia non mappate vengono create automaticamente nel modello di asset.
+ Il modello di asset può avere proprietà aggiuntive oltre a quelle definite nell'interfaccia.
+ Il modello di asset implementa le metriche dell'interfaccia. Le modifiche alle metriche di interfaccia si propagano a tutti i modelli di asset che utilizzano l'interfaccia.
+ Le gerarchie di interfaccia vengono utilizzate per calcolare le metriche di rollup. Le gerarchie dei modelli di asset possono essere definite indipendentemente e il servizio le mapperà automaticamente durante il calcolo delle metriche di rollup.

Questa relazione garantisce la standardizzazione e consente al contempo la flessibilità necessaria per rappresentare diversi tipi di apparecchiature.

## Standardizza i modelli di asset esistenti
<a name="interface-standardize-existing"></a>

Sebbene le interfacce siano utili quando si progettano nuovi modelli di asset partendo da zero, sono altrettanto potenti per standardizzare i modelli di asset esistenti che potrebbero essersi evoluti indipendentemente nel tempo.

Quando lavori con modelli di asset esistenti, puoi applicare interfacce per standardizzare metriche e proprietà:

1. Identifica metriche e proprietà comuni tra i tuoi modelli di asset esistenti

1. Create un'interfaccia che definisca queste proprietà e metriche standard

1. Applica l'interfaccia ai tuoi modelli di asset esistenti utilizzando la mappatura delle proprietà

1. Utilizzate le metriche di rollup per aggregare i dati in tutta la gerarchia degli asset

Ad esempio, se disponi di modelli di asset di macchine CNC esistenti con nomi di proprietà diversi ma dati simili, come,,) `temp_celsius``temperature_c`, `machine_temp` puoi:

1. Creare un `CNC-INTERFACE` con una proprietà standardizzata `Temperature-in-C`

1. Applica questa interfaccia a ciascun modello di asset CNC, mappando le proprietà di temperatura esistenti alle proprietà dell'interfaccia `Temperature-in-C`

1. Definite le metriche di rollup nell'interfaccia che calcola le statistiche su tutte le macchine (ad esempio, la temperatura media)

Questo approccio consente di mantenere i modelli di asset esistenti, ottenendo al contempo i vantaggi della standardizzazione e del calcolo semplificato delle metriche.

## Relazioni gerarchiche
<a name="interface-asset-model-hierarchies"></a>

Gerarchia delle interfacce  
Definisce le relazioni per il calcolo e l'aggregazione dei dati tra diverse interfacce. Ad esempio, in un'impostazione di fabbrica, una gerarchia di interfacce potrebbe collegare interfacce di monitoraggio della temperatura a diversi livelli per calcolare le temperature medie. Ad esempio: macchina, linea di produzione e impianto. Quando si definisce una metrica di rollup, ad esempio`AverageTemperature`, la gerarchia dell'interfaccia determina il modo in cui tale metrica aggrega i dati dai livelli inferiori ai livelli superiori.

Gerarchia dei modelli di asset  
Rappresenta l'effettiva struttura fisica o logica degli asset. Ad esempio, un modello di asset di una macchina CNC potrebbe far parte di un modello di asset di linea di produzione, che a sua volta appartiene a un modello di asset di fabbrica. Questa gerarchia riflette le relazioni con il mondo reale e aiuta a organizzare gli asset in modo che corrispondano alla loro disposizione fisica o alla loro struttura aziendale. Se combinate con le gerarchie di interfacce, le gerarchie dei modelli di asset aiutano il sistema a capire quali risorse devono essere incluse nei calcoli di rollup.

Questi due tipi di gerarchia funzionano insieme: le gerarchie di interfaccia definiscono come calcolare le metriche aggregate, mentre le gerarchie dei modelli di asset definiscono quali risorse specifiche devono essere incluse in tali calcoli.

## Metriche dell'interfaccia e calcoli di rollup
<a name="interface-metrics-integration"></a>

Le interfacce eccellono nella definizione di metriche standardizzate che possono essere applicate a diversi modelli di asset. Ciò è particolarmente utile per le metriche di rollup che aggregano i dati provenienti da più asset.

Quando definisci le metriche in un'interfaccia, queste vengono applicate automaticamente a tutti i modelli di asset che implementano l'interfaccia. Le metriche possono fare riferimento a proprietà definite nell'interfaccia, utilizzare funzioni di aggregazione per calcolare le statistiche sugli asset e garantire calcoli coerenti su tutti i modelli di asset implementati. Ad esempio, puoi definire una metrica di disponibilità in un'interfaccia che calcola il rapporto tra tempo di esecuzione e tempo totale:

```
{
  "name": "Availability",
  "dataType": "DOUBLE",
  "type": {
    "metric": {
      "expression": "Running-time / (Running-time + Down-time) * 100",
      "variables": [
        {
          "name": "Running-time",
          "value": {
            "propertyId": "${Running-time}"
          }
        },
        {
          "name": "Down-time",
          "value": {
            "propertyId": "${Down-time}"
          }
        }
      ],
      "window": {
        "tumbling": {
          "interval": "1h"
        }
      }
    }
  },
  "unit": "Percent"
}
```

Quando questa interfaccia viene applicata a più modelli di asset, la metrica di disponibilità viene calcolata in modo uniforme per tutti, anche se i nomi delle proprietà sottostanti sono diversi (grazie alla mappatura delle proprietà).

Per ulteriori informazioni sulla definizione delle metriche e sull'utilizzo delle funzioni di aggregazione, consulta. [Aggrega i dati provenienti da proprietà e altre risorse (metriche)](metrics.md)

### Metriche di rollup con interfacce
<a name="interface-rollup-metrics-subsection"></a>

Le interfacce possono anche definire metriche di rollup che aggregano i dati tra le risorse in una gerarchia. Quando definite una gerarchia in un'interfaccia e la applicate a un modello di asset, potete creare metriche che aggregano i dati degli asset secondari.

Ad esempio, puoi definire una metrica che calcola la temperatura media di tutte le macchine CNC di una fabbrica:

```
{
  "name": "AverageTemperature",
  "dataType": "DOUBLE",
  "type": {
    "metric": {
      "expression": "avg(Temperature-in-C)",
      "variables": [
        {
          "name": "Temperature-in-C",
          "value": {
            "propertyId": "${Temperature-in-C}",
            "hierarchyId": "${CNC-machines}"
          }
        }
      ],
      "window": {
        "tumbling": {
          "interval": "1h"
        }
      }
    }
  },
  "unit": "Celsius"
}
```

Questa metrica utilizza la funzione di `avg()` aggregazione per calcolare la temperatura media di tutte le macchine CNC della gerarchia. Il `hierarchyId` parametro specifica quale gerarchia utilizzare per l'aggregazione.

Quando questa interfaccia viene applicata a un modello di asset, la metrica di rollup aggrega automaticamente i dati di tutte le risorse secondarie che corrispondono alla mappatura gerarchica.

# Crea un'interfaccia
<a name="interface-create"></a>

È possibile creare interfacce utilizzando la AWS IoT SiteWise console o il AWS CLI.

------
#### [ Console ]

1. Vai alla [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) e scegli **Modelli** dal pannello di navigazione.

1. Scegli **Crea interfaccia**.

1. Inserisci un **nome** univoco e una **descrizione** opzionale per la tua interfaccia. Se lo desideri, puoi anche aggiungere un **ID esterno** a tua scelta.

1. Aggiungi proprietà alla tua interfaccia. Puoi aggiungere attributi, misurazioni, trasformazioni e metriche proprio come con i modelli di asset. Per ulteriori informazioni, consulta [Create un modello di asset (console)](create-asset-models.md#create-asset-model-console).

1. Scegliete **Crea interfaccia** per creare l'interfaccia.

1. Se disponi di gerarchie per definire le relazioni padre-figlio tra le interfacce, scegli **Aggiungi gerarchia** e inserisci i dettagli pertinenti.

------
#### [ AWS CLI ]

Per creare un'interfaccia, utilizzate l'`CreateAssetModel`operazione con il parametro impostato su: `assetModelType` `INTERFACE`

```
aws iotsitewise create-asset-model \
  --asset-model-name "CNC-INTERFACE" \
  --asset-model-description "Standard interface for CNC machines" \
  --asset-model-type "INTERFACE" \
  --asset-model-properties '[
    {
      "name": "Temperature-in-C",
      "dataType": "DOUBLE",
      "type": {
        "measurement": {}
      },
      "unit": "Celsius"
    },
    {
      "name": "Down-time",
      "dataType": "DOUBLE",
      "type": {
        "measurement": {}
      },
      "unit": "Minutes"
    },
    {
      "name": "Running-time",
      "dataType": "DOUBLE",
      "type": {
        "measurement": {}
      },
      "unit": "Minutes"
    },
    {
      "name": "Availability",
      "dataType": "DOUBLE",
      "type": {
        "metric": {
          "expression": "Running-time / (Running-time + Down-time) * 100",
          "variables": [
            {
              "name": "Running-time",
              "value": {
                "propertyId": "${Running-time}"
              }
            },
            {
              "name": "Down-time",
              "value": {
                "propertyId": "${Down-time}"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "1h"
            }
          }
        }
      },
      "unit": "Percent"
    }
  ]'
```

------

# Applicare un'interfaccia a un modello di asset
<a name="interfaces-link-asset-model"></a>

Quando si applica un'interfaccia a un modello di asset, si associano le proprietà e le gerarchie del modello di asset alle relative controparti di interfaccia. Per le proprietà di interfaccia non mappate, le proprietà corrispondenti vengono create automaticamente nel modello di asset. Dopo il collegamento, il servizio impedisce modifiche al modello di asset che violerebbero gli standard di interfaccia.

È possibile aggiungere un modello di asset a un'interfaccia alla volta. Tuttavia, è possibile collegare più modelli di asset a un'unica interfaccia.

------
#### [ Console ]

1. Vai alla [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) e scegli **Modelli** dal pannello di navigazione.

1. Seleziona il modello di asset a cui desideri applicare un'interfaccia.

1. Scegliete **Link asset model** nella sezione **Link asset models**. Viene visualizzata la pagina dell'**interfaccia Link**.

1. Nella sezione **Modelli e interfacce di asset**, selezionate un modello di asset dal menu **a discesa Seleziona un modello da collegare**.

1. Nella sezione **Property mappings**, mappate ogni proprietà dell'interfaccia a una proprietà del modello di asset esistente o create una nuova proprietà. AWS IoT SiteWise collega automaticamente le proprietà con i nomi corrispondenti nel modello di asset e nell'interfaccia.

1. Esamina le mappature delle proprietà e scegli l'interfaccia **Link**.

------
#### [ AWS CLI ]

Per applicare un'interfaccia a un modello di asset, utilizzate l'`PutAssetModelInterfaceRelationship`operazione:

```
aws iotsitewise put-asset-model-interface-relationship \
  --asset-model-id "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ 
  --interface-asset-model-id "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE" \
  --property-mapping-configuration '{
    "createMissingProperty": true,
    "matchByPropertyName": true,   
    "overrides": [
      {
        "assetModelPropertyId": "a1b2c3d4-5678-90ab-cdef-44444EXAMPLE",
        "interfaceAssetModelPropertyId": "a1b2c3d4-5678-90ab-cdef-33333EXAMPLE"      
      }
    ]
  }'
```

Per recuperare informazioni su una relazione di interfaccia, utilizzate l'`DescribeAssetModelInterfaceRelationship`operazione:

```
aws iotsitewise describe-asset-model-interface-relationship \
  --asset-model-id "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \
  --interface-asset-model-id "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE"
```

Per elencare tutti i modelli di asset a cui è applicata un'interfaccia specifica, utilizzate l'`ListInterfaceRelationships`operazione:

```
aws iotsitewise list-interface-relationships \
  --interface-asset-model-id "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE" \
  --max-results 10
```

Per eliminare una relazione di interfaccia, utilizzate l'`DeleteAssetModelInterfaceRelationship`operazione:

```
aws iotsitewise delete-asset-model-interface-relationship \
  --asset-model-id "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \
  --interface-asset-model-id "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE"
```

------

# Gestisci interfacce, modelli di asset collegati e proprietà
<a name="interfaces-manage"></a>

Dopo aver creato le interfacce e averle collegate ai modelli di asset, potete gestire le relazioni, modificare ed eliminare le interfacce tramite la console o. AWS CLI

## Modifica una relazione tra interfaccia e modello di asset
<a name="interface-edit"></a>

Per modificare la relazione di un'interfaccia con un modello di asset, procedi come segue nella AWS IoT SiteWise console o tramite AWS CLI:

------
#### [ Console ]

1. Vai alla [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) e scegli **Modelli** dal pannello di navigazione.

1. Seleziona l'interfaccia che desideri modificare.

1. Scegliete il modello di asset per modificarlo e modificarlo.

   Puoi seguire le [Applicare un'interfaccia a un modello di asset](interfaces-link-asset-model.md) istruzioni per collegare un modello di asset diverso.

1. Scegli l'**interfaccia Applica** per salvare le modifiche.

------
#### [ AWS CLI ]

Per modificare una relazione tra interfaccia e modello di asset, utilizza l'`PutAssetModelInterfaceRelationship`azione. Sostituisci *your-asset-model-id* e *your-interface-asset-model-id* con il tuo valore. Per ulteriori informazioni, consulta [PutAssetModelInterfaceRelationship](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_PutAssetModelInterfaceRelationship.html) nella *documentazione di riferimento dell’API AWS IoT SiteWise *.

```
aws iotsitewise put-asset-model-interface-relationship \
    --asset-model-id your-asset-model-id \
    --interface-asset-model-id your-interface-asset-model-id
```

------

## Modificare una mappatura delle proprietà dell'interfaccia
<a name="interface-edit-property"></a>

Per modificare la proprietà di un'interfaccia, procedi come segue nella AWS IoT SiteWise console o tramite AWS CLI:

------
#### [ Console ]

1. Vai alla [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) e scegli **Modelli** dal pannello di navigazione.

1. Seleziona l'interfaccia per la quale desideri modificare le mappature delle proprietà. **Viene visualizzata la pagina Modifica mappature delle proprietà**.

1. Nella sezione **Mappature delle proprietà**, filtrate l'elenco per trovare le mappature delle proprietà appropriate.

1. **Modificate le proprietà utilizzando la colonna delle proprietà Modello.**

------
#### [ AWS CLI ]

Per modificare una relazione tra interfaccia e modello di asset, utilizzate l'`PutAssetModelInterfaceRelationship`azione. Sostituisci *your-asset-model-id* e *your-interface-asset-model-id* con il tuo valore. Per ulteriori informazioni, consulta [PutAssetModelInterfaceRelationship](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_PutAssetModelInterfaceRelationship.html) nella *documentazione di riferimento dell’API AWS IoT SiteWise *.

```
aws iotsitewise put-asset-model-interface-relationship \
    --asset-model-id your-asset-model-id \
    --interface-asset-model-id your-interface-asset-model-id \
```

------

## Elenca le interfacce collegate a un modello di asset
<a name="interface-list"></a>

Per ottenere un elenco di interfacce applicate a un modello di asset, effettuate le seguenti operazioni nella AWS IoT SiteWise console o tramite: AWS CLI

------
#### [ Console ]

1. Vai alla [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) e scegli **Modelli** dal pannello di navigazione.

1. Nella sezione **Modelli**, scegli il modello o l'interfaccia di asset appropriati. È possibile visualizzare un elenco delle interfacce applicate o dei modelli di asset collegati nella pagina dei dettagli corrispondente del modello. 
   + Quando visualizzate una particolare interfaccia, consultate la sezione **Modelli di asset collegati**.
   + Quando visualizzate un particolare modello di asset, consultate la sezione **Interfacce applicate**.

------
#### [ AWS CLI ]

Per elencare le interfacce, è possibile utilizzare l'`ListInterfaceRelationships`operazione. Sostituire *your-interface-asset-model-id* con il proprio valore. Per ulteriori informazioni, consulta [ListInterfaceRelationships](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListInterfaceRelationships.html) nella *documentazione di riferimento dell’API AWS IoT SiteWise *.

```
aws iotsitewise list-interface-relationships \
    --interface-asset-model-id your-interface-asset-model-id \
    [--next-token your-next-token] \
    [--max-results 20]
```

------

## Visualizza i dettagli della relazione tra interfaccia e modello di asset
<a name="interface-view-details"></a>

Per visualizzare i dettagli di un'interfaccia applicata a un modello di asset, procedi come segue nella AWS IoT SiteWise console o tramite AWS CLI:

------
#### [ Console ]

Visualizza i dettagli delle interfacce applicate e dei modelli di asset collegati.

1. Vai alla [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) e scegli **Modelli** dal pannello di navigazione.

1. Nella sezione **Modelli**, cerca il modello o l'interfaccia di asset appropriati. Seleziona il **nome** del modello o dell'interfaccia per aprire una pagina contenente maggiori dettagli.

------
#### [ AWS CLI ]

Per visualizzare i dettagli dell'interfaccia per una relazione tra interfaccia e modello di asset, utilizzate l'`DescribeAssetModelInterfaceRelationship`azione. Sostituisci *your-asset-model-id* e *your-interface-asset-model-id* con il tuo valore. Per ulteriori informazioni, consulta [DescribeAssetModelInterfaceRelationship](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModelInterfaceRelationship.html) nella *documentazione di riferimento dell’API AWS IoT SiteWise *.

```
aws iotsitewise describe-asset-model-interface-relationship \
    --asset-model-id your-asset-model-id \
    --interface-asset-model-id your-interface-asset-model-id
```

------

## Rimuovi un'interfaccia applicata a un modello di asset
<a name="interface-remove"></a>

Per rimuovere un'interfaccia applicata a un modello di asset, effettuate le seguenti operazioni nella AWS IoT SiteWise console o tramite AWS CLI:

------
#### [ Console ]

Ti consigliamo di rimuovere un'interfaccia tramite il modello di asset. Puoi anche eliminare un'interfaccia o scollegare un'interfaccia tramite la pagina di una particolare interfaccia.

1. Vai alla [AWS IoT SiteWise console](https://console.aws.amazon.com/iotsitewise/) e scegli **Modelli** dal pannello di navigazione.

1. Seleziona il modello di asset appropriato da cui rimuovere la relazione di interfaccia.

1. Scegliete il **modello di asset Unlink**.

------
#### [ AWS CLI ]

Per rimuovere una relazione di interfaccia da un modello di asset, puoi utilizzare l'`DeleteAssetModelInterfaceRelationship`azione. Sostituire *your-interface-asset-model-id* con il proprio valore. Per ulteriori informazioni, consulta [DeleteAssetModelInterfaceRelationship](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAssetModelInterfaceRelationship.html) nella *documentazione di riferimento dell’API AWS IoT SiteWise *.

```
aws iotsitewise delete-asset-model-interface-relationship \
    --asset-model-id your-asset-model-id \
    --interface-asset-model-id your-interface-asset-model-id
```

------

# Esempi di interfaccia aggiuntivi
<a name="interface-additional-examples"></a>

Ecco altri esempi di come le interfacce possono essere utilizzate in diversi scenari industriali:

## apparecchiature per la generazione di energia
<a name="interface-example-energy"></a>

Un'azienda di produzione di energia può utilizzare interfacce per standardizzare le metriche tra diversi tipi di apparecchiature di generazione:

```
{
  "assetModelName": "GENERATOR-INTERFACE",
  "assetModelDescription": "Standard interface for power generators",
  "assetModelType": "INTERFACE",
  "assetModelProperties": [
    {
      "name": "ActivePower",
      "dataType": "DOUBLE",
      "type": { "measurement": {} },
      "unit": "MW"
    },
    {
      "name": "ReactivePower",
      "dataType": "DOUBLE",
      "type": { "measurement": {} },
      "unit": "MVAR"
    },
    {
      "name": "Frequency",
      "dataType": "DOUBLE",
      "type": { "measurement": {} },
      "unit": "Hz"
    },
    {
      "name": "PowerFactor",
      "dataType": "DOUBLE",
      "type": {
        "metric": {
          "expression": "cos(atan(ReactivePower / ActivePower))",
          "variables": [
            {
              "name": "ActivePower",
              "value": { "propertyId": "${ActivePower}" }
            },
            {
              "name": "ReactivePower",
              "value": { "propertyId": "${ReactivePower}" }
            }
          ],
          "window": { "tumbling": { "interval": "5m" } }
        }
      },
      "unit": "None"
    }
  ]
}
```

Questa interfaccia può essere applicata a vari modelli di impianti di generazione (turbine a gas, turbine a vapore, turbine eoliche) per garantire parametri di potenza coerenti in tutta la flotta.

## Impianti per il trattamento delle acque
<a name="interface-example-water"></a>

Un fornitore di servizi idrici può utilizzare interfacce per standardizzare il monitoraggio tra gli impianti di trattamento:

```
{
  "assetModelName": "WATER-QUALITY-INTERFACE",
  "assetModelDescription": "Standard interface for water quality monitoring",
  "assetModelType": "INTERFACE",
  "assetModelProperties": [
    {
      "name": "pH",
      "dataType": "DOUBLE",
      "type": { "measurement": {} },
      "unit": "pH"
    },
    {
      "name": "Turbidity",
      "dataType": "DOUBLE",
      "type": { "measurement": {} },
      "unit": "NTU"
    },
    {
      "name": "DissolvedOxygen",
      "dataType": "DOUBLE",
      "type": { "measurement": {} },
      "unit": "mg/L"
    },
    {
      "name": "QualityIndex",
      "dataType": "DOUBLE",
      "type": {
        "metric": {
          "expression": "(pH >= 6.5 && pH <= 8.5 ? 100 : 50) * (Turbidity < 1 ? 1 : 0.8) * (DissolvedOxygen > 5 ? 1 : 0.7)",
          "variables": [
            {
              "name": "pH",
              "value": { "propertyId": "${pH}" }
            },
            {
              "name": "Turbidity",
              "value": { "propertyId": "${Turbidity}" }
            },
            {
              "name": "DissolvedOxygen",
              "value": { "propertyId": "${DissolvedOxygen}" }
            }
          ],
          "window": { "tumbling": { "interval": "1h" } }
        }
      },
      "unit": "Score"
    }
  ]
}
```

Questa interfaccia garantisce che la qualità dell'acqua venga misurata in modo coerente in tutti gli impianti di trattamento, indipendentemente dalle configurazioni specifiche delle apparecchiature.

## Interfacce gerarchiche
<a name="interface-example-hierarchical"></a>

Le interfacce possono essere organizzate gerarchicamente per supportare metriche aggregate a diversi livelli operativi:

1. Interfaccia a livello di **apparecchiatura** (ad esempio,) `PUMP-INTERFACE`
   + Proprietà: portata, pressione, consumo energetico, vibrazioni
   + Metriche: efficienza, punteggio di salute

1. **Interfaccia a livello di processo** (ad esempio,) `PUMPING-STATION-INTERFACE`
   + Proprietà: flusso totale, pressione media, potenza totale
   + Metriche: efficienza della stazione, costo operativo per volume
   + Gerarchia: contiene apparecchiature `PUMP-INTERFACE`

1. **Interfaccia a livello di struttura** (ad esempio,) `WATER-FACILITY-INTERFACE`
   + Proprietà: produttività dell'impianto, consumo di energia, utilizzo di sostanze chimiche
   + Metriche: efficienza dell'impianto, costo per unità di volume, impronta di carbonio
   + Gerarchia: contiene i processi `PUMPING-STATION-INTERFACE`

Questo approccio gerarchico consente di calcolare le metriche a ogni livello, mantenendo la coerenza nell'intera operazione.

# Configura l'oggetto AWS IoT SiteWise IDs
<a name="object-ids"></a>

 AWS IoT SiteWise definisce vari tipi di oggetti persistenti, come asset, modelli di asset, proprietà e gerarchie. Tutti questi oggetti dispongono di identificatori univoci che è possibile utilizzare per recuperarli, aggiornarli ed eliminarli. 

 AWS IoT SiteWise offre ai clienti diverse opzioni per la creazione di ID. AWS IoT SiteWise ne genera uno automaticamente per te al momento della creazione dell'oggetto. Gli utenti possono anche fornire i propri dati IDs ai tuoi oggetti. 

**Topics**
+ [Lavora con oggetti UUIDs](#object-uuids)
+ [Usa esterno IDs](#external-ids)

## Lavora con oggetti UUIDs
<a name="object-uuids"></a>

 Ogni oggetto persistente AWS IoT SiteWise ha un [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) per identificarlo. Ad esempio, i modelli di asset hanno un ID del modello di asset, gli asset hanno un ID di asset e così via. Questo ID viene assegnato al momento della creazione dell'oggetto e rimane invariato per tutta la durata dell'oggetto. 

 Quando crei un nuovo oggetto, per impostazione predefinita AWS IoT SiteWise genera un ID univoco per te. Puoi anche fornire il tuo ID al momento della creazione in formato UUID. 

**Nota**  
UUIDs **deve** essere univoco a livello globale all'interno AWS della regione in cui è stato creato e per lo stesso tipo di oggetto. Quando AWS IoT SiteWise genera automaticamente un ID per te, è sempre unico. Se scegli il tuo ID, assicurati che sia unico.

Ad esempio, se crei un nuovo modello di asset chiamando [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html), puoi fornire il tuo UUID nel `assetModelId` campo opzionale della richiesta.

Al contrario, se si omette `assetModelId` dalla richiesta, AWS IoT SiteWise genera un UUID per il nuovo modello di asset.

## Usa esterno IDs
<a name="external-ids"></a>

*Per definire il proprio ID in un formato diverso dall'UUID, è possibile assegnare un ID esterno.* Ad esempio, puoi farlo se riutilizzi un ID che stai utilizzando in un sistema che non lo è o se desideri renderlo più AWS leggibile dall'uomo. IDs Gli esterni hanno un formato più flessibile. Puoi usarli per fare riferimento ai tuoi oggetti nelle operazioni AWS IoT SiteWise API in cui altrimenti utilizzeresti l'UUID. 

 Come il UUIDs, ogni ID esterno deve essere unico nel suo contesto. Ad esempio, non puoi avere due modelli di asset con lo stesso ID esterno. Inoltre, come il UUIDs, un oggetto può avere un solo ID esterno nel corso della sua vita, che non può cambiare. 

### Differenze tra esterno IDs e UUIDs
<a name="external-ids-differences-from-uuid"></a>

L'esterno IDs si differenzia dai UUIDs seguenti modi:
+ Ogni oggetto ha un UUID, ma gli oggetti esterni IDs sono opzionali.
+ AWS IoT SiteWise non genera mai elementi esterni. IDs Li fornisci tu stesso.
+ Se l'oggetto non ne ha già uno, puoi assegnare un ID esterno in qualsiasi momento.

### Formato esterno IDs
<a name="external-id-format"></a>

Un ID esterno valido ha le seguenti proprietà:
+ Ha una lunghezza compresa tra 2 e 128 caratteri.
+ Il primo e l'ultimo carattere devono essere alfanumerici (A-Z, a-z, 0-9).
+ I caratteri diversi dal primo e dall'ultimo devono essere alfanumerici oppure devono essere uno dei seguenti: `_-.:`

Ad esempio, un ID esterno deve essere conforme alla seguente espressione regolare:

`[a-zA-Z0-9][a-zA-Z0-9_\-.:]*[a-zA-Z0-9]+`

### Oggetti di riferimento con oggetti esterni IDs
<a name="external-id-references"></a>

In molti punti in cui è possibile fare riferimento a un oggetto utilizzando il relativo UUID, è possibile utilizzare invece il relativo ID esterno, se ne ha uno. A tale scopo, aggiungete l'ID esterno alla stringa. `externalId:`

Ad esempio, supponiamo di avere un modello di asset il cui UUID (asset model ID) è`a1b2c3d4-5678-90ab-cdef-11111EXAMPLE`, che ha anche l'ID esterno. `myExternalId` Chiama [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)per avere maggiori dettagli al riguardo. È possibile utilizzare uno dei seguenti valori come valore di`assetModelId`:
+ Con lo stesso Asset Model ID (UUID): `a1b2c3d4-5678-90ab-cdef-11111EXAMPLE`
+ Con l'ID esterno: `externalId:myExternalId`

```
aws iotsitewise describe-asset-model --asset-model-id a1b2c3d4-5678-90ab-cdef-11111EXAMPLE
aws iotsitewise describe-asset-model --asset-model-id externalId:myExternalId
```

**Nota**  
Il `externalId:` prefisso, di per sé, non fa parte dell'ID esterno. È necessario fornire il prefisso solo quando si fornisce un ID esterno a un'operazione API che accetta uno UUIDs o più elementi esterni. IDs Ad esempio, fornite il prefisso quando interrogate o aggiornate un oggetto esistente.  
Quando definite un ID esterno per un oggetto, ad esempio quando create un modello di asset, non includete il prefisso.

 IDs In questo modo è possibile utilizzare external anziché UUIDs in questo modo per molte operazioni API AWS IoT SiteWise, ma non per tutte. Ad esempio, il [GetAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValue.html), **deve** usare UUIDs; non supporta l'utilizzo di ID esterni.

Per determinare se una particolare operazione API supporta questo utilizzo, consulta l'[API Reference](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Operations.html).

# Crea modelli di asset, modelli di componenti e interfacce per AWS IoT SiteWise
<a name="create-asset-and-component-models"></a>

AWS IoT SiteWise modelli di asset, modelli di componenti e interfacce favoriscono la standardizzazione dei dati industriali. I modelli di asset definiscono l'asset complessivo, ad esempio una turbina eolica o una linea di produzione. I modelli di componenti rappresentano i singoli componenti che compongono l'asset, come pale, generatori o sensori. Le interfacce applicano gli standard su diversi modelli di asset. Creando questi modelli, è possibile organizzare e strutturare i dati degli asset in modo da riflettere le relazioni e le gerarchie reali delle apparecchiature industriali, facilitando il monitoraggio, l'analisi e la manutenzione.

Un modello di asset o modello di componente contiene un nome, una descrizione, proprietà di asset e (facoltativamente) modelli compositi personalizzati che raggruppano le proprietà o che fanno riferimento ai modelli di componenti per i sottoassiemi. 

In AWS IoT SiteWise, potete creare modelli di asset, modelli di componenti e interfacce per rappresentare la struttura e le proprietà degli asset industriali e dei relativi componenti. 
+ Utilizzate un **modello di asset** per creare risorse. Oltre alle funzionalità sopra elencate, un modello di asset può contenere anche definizioni gerarchiche che definiscono le relazioni tra gli asset.
+ Un **modello di componente** rappresenta un sottoassieme all'interno di un modello di asset o di un altro modello di componente. Quando create un modello di componente, potete aggiungere riferimenti ad esso nei modelli di asset e in altri modelli di componenti. Tuttavia, non è possibile creare risorse direttamente dai modelli di componenti.
+ Un'**interfaccia** applica gli standard su diversi modelli di asset. Le interfacce definiscono proprietà, metriche e gerarchie comuni che devono essere implementate dai modelli di asset. Non è possibile creare risorse direttamente dalle interfacce, ma aiutano a garantire la coerenza tra tipi di risorse simili.

Dopo aver creato un modello di asset o un modello di componente, potete creare modelli compositi personalizzati per raggruppare le proprietà o fare riferimento a modelli di componenti esistenti. È inoltre possibile collegare le interfacce ai modelli di asset per applicare la standardizzazione.

Per informazioni dettagliate su come creare modelli di asset, modelli di componenti e interfacce, consultate le seguenti sezioni.

**Topics**
+ [Crea modelli di asset in AWS IoT SiteWise](create-asset-models.md)
+ [Crea modelli di componenti](create-component-models.md)
+ [Definite le proprietà dei dati](asset-properties.md)
+ [Crea modelli compositi personalizzati (componenti)](create-custom-composite-models.md)

# Crea modelli di asset in AWS IoT SiteWise
<a name="create-asset-models"></a>

AWS IoT SiteWise i modelli di asset favoriscono la standardizzazione dei dati industriali. Un modello include un nome e una descrizione, oltre a proprietà e definizioni gerarchiche di asset. Ad esempio, è possibile definire un modello di turbina eolica con proprietà di temperatura, rotazioni al minuto (RPM) e potenza. Quindi, è possibile definire un modello di parco eolico con una proprietà di potenza netta e una definizione di gerarchia di turbine eoliche.

**Nota**  
Si consiglia di modellare l'operazione partendo dai nodi di livello inferiore. Ad esempio, crea il modello di turbina eolica prima di creare il modello di centrale eolica. Le definizioni della gerarchia delle risorse contengono riferimenti a modelli di asset esistenti. Con questo approccio, puoi definire le gerarchie di asset durante la creazione dei modelli.
I modelli di asset non possono contenere altri modelli di asset. Se dovete definire un modello a cui potete fare riferimento come sottoassieme all'interno di un altro modello, dovreste invece creare un modello componente-->. Per ulteriori informazioni, consulta [Crea modelli di componenti](create-component-models.md).

Le sezioni seguenti descrivono come utilizzare la AWS IoT SiteWise console o l'API per creare modelli di asset. Nelle sezioni seguenti vengono inoltre descritti i diversi tipi di proprietà e gerarchie degli asset che puoi utilizzare per creare modelli.

**Topics**
+ [Create un modello di asset (console)](#create-asset-model-console)
+ [Crea un modello di asset (AWS CLI)](#create-asset-model-cli)
+ [Modelli di asset di esempio](#asset-model-examples)
+ [Definite le gerarchie dei modelli di asset](define-asset-hierarchies.md)

## Create un modello di asset (console)
<a name="create-asset-model-console"></a>

È possibile utilizzare la AWS IoT SiteWise console per creare un modello di asset. La AWS IoT SiteWise console offre varie funzionalità, come il completamento automatico delle formule, che possono aiutarti a definire modelli di asset validi.

**Per creare un modello di asset (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Nel riquadro di navigazione selezionare **Models (Modelli)**.

1. Scegliete **Crea modello di asset**.

1. Nella pagina **Crea modello**, esegui le operazioni seguenti:

   1. Immetti un **nome** per il modello di asset, ad esempio **Wind Turbine** o **Wind Turbine Model**. Questo nome deve essere univoco rispetto a tutti i modelli del tuo account in questa regione.

   1. (Facoltativo) Aggiungi un **ID esterno** per il modello. Si tratta di un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

   1. (Facoltativo) Aggiungi le **definizioni misurazione ** per il modello. Le misurazioni rappresentano flussi di dati provenienti dall'apparecchiatura. Per ulteriori informazioni, consulta [Definisci i flussi di dati provenienti dalle apparecchiature (misurazioni)](measurements.md).

   1. (Facoltativo) Aggiungi le **definizioni di trasformazione** per il modello. Le trasformazioni sono formule che mappano i dati da un modulo all'altro. Per ulteriori informazioni, consulta [Trasforma i dati (trasformazioni)](transforms.md).

   1. (Facoltativo) Aggiungi le **definizioni parametro** per il modello. Le metriche sono formule che aggregano i dati su intervalli di tempo. Le metriche possono inserire dati dalle risorse associate, in modo da poter calcolare valori che rappresentano l'operazione o un sottoinsieme dell'operazione. Per ulteriori informazioni, consulta [Aggrega i dati provenienti da proprietà e altre risorse (metriche)](metrics.md). 

   1. (Facoltativo) Aggiungi le **definizioni gerarchiche** per il modello. Le gerarchie sono relazioni tra risorse. Per ulteriori informazioni, consulta [Definite le gerarchie dei modelli di asset](define-asset-hierarchies.md).

   1. (Facoltativo) Aggiungi i tag per il modello di asset. Per ulteriori informazioni, consulta [Tagga le tue AWS IoT SiteWise risorse](tag-resources.md).

   1. Scegli **Crea modello**.

   Quando si crea un modello di asset, la AWS IoT SiteWise console accede alla pagina del nuovo modello. In questa pagina puoi vedere lo **stato** del modello che inizialmente è **CREAZIONE IN CORSO**. Questa pagina si aggiorna automaticamente, quindi attendi l'aggiornamento dello stato del modello.
**Nota**  
Il processo di creazione del modello di asset può richiedere fino a qualche minuto, nei casi di maggiore complessità. Dopo che lo stato del modello di asset è **ATTIVO**, potete utilizzare il modello di asset per creare risorse. Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md).

1. (Facoltativo) Dopo aver creato il modello di asset, potete configurare il modello di asset per l'edge. Per ulteriori informazioni su SiteWise Edge, consulta[Configura le funzionalità edge su AWS IoT SiteWise Edge](edge-data-collection-and-processing.md). 

   1. Nella pagina del modello, scegli **Configure for Edge**.
**Nota**  
La funzionalità Data Processing Pack (DPP) non è più disponibile per i nuovi clienti. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [Data processing pack availability change](https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html).

   1. Nella pagina di configurazione del modello, scegli la configurazione del bordo per il tuo modello. Questo controlla dove AWS IoT SiteWise è possibile calcolare e archiviare le proprietà associate a questo modello di asset. Per ulteriori informazioni sulla configurazione del modello per l'edge, consulta. [Configura una sorgente OPC UA in SiteWise Edge](configure-opcua-source.md)

   1. Per la **configurazione edge personalizzata**, scegliete la posizione in cui desiderate AWS IoT SiteWise calcolare e archiviare ciascuna delle proprietà del modello di asset.
**Nota**  
Le trasformazioni e le metriche associate devono essere configurate per la stessa posizione. Per ulteriori informazioni sulla configurazione del modello per l'edge, consulta. [Configura una sorgente OPC UA in SiteWise Edge](configure-opcua-source.md)

   1. Scegli **Save** (Salva). Nella pagina del modello, la **configurazione di Edge** dovrebbe ora essere **configurata**.

## Crea un modello di asset (AWS CLI)
<a name="create-asset-model-cli"></a>

È possibile utilizzare AWS Command Line Interface (AWS CLI) per creare un modello di asset.

Utilizza l'operazione [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) per creare un modello di asset con proprietà e gerarchie. Questa operazione prevede un payload con la seguente struttura.

```
{
  "assetModelType": "ASSET_MODEL",
  "assetModelName": "String",
  "assetModelDescription": "String",
  "assetModelProperties": Array of AssetModelProperty,
  "assetModelHierarchies": Array of AssetModelHierarchyDefinition
}
```

**Per creare un modello di asset (AWS CLI)**

1. Crea un file denominato `asset-model-payload.json` e copia il seguente oggetto JSON nel file.

   ```
   {
     "assetModelType": "ASSET_MODEL",
     "assetModelName": "",
     "assetModelDescription": "",
     "assetModelProperties": [
   
     ],
     "assetModelHierarchies": [
   
     ],
     "assetModelCompositeModels": [
   
     ]
   }
   ```

1. Utilizza l'editor di testo JSON preferito per modificare il file `asset-model-payload.json` come segue:

   1. Immetti un nome (`assetModelName`) per il modello di asset, ad esempio **Wind Turbine** o **Wind Turbine Model**. In questo caso, questo nome deve essere univoco per tutti i modelli di asset e i modelli di componenti del tuo account Regione AWS.

   1. (Facoltativo) Inserite un ID esterno (`assetModelExternalId`) per il modello di asset. Si tratta di un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

   1. (Facoltativo) Immetti una descrizione (`assetModelDescription`) per il modello di asset o rimuovi la coppia chiave-valore `assetModelDescription`.

   1. (Facoltativo) Definisci le proprietà dell'asset (`assetModelProperties`) per il modello. Per ulteriori informazioni, consulta [Definite le proprietà dei dati](asset-properties.md).

   1. (Facoltativo) Definisci le gerarchie dell'asset (`assetModelHierarchies`) per il modello. Per ulteriori informazioni, consulta [Definite le gerarchie dei modelli di asset](define-asset-hierarchies.md).

   1. (Facoltativo) Definite gli allarmi per il modello. Gli allarmi monitorano altre proprietà in modo da poter identificare quando le apparecchiature o i processi richiedono attenzione. Ogni definizione di allarme è un modello composito (`assetModelCompositeModels`) che standardizza l'insieme di proprietà utilizzate dall'allarme. Per ulteriori informazioni, consultare [Monitora i dati con allarmi in AWS IoT SiteWise](industrial-alarms.md) e [Definisci gli allarmi sui modelli di asset in AWS IoT SiteWise](define-alarms.md).

   1. (Facoltativo) Aggiungi i tag (`tags`) per il modello di asset. Per ulteriori informazioni, consulta [Tagga le tue AWS IoT SiteWise risorse](tag-resources.md).

1. Esegui il comando seguente per creare un modello di asset dalla definizione nel file JSON.

   ```
   aws iotsitewise create-asset-model --cli-input-json file://asset-model-payload.json
   ```

   L'operazione restituisce una risposta contenente l'`assetModelId` univoco al quale fai riferimento quando crei un asset. La risposta contiene anche lo stato del modello (`assetModelStatus.state`) che inizialmente è `CREATING`. Lo stato del modello di asset è `CREATING` fino a quando le modifiche non si propagano.
**Nota**  
Il processo di creazione del modello di asset può richiedere fino a qualche minuto, nei casi di maggiore complessità. Per verificare lo stato attuale del modello di asset, utilizzate l'[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)operazione specificando il. `assetModelId` Una volta contrassegnato dallo stato `ACTIVE`, il modello potrà essere utilizzato per creare asset. Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md).

1. (Facoltativo) Crea modelli compositi personalizzati per il tuo modello di asset. Con i modelli compositi personalizzati, è possibile raggruppare le proprietà all'interno del modello o includere un sottoassieme facendo riferimento a un modello di componente. Per ulteriori informazioni, consulta [Crea modelli compositi personalizzati (componenti)](create-custom-composite-models.md).

## Modelli di asset di esempio
<a name="asset-model-examples"></a>

Questa sezione contiene esempi di definizioni di modelli di asset che è possibile utilizzare per creare modelli di asset con and. AWS CLI AWS IoT SiteWise SDKs Questi modelli di asset rappresentano una turbina eolica e un parco eolico. Gli asset delle turbine eoliche acquisiscono i dati grezzi dei sensori e calcolano valori come la potenza e la velocità media del vento. Gli asset del parco eolico calcolano valori come la potenza totale per tutte le turbine eoliche del parco eolico.

**Topics**
+ [Modello di asset turbina eolica](#example-wind-turbine)
+ [Modello di asset centrale eolica](#example-wind-farm)

### Modello di asset turbina eolica
<a name="example-wind-turbine"></a>

Il seguente modello di asset rappresenta una turbina in una centrale eolica. La turbina eolica acquisisce i dati dei sensori per calcolare valori come la potenza e la velocità media del vento.

**Nota**  
Questo modello di esempio è simile al modello di turbina eolica mostrato nella demo. AWS IoT SiteWise Per ulteriori informazioni, consulta [Usa la AWS IoT SiteWise demo](getting-started-demo.md).

```
{
  "assetModelType": "ASSET_MODEL",
  "assetModelName": "Wind Turbine Asset Model",
  "assetModelDescription": "Represents a turbine in a wind farm.",
  "assetModelProperties": [
    {
      "name": "Location",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Renton"
        }
      }
    },
    {
      "name": "Make",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Amazon"
        }
      }
    },
    {
      "name": "Model",
      "dataType": "INTEGER",
      "type": {
        "attribute": {
          "defaultValue": "500"
        }
      }
    },
    {
      "name": "Torque (KiloNewton Meter)",
      "dataType": "DOUBLE",
      "unit": "kNm",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "Wind Direction",
      "dataType": "DOUBLE",
      "unit": "Degrees",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "RotationsPerMinute",
      "dataType": "DOUBLE",
      "unit": "RPM",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "Wind Speed",
      "dataType": "DOUBLE",
      "unit": "m/s",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "RotationsPerSecond",
      "dataType": "DOUBLE",
      "unit": "RPS",
      "type": {
        "transform": {
          "expression": "rpm / 60",
          "variables": [
            {
              "name": "rpm",
              "value": {
                "propertyId": "RotationsPerMinute"
              }
            }
          ]
        }
      }
    },
    {
      "name": "Overdrive State",
      "dataType": "DOUBLE",
      "type": {
        "transform": {
          "expression": "gte(torque, 3)",
          "variables": [
            {
              "name": "torque",
              "value": {
                "propertyId": "Torque (KiloNewton Meter)"
              }
            }
          ]
        }
      }
    },
    {
      "name": "Average Power",
      "dataType": "DOUBLE",
      "unit": "Watts",
      "type": {
        "metric": {
          "expression": "avg(torque) * avg(rps) * 2 * 3.14",
          "variables": [
            {
              "name": "torque",
              "value": {
                "propertyId": "Torque (Newton Meter)"
              }
            },
            {
              "name": "rps",
              "value": {
                "propertyId": "RotationsPerSecond"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    },
    {
      "name": "Average Wind Speed",
      "dataType": "DOUBLE",
      "unit": "m/s",
      "type": {
        "metric": {
          "expression": "avg(windspeed)",
          "variables": [
            {
              "name": "windspeed",
              "value": {
                "propertyId": "Wind Speed"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    },
    {
      "name": "Torque (Newton Meter)",
      "dataType": "DOUBLE",
      "unit": "Nm",
      "type": {
        "transform": {
          "expression": "knm * 1000",
          "variables": [
            {
              "name": "knm",
              "value": {
                "propertyId": "Torque (KiloNewton Meter)"
              }
            }
          ]
        }
      }
    },
    {
      "name": "Overdrive State Time",
      "dataType": "DOUBLE",
      "unit": "Seconds",
      "type": {
        "metric": {
          "expression": "statetime(overdrive_state)",
          "variables": [
            {
              "name": "overdrive_state",
              "value": {
                "propertyId": "Overdrive State"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    }
  ],
  "assetModelHierarchies": []
}
```

### Modello di asset centrale eolica
<a name="example-wind-farm"></a>

Il seguente modello di asset rappresenta una centrale eolica che comprende più turbine eoliche. Questo modello di asset definisce una [gerarchia](define-asset-hierarchies.md) rispetto al modello di turbina eolica. Ciò consente al parco eolico di calcolare i valori (come la potenza media) a partire dai dati di tutte le turbine eoliche del parco eolico.

**Nota**  
Questo modello di esempio è simile al modello di parco eolico illustrato nella AWS IoT SiteWise demo. Per ulteriori informazioni, consulta [Usa la AWS IoT SiteWise demo](getting-started-demo.md).

Questo modello di asset dipende da [Modello di asset turbina eolica](#example-wind-turbine). Sostituisci i valori `propertyId` e `childAssetModelId` con quelli di un modello di asset turbina eolica esistente.

```
{
  "assetModelName": "Wind Farm Asset Model",
  "assetModelDescription": "Represents a wind farm.",
  "assetModelProperties": [
    {
      "name": "Code",
      "dataType": "INTEGER",
      "type": {
        "attribute": {
          "defaultValue": "300"
        }
      }
    },
    {
      "name": "Location",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Renton"
        }
      }
    },
    {
      "name": "Reliability Manager",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Mary Major"
        }
      }
    },
    {
      "name": "Total Overdrive State Time",
      "dataType": "DOUBLE",
      "unit": "seconds",
      "type": {
        "metric": {
          "expression": "sum(overdrive_state_time)",
          "variables": [
            {
              "name": "overdrive_state_time",
              "value": {
                "propertyId": "ID of Overdrive State Time property in Wind Turbine Asset Model",
                "hierarchyId": "Turbine Asset Model"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    },
    {
      "name": "Total Average Power",
      "dataType": "DOUBLE",
      "unit": "Watts",
      "type": {
        "metric": {
          "expression": "sum(turbine_avg_power)",
          "variables": [
            {
              "name": "turbine_avg_power",
              "value": {
                "propertyId": "ID of Average Power property in Wind Turbine Asset Model",
                "hierarchyId": "Turbine Asset Model"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    }
  ],
  "assetModelHierarchies": [
    {
      "name": "Turbine Asset Model",
      "childAssetModelId": "ID of Wind Turbine Asset Model"
    }
  ]
}
```

# Definite le gerarchie dei modelli di asset
<a name="define-asset-hierarchies"></a>

È possibile definire gerarchie di modelli di asset per creare associazioni logiche tra i modelli di asset utilizzati nelle operazioni industriali. Ad esempio, è possibile definire un parco eolico composto da parchi eolici onshore e offshore. Un parco eolico onshore contiene una turbina e un'ubicazione onshore. Un parco eolico offshore contiene una turbina e un'ubicazione offshore.

![\[AWS IoT SiteWise gerarchie di parchi eolici tra modelli di asset.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/asset-model-hierarchies.png)


Quando si associa un modello di asset figlio a un modello di asset principale tramite una gerarchia, le metriche del modello di asset principale possono inserire dati dalle metriche del modello di asset figlio. È possibile utilizzare le gerarchie e le metriche dei modelli di asset per calcolare statistiche che forniscono informazioni dettagliate sulla propria operazione o su un sottoinsieme di essa. Per ulteriori informazioni, consulta [Aggrega i dati provenienti da proprietà e altre risorse (metriche)](metrics.md).

Ogni gerarchia definisce una relazione tra un modello di asset principale e un modello di asset figlio. In un modello di asset principale, è possibile definire più gerarchie per lo stesso modello di asset figlio. Ad esempio, se nei parchi eolici sono presenti due diversi tipi di turbine eoliche, in cui tutte le turbine eoliche sono rappresentate dallo stesso modello di asset, è possibile definire una gerarchia per ogni tipo. Quindi, è possibile definire le metriche nel modello del parco eolico per calcolare statistiche indipendenti e combinate per ogni tipo di turbina eolica.

Un modello di asset principale può essere associato a più modelli di asset secondari. Ad esempio, se disponete di un parco eolico onshore e un parco eolico offshore rappresentati da due diversi modelli di asset, potete associare questi modelli di asset allo stesso modello di asset del parco eolico principale. 

Un modello di asset figlio può anche essere associato a più modelli di asset principali. Ad esempio, se disponete di due diversi tipi di parchi eolici, in cui tutte le turbine eoliche sono rappresentate dallo stesso modello di asset, potete associare il modello di asset delle turbine eoliche a diversi modelli di asset di parchi eolici. 

**Nota**  
Quando si definisce una gerarchia di modelli di asset, il modello di asset figlio deve essere `ACTIVE` o avere una versione precedente. `ACTIVE` Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md).

Dopo aver definito i modelli di asset gerarchici e aver creato gli asset, puoi associare gli asset per completare la relazione padre-figlio. Per ulteriori informazioni, consultare [Crea risorse per modelli di asset in AWS IoT SiteWise](create-assets.md) e [Associare e dissociare gli asset](add-associated-assets.md).

**Topics**
+ [Definite le gerarchie dei modelli di asset (console)](#define-asset-hierarchies-console)
+ [Definire le gerarchie degli asset ()AWS CLI](#define-asset-hierarchies-cli)

## Definite le gerarchie dei modelli di asset (console)
<a name="define-asset-hierarchies-console"></a>

Quando si definisce una gerarchia per un modello di asset nella AWS IoT SiteWise console, si specificano i seguenti parametri:
+ **Nome della gerarchia: il nome** della gerarchia, ad esempio. **Wind Turbines**
+ Modello **gerarchico: il modello** di asset secondario.
+ **ID esterno della gerarchia** (opzionale): si tratta di un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

Per ulteriori informazioni, consulta [Create un modello di asset (console)](create-asset-models.md#create-asset-model-console).

## Definire le gerarchie degli asset ()AWS CLI
<a name="define-asset-hierarchies-cli"></a>

Quando definite una gerarchia per un modello di asset con l' AWS IoT SiteWise API, specificate i seguenti parametri:
+ `name`— Il nome della gerarchia, ad esempio. **Wind Turbines**
+ `childAssetModelId`— L'ID o l'ID esterno del modello di asset secondario per la gerarchia. È possibile utilizzare l'[ListAssetModels](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html)operazione per trovare l'ID di un modello di asset esistente.

**Example Definizione della gerarchia di esempio**  
L'esempio seguente mostra una gerarchia di modelli di asset che rappresenta la relazione tra un parco eolico e le turbine eoliche. Questo oggetto è un esempio di. [AssetModelHierarchy](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelHierarchy.html) Per ulteriori informazioni, consulta [Crea un modello di asset (AWS CLI)](create-asset-models.md#create-asset-model-cli).  

```
{
  ...
  "assetModelHierarchies": [
    {
      "name": "Wind Turbines",
      "childAssetModelId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE"
    },
  ]
}
```

# Crea modelli di componenti
<a name="create-component-models"></a>

Utilizzate i modelli di AWS IoT SiteWise componenti per definire sottoassiemi a cui potete fare riferimento dai modelli di asset o da altri modelli di componenti. In questo modo, è possibile riutilizzare la definizione del componente su più altri modelli o più volte all'interno dello stesso modello.

Il processo di definizione di un modello di componente è molto simile alla definizione di un modello di asset. Analogamente a un modello di asset, un modello di componente ha un nome, una descrizione e proprietà di asset. Tuttavia, i modelli di componenti non possono includere definizioni della gerarchia degli asset, poiché i modelli di componenti stessi non possono essere utilizzati per creare risorse direttamente. Inoltre, i modelli di componenti non possono definire allarmi.

Ad esempio, è possibile definire un componente per un servomotore con proprietà di temperatura del motore, temperatura dell'encoder e resistenza di isolamento. Quindi, potete definire un modello di asset per apparecchiature che contengono servomotori, come una macchina CNC.

**Nota**  
Si consiglia di modellare l'operazione partendo dai nodi di livello inferiore. Ad esempio, create il componente del servomotore prima di creare il modello di asset della macchina CNC. I modelli di asset contengono riferimenti a modelli di componenti esistenti.
Non è possibile creare una risorsa direttamente da un modello di componente. Per creare una risorsa che utilizza il componente, è necessario creare un modello di risorsa per la risorsa. Quindi, create un modello composito personalizzato che faccia riferimento al componente. Per ulteriori informazioni sulla creazione di modelli di asset, consulta [Crea modelli di asset in AWS IoT SiteWise](create-asset-models.md) Per ulteriori informazioni sulla creazione di modelli compositi personalizzati, consulta[Crea modelli compositi personalizzati (componenti)](create-custom-composite-models.md).

Le sezioni seguenti descrivono come utilizzare l' AWS IoT SiteWise API per creare modelli di componenti.

**Topics**
+ [Crea un modello di componente (AWS CLI)](#create-component-model-cli)
+ [Esempio di modello di componente](#component-model-example)

## Crea un modello di componente (AWS CLI)
<a name="create-component-model-cli"></a>

È possibile utilizzare AWS Command Line Interface (AWS CLI) per creare un modello di componente.

Utilizzate l'[CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html)operazione per creare un modello di componente con proprietà. Questa operazione prevede un payload con la seguente struttura:

```
{
  "assetModelType": "COMPONENT_MODEL",
  "assetModelName": "String",
  "assetModelDescription": "String",
  "assetModelProperties": Array of AssetModelProperty,
}
```

**Per creare un modello di componente ()AWS CLI**

1. Create un file chiamato `component-model-payload.json` e poi copiate il seguente oggetto JSON nel file:

   ```
   {
     "assetModelType": "COMPONENT_MODEL",
     "assetModelName": "",
     "assetModelDescription": "",
     "assetModelProperties": [
   
     ]
   }
   ```

1. Utilizza l'editor di testo JSON preferito per modificare il file `component-model-payload.json` come segue:

   1. Immettete un nome (`assetModelName`) per il modello del componente, ad esempio **Servo Motor** o**Servo Motor Model**. In questo caso, questo nome deve essere univoco per tutti i modelli di asset e i modelli di componenti del tuo account Regione AWS.

   1. (Facoltativo) Inserite un ID esterno (`assetModelExternalId`) per il modello del componente. Si tratta di un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

   1. (Facoltativo) Immetti una descrizione (`assetModelDescription`) per il modello di asset o rimuovi la coppia chiave-valore `assetModelDescription`.

   1. (Facoltativo) Definite le proprietà degli asset (`assetModelProperties`) per il modello del componente. Per ulteriori informazioni, consulta [Definite le proprietà dei dati](asset-properties.md).

   1. (Facoltativo) Aggiungi i tag (`tags`) per il modello di asset. Per ulteriori informazioni, consulta [Tagga le tue AWS IoT SiteWise risorse](tag-resources.md).

1. Eseguite il comando seguente per creare un modello di componente dalla definizione nel file JSON.

   ```
   aws iotsitewise create-asset-model --cli-input-json file://component-model-payload.json
   ```

   L'operazione restituisce una risposta che contiene il `assetModelId` riferimento a cui si fa riferimento quando si aggiunge un riferimento al modello di componente in un modello di asset o in un altro modello di componente. La risposta contiene anche lo stato del modello (`assetModelStatus.state`) che inizialmente è `CREATING`. Lo stato del modello di componente è valido `CREATING` fino alla propagazione delle modifiche.
**Nota**  
Il processo di creazione del modello di componente può richiedere fino a qualche minuto per i modelli complessi. Per verificare lo stato corrente del modello di componente, utilizzate l'[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)operazione specificando il`assetModelId`. Una volta raggiunto lo stato del modello di componente`ACTIVE`, potete aggiungere riferimenti al modello di componente nei modelli di asset o in altri modelli di componenti. Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md).

1. (Facoltativo) Create modelli compositi personalizzati per il modello di componente. Con i modelli compositi personalizzati, è possibile raggruppare le proprietà all'interno del modello o includere un sottoassieme facendo riferimento a un altro modello di componente. Per ulteriori informazioni, consulta [Crea modelli compositi personalizzati (componenti)](create-custom-composite-models.md). 

## Esempio di modello di componente
<a name="component-model-example"></a>

Questa sezione contiene un esempio di definizione del modello di componente che è possibile utilizzare per creare un modello di componente con AWS CLI and AWS IoT SiteWise SDKs. Questo modello di componente rappresenta un servomotore che può essere utilizzato all'interno di un'altra apparecchiatura, ad esempio una macchina CNC.

**Topics**
+ [Modello di componente del servomotore](#example-servo-motor)

### Modello di componente del servomotore
<a name="example-servo-motor"></a>

Il seguente modello di componente rappresenta un servomotore che può essere utilizzato all'interno di apparecchiature come macchine CNC. Il servomotore fornisce varie misurazioni, come temperature e resistenza elettrica. Queste misurazioni sono disponibili come proprietà sugli asset creati da modelli di asset che fanno riferimento al modello dei componenti del servomotore.

```
{
    "assetModelName": "ServoMotor",
    "assetModelType": "COMPONENT_MODEL",
    "assetModelProperties": [
        {
            "dataType": "DOUBLE",
            "name": "Servo Motor Temperature",
            "type": {
            "measurement": {}
            },
            "unit": "Celsius"
        },
        {
            "dataType": "DOUBLE",
            "name": "Spindle speed",
            "type": {
            "measurement": {}
            },
            "unit": "rpm"
        }
    ]
}
```

# Definite le proprietà dei dati
<a name="asset-properties"></a>

*Le proprietà degli asset* sono le strutture all'interno di ogni asset che contengono i dati degli asset. Esistono vari tipi di proprietà:
+ **Attributi**: proprietà generalmente statiche di una risorsa, come il produttore del dispositivo o l'area geografica. Per ulteriori informazioni, consulta [Definisci dati statici (attributi)](attributes.md).
+ **Misurazioni**: i flussi di dati dei sensori del dispositivo raw di un asset, come i valori della velocità di rotazione con data e ora o i valori di temperatura con data e ora in gradi Celsius. Una misurazione è definita da un alias del flusso di dati. Per ulteriori informazioni, consulta [Definisci i flussi di dati provenienti dalle apparecchiature (misurazioni)](measurements.md).
+ **Trasformazioni**: i valori delle serie temporali trasformati di una risorsa, come i valori di temperatura con data e ora in gradi Fahrenheit. Una trasformazione è definita da un'espressione con le sue variabili. Per ulteriori informazioni, consulta [Trasforma i dati (trasformazioni)](transforms.md).
+ **Metriche: i** dati di una risorsa aggregati in un intervallo di tempo specificato, ad esempio la temperatura media oraria. Un parametro è definito da un intervallo di tempo e un'espressione con le sue variabili. Le espressioni metriche possono inserire le proprietà metriche degli asset associati, in modo da poter calcolare le metriche che rappresentano l'operazione o un sottoinsieme dell'operazione. Per ulteriori informazioni, consulta [Aggrega i dati provenienti da proprietà e altre risorse (metriche)](metrics.md).

Per ulteriori informazioni, consulta [Crea modelli di asset in AWS IoT SiteWise](create-asset-models.md).

Per un esempio di come utilizzare misurazioni, trasformazioni e parametri per calcolare l'efficienza complessiva delle apparecchiature (OEE), consulta [Calcola l'OEE in AWS IoT SiteWise](calculate-oee.md).

**Topics**
+ [Definisci dati statici (attributi)](attributes.md)
+ [Definisci i flussi di dati provenienti dalle apparecchiature (misurazioni)](measurements.md)
+ [Trasforma i dati (trasformazioni)](transforms.md)
+ [Aggrega i dati provenienti da proprietà e altre risorse (metriche)](metrics.md)
+ [Usa espressioni di formule](formula-expressions.md)

# Definisci dati statici (attributi)
<a name="attributes"></a>

*Gli attributi delle risorse* rappresentano informazioni generalmente statiche, come il produttore del dispositivo o la posizione geografica. Ogni asset include gli attributi del modello da cui è stato creato.

**Topics**
+ [Definire gli attributi (console)](#define-attributes-console)
+ [Definisci gli attributi ()AWS CLI](#define-attributes-cli)

## Definire gli attributi (console)
<a name="define-attributes-console"></a>

Quando si definisce un attributo per un modello di asset nella AWS IoT SiteWise console, si specificano i seguenti parametri:
+ <a name="asset-property-name-console"></a>**Nome**: il nome della proprietà.
+ **Valore predefinito**: (Facoltativo) Il valore predefinito per questo attributo. Gli asset creati dal modello hanno questo valore per l'attributo. Per ulteriori informazioni su come sostituire il valore predefinito in un asset creato da un modello, consulta [Aggiorna i valori degli attributi](update-attribute-values.md).
+ <a name="asset-property-data-type-console"></a>**Tipo di dati**: il tipo di dati della proprietà, che è uno dei seguenti:
  + **String**: una stringa con un massimo di 1024 byte.
  + **Numero intero: un numero intero** con segno a 32 bit con intervallo [-2.147.483.648, 2.147.483.647].
  + **Doppio**: un numero in virgola mobile con intervallo [-10^100, 10^100] e precisione doppia IEEE 754.
  + **`false`Booleano — `true` o.**
+ **ID esterno**: (Facoltativo) Si tratta di un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

Per ulteriori informazioni, consulta [Create un modello di asset (console)](create-asset-models.md#create-asset-model-console).

## Definisci gli attributi ()AWS CLI
<a name="define-attributes-cli"></a>

Quando definite un attributo per un modello di asset con l' AWS IoT SiteWise API, specificate i seguenti parametri:
+ <a name="asset-property-name-cli"></a>`name`— Il nome della proprietà.
+ `defaultValue`— (Facoltativo) Il valore predefinito per questo attributo. Gli asset creati dal modello hanno questo valore per l'attributo. Per ulteriori informazioni su come sostituire il valore predefinito in un asset creato da un modello, consulta [Aggiorna i valori degli attributi](update-attribute-values.md).
+ <a name="asset-property-data-type-cli"></a>`dataType`— Il tipo di dati della proprietà, che è uno dei seguenti:
  + `STRING`— Una stringa con un massimo di 1024 byte.
  + `INTEGER`— Un numero intero con segno a 32 bit con intervallo [-2.147.483.648, 2.147.483.647].
  + `DOUBLE`— Un numero in virgola mobile con intervallo [-10^100, 10^100] e precisione doppia IEEE 754.
  + `BOOLEAN`— `true` oppure. `false`
+ `externalId`— (Facoltativo) Si tratta di un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

**Example Definizione di attributo di esempio**  
Nell'esempio seguente viene illustrato un attributo che rappresenta il numero di modello di un asset con un valore predefinito. Questo oggetto è un esempio di un oggetto [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)che contiene un [attributo](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Attribute.html). Puoi specificare questo oggetto come parte del payload della richiesta [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) per creare una proprietà dell'attributo. Per ulteriori informazioni, consulta [Crea un modello di asset (AWS CLI)](create-asset-models.md#create-asset-model-cli).  

```
{
...
"assetModelProperties": [
{
  "name": "Model number",
  "dataType": "STRING",
  "type": {
    "attribute": {
      "defaultValue": "BLT123"
    }
  }
}
],
...
}
```

# Definisci i flussi di dati provenienti dalle apparecchiature (misurazioni)
<a name="measurements"></a>

Una *misurazione* rappresenta il flusso di dati grezzi del sensore di un dispositivo, ad esempio valori di temperatura con data e ora o valori di rotazioni al minuto (RPM).

**Topics**
+ [Definisci le misurazioni (console)](#define-measurements-console)
+ [Definisci le misurazioni ()AWS CLI](#define-measurements-cli)

## Definisci le misurazioni (console)
<a name="define-measurements-console"></a>

Quando definite una misurazione per un modello di asset nella AWS IoT SiteWise console, specificate i seguenti parametri:
+ <a name="asset-property-name-console"></a>**Nome**: il nome della proprietà.
+ <a name="asset-property-unit-console"></a>**Unità** — (Facoltativo) L'unità scientifica della proprietà, ad esempio mm o Celsius.
+ <a name="asset-property-data-type-console"></a>**Tipo di dati**: il tipo di dati della proprietà, che è uno dei seguenti:
  + **String**: una stringa con un massimo di 1024 byte.
  + **Numero intero: un numero intero** con segno a 32 bit con intervallo [-2.147.483.648, 2.147.483.647].
  + **Doppio**: un numero in virgola mobile con intervallo [-10^100, 10^100] e precisione doppia IEEE 754.
  + **`false`Booleano — `true` o.**
+ **ID esterno**: (Facoltativo) Si tratta di un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

Per ulteriori informazioni, consulta [Create un modello di asset (console)](create-asset-models.md#create-asset-model-console).

## Definisci le misurazioni ()AWS CLI
<a name="define-measurements-cli"></a>

Quando definite una misurazione per un modello di asset con l' AWS IoT SiteWise API, specificate i seguenti parametri:
+ <a name="asset-property-name-cli"></a>`name`— Il nome della proprietà.
+ <a name="asset-property-data-type-cli"></a>`dataType`— Il tipo di dati della proprietà, che è uno dei seguenti:
  + `STRING`— Una stringa con un massimo di 1024 byte.
  + `INTEGER`— Un numero intero con segno a 32 bit con intervallo [-2.147.483.648, 2.147.483.647].
  + `DOUBLE`— Un numero in virgola mobile con intervallo [-10^100, 10^100] e precisione doppia IEEE 754.
  + `BOOLEAN`— `true` oppure. `false`
+ <a name="asset-property-unit-cli"></a>`unit`— (Facoltativo) L'unità scientifica della proprietà, ad esempio mm o Celsius.
+ `externalId`— (Facoltativo) Si tratta di un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

**Example Definizione di misurazione di esempio**  
Nell'esempio seguente viene illustrata una misurazione che rappresenta le letture del sensore di temperatura di un asset. Questo oggetto è un esempio di un oggetto [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)che contiene una [misurazione](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Measurement.html). Puoi specificare questo oggetto come parte del payload della richiesta [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) per creare una proprietà di misurazione. Per ulteriori informazioni, consulta [Crea un modello di asset (AWS CLI)](create-asset-models.md#create-asset-model-cli).  
La struttura [di misurazione](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Measurement.html) è una struttura vuota quando si definisce un modello di asset perché successivamente si configura ogni risorsa per utilizzare flussi di dati di dispositivo unici. Per ulteriori informazioni su come collegare la proprietà di misurazione di un asset al flusso di dati dei sensori di un dispositivo, consulta[Gestisci i flussi di dati per AWS IoT SiteWise](manage-data-streams.md).  

```
{
      ...
      "assetModelProperties": [
      {
          "name": "Temperature C",
          "dataType": "DOUBLE",
          "type": {
              "measurement": {}
          },
          "unit": "Celsius"
      }
  ],
      ...
}
```

# Trasforma i dati (trasformazioni)
<a name="transforms"></a>

Le *trasformazioni* sono espressioni matematiche che mappano i punti dati delle proprietà degli asset da un modulo all'altro. Un'espressione di trasformazione è costituita da variabili di proprietà degli asset, valori letterali, operatori e funzioni. I punti dati trasformati mantengono una one-to-one relazione con i punti dati di input. AWS IoT SiteWise calcola un nuovo punto dati trasformato ogni volta che una delle proprietà di input riceve un nuovo punto dati.

**Nota**  
Per gli aggiornamenti delle proprietà con lo stesso timestamp, i valori di output possono essere sovrascritti dagli aggiornamenti di altre proprietà in entrata.

Ad esempio, se l'asset ha un flusso di misurazione della temperatura denominato `Temperature_C` con unità in Celsius, è possibile convertire ogni punto dati in Fahrenheit con la formula `Temperature_F = 9/5 * Temperature_C + 32`. Ogni volta AWS IoT SiteWise che riceve un punto dati nel flusso `Temperature_C` di misurazione, il `Temperature_F` valore corrispondente viene calcolato in pochi secondi e disponibile come proprietà. `Temperature_F`

Se la trasformazione contiene più di una variabile, il punto dati che arriva prima avvia immediatamente il calcolo. Consideriamo un esempio in cui un produttore di componenti utilizza una trasformazione per monitorare la qualità del prodotto. Utilizzando uno standard diverso in base al tipo di parte, il produttore utilizza le seguenti misurazioni per rappresentare il processo:
+ `Part_Number`- Una stringa che identifica il tipo di parte.
+ `Good_Count`- Un numero intero che aumenta di uno se la parte soddisfa lo standard.
+ `Bad_Count`- Un numero intero che aumenta di uno se la parte non soddisfa lo standard.

Il produttore crea anche una trasformazione`Quality_Monitor`, che è uguale ` if(eq(Part_Number, "BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal")` a.

Questa trasformazione monitora la percentuale di parti difettose prodotte per un tipo di parte specifico. Se il numero di parte è BLT123 e la percentuale di parti difettose supera il 10 percento (0,1), la trasformazione viene restituita. `"Caution"` In caso contrario, la trasformazione viene `"Normal"` restituita.

**Nota**  
Se `Part_Number` riceve un nuovo punto dati prima di altre misurazioni, la `Quality_Monitor` trasformazione utilizza il nuovo `Part_Number` valore e i `Bad_Count` valori `Good_Count` e più recenti. Per evitare errori, `Good_Count` reimpostatelo `Bad_Count` prima del successivo ciclo di produzione.
Utilizzate [le metriche](metrics.md) se desiderate valutare le espressioni solo dopo che tutte le variabili hanno ricevuto nuovi punti dati.

**Topics**
+ [Definisci le trasformazioni (console)](#define-transforms-console)
+ [Definisci le trasformazioni ()AWS CLI](#define-transform-cli)

## Definisci le trasformazioni (console)
<a name="define-transforms-console"></a>

Quando definite una trasformazione per un modello di asset nella AWS IoT SiteWise console, specificate i seguenti parametri:
+ <a name="asset-property-name-console"></a>**Nome**: il nome della proprietà.
+ <a name="asset-property-unit-console"></a>**Unità** — (Facoltativo) L'unità scientifica della proprietà, ad esempio mm o Celsius.
+ **Tipo di dati**: il tipo di dati della trasformazione, che può essere **Double** o **String**.
+ **ID esterno**: (Facoltativo) Si tratta di un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.
+ **Formula**: l'espressione di trasformazione. Le espressioni di trasformazione non possono utilizzare funzioni di aggregazione o funzioni temporali. Per aprire la funzione di completamento automatico, inizia a digitare o premi il tasto freccia giù. Per ulteriori informazioni, consulta [Usa espressioni di formule](formula-expressions.md).
**Importante**  <a name="transform-input-rules"></a>
Le trasformazioni possono immettere proprietà di tipo intero, doppio, booleano o stringa. I valori booleani vengono convertiti in `0` (false) e (true). `1`  
Le trasformazioni devono inserire una o più proprietà che non sono attributi e un numero qualsiasi di proprietà degli attributi. AWS IoT SiteWise calcola un nuovo punto dati trasformato ogni volta che la proprietà di input che non è un attributo riceve un nuovo punto dati. I nuovi valori degli attributi non avviano gli aggiornamenti delle trasformazioni. La stessa frequenza di richiesta per le operazioni API relative ai dati delle proprietà degli asset si applica ai risultati del calcolo delle trasformazioni.  
<a name="formula-output-rules"></a>Le espressioni delle formule possono generare solo valori doppi o stringhe. Le espressioni annidate possono generare altri tipi di dati, ad esempio stringhe, ma la formula nel suo insieme deve restituire un numero o una stringa. È possibile utilizzare la [funzione jp](expression-string-functions.md#jp-definition) per convertire una stringa in un numero. Il valore booleano deve essere 1 (vero) o 0 (falso). Per ulteriori informazioni, consulta [Valori indefiniti, infiniti e di overflow](expression-tutorials.md#undefined-values).

Per ulteriori informazioni, consulta [Create un modello di asset (console)](create-asset-models.md#create-asset-model-console).

## Definisci le trasformazioni ()AWS CLI
<a name="define-transform-cli"></a>

Quando definite una trasformazione per un modello di asset con l' AWS IoT SiteWise API, specificate i seguenti parametri:
+ <a name="asset-property-name-cli"></a>`name`— Il nome della proprietà.
+ <a name="asset-property-unit-cli"></a>`unit`— (Facoltativo) L'unità scientifica della proprietà, ad esempio mm o Celsius.
+ `dataType`— Il tipo di dati della trasformazione, che deve essere `DOUBLE` o`STRING`.
+ `externalId`— (Facoltativo) Si tratta di un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.
+ `expression`— L'espressione di trasformazione. Le espressioni di trasformazione non possono utilizzare funzioni di aggregazione o funzioni temporali. Per ulteriori informazioni, consulta [Usa espressioni di formule](formula-expressions.md).
+ `variables`— L'elenco di variabili che definisce le altre proprietà della risorsa da utilizzare nell'espressione. Ogni struttura di variabile contiene un nome semplice da utilizzare nell'espressione e una struttura `value` che specifica la proprietà da collegare alla variabile stessa. La struttura `value` contiene le seguenti informazioni:
  + `propertyId`— L'ID della proprietà da cui immettere i valori. È possibile utilizzare il nome della proprietà anziché il relativo ID.
**Importante**  <a name="transform-input-rules"></a>
Le trasformazioni possono immettere proprietà di tipo intero, doppio, booleano o stringa. I valori booleani vengono convertiti in `0` (false) e (true). `1`  
Le trasformazioni devono inserire una o più proprietà che non sono attributi e un numero qualsiasi di proprietà degli attributi. AWS IoT SiteWise calcola un nuovo punto dati trasformato ogni volta che la proprietà di input che non è un attributo riceve un nuovo punto dati. I nuovi valori degli attributi non avviano gli aggiornamenti delle trasformazioni. La stessa frequenza di richiesta per le operazioni API relative ai dati delle proprietà degli asset si applica ai risultati del calcolo delle trasformazioni.  
<a name="formula-output-rules"></a>Le espressioni delle formule possono generare solo valori doppi o stringhe. Le espressioni annidate possono generare altri tipi di dati, ad esempio stringhe, ma la formula nel suo insieme deve restituire un numero o una stringa. È possibile utilizzare la [funzione jp](expression-string-functions.md#jp-definition) per convertire una stringa in un numero. Il valore booleano deve essere 1 (vero) o 0 (falso). Per ulteriori informazioni, consulta [Valori indefiniti, infiniti e di overflow](expression-tutorials.md#undefined-values).

**Example definizione di trasformazione**  
Nell'esempio seguente viene illustrata una proprietà di trasformazione che converte i dati di misurazione della temperatura di un asset da Celsius a Fahrenheit. Questo oggetto è un esempio di un oggetto [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)che contiene un [Transform](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Transform.html). Puoi specificare questo oggetto come parte del payload della richiesta [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) per creare una proprietà di trasformazione. Per ulteriori informazioni, consulta [Crea un modello di asset (AWS CLI)](create-asset-models.md#create-asset-model-cli).  

```
{
...
"assetModelProperties": [
...
{
  "name": "Temperature F",
  "dataType": "DOUBLE",
  "type": {
    "transform": {
      "expression": "9/5 * temp_c + 32",
      "variables": [
        {
          "name": "temp_c",
          "value": {
            "propertyId": "Temperature C"
          }
        }
      ]
    }
  },
  "unit": "Fahrenheit"
}
],
...
}
```

**Example definizione di trasformazione che contiene tre variabili**  
L'esempio seguente dimostra una proprietà di trasformazione che restituisce un messaggio di avviso (`"Caution"`) se più del 10 percento delle BLT123 parti non soddisfa lo standard. Altrimenti, restituisce un messaggio informativo (`"Normal"`).  

```
{
...
"assetModelProperties": [
...
{
"name": "Quality_Monitor",
"dataType": "STRING",
"type": {
    "transform": {
        "expression": "if(eq(Part_Number,"BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal")",
        "variables": [
            {
                "name": "Part_Number",
                "value": {
                    "propertyId": "Part Number"
                }
            },
            {
                "name": "Good_Count",
                "value": {
                    "propertyId": "Good Count"
                }
            },
            {
                "name": "Bad_Count",
                "value": {
                    "propertyId": "Bad Count"
                }
            }
        ]
    }
}
}
...
}
```

# Aggrega i dati provenienti da proprietà e altre risorse (metriche)
<a name="metrics"></a>

Le metriche sono espressioni matematiche che utilizzano funzioni di aggregazione per elaborare tutti i punti dati di input e generare un singolo punto dati per intervallo di tempo specificato. Un parametro, ad esempio, può calcolare la temperatura oraria media da un flusso di dati di temperatura.

I parametri possono immettere dati dai parametri degli asset associati, in modo da poter calcolare le statistiche che forniscono informazioni dettagliate sull'operazione o su un sottoinsieme dell'operazione. Un parametro, ad esempio, può calcolare la temperatura oraria media di tutte le turbine eoliche di una centrale eolica. Per ulteriori informazioni su come definire le associazioni tra asset, consulta [Definite le gerarchie dei modelli di asset](define-asset-hierarchies.md).

Le metriche possono anche inserire dati da altre proprietà senza aggregare i dati su ogni intervallo di tempo. Se specifichi un [attributo](attributes.md) in una formula, AWS IoT SiteWise utilizza il valore [più recente](expression-temporal-functions.md#latest-definition) per quell'attributo quando calcola la formula. Se specifichi una metrica in una formula, AWS IoT SiteWise utilizza l'[ultimo](expression-temporal-functions.md#last-definition) valore per l'intervallo di tempo in cui calcola la formula. Ciò significa che puoi definire metriche come `OEE = Availability * Quality * Performance` `Availability``Quality`, dove e `Performance` sono tutte le altre metriche sullo stesso modello di asset.

AWS IoT SiteWise inoltre, calcola automaticamente un set di metriche di aggregazione di base per tutte le proprietà degli asset. Per ridurre i costi di calcolo, puoi utilizzare questi aggregati anziché definire parametri personalizzati per i calcoli di base. Per ulteriori informazioni, consulta [Interroga gli aggregati delle proprietà degli asset in AWS IoT SiteWise](aggregates.md).

**Topics**
+ [Definisci le metriche (console)](#define-metrics-console)
+ [Definisci le metriche ()AWS CLI](#define-metrics-cli)

## Definisci le metriche (console)
<a name="define-metrics-console"></a>

Quando definisci una metrica per un modello di asset nella AWS IoT SiteWise console, specifichi i seguenti parametri:
+ <a name="asset-property-name-console"></a>**Nome**: il nome della proprietà.
+ **Tipo di dati**: il tipo di dati della trasformazione, che può essere **Double** o **String**.
+ **ID esterno**: (Facoltativo) Si tratta di un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.
+ **Formula**: l'espressione metrica. Le espressioni metriche possono utilizzare [funzioni di aggregazione](expression-aggregation-functions.md) per inserire dati da una proprietà per tutte le risorse associate in una gerarchia. Inizia a digitare o premi il tasto freccia giù per aprire la funzione di completamento automatico. Per ulteriori informazioni, consulta [Usa espressioni di formule](formula-expressions.md).
**Importante**  <a name="metric-input-rules"></a>
Le metriche possono essere solo proprietà di tipo intero, doppio, booleano o stringa. I valori booleani vengono convertiti in `0` (false) e (true). `1`  
Le variabili di input in una espressione parametrica devono presentare lo stesso intervallo di tempo del parametro di output.  
<a name="formula-output-rules"></a>Le espressioni delle formule possono generare solo valori doppi o stringhe. Le espressioni annidate possono generare altri tipi di dati, ad esempio stringhe, ma la formula nel suo insieme deve restituire un numero o una stringa. È possibile utilizzare la [funzione jp](expression-string-functions.md#jp-definition) per convertire una stringa in un numero. Il valore booleano deve essere 1 (vero) o 0 (falso). Per ulteriori informazioni, consulta [Valori indefiniti, infiniti e di overflow](expression-tutorials.md#undefined-values).
+ **Intervallo di tempo: l'intervallo** di tempo metrico. <a name="metric-window-info"></a>AWS IoT SiteWise supporta i seguenti intervalli di tempo a finestra rotante, in cui ogni intervallo inizia alla fine di quello precedente:
  + da **1 minuto a** <a name="metric-window-1m"></a>1 minuto, calcolato alla fine di ogni minuto (00:00:00, 00:01:00, 12:02:00 e così via).
  + Da **5 minuti** a <a name="metric-window-5m"></a>5 minuti, calcolati alla fine di ogni cinque minuti a partire dall'ora (00:00:00, 12:05:00, 00:10:00 e così via).
  + da **15 minuti** a <a name="metric-window-15m"></a>15 minuti, calcolati alla fine di ogni quindici minuti a partire dall'ora (00:00:00, 12:15:00, 00:30:00 e così via).
  + da **1 ora** a <a name="metric-window-1h"></a>1 ora (60 minuti), calcolata alla fine di ogni ora in formato UTC (00:00:00, 01:00:00, 02:00:00 e così via).
  + **1 giorno** — <a name="metric-window-1d"></a>1 giorno (24 ore), calcolato alla fine di ogni giornata in UTC (00:00 di lunedì, 00:00 di martedì e così via).
  + da **1 settimana a** <a name="metric-window-1w"></a>1 settimana (7 giorni), calcolata alla fine di ogni domenica in UTC (ogni lunedì alle 00:00).
  + **Intervallo personalizzato: puoi inserire qualsiasi intervallo** di tempo compreso tra un minuto e una settimana.
+ **Data di offset**: (Facoltativa) La data di riferimento a partire dalla quale aggregare i dati.
+ **Tempo di offset**: (Facoltativo) L'ora di riferimento a partire dalla quale aggregare i dati. L'ora di offset deve essere compresa tra 00:00:00 e 23:59:59.
+ Fuso orario di **offset - (Facoltativo) Il fuso orario** per l'offset. Se non è specificato, il fuso orario di offset predefinito è l'Universal Coordinated Time (UTC). Vedi i seguenti fusi orari supportati.

### Fusi orari supportati
<a name="supported-time-zones"></a>
+ (UTC\$1 00:00) Ora coordinata universale
+ (UTC\$1 01:00) Ora centrale europea
+ (UTC\$1 02:00) Europa orientale
+ (UTC03\$1:00) Ora dell'Africa orientale
+ (UTC\$1 04:00) Ora del Vicino Oriente
+ (UTC\$1 05:00) Ora del Pakistan di Lahore
+ (UTC\$1 05:30) Ora solare dell'India
+ (UTC\$1 06:00) Ora solare del Bangladesh
+ (UTC\$1 07:00) Ora solare del Vietnam
+ 
+ (UTC\$1 09:00) Ora solare del Giappone
+ (UTC\$1 09:30) Ora centrale dell'Australia
+ (UTC\$1 10:00) Ora orientale dell'Australia
+ (UTC\$1 11:00) Ora solare delle Salomone
+ (UTC\$1 12:00) Ora solare della Nuova Zelanda
+ (UTC- 11:00) Ora delle Isole Midway
+ (UTC- 10:00) Ora solare delle Hawaii
+ (UTC- 09:00) Ora solare dell'Alaska
+ (UTC- 08:00) Ora solare del Pacifico
+ (UTC- 07:00) Ora solare di Phoenix
+ (UTC- 06:00) Ora solare centrale
+ (UTC- 05:00) Ora solare orientale
+ (UTC- 04:00) Ora di Porto Rico e Isole Vergini Americane
+ (UTC- 03:00) Ora solare dell'Argentina
+ (UTC- 02:00) Ora della Georgia del Sud
+ (UTC- 01:00) Ora dell'Africa centrale

**Example intervallo di tempo personalizzato con un offset (console)**  
L'esempio seguente mostra come definire un intervallo di tempo di 12 ore con un offset il 20 febbraio 2021 alle 18:30:30 (PST).  

**Per definire un intervallo personalizzato con un offset**

1. **Per **Intervallo di tempo, scegliete Intervallo** personalizzato.**

1. Per **Intervallo di tempo**, effettuate una delle seguenti operazioni:
   + Immettete**12**, quindi scegliete le **ore.**
   + Inserisci**720**, quindi scegli **minuti**.
   + Inserisci**43200**, quindi scegli **secondi**.
**Importante**  
L'**intervallo di tempo** deve essere un numero intero indipendentemente dall'unità.

1. **Per la **data di offset**, scegli 20/02/2021.**

1. **Per Tempo di offset, immettete.** **18:30:30**

1. Per il **fuso orario di Offset, scegliete** **(UTC- 08:00**) Pacific Standard Time.
Se crei la metrica il 1° luglio 2021, prima o alle 18:30:30 (PST), otterrai il primo risultato di aggregazione il 1° luglio 2021 alle 18:30:30 (PST). Il secondo risultato di aggregazione è il 2 luglio 2021 alle 06:30:30 (PST) e così via.

## Definisci le metriche ()AWS CLI
<a name="define-metrics-cli"></a>

Quando definite una metrica per un modello di asset con l' AWS IoT SiteWise API, specificate i seguenti parametri:
+ <a name="asset-property-name-cli"></a>`name`— Il nome della proprietà.
+ `dataType`— Il tipo di dati della metrica, che può essere `DOUBLE` o`STRING`.
+ `externalId`— (Facoltativo) Si tratta di un ID definito dall'utente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.
+ `expression`— L'espressione metrica. Le espressioni metriche possono utilizzare [funzioni di aggregazione](expression-aggregation-functions.md) per immettere dati da una proprietà per tutte le risorse associate in una gerarchia. Per ulteriori informazioni, consulta [Usa espressioni di formule](formula-expressions.md).
+ `window`— L'intervallo di tempo e l'offset della finestra di rotazione della metrica, in cui ogni intervallo inizia quando termina quello precedente:
  + `interval`— L'intervallo di tempo per la finestra di rotazione. L'intervallo di tempo deve essere compreso tra un minuto e una settimana.
  + `offsets`— L'offset della finestra ribaltabile. 

  Per ulteriori informazioni, consulta [TumblingWindow](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_TumblingWindow.html) nella *documentazione di riferimento dell’API AWS IoT SiteWise *.  
**Example intervallo di tempo personalizzato con un offset ()AWS CLI**  

  L'esempio seguente mostra come definire un intervallo di tempo di 12 ore con un offset il 20 febbraio 2021 alle 18:30:30 (PST).

  ```
  {
      "window": {
          "tumbling": {
              "interval": "12h",
              "offset": " 2021-07-23T18:30:30-08"
          }
      }
  }
  ```

  Se crei la metrica il 1° luglio 2021, prima o alle 18:30:30 (PST), otterrai il primo risultato di aggregazione il 1° luglio 2021 alle 18:30:30 (PST). Il secondo risultato di aggregazione è il 2 luglio 2021 alle 06:30:30 (PST) e così via.
+ `variables`— L'elenco di variabili che definisce le altre proprietà della risorsa o delle risorse secondarie da utilizzare nell'espressione. Ogni struttura di variabile contiene un nome semplice da utilizzare nell'espressione e una struttura `value` che specifica la proprietà da collegare alla variabile stessa. La struttura `value` contiene le seguenti informazioni:
  + `propertyId`— L'ID della proprietà da cui estrarre i valori. È possibile utilizzare il nome della proprietà anziché il relativo ID se la proprietà è definita nel modello corrente (anziché definita in un modello da una gerarchia).
  + `hierarchyId`— (Facoltativo) L'ID della gerarchia da cui interrogare gli asset secondari per la proprietà. È possibile utilizzare il nome della definizione della gerarchia anziché il relativo ID. Se omettete questo valore, AWS IoT SiteWise trova la proprietà nel modello corrente.
**Importante**  <a name="metric-input-rules"></a>
Le metriche possono essere solo proprietà di tipo intero, doppio, booleano o stringa. I valori booleani vengono convertiti in `0` (false) e (true). `1`  
Le variabili di input in una espressione parametrica devono presentare lo stesso intervallo di tempo del parametro di output.  
<a name="formula-output-rules"></a>Le espressioni delle formule possono generare solo valori doppi o stringhe. Le espressioni annidate possono generare altri tipi di dati, ad esempio stringhe, ma la formula nel suo insieme deve restituire un numero o una stringa. È possibile utilizzare la [funzione jp](expression-string-functions.md#jp-definition) per convertire una stringa in un numero. Il valore booleano deve essere 1 (vero) o 0 (falso). Per ulteriori informazioni, consulta [Valori indefiniti, infiniti e di overflow](expression-tutorials.md#undefined-values).
+ <a name="asset-property-unit-cli"></a>`unit`— (Facoltativo) L'unità scientifica della proprietà, ad esempio mm o Celsius.

**Example Definizione del parametro di esempio**  
Nell'esempio seguente viene illustrata una proprietà parametro che aggrega i dati di misurazione della temperatura di un asset per calcolare la temperatura oraria massima in Fahrenheit. Questo oggetto è un esempio di un [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)che contiene una [metrica](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.html). Puoi specificare questo oggetto come parte del payload della richiesta [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) per creare una proprietà di parametro. Per ulteriori informazioni, consulta [Crea un modello di asset (AWS CLI)](create-asset-models.md#create-asset-model-cli).  

```
{
      ...
      "assetModelProperties": [
      ...
      {
        "name": "Max temperature",
        "dataType": "DOUBLE",
        "type": {
          "metric": {
            "expression": "max(temp_f)",
            "variables": [
              {
                "name": "temp_f",
                "value": {
                  "propertyId": "Temperature F"
                }
              }
            ],
            "window": {
              "tumbling": {
                "interval": "1h"
              }
            }
          }
        },
        "unit": "Fahrenheit"
      }
    ],
    ...
}
```

**Example Esempio di definizione della metrica che inserisce dati dalle risorse associate**  
L'esempio seguente mostra una proprietà metrica che aggrega i dati sulla potenza media di più turbine eoliche per calcolare la potenza media totale di un parco eolico. [Questo oggetto è un esempio di un oggetto che contiene una metrica [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html).](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.html) Puoi specificare questo oggetto come parte del payload della richiesta [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) per creare una proprietà di parametro.   

```
{
      ...
      "assetModelProperties": [
      ...
      {
          "name": "Total Average Power",
          "dataType": "DOUBLE",
          "type": {
            "metric": {
              "expression": "avg(power)",
              "variables": [
                {
                  "name": "power",
                  "value": {
                    "propertyId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
                    "hierarchyId": "Turbine Asset Model"
                  }
                }
              ],
              "window": {
                "tumbling": {
                  "interval": "5m"
                }
              }
            }
        },
        "unit": "kWh"
      }
    ],
    ...
}
```

# Usa espressioni di formule
<a name="formula-expressions"></a>

Con le espressioni di formula, è possibile definire le funzioni matematiche per trasformare e aggregare i dati industriali grezzi e ottenere informazioni dettagliate sulla propria operazione. Le espressioni di formule combinano valori letterali, operatori, funzioni e variabili per elaborare i dati. Per ulteriori informazioni su come definire le proprietà degli asset che utilizzano espressioni di formule, consulta [Trasforma i dati (trasformazioni)](transforms.md) e[Aggrega i dati provenienti da proprietà e altre risorse (metriche)](metrics.md). Le trasformazioni e le metriche sono proprietà delle formule.

**Topics**
+ [Usa le variabili nelle espressioni delle formule](expression-variables.md)
+ [Usa valori letterali nelle espressioni delle formule](expression-literals.md)
+ [Usa gli operatori nelle espressioni delle formule](expression-operators.md)
+ [Usa le costanti nelle espressioni delle formule](expression-constants.md)
+ [Usa le funzioni nelle espressioni delle formule](expression-functions.md)
+ [Tutorial sulle espressioni di formule](expression-tutorials.md)

# Usa le variabili nelle espressioni delle formule
<a name="expression-variables"></a>

Le variabili rappresentano le proprietà AWS IoT SiteWise degli asset nelle espressioni delle formule. Utilizzate le variabili per inserire valori da altre proprietà degli asset nelle espressioni, in modo da poter elaborare i dati provenienti da proprietà costanti ([attributi](attributes.md)), flussi di dati non elaborati ([misurazioni](measurements.md)) e altre proprietà delle formule.

Le variabili possono rappresentare le proprietà degli asset dello stesso modello di asset o dei modelli di asset secondari associati. Solo le formule metriche possono inserire variabili da modelli di asset secondari.

Le variabili vengono identificate con nomi diversi nella console e nell'API.
+ **AWS IoT SiteWise console**: utilizza i nomi delle proprietà degli asset come variabili nelle espressioni.
+ **AWS IoT SiteWise API (AWS CLI, AWS SDKs)**: definisci le variabili con la [ExpressionVariable](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExpressionVariable.html)struttura, che richiede un nome di variabile e un riferimento a una proprietà dell'asset. Il nome della variabile può contenere lettere minuscole, numeri e caratteri di sottolineatura. Quindi, utilizzate i nomi delle variabili per fare riferimento alle proprietà delle risorse nelle espressioni.

I nomi delle variabili distinguono tra maiuscole e minuscole

Per ulteriori informazioni, consulta [Definizione delle trasformazioni](transforms.md) e [Definizione delle metriche](metrics.md).

## Utilizzate le variabili per fare riferimento alle proprietà
<a name="variable-values"></a>

Il *valore* di una variabile definisce la proprietà a cui fa riferimento. AWS IoT SiteWise offre diversi modi per eseguire questa operazione.
+ **Per ID della proprietà:** è possibile specificare l'ID univoco della proprietà (UUID) per identificarla.
+ **Per nome:** se la proprietà appartiene allo stesso modello di asset, è possibile specificarne il nome nel campo ID della proprietà.
+ **Per percorso:** un valore variabile può fare riferimento a una proprietà tramite il relativo *percorso.* Per ulteriori informazioni, consulta [Utilizzate i percorsi per fare riferimento alle proprietà personalizzate del modello composito](custom-composite-models.md#property-paths).

**Nota**  
 Le variabili non sono supportate dalla AWS IoT SiteWise console. Sono utilizzate dall' AWS IoT SiteWise API, tra cui AWS Command Line Interface AWS CLI) e AWS SDKs. 

 Una variabile ricevuta in una risposta da AWS IoT SiteWise include informazioni complete sul valore, inclusi l'ID e il percorso.

 Tuttavia, quando si passa una variabile a AWS IoT SiteWise (ad esempio, in una chiamata «crea» o «aggiorna»), è necessario specificare solo una di queste. Ad esempio, se si specifica il percorso, non è necessario fornire l'ID. 

# Usa valori letterali nelle espressioni delle formule
<a name="expression-literals"></a>

AWS IoT SiteWise supporta l'uso di valori letterali nelle espressioni e nelle formule. I letterali sono valori fissi che rappresentano un tipo di dati specifico. In AWS IoT SiteWise, è possibile definire numeri e stringhe letterali nelle espressioni delle formule. I valori letterali possono essere utilizzati in vari contesti, tra cui trasformazioni di dati, condizioni di allarme e calcoli di visualizzazione.


+ <a name="number-literal-definition"></a>**Numeri**

  Usa numeri e notazione scientifica per definire numeri interi e doppi. È possibile utilizzare la [notazione E per esprimere numeri con notazione](https://en.wikipedia.org/wiki/Scientific_notation#E_notation) scientifica.

  Esempi:`1`,,`2.0`,,`.9`, `-23.1` `7.89e3` `3.4E-5`
+ <a name="string-literal-definition"></a>**Stringhe**

  Usa i caratteri `'` (virgolette) e `"` (virgolette doppie) per definire le stringhe. Il tipo di citazione per l'inizio e la fine devono corrispondere. Per evitare una virgoletta che corrisponde a quella utilizzata per dichiarare una stringa, includi quella virgoletta due volte. Questo è l'unico carattere di escape nelle AWS IoT SiteWise stringhe.

  Esempi: `'active'`, `"inactive"`, `'{"temp": 52}'`, `"{""temp"": ""high""}"`

# Usa gli operatori nelle espressioni delle formule
<a name="expression-operators"></a>

È possibile utilizzare i seguenti operatori comuni nelle espressioni di formule.


| Operatore | Description | 
| --- | --- | 
|  `+`  |  Se entrambi gli operandi sono numeri, questo operatore aggiunge gli operandi sinistro e destro. Se uno degli operandi è una stringa, questo operatore concatena gli operandi sinistro e destro come stringhe. Ad esempio, l'espressione restituisce. `1 + 2 + " is three"` `"3 is three"` La stringa concatenata può contenere fino a 1024 caratteri. Se la stringa supera i 1024 caratteri, AWS IoT SiteWise non restituisce un punto dati per quel calcolo.  | 
|  `-`  |  Sottrae l'operando destro dall'operando sinistro. <a name="operator-numbers-only"></a>È possibile utilizzare questo operatore solo con operandi numerici.  | 
|  `/`  |  Divide l'operando sinistro per l'operando destro. <a name="operator-numbers-only"></a>È possibile utilizzare questo operatore solo con operandi numerici.  | 
|  `*`  |  Moltiplica gli operandi sinistro e destro. <a name="operator-numbers-only"></a>È possibile utilizzare questo operatore solo con operandi numerici.  | 
|  `^`  |  Solleva l'operando di sinistra alla potenza dell'operando destro (esponenziazione). <a name="operator-numbers-only"></a>È possibile utilizzare questo operatore solo con operandi numerici.  | 
|  `%`  |  Restituisce il resto della divisione dell'operando sinistro per l'operando destro. Il segno del risultato è identico a quello dell'operando sinistro. Questo comportamento è diverso dall'operazione del modulo. <a name="operator-numbers-only"></a>È possibile utilizzare questo operatore solo con operandi numerici.  | 
|  `x < y`  |  Restituisce `1` se `x` è minore di`y`, altrimenti. `0`  | 
|  `x > y`  |  Restituisce `1` se `x` è maggiore di`y`, altrimenti`0`.  | 
|  `x <= y`  |  Restituisce `1` se `x` è minore o uguale a`y`, altrimenti`0`.  | 
|  `x >= y`  |  Restituisce `1` se `x` è maggiore o uguale a`y`, altrimenti`0`.  | 
|  `x == y`  |  Restituisce `1` se `x` è uguale a`y`, altrimenti`0`.  | 
|  `x != y`  |  Restituisce `1` se non `x` è uguale a`y`, altrimenti`0`.  | 
|  `!x`  |  Restituisce `1` se `x` viene valutato come `0` (falso), altrimenti`0`. `x`viene valutato falso se:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x and y`  |  Restituisce `0` se `x` viene valutato come `0` (false). Altrimenti, restituisce il risultato valutato di. `y` `x`o `y` viene valutato falso se:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x or y`  |  Restituisce `1` se `x` viene valutato come `1` (true). Altrimenti, restituisce il risultato valutato di. `y` `x`o `y` viene valutato falso se:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `not x`  |  Restituisce `1` se `x` viene valutato come `0` (false), altrimenti. `0` `x`viene valutato falso se:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-operators.html)  | 
|   `[]` `s[index]`  |  Restituisce il carattere in corrispondenza di un indice `index` della stringa`s`. È equivalente alla sintassi dell'indice in Python. 

**Example Esempi**  
+ `"Hello!"[1]` restituisce `e`.
+ `"Hello!"[-2]` restituisce `o`.  | 
|   `[]` `s[start:end:step]`  |  Restituisce una parte della stringa. `s` È equivalente alla sintassi slice in Python. Questo operatore ha i seguenti argomenti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-operators.html) È possibile omettere l'`step`argomento per utilizzarne il valore predefinito. Ad esempio, `s[1:4:1]` è uguale a `s[1:4]`. Gli argomenti devono essere numeri interi o la costante [none](expression-constants.md#none-definition). Se si specifica`none`, AWS IoT SiteWise utilizza il valore predefinito per quell'argomento. 

**Example Esempi**  
+ `"Hello!"[1:4]` restituisce `"ell"`.
+ `"Hello!"[:2]` restituisce `"He"`.
+ `"Hello!"[3:]` restituisce `"lo!"`.
+ `"Hello!"[:-4]` restituisce `"He"`.
+ `"Hello!"[::2]` restituisce `"Hlo"`.
+ `"Hello!"[::-1]` restituisce `"!olleH"`.  | 

# Usa le costanti nelle espressioni delle formule
<a name="expression-constants"></a>

In AWS IoT SiteWise, è possibile utilizzare costanti nelle espressioni e nelle formule per rappresentare valori fissi o parametri predefiniti. Le costanti possono essere utilizzate in vari contesti, ad esempio trasformazioni di dati, condizioni di allarme o calcoli di visualizzazione. Utilizzando le costanti, è possibile semplificare le espressioni e renderle più leggibili e gestibili.

È possibile utilizzare le seguenti costanti matematiche comuni nelle espressioni. Tutte le costanti non fanno distinzione tra maiuscole e minuscole.

**Nota**  
Se si definisce una variabile con lo stesso nome di una costante, la variabile sostituisce la costante.


| Costante | Description | 
| --- | --- | 
|  `pi`  |  Il numero pi ()`π`: `3.141592653589793`  | 
|  `e`  |  Il numero e: `2.718281828459045`  | 
|  `true`  |  Equivalente al numero 1. Nel AWS IoT SiteWise, i booleani si convertono nei loro equivalenti numerici.  | 
|  `false`  |  Equivalente al numero 0. In AWS IoT SiteWise, i booleani vengono convertiti nei loro equivalenti numerici.  | 
|   `none`  |  Equivalente a nessun valore. È possibile utilizzare questa costante per non restituire nulla come risultato di un'[espressione condizionale](expression-conditional-functions.md).  | 

# Usa le funzioni nelle espressioni delle formule
<a name="expression-functions"></a>

È possibile utilizzare le seguenti funzioni per operare sui dati nelle espressioni delle formule.

Le trasformazioni e le metriche supportano diverse funzioni. La tabella seguente indica quali tipi di funzioni sono compatibili con ogni tipo di proprietà della formula.

**Nota**  
È possibile includere un massimo di 10 funzioni in un'espressione di formula.


| Tipo di funzione | Trasformazioni | Metriche | 
| --- | --- | --- | 
|  [Usa funzioni comuni nelle espressioni delle formule](expression-common-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  | 
|  [Usa le funzioni di confronto nelle espressioni delle formule](expression-comparison-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  | 
|  [Usa le funzioni condizionali nelle espressioni delle formule](expression-conditional-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  | 
|  [Usa le funzioni di stringa nelle espressioni delle formule](expression-string-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  | 
|  [Usa le funzioni di aggregazione nelle espressioni delle formule](expression-aggregation-functions.md)  |  <a name="polaris-no-para"></a>![\[A red circle with the letter x for no.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-no.png) No  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  | 
|  [Usa le funzioni temporali nelle espressioni delle formule](expression-temporal-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  | 
|  [Utilizza le funzioni di data e ora nelle espressioni delle formule](expression-date-and-time-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/icon-yes.png) Sì  | 

## Sintassi della funzione
<a name="expression-function-syntax"></a>

È possibile utilizzare la seguente sintassi per creare funzioni:

Sintassi regolare  
Con la sintassi normale, il nome della funzione è seguito da parentesi con zero o più argomenti.  
`function_name(argument1, argument2, argument3, ...)`. Ad esempio, le funzioni con la sintassi normale potrebbero essere simili a `log(x)` e`contains(s, substring)`.

Sintassi uniforme delle chiamate di funzione (UFCS)  
UFCS consente di chiamare funzioni utilizzando la sintassi per le chiamate di metodo nella programmazione orientata agli oggetti. Con UFCS, il primo argomento è seguito da dot (`.`), quindi dal nome della funzione e dagli argomenti rimanenti (se presenti) tra parentesi.  
`argument1.function_name(argument2, argument3, ...)`. Ad esempio, le funzioni con UFCS potrebbero essere simili `x.log()` a e. `s.contains(substring)`  
È inoltre possibile utilizzare UFCS per concatenare le funzioni successive. AWS IoT SiteWise utilizza il risultato della valutazione della funzione corrente come primo argomento per la funzione successiva.  
Ad esempio, è possibile utilizzare `message.jp('$.status').lower().contains('fail')` invece di`contains(lower(jp(message, '$.status')),'fail')`.  
Per ulteriori informazioni, visita il sito Web del [linguaggio di programmazione D.](https://tour.dlang.org/tour/en/gems/uniform-function-call-syntax-ufcs)

**Nota**  
È possibile utilizzare UFCS per tutte le AWS IoT SiteWise funzioni.  
AWS IoT SiteWise le funzioni non distinguono tra maiuscole e minuscole. Ad esempio, è possibile utilizzare `lower(s)` e in modo `Lower(s)` intercambiabile.

# Usa funzioni comuni nelle espressioni delle formule
<a name="expression-common-functions"></a>

Nelle [trasformazioni](transforms.md) e nelle [metriche](metrics.md), è possibile utilizzare le seguenti funzioni per calcolare le funzioni matematiche comuni nelle trasformazioni e nelle metriche.


| Funzione | Description | 
| --- | --- | 
|  `abs(x)`  |  Restituisce il valore assoluto di `x`.  | 
|  `acos(x)`  |  Restituisce l'arccoseno di `x`.  | 
|  `asin(x)`  |  Restituisce l'arcsine di `x`.  | 
|  `atan(x)`  |  Restituisce l'arctangente di `x`.  | 
|  `cbrt(x)`  |  Restituisce la radice cubica di `x`.  | 
|  `ceil(x)`  |  Restituisce il numero intero più vicino maggiore di `x`.  | 
|  `cos(x)`  |  Restituisce il coseno di `x`.  | 
|  `cosh(x)`  |  Restituisce il coseno iperbolico di `x`.  | 
|  `cot(x)`  |  Restituisce la cotangente di. `x`  | 
|  `exp(x)`  |  Restituisce `e` al potere di `x`.  | 
|  `expm1(x)`  |  Restituisce `exp(x) - 1`. Utilizzate questa funzione `exp(x) - 1` per calcolare con maggiore precisione valori piccoli di. `x`  | 
|  `floor(x)`  |  Restituisce il numero intero più vicino inferiore a `x`.  | 
|  `log(x)`  |  Restituisce `loge` (base `e`) di `x`.  | 
|  `log10(x)`  |  Restituisce `log10` (base `10`) di `x`.  | 
|  `log1p(x)`  |  Restituisce `log(1 + x)`. Utilizzare questa funzione `log(1 + x)` per calcolare con maggiore precisione valori piccoli di`x`.  | 
|  `log2(x)`  |  Restituisce `log2` (base `2`) di `x`.  | 
|  `pow(x, y)`  |  Restituisce `x` al potere di `y`. Questo è equivalente a`x ^ y`.  | 
|  `signum(x)`  |  Restituisce il segno di `x` (`-1` per input negativi, `0` per input pari a zero, `+1` per input positivi).  | 
|  `sin(x)`  |  Restituisce il seno di `x`.  | 
|  `sinh(x)`  |  Restituisce il seno iperbolico di `x`.  | 
|  `sqrt(x)`  |  Restituisce la radice quadrata di `x`.  | 
|  `tan(x)`  |  Restituisce la tangente di `x`.  | 
|  `tanh(x)`  |  Restituisce la tangente iperbolica di `x`.  | 

# Usa le funzioni di confronto nelle espressioni delle formule
<a name="expression-comparison-functions"></a>

Nelle [trasformazioni](transforms.md) e nelle [metriche](metrics.md), è possibile utilizzare le seguenti funzioni di confronto per confrontare due valori e generare `1` (vero) o `0` (falso). AWS IoT SiteWise [confronta le stringhe in base all'ordine lessicografico.](https://en.wikipedia.org/wiki/Lexicographic_order)


| Funzione | Description | 
| --- | --- | 
|  `gt(x, y)`  |  Restituisce `1` se `x` è maggiore di `y`, altrimenti `0` (`x > y`). <a name="comparison-function-incompatible-types"></a>Questa funzione non restituisce un valore se `x` e `y` sono tipi incompatibili, come un numero e una stringa.  | 
|  `gte(x, y)`  |  Restituisce `1` se `x` è maggiore o uguale a `y`, altrimenti `0` (`x ≥ y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise considera gli argomenti uguali se rientrano in una tolleranza relativa di`1E-9`. Si comporta in modo simile alla funzione [isclose](https://docs.python.org/3/library/math.html#math.isclose) in Python. <a name="comparison-function-incompatible-types"></a>Questa funzione non restituisce un valore se `x` e `y` sono tipi incompatibili, come un numero e una stringa.  | 
|  `eq(x, y)`  |  Restituisce `1` se `x` è uguale a `y`, altrimenti `0` (`x == y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise considera gli argomenti uguali se rientrano in una tolleranza relativa di`1E-9`. Si comporta in modo simile alla funzione [isclose](https://docs.python.org/3/library/math.html#math.isclose) in Python. <a name="comparison-function-incompatible-types"></a>Questa funzione non restituisce un valore se `x` e `y` sono tipi incompatibili, come un numero e una stringa.  | 
|  `lt(x, y)`  |  Restituisce `1` se `x` è inferiore a `y`, altrimenti `0` (`x < y`). <a name="comparison-function-incompatible-types"></a>Questa funzione non restituisce un valore se `x` e `y` sono tipi incompatibili, come un numero e una stringa.  | 
|  `lte(x, y)`  |  Restituisce `1` se `x` è minore o uguale a `y`, altrimenti `0` (`x ≤ y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise considera gli argomenti uguali se rientrano in una tolleranza relativa di`1E-9`. Si comporta in modo simile alla funzione [isclose](https://docs.python.org/3/library/math.html#math.isclose) in Python. <a name="comparison-function-incompatible-types"></a>Questa funzione non restituisce un valore se `x` e `y` sono tipi incompatibili, come un numero e una stringa.  | 
|  `isnan(x)`  |  Restituisce `1` se `x` è uguale a`NaN`, altrimenti`0`. Questa funzione non restituisce un valore se `x` è una stringa.  | 

# Usa le funzioni condizionali nelle espressioni delle formule
<a name="expression-conditional-functions"></a>

Nelle [trasformazioni](transforms.md) e nelle [metriche](metrics.md), è possibile utilizzare la seguente funzione per verificare una condizione e restituire risultati diversi, indipendentemente dal fatto che la condizione restituisca vero o falso.


| Funzione | Description | 
| --- | --- | 
|   `if(condition, result_if_true, result_if_false)`  |  Valuta `condition` e restituisce `result_if_true` se la condizione restituisce vero o `result_if_false` se la condizione restituisce. `false` `condition`deve essere un numero. Questa funzione considera `0` una stringa vuota come `false` e tutto il resto (incluso`NaN`) come`true`. I booleani vengono convertiti in `0` (false) e `1` (true). È possibile restituire la [costante none](expression-constants.md#none-definition) da questa funzione per scartare l'output per una particolare condizione. Ciò significa che puoi filtrare i punti dati che non soddisfano una condizione. Per ulteriori informazioni, consulta [Filtra i punti dati](expression-tutorials.md#filter-data). 

**Example Esempi**  
+ `if(0, x, y)`restituisce la variabile`y`.
+ `if(5, x, y)`restituisce la variabile`x`.
+ `if(gt(temp, 300), x, y)`restituisce la variabile `x` se la variabile `temp` è maggiore di`300`.
+ `if(gt(temp, 300), temp, none)`restituisce la variabile `temp` se è maggiore o uguale a`300`, oppure `none` (nessun valore) se `temp` è minore di`300`. Si consiglia di utilizzare UFCS per funzioni condizionali annidate in cui uno o più argomenti sono funzioni condizionali. È possibile utilizzare `if(condition, result_if_true)` per valutare una condizione e `elif(condition, result_if_true, result_if_false)` valutare condizioni aggiuntive. Ad esempio, puoi usare `if(condition1, result1_if_true).elif(condition2, result2_if_true, result2_if_false)` invece di`if(condition1, result1_if_true, if(condition2, result2_if_true, result2_if_false))`. È inoltre possibile concatenare funzioni condizionali intermedie aggiuntive. Ad esempio, è possibile utilizzare, `if(condition1, result1_if_true).elif(condition2, result2_if_true).elif(condition3, result3_if_true, result3_if_false)` anziché annidare, più `if` istruzioni, ad esempio. `if(condition1, result1_if_true, if(condition2, result2_if_true, if(condition3, result3_if_true result3_if_false)))`  È necessario utilizzarlo `elif(condition, result_if_true, result_if_false)` con UFCS.   | 

# Usa le funzioni di stringa nelle espressioni delle formule
<a name="expression-string-functions"></a>

Nelle [trasformazioni](transforms.md) e nelle [metriche](metrics.md), è possibile utilizzare le seguenti funzioni per operare sulle stringhe. Per ulteriori informazioni, consulta [Usa le stringhe nelle formule](expression-tutorials.md#use-strings-in-formulas).

**Importante**  
<a name="formula-output-rules"></a>Le espressioni di formule possono generare solo valori doppi o stringhe. Le espressioni annidate possono generare altri tipi di dati, ad esempio stringhe, ma la formula nel suo insieme deve restituire un numero o una stringa. È possibile utilizzare la [funzione jp](#jp-definition) per convertire una stringa in un numero. Il valore booleano deve essere 1 (vero) o 0 (falso). Per ulteriori informazioni, consulta [Valori indefiniti, infiniti e di overflow](expression-tutorials.md#undefined-values).


| Funzione | Description | 
| --- | --- | 
|  `len(s)`  |  Restituisce la lunghezza della stringa. `s`  | 
|  `find(s, substring)`  |  Restituisce l'indice della stringa `substring` nella stringa`s`.  | 
|  `contains(s, substring)`  |  Restituisce `1` se la stringa `s` contiene la stringa`substring`, altrimenti`0`.  | 
|  `upper(s)`  |  Restituisce la stringa `s` in formato maiuscolo.  | 
|  `lower(s)`  |  Restituisce la stringa `s` in formato minuscolo.  | 
|   `jp(s, json_path)`  |  Valuta la stringa `s` con l'[JsonPath](https://github.com/json-path/JsonPath)espressione `json_path` e restituisce il risultato. Utilizzate questa funzione per effettuare le seguenti operazioni: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-string-functions.html) Per estrarre un valore di stringa da una struttura JSON e restituirlo come numero, è necessario utilizzare più funzioni annidate`jp`. La `jp` funzione esterna estrae la stringa dalla struttura JSON e la `jp` funzione interna converte la stringa in un numero. La stringa `json_path` deve contenere una stringa letterale. Ciò significa che non `json_path` può essere un'espressione che restituisce una stringa. 

**Example Esempi**  
+ `jp('{"status":"active","value":15}', '$.value')` restituisce `15`.
+ `jp('{"measurement":{"reading":25,"confidence":0.95}}', '$.measurement.reading')` restituisce `25`.
+ `jp('[2,8,23]', '$[2]')` restituisce `23`.
+ `jp('{"values":[3,6,7]}', '$.values[1]')` restituisce `6`.
+ `jp('111', '$')` restituisce `111`.
+ `jp(jp('{"measurement":{"reading":25,"confidence":"0.95"}}', '$.measurement.confidence'), '$')` restituisce `0.95`.  | 
|  `join(s0, s1, s2, s3, ...)`  |  Restituisce una stringa concatenata con un delimitatore. Questa funzione utilizza la prima stringa di input come delimitatore e unisce le stringhe di input rimanenti. Si comporta in modo simile alla funzione [join (CharSequence delimiter, CharSequence](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.CharSequence...-)... elements) in Java. 

**Example Esempi**  
+ `join("-", "aa", "bb", "cc")`restituisce `aa-bb-cc`  | 
|  `format(expression: "format")` o `format("format", expression)`  |  Restituisce una stringa nel formato specificato. Questa funzione restituisce `expression` un valore e quindi restituisce il valore nel formato specificato. Si comporta in modo simile alla funzione [format (String format, Object... args)](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...-) in Java. Per ulteriori informazioni sui formati supportati, consulta Conversioni in [Class Formatter](https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html) nella *piattaforma Java, Specifiche dell'API Standard Edition 7*. 

**Example Esempi**  
+ `format(100+1: "d")`restituisce una stringa,. `101`
+ `format("The result is %d", 100+1)`restituisce una stringa,`The result is 101`.  | 
|  `f'expression'`  |  Restituisce una stringa concatenata. Con questa funzione formattata, è possibile utilizzare un'espressione semplice per concatenare e formattare stringhe. Queste funzioni possono contenere espressioni annidate. È possibile utilizzare `{}` (parentesi graffe arricciate) per interpolare le espressioni. Si comporta in modo simile alle [stringhe letterali formattate in Python](https://docs.python.org/3/reference/lexical_analysis.html#f-strings). 

**Example Esempi**  
+ `f'abc{1+2: "f"}d'` restituisce `abc3.000000d`. Per valutare questa espressione di esempio, procedi come segue:

  1. `format(1+2: "f")`restituisce un numero in virgola mobile,`3.000000`.

  1. `join('', "abc", 1+2, 'd')`restituisce una stringa,`abc3.000000d`.

  Puoi anche scrivere l'espressione nel modo seguente:`join('', "abc", format(1+2: "f"), 'd')`.  | 

# Usa le funzioni di aggregazione nelle espressioni delle formule
<a name="expression-aggregation-functions"></a>

Solo nelle [metriche](metrics.md), puoi utilizzare le seguenti funzioni che aggregano i valori di input in ogni intervallo di tempo e calcolano un singolo valore di output. Le funzioni di aggregazione possono aggregare i dati dagli asset associati.

Gli argomenti delle funzioni di aggregazione possono essere [variabili](expression-variables.md), [numeri letterali, funzioni temporali](expression-literals.md#number-literal-definition)[, espressioni annidate o funzioni](expression-temporal-functions.md) di aggregazione. La formula `max(latest(x), latest(y), latest(z))` utilizza una funzione di aggregazione come argomento e restituisce il valore corrente massimo delle proprietà, e. `x` `y` `z`

È possibile utilizzare espressioni annidate nelle funzioni di aggregazione. Quando si utilizzano espressioni nidificate, si applicano le seguenti regole: 
+ Ogni argomento può avere una sola variabile.  
**Example**  

  Ad esempio, `avg(x*(x-1))` e `sum(x/2 )/avg(y^2 )` sono supportati.

  Ad esempio, `min(x/y)` non è supportato.
+ Ogni argomento può avere espressioni annidate a più livelli.  
**Example**  

  Ad esempio, `sum(avg(x^2 )/2)` è supportato.
+ Argomenti diversi possono avere variabili diverse.  
**Example**  

  Ad esempio, `sum(x/2, y*2)` è supportato.

**Nota**  
Se le espressioni contengono misurazioni, AWS IoT SiteWise utilizza gli ultimi valori dell'intervallo di tempo corrente per le misurazioni per calcolare gli aggregati.
Se le espressioni contengono attributi, AWS IoT SiteWise utilizza i valori più recenti per gli attributi per calcolare gli aggregati.


| Funzione | Description | 
| --- | --- | 
|  `avg(x0, ..., xn)`  |  Restituisce la media dei valori delle variabili date nell'intervallo di tempo specificato. <a name="aggregation-function-no-output"></a>Questa funzione restituisce un punto dati solo se le variabili specificate hanno almeno un punto dati nell'intervallo di tempo corrente.  | 
|   `sum(x0, ..., xn)`  |  Restituisce la somma dei valori delle variabili date nell'intervallo di tempo specificato. <a name="aggregation-function-no-output"></a>Questa funzione emette un punto dati solo se le variabili date hanno almeno un punto dati nell'intervallo di tempo corrente.  | 
|  `min(x0, ..., xn)`  |  Restituisce il valore minimo delle variabili date nell'intervallo di tempo specificato. <a name="aggregation-function-no-output"></a>Questa funzione emette un punto dati solo se le variabili date hanno almeno un punto dati nell'intervallo di tempo corrente.  | 
|  `max(x0, ..., xn)`  |  Restituisce il valore massimo delle variabili date nell'intervallo di tempo specificato. <a name="aggregation-function-no-output"></a>Questa funzione emette un punto dati solo se le variabili date hanno almeno un punto dati nell'intervallo di tempo corrente.  | 
|  `count(x0, ..., xn)`  |  Restituisce il numero totale di punti di dati per le variabili date nell'intervallo di tempo corrente. Per ulteriori informazioni su come contare il numero di punti dati che soddisfano una condizione, consulta [Conta i punti dati che corrispondono a una condizione](expression-tutorials.md#count-filtered-data). <a name="aggregation-function-always-output"></a>Questa funzione calcola un punto dati per ogni intervallo di tempo.  | 
| `stdev(x0, ..., xn)` | Restituisce la deviazione standard dei valori delle variabili specificate nell'intervallo di tempo corrente. Questa funzione emette un punto dati solo se le variabili date hanno almeno un punto dati nell'intervallo di tempo corrente.  | 

# Usa le funzioni temporali nelle espressioni delle formule
<a name="expression-temporal-functions"></a>

Utilizza le funzioni temporali per restituire valori in base ai timestamp dei punti dati.

## Usa le funzioni temporali nelle metriche
<a name="temporal-functions-in-metrics"></a>

Solo nelle [metriche](metrics.md), puoi utilizzare le seguenti funzioni che restituiscono valori in base ai timestamp dei punti dati.

Gli argomenti delle funzioni temporali devono essere proprietà del modello di asset locale o espressioni annidate. Ciò significa che non è possibile utilizzare le proprietà dei modelli di asset secondari nelle funzioni temporali.

È possibile utilizzare espressioni annidate nelle funzioni temporali. Quando si utilizzano espressioni nidificate, si applicano le seguenti regole: 
+ Ogni argomento può avere una sola variabile.

  Ad esempio, `latest( t*9/5 + 32 )` è supportato.
+ Gli argomenti non possono essere funzioni di aggregazione.

  Ad esempio, `first( sum(x) )` non è supportato.


| Funzione | Description | 
| --- | --- | 
|  `first(x)`  |  Restituisce il valore con il primo timestamp delle variabili date nell'intervallo di tempo specificato.  | 
|   `last(x)` |  Restituisce il valore con l'ultimo timestamp delle variabili date nell'intervallo di tempo specificato.  | 
|  `earliest(x)`  |  Restituisce l'ultimo valore della variabile specificata prima dell'inizio dell'intervallo di tempo corrente. Questa funzione calcola un punto dati per ogni intervallo di tempo, se la proprietà di input ha almeno un punto dati nella cronologia. Per informazioni dettagliate, vedi [time-range-defintion](#time-range-def).   | 
|   `latest(x)` |  Restituisce l'ultimo valore della variabile specificata con l'ultimo timestamp prima della fine dell'intervallo di tempo corrente. Questa funzione calcola un punto dati per ogni intervallo di tempo, se la proprietà di input ha almeno un punto dati nella cronologia. Per informazioni dettagliate, vedi [time-range-defintion](#time-range-def).  | 
|   `statetime(x)`  |  Restituisce la quantità di tempo in secondi in cui le variabili date sono risultate positive nell'intervallo di tempo specificato. È possibile utilizzare le [funzioni di confronto](expression-comparison-functions.md) per creare una proprietà di trasformazione da utilizzare per la `statetime` funzione.  Ad esempio, se si dispone di una proprietà `Idle`, cioè `0` o `1`, è possibile calcolare la durata dell'inattività nell'intervallo di tempo con questa espressione: `IdleTime = statetime(Idle)`. Per ulteriori informazioni, vedere lo [scenario statetime di esempio](#statetime-example). La funzione non supporta le proprietà dei parametri come variabili di input. Questa funzione calcola un punto dati per ogni intervallo di tempo, se la proprietà di input ha almeno un punto dati nella cronologia.  | 
|   `TimeWeightedAvg(x, [interpolation])`  | Restituisce la media dei dati di input ponderata con gli intervalli di tempo tra i punti.Vedi [Parametri delle funzioni ponderate nel tempo per i dettagli](#timeweighted-parameter) del calcolo e degli intervalli.L'argomento opzionale `interpolaton` deve essere una costante di stringa:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-temporal-functions.html) | 
|   `TimeWeightedStDev(x, [algo])`  |  Restituisce la deviazione standard dei dati di input ponderata con gli intervalli di tempo tra i punti.  Vedi [Parametri delle funzioni ponderate nel tempo per i dettagli del](#timeweighted-parameter) calcolo e degli intervalli.  Il calcolo utilizza l'algoritmo di calcolo Last Observed Carry Forward per gli intervalli tra i punti dati. In questo approccio, il punto dati viene calcolato come ultimo valore osservato fino al successivo timestamp del punto dati di input. Il peso viene calcolato come intervallo di tempo in secondi tra i punti dati o i confini della finestra.  L'argomento opzionale `algo` deve essere una costante di stringa: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-temporal-functions.html) Le seguenti formule vengono utilizzate per il calcolo nei casi in cui: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-temporal-functions.html) Equazione per la deviazione standard della popolazione: ![\[Equazione per la deviazione standard della popolazione.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/timeweightedstdev1.png) Equazione per la deviazione standard di frequenza: ![\[Equazione per la deviazione standard di frequenza.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/timeweighted-frequency-stdev.png)  | 

Il diagramma seguente mostra come AWS IoT SiteWise calcola le funzioni temporali,, e `first` `last` `earliest``latest`, rispetto all'intervallo di tempo corrente.

![\[AWS IoT SiteWise le funzioni temporali restituiscono punti dati in base al relativo timestamp.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/sitewise-temporal-functions.png)
<a name="time-range-def"></a>

**Nota**  
L'intervallo di tempo per`first(x)`, `last(x)` è (inizio finestra corrente, fine finestra corrente].
L'intervallo di tempo per `latest(x)` è (inizio dell'ora, fine della finestra corrente].
L'intervallo di tempo per `earliest(x)` è (inizio dell'ora, fine della finestra precedente].

**Parametri delle funzioni ponderati nel tempo**

Le funzioni ponderate nel tempo calcolate per la finestra aggregata tengono conto di quanto segue:
+ Punti dati all'interno della finestra
+ Intervalli di tempo tra i punti dati
+ Ultimo punto dati prima della finestra
+ Primo punto dati dopo la finestra (per alcuni algoritmi)

**Termini:**
+ **Punto dati errato**: qualsiasi punto dati con valore non numerico o di qualità non buona. Questo non viene considerato nel calcolo dei risultati di una finestra.
+ **Intervallo errato**: l'intervallo dopo un punto dati errato. Anche l'intervallo precedente al primo punto dati noto è considerato un intervallo errato.
+ **Buon punto dati**: qualsiasi punto dati con buona qualità e valore numerico.

**Nota**  
AWS IoT SiteWise consuma dati di `GOOD` qualità solo quando calcola trasformazioni e metriche. Ignora e fornisce dati`UNCERTAIN`. `BAD`
L'intervallo precedente al primo punto dati noto è considerato un intervallo **errato**. Per ulteriori informazioni, consulta [Tutorial sulle espressioni di formule](expression-tutorials.md).

L'intervallo dopo l'ultimo punto dati noto continua all'infinito e influisce su tutte le finestre successive. Quando arriva un nuovo punto dati, la funzione ricalcola l'intervallo.

Seguendo le regole precedenti, il risultato aggregato della finestra viene calcolato e limitato ai limiti delle finestre. Per impostazione predefinita, la funzione invia il risultato della finestra solo se l'intera finestra è un intervallo **adeguato**.

Se l'**intervallo di validità** della finestra è inferiore alla lunghezza della finestra, la funzione non invia la finestra. 

Quando i punti dati che influiscono sul risultato della finestra cambiano, la funzione ricalcola la finestra, anche se i punti dati si trovano all'esterno della finestra. 

Se la proprietà di input ha almeno un punto dati nella sua cronologia ed è stato avviato un calcolo, la funzione calcola le funzioni aggregate ponderate nel tempo per ogni intervallo di tempo.

**Example Esempio di scenario statetime**  
Si consideri un esempio in cui si dispone di una risorsa con le seguenti proprietà:  
+ `Idle`— Una misurazione che è o. `0` `1` Quando il valore è `1`, la macchina è inattiva.
+ `Idle Time`— Una metrica che utilizza la formula `statetime(Idle)` per calcolare la quantità di tempo in secondi in cui la macchina è inattiva, per intervallo di 1 minuto.
La proprietà `Idle` ha i seguenti punti dati.  


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| Time stamp | 2:00:00 PM | 2:00:30 PM | 2:01:15 PM | 2:02:45 PM | 2:04:00 PM | 
| Idle | 0 | 1 | 1 | 0 | 0 | 
AWS IoT SiteWise calcola la `Idle Time` proprietà ogni minuto in base ai valori di. `Idle` Al termine di questo calcolo, la proprietà `Idle Time` ha i seguenti punti dati.  


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| Time stamp | 2:00:00 PM | 2:01:00 PM | 2:02:00 PM | 2:03:00 PM | 2:04:00 PM | 
| Idle Time | N/D | 30 | 60 | 45 | 0 | 
AWS IoT SiteWise esegue i seguenti calcoli `Idle Time` alla fine di ogni minuto.  
+ Alle 2:00 PM (dall’1:59 PM alle 2:00 PM)
  + Non ci sono dati per `Idle` prima delle 2:00 PM, quindi nessun punto dati viene calcolato.
+ Alle 2:01 PM (dalle 2:00 PM alle 2:01 PM)
  + Alle 2:00:00 PM, la macchina è attiva (`Idle` è `0`).
  + Alle 2:00:30 PM, la macchina è inattiva (`Idle` è `1`).
  + `Idle` non cambia di nuovo prima della fine dell'intervallo alle 2:01:00 PM, quindi `Idle Time` è 30 secondi.
+ Alle 2:02 PM (da 2:01 PM alle 2:02 PM)
  + Alle 2:01:00 PM, la macchina è inattiva (con l'ultimo punto dati alle 2:00:30 PM).
  + Alle 2:01:15, la macchina è ancora inattiva.
  + `Idle` non cambia di nuovo prima della fine dell'intervallo alle 2:02:00 PM, quindi `Idle Time` è 60 secondi.
+ Alle 2:03 PM (dalle 2:02 PM fino 2:03 PM)
  + Alle 2:02:00 PM, la macchina è inattiva (per l'ultimo punto dati alle 2:01:15 PM).
  + Alle 2:02:45 PM, la macchina è attiva.
  + `Idle` non cambia di nuovo prima della fine dell'intervallo alle 2:03:00 PM, quindi `Idle Time` è 45 secondi.
+ Alle 2:04 PM (dalle 2:03 PM fino alle 2:04 PM)
  + Alle 2:03:00 PM, la macchina è attiva (per l'ultimo punto dati alle 2:02:45 PM).
  + `Idle` non cambia di nuovo prima della fine dell'intervallo alle 2:04:00 PM, quindi `Idle Time` è 0 secondi.

**Example Esempio TimeWeightedAvg e TimeWeightedStDev scenario**  
Le tabelle seguenti forniscono input e output di esempio per queste metriche della finestra di un minuto:. `Avg(x), TimeWeightedAvg(x), TimeWeightedAvg(x, "linear"), stDev(x), timeWeightedStDev(x), timeWeightedStDev(x, 'p')`  
Esempio di input per una finestra aggregata di un minuto:  
Questi punti dati sono tutti di qualità. `GOOD`


|  |  | 
| --- |--- |
| 03:00:00 | 4.0 | 
| 03:01:00 | 2.0 | 
| 03:01:10 | 8.0 | 
| 03:01:50 | 20.0 | 
| 03:02:00 | 14,0 | 
| 03:02:05 | 10,0 | 
| 03:02:10 | 3.0 | 
| 03:02:30 | 20.0 | 
| 03:03:30 | 0,0 | 
Risultati aggregati in uscita:  
Nessuno: risultato non prodotto per questa finestra.


| Orario | `Avg(x)` | `TimeWeightedAvg(x)` | `TimeWeightedAvg(X, "linear")` | `stDev(X)` | `timeWeightedStDev(x)` | `timeWeightedStDev(x, 'p')` | 
| --- | --- | --- | --- | --- | --- | --- | 
| 3:00:00 | 4 | Nessuno | Nessuno | 0 | Nessuno | Nessuno | 
| 3:01:00 | 2 | 4 | 3 | 0 | 0 | 0 | 
| 3:02:00 | 14 | 9 | 13 | 6 | 5,4306 10041581775 | 5,385164807134504 | 
| 3:03:00 | 11 | 13 | 12,875 | 8,54400374531753 | 7,724054437220943 | 7,659416862050705 | 
| 3:04:00 | 0 | 10 | 2.5 | 0 | 10,084389681792215 | 10 | 
| 3:05:00 | Nessuno | 0 | 0 | Nessuno | 0 | 0 | 

## Usa le funzioni temporali nelle trasformazioni
<a name="temporal-functions-in-transforms"></a>

Solo nelle [trasformazioni](transforms.md), è possibile utilizzare la `pretrigger()` funzione per recuperare il valore di `GOOD` qualità di una variabile prima dell'aggiornamento della proprietà che ha avviato il calcolo della trasformazione corrente.

Consideriamo un esempio in cui un produttore monitora AWS IoT SiteWise lo stato di una macchina. Il produttore utilizza le seguenti misurazioni e trasformazioni per rappresentare il processo:
+ Una misurazione`current_state`, che può essere 0 o 1.
  + Se la macchina è in stato di pulizia, è `current_state` uguale a 1.
  + Se la macchina è in stato di produzione, è `current_state` uguale a 0.
+ Una trasformazione, che `cleaning_state_duration` equivale a. `if(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none)` Questa trasformazione restituisce per quanto tempo la macchina è rimasta nello stato di pulizia, in secondi, nel formato Unix epoch. Per ulteriori informazioni, vedere [Usa le funzioni condizionali nelle espressioni delle formule](expression-conditional-functions.md) e la funzione [timestamp](expression-date-and-time-functions.md) ().

Se la macchina rimane in stato di pulizia più a lungo del previsto, il produttore potrebbe esaminare la macchina.

È possibile utilizzare la `pretrigger()` funzione anche in trasformazioni multivariate. Ad esempio, avete due misure denominate `x` and e `y` una trasformazione uguale a. `z` `x + y + pretrigger(y)` La tabella seguente mostra i valori per `x` e `z` dalle 9:00 alle 9:15. `y`

**Nota**  
Questo esempio presuppone che i valori delle misurazioni arrivino in ordine cronologico. Ad esempio, il valore di `x` per 09:00 AM arriva prima del valore di `x` 09:05.
Se i punti dati per le 9:05 arrivano prima dei punti dati per le 9:00, `z` non viene calcolato alle 9:05.
Se il valore di `x` 9:05 AM arriva prima del valore di 09:00 AM e i valori di arrivano in `x` ordine cronologico, è uguale alle 9:05. `y` `z` `22 = 20 + 1 + 1`


|  | 09:00 | 09:05 | 09:10 | 09:15 | 
| --- | --- | --- | --- | --- | 
|  `x`  |  10  |  20  |    |  30  | 
|  `y`  |  1  |  2  |  3  |    | 
|  `z = x + y + pretrigger(y)`  |  `y`non riceve alcun punto dati prima delle 09:00. Pertanto, `z` non viene calcolato alle 09:00.  |  23 = 20 \$1 2 \$1 1 `pretrigger(y)`è uguale a 1.  |  25 = 20 \$1 3 \$1 2 `x`non riceve un nuovo punto dati. `pretrigger(y)`è uguale a 2.  |  36 = 30 \$1 3 \$1 3 `y`non riceve un nuovo punto dati. Pertanto, è `pretrigger(y)` uguale a 3 alle 09:15.  | 

# Utilizza le funzioni di data e ora nelle espressioni delle formule
<a name="expression-date-and-time-functions"></a>

Nelle [trasformazioni](transforms.md) e nelle [metriche](metrics.md), puoi utilizzare le funzioni di data e ora nei seguenti modi:
+ Recupera il timestamp corrente di un punto dati in UTC o nel fuso orario locale.
+ Costruisci timestamp con argomenti, come, e. `year` `month` `day_of_month`
+ Estrai un periodo di tempo, ad esempio un anno o un mese, con l'argomento. `unix_time`


| Funzione | Description | 
| --- | --- | 
|  `now()`  |  Restituisce la data e l'ora correnti, in secondi, nel formato Unix epoch.  | 
|  `timestamp()`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `mktime(time_zone, year, month, day_of_month, hour, minute, second)`  |  Restituisce il tempo di input in secondi, nel formato Unix epoch. Per l'utilizzo di questa funzione si applicano i seguenti requisiti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Per l'utilizzo di questa funzione si applicano i seguenti limiti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Esempi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `localtime(unix_time, time_zone)`  |  Restituisce l'anno, il giorno del mese, il giorno della settimana, il giorno dell'anno, l'ora, il minuto o il secondo nel fuso orario specificato dall'ora Unix. Per l'utilizzo di questa funzione si applicano i seguenti requisiti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Esempio di risposta: `2007-12-03T10:15:30+01:00[Europe/Paris]` `localtime(unix_time, time_zone)`non è una funzione autonoma. Le `sec()` funzioni `year()``mon()`,`mday`,`wday()`, `yday()``hour()`,`minute()`,, e prendono `localtime(unix_time, time_zone)` come argomento. Esempi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `year(localtime(unix_time, time_zone)`  |  Restituisce l'anno da`localtime(unix_time, time_zone)`.  | 
|  `mon(localtime(unix_time, time_zone))`  |  Restituisce il mese da`localtime(unix_time, time_zone)`.  | 
|  `mday(localtime(unix_time, time_zone))`  |  Restituisce il giorno del mese da`localtime(unix_time, time_zone)`.  | 
|  `wday(localtime(unix_time, time_zone))`  |  Restituisce il giorno della settimana da`localtime(unix_time, time_zone)`.  | 
|  `yday(localtime(unix_time, time_zone))`  |  Restituisce il giorno dell'anno da`localtime(unix_time, time_zone)`.  | 
|  `hour(localtime(unix_time, time_zone))`  |  Restituisce l'ora da`localtime(unix_time, time_zone)`.  | 
|  `minute(localtime(unix_time, time_zone))`  |  Restituisce il minuto da`localtime(unix_time, time_zone)`.  | 
|  `sec(localtime(unix_time, time_zone))`  |  Restituisce il secondo da`localtime(unix_time, time_zone)`.  | 

## Formati di fuso orario supportati
<a name="time-zone-expressions"></a>

È possibile specificare l'argomento del fuso orario nei seguenti modi:
+ Scostamento del fuso orario: specifica `'Z'` l'UTC o un offset (`'+2'`o). `'-5'`
+ Offset IDs : combina un'abbreviazione del fuso orario e un offset. Ad esempio `'GMT+2'` e `'UTC-01:00'`. L'abbreviazione del fuso orario deve contenere solo tre lettere.
+ Basato sulla regione IDs : ad esempio, `'Etc/GMT+12'` e`'Pacific/Pago_Pago'`.

### Abbreviazioni dei fusi orari supportate
<a name="spported-time-zones"></a>

Le funzioni di data e ora supportano le seguenti abbreviazioni del fuso orario di tre lettere: 
+ EST - - 05:00
+ SAB -- 10:00
+ SAB - 07:00
+ ACT - Australia/Darwin
+ AET - Australia/Sydney
+ AT - \$1Aires America/Argentina/Buenos
+ ARTE - Africa/Cairo
+ AST - America/Anchorage
+ BET - America/San Paolo
+ BST - Asia/Dacca
+ CAT - Africa/Harare
+ CET - Europa/Parigi
+ CNT - America/St. Johns
+ CST - America/Chicago
+ CTT - Asia/Shanghai 
+ EAT - Africa/Addis\$1Ababa
+ DIETA - America/Indiana/Indianapolis
+ IST - Asia/Calcutta
+ JST - Asia/Tokyo
+ MIT - Pacifico/Apia
+ NET - Asia/Erevan
+ NST - Pacifico/Auckland
+ PLT - Asia/Karachi
+ PRT - America/Portorico
+ PST - America/Los Angeles
+ SST - Pacifico/Guadalcanal
+ VST - Asia/Ho\$1Chi\$1Minh

### Supportato in base alla regione IDs
<a name="supported-region-based-ids"></a>

Le funzioni di data e ora supportano le seguenti funzioni basate sulla regione IDs, organizzate in base alla loro relazione con UTC\$1 00:00:
+ ETC/GMT\$112 (UTC- 12:00)
+ Pacifico/Pago\$1Pago (UTC- 11:00)
+ Pacifico/Samoa (UTC- 11:00)
+ Pacifico/Niue (UTC- 11:00)
+ Stati Uniti/Samoa (UTC- 11:00)
+ ETC/GMT\$111 (UTC- 11:00)
+ Pacifico/Midway (UTC- 11:00)
+ Pacifico/Honolulu (UTC- 10:00)
+ Pacifico/Rarotonga (UTC- 10:00)
+ Pacifico/Tahiti (UTC- 10:00)
+ Pacifico/Johnston (UTC- 10:00)
+ Stati Uniti/Hawaii (UTC- 10:00)
+ Sistema V/ HST10 (UTC- 10:00)
+ ETC/GMT\$110 (UTC- 10:00)
+ Pacifico/Marchesi (UTC- 09:30)
+ ETC/GMT\$19 (UTC- 09:00)
+ Pacifico/Gambier (UTC- 09:00)
+ America/Atka (UTC- 09:00)
+ Sistema V/ YST9 (UTC- 09:00)
+ America/Adak (UTC- 09:00)
+ Stati Uniti/Aleutine (UTC- 09:00)
+ ETC/GMT\$18 (UTC- 08:00)
+ Stati Uniti/Alaska (UTC- 08:00)
+ America/Juneau (UTC- 08:00)
+ America/Metlakatla (UTC- 08:00)
+ America/Yakutat (UTC- 08:00)
+ Pacifico/Pitcairn (UTC- 08:00)
+ America/Sitka (UTC- 08:00)
+ America/Anchorage (UTC- 08:00)
+ Sistema V/ PST8 (UTC- 08:00)
+ America/Nome (UTC- 08:00)
+ Sistema V/ YST9 YDT (UTC- 08:00)
+ Canada/Yukon (UTC- 07:00)
+ Stati Uniti/Pacifico - Nuovo (UTC- 07:00)
+ ETC/GMT\$17 (UTC- 07:00)
+ Stati Uniti/Arizona (UTC- 07:00)
+ America/Dawson\$1Creek (UTC- 07:00)
+ Canada/Pacifico (UTC- 07:00)
+ PST8PDT (UTC- 07:00)
+ Sistema V/ MST7 (UTC- 07:00)
+ America/Dawson (UTC- 07:00)
+ Messico/ BajaNorte (UTC- 07:00)
+ America/Tijuana (UTC- 07:00)
+ America/Creston (UTC- 07:00)
+ America/Hermosillo (UTC- 07:00)
+ America/Santa Isabel (UTC- 07:00)
+ America/Vancouver (UTC- 07:00)
+ America/Ensenada (UTC- 07:00)
+ America/Phoenix (UTC- 07:00)
+ America/Whitehorse (UTC- 07:00)
+ America/Fort\$1Nelson (UTC- 07:00)
+ Sistema V/ PST8 PDT (UTC- 07:00)
+ America/Los Angeles (UTC- 07:00)
+ Stati Uniti/Pacifico (UTC- 07:00)
+ America/El Salvador (UTC- 06:00)
+ America/Guatemala (UTC- 06:00)
+ America/Belize (UTC- 06:00)
+ America/Managua (UTC- 06:00)
+ America/Tegucigalpa (UTC- 06:00)
+ ETC/GMT\$16 (UTC- 06:00)
+ Pacifico/Pasqua (UTC- 06:00)
+ Messico/ BajaSur (UTC- 06:00)
+ America/Regina (UTC- 06:00)
+ America/Denver (UTC- 06:00)
+ Pacifico/Galapagos (UTC- 06:00)
+ America/Yellowknife (UTC- 06:00)
+ America/Swift\$1Current (UTC- 06:00)
+ America/Inuvik (UTC- 06:00)
+ America/Mazatlán (UTC- 06:00)
+ America/Boise (UTC- 06:00)
+ America/Costa-Rica (UTC- 06:00)
+ MST7MDT (UTC- 06:00)
+ Sistema V/ CST6 (UTC- 06:00)
+ America/Chihuahua (UTC- 06:00)
+ America/Ojinaga (UTC- 06:00)
+ Cile/ EasterIsland (UTC- 06:00)
+ Stati Uniti/Mountain (UTC- 06:00)
+ America/Edmonton (UTC- 06:00)
+ Canada/Montagna (UTC- 06:00)
+ America/Cambridge\$1Bay (UTC- 06:00)
+ Navajo (UTC- 06:00)
+ Sistema V/ MST7 MDT (UTC- 06:00)
+ Canada/Saskatchewan (UTC- 06:00)
+ America/Shiprock (UTC- 06:00)
+ America/Panama (UTC- 05:00)
+ America/Chicago (UTC- 05:00)
+ America/Eirunepé (UTC- 05:00)
+ ETC/GMT\$15 (UTC- 05:00)
+ Messico/Generale (UTC- 05:00)
+ America/Porto\$1Acre (UTC- 05:00)
+ America/Guayaquil (UTC- 05:00)
+ America/Rankin\$1Inlet (UTC- 05:00)
+ Stati Uniti/Central (UTC- 05:00)
+ America/Rainy\$1River (UTC- 05:00)
+ America/Indiana/Knox(UTC- 05:00)
+ America/North\$1Dakota/Beulah(UTC- 05:00)
+ America/Monterrey (UTC- 05:00)
+ America/Giamaica (UTC- 05:00)
+ America/Atikokan (UTC- 05:00)
+ America/Coral\$1Harbour (UTC- 05:00)
+ America/North\$1Dakota/Center(UTC- 05:00)
+ America/Cayman (UTC- 05:00)
+ America/Indiana/Tell\$1Città (UTC- 05:00)
+ America/Città del Messico (UTC- 05:00)
+ America/Matamoros (UTC- 05:00)
+ CST6CDT (UTC- 05:00)
+ America/Knox\$1in (UTC- 05:00)
+ America/Bogotà (UTC- 05:00)
+ America/Menominee (UTC- 05:00)
+ America/Resolute (UTC- 05:00)
+ Sistema V/ EST5 (UTC- 05:00)
+ Canada/Central (UTC- 05:00)
+ Brasile/Acre (UTC- 05:00)
+ America/Cancún (UTC- 05:00)
+ America/Lima (UTC- 05:00)
+ America/Bahia Banderas (UTC- 05:00)
+ Stati Uniti/Indiana-Starke (UTC- 05:00)
+ America/Rio\$1Branco (UTC- 05:00)
+ Sistema V/ CST6 CDT (UTC- 05:00)
+ Giamaica (UTC- 05:00)
+ America/Mérida (UTC- 05:00)
+ America/North\$1Dakota/New\$1Salem (UTC- 05:00)
+ America/Winnipeg (UTC- 05:00)
+ America/Cuiabá (UTC- 04:00)
+ America/Marigot (UTC- 04:00)
+ America/Indiana/Petersburg(UTC- 04:00)
+ Cile/Continentale (UTC- 04:00)
+ America/Grand\$1Turk (UTC- 04:00)
+ Cuba (UTC- 04:00)
+ ETC/GMT\$14 (UTC- 04:00)
+ America/Manaus (UTC- 04:00)
+ America/Fort\$1Wayne (UTC- 04:00)
+ America/Saint Thomas (UTC- 04:00)
+ America/Anguilla (UTC- 04:00)
+ America/L'Avana (UTC- 04:00)
+ Stati Uniti/Michigan (UTC- 04:00)
+ America/Barbados (UTC- 04:00)
+ America/Louisville (UTC- 04:00)
+ America/Curacao (UTC- 04:00)
+ America/Guyana (UTC- 04:00)
+ America/Martinica (UTC- 04:00)
+ America/Porto\$1Rico (UTC- 04:00)
+ America/Port\$1of\$1Spain (UTC- 04:00)
+ Sistema V/ AST4 (UTC- 04:00)
+ America/Indiana/Vevay(UTC- 04:00)
+ America/Indiana/Vincennes(UTC- 04:00)
+ America/Kralendijk (UTC- 04:00)
+ America/Antigua (UTC- 04:00)
+ America/Indianapolis (UTC- 04:00)
+ America/Iqaluit (UTC- 04:00)
+ America/Saint Vincent (UTC- 04:00)
+ America/Kentucky/Louisville(UTC- 04:00)
+ America/Dominica (UTC- 04:00)
+ America/Asunción (UTC- 04:00)
+ EST5EDT (UTC- 04:00)
+ America/Nassau (UTC- 04:00)
+ America/Kentucky/Monticello(UTC- 04:00)
+ Brasile/Ovest (UTC- 04:00)
+ America/Aruba (UTC- 04:00)
+ America/Indiana/Indianapolis(UTC- 04:00)
+ America/Santiago (UTC- 04:00)
+ America/La\$1Paz (UTC- 04:00)
+ America/Thunder\$1Bay (UTC- 04:00)
+ America/Indiana/Marengo(UTC- 04:00)
+ America/Blanc-Sablon (UTC- 04:00)
+ America/Santo Domingo (UTC- 04:00)
+ Stati Uniti/Orientali (UTC- 04:00)
+ Canada/Est (UTC- 04:00)
+ America/ Port-au-Prince (UTC- 04:00)
+ America/Saint Barthelemy (UTC- 04:00)
+ America/Nipigon (UTC- 04:00)
+ Stati Uniti/Indiana orientale (UTC- 04:00)
+ America/Saint Lucia (UTC- 04:00)
+ America/Montserrat (UTC- 04:00)
+ America/Lower\$1Princes (UTC- 04:00)
+ America/Detroit (UTC- 04:00)
+ America/Tortola (UTC- 04:00)
+ America/Porto\$1Velho (UTC- 04:00)
+ America/Campo\$1Grande (UTC- 04:00)
+ America/Isole Vergini (UTC- 04:00)
+ America/Pangnirtung (UTC- 04:00)
+ America/Montréal (UTC- 04:00)
+ America/Indiana/Winamac(UTC- 04:00)
+ America/Boa Vista (UTC- 04:00)
+ America/Grenada (UTC- 04:00)
+ America/New York (UTC- 04:00)
+ America/Saint Kitts (UTC- 04:00)
+ America/Caracas (UTC- 04:00)
+ America/Guadalupa (UTC- 04:00)
+ America/Toronto (UTC- 04:00)
+ Sistema V/ EST5 EDT (UTC- 04:00)
+ America/Argentina/Catamarca(UTC- 03:00)
+ Canada/Atlantico (UTC- 03:00)
+ America/Argentina/Cordoba(UTC- 03:00)
+ America/Araguaina (UTC- 03:00)
+ America/Argentina/Salta(UTC- 03:00)
+ ETC/GMT\$13 (UTC- 03:00)
+ America/Montevideo (UTC- 03:00)
+ Brasile/Est (UTC- 03:00)
+ America/Argentina/Mendoza(UTC- 03:00)
+ America/Argentina/Rio\$1Gallegos (UTC- 03:00)
+ America/Catamarca (UTC- 03:00)
+ America/Córdoba (UTC- 03:00)
+ America/San Paolo (UTC- 03:00)
+ America/Argentina/Jujuy(UTC- 03:00)
+ America/Cayenne (UTC- 03:00)
+ America/Recife (UTC- 03:00)
+ America/Buenos Aires (UTC- 03:00)
+ America/Paramaribo (UTC- 03:00)
+ America/Moncton (UTC- 03:00)
+ America/Mendoza (UTC- 03:00)
+ America/Santarem (UTC- 03:00)
+ Atlantico/Bermuda (UTC- 03:00)
+ America/Maceió (UTC- 03:00)
+ Atlantico/Stanley (UTC- 03:00)
+ America/Halifax (UTC- 03:00)
+ Antartide/Rothera (UTC- 03:00)
+ America/Argentina/San\$1Luis (UTC- 03:00)
+ America/Argentina/Ushuaia(UTC- 03:00)
+ Antartide/Palmer (UTC- 03:00)
+ America/Punta\$1Arenas (UTC- 03:00)
+ America/Glace\$1Bay (UTC- 03:00)
+ America/Fortaleza (UTC- 03:00)
+ America/Thule (UTC- 03:00)
+ America/Argentina/La\$1Rioja (UTC- 03:00)
+ America/Belém (UTC- 03:00)
+ America/Jujuy (UTC- 03:00)
+ America/Bahia (UTC- 03:00)
+ America/Goose\$1Bay (UTC- 03:00)
+ America/Argentina/San\$1Juan (UTC- 03:00)
+ America/Argentina/ComodRivadavia(UTC- 03:00)
+ America/Argentina/Tucuman(UTC- 03:00)
+ America/Rosario (UTC- 03:00)
+ Sistema AST4 V/ADT (UTC- 03:00)
+ America/Argentina/Buenos\$1Aires (UTC- 03:00)
+ America/Saint Johns (UTC- 02:30)
+ Canada/Terranova (UTC- 02:30)
+ America/Miquelon (UTC- 02:00)
+ ETC/GMT\$12 (UTC- 02:00)
+ America/Godthab (UTC- 02:00)
+ America/Norfolk (UTC- 02:00)
+ Brasile/ DeNoronha (UTC- 02:00)
+ Atlantico/Georgia del Sud (UTC- 02:00)
+ ETC/GMT\$11 (UTC- 01:00)
+ Atlantico/Capo Verde (UTC- 01:00)
+ Pacifico/Kiritimati (UTC\$1 14:00)
+ ETC/GMT-14 (UTC\$1 14:00)
+ Pacifico/Fakaofo (UTC\$1 13:00)
+ Pacifico/Enderbury (UTC\$1 13:00)
+ Pacifico/Apia (UTC\$1 13:00)
+ Pacifico/Tongatapu (UTC\$1 13:00)
+ Etc/GMT-13 (UTC\$1 13:00)
+ NZ-CHAT (UTC\$1 12:45)
+ Pacifico/Chatham (UTC\$1 12:45)
+ Pacifico/Kwajalein (UTC\$1 12:00)
+ Antartide/ (UTC\$1 12:00) McMurdo 
+ Pacifico/Wallis (UTC\$1 12:00)
+ Pacifico/Figi (UTC\$1 12:00)
+ Pacifico/Funafuti (UTC\$1 12:00)
+ Pacifico/Nauru (UTC\$1 12:00)
+ Kwajalein (UTC\$1 12:00)
+ NZ (UTC\$1 12:00)
+ Pacifico/Wake (UTC\$1 12:00)
+ Antartide/South\$1Pole (UTC\$1 12:00)
+ Pacifico/Tarawa (UTC\$1 12:00)
+ Pacifico/Auckland (UTC\$1 12:00)
+ Asia/Kamchatka (UTC\$1 12:00)
+ Etc/GMT-12 (UTC\$1 12:00)
+ Asia/Anadyr (UTC\$1 12:00)
+ Pacifico/Majuro (UTC\$1 12:00)
+ Pacifico/Ponape (UTC\$1 11:00)
+ Pacifico/Bougainville (UTC\$1 11:00)
+ Antartide/Macquarie (UTC\$1 11:00)
+ Pacifico/Pohnpei (UTC\$1 11:00)
+ Pacifico/Efate (UTC\$1 11:00)
+ Pacifico/Norfolk (UTC\$1 11:00)
+ Asia/Magadan (UTC\$1 11:00)
+ Pacifico/Kosrae (UTC\$1 11:00)
+ Asia/Sakhalin (UTC\$1 11:00)
+ Pacifico/Noumea (UTC\$1 11:00)
+ ETC/GMT-11 (UTC\$1 11:00)
+ Asia/Srednekolymsk (UTC\$1 11:00)
+ Pacifico/Guadalcanal (UTC\$1 11:00)
+ Australia/Lord Howe (UTC\$1 10:30)
+ Australia/LHI (UTC\$1 10:30)
+ Australia/Hobart (UTC\$1 10:00)
+ Pacifico/Yap (UTC\$1 10:00)
+ Australia/Tasmania (UTC\$1 10:00)
+ Pacifico/Port\$1Moresby (UTC\$1 10:00)
+ Australia/ACT (UTC\$1 10:00)
+ Australia/Victoria (UTC\$1 10:00)
+ Pacifico/Chuuk (UTC\$1 10:00)
+ Australia/Queensland (UTC\$1 10:00)
+ Australia/Canberra (UTC\$1 10:00)
+ Australia/Currie (UTC\$1 10:00)
+ Pacifico/Guam (UTC\$1 10:00)
+ Pacifico/Truk (UTC\$1 10:00)
+ Australia/Nuovo Galles del Sud (UTC\$1 10:00)
+ Asia/Vladivostok (UTC\$1 10:00)
+ Pacifico/Saipan (UTC\$1 10:00)
+ Antartide/Dumont (UTC\$1 10:00DUrville )
+ Australia/Sydney (UTC\$1 10:00)
+ Australia/Brisbane (UTC\$1 10:00)
+ Etc/GMT-10 (UTC\$1 10:00)
+ Asia/Ust-Nera (UTC\$1 10:00)
+ Australia/Melbourne (UTC\$1 10:00)
+ Australia/Lindeman (UTC\$1 10:00)
+ Australia/Nord (UTC\$1 09:30)
+ Australia/Yancowinna (UTC\$1 09:30)
+ Australia/Adelaide (UTC\$1 09:30)
+ Australia/Broken\$1Hill (UTC\$1 09:30)
+ Australia/Sud (UTC\$1 09:30)
+ Australia/Darwin (UTC\$1 09:30)
+ ETC/GMT-9 (UTC\$1 09:00)
+ Pacifico/Palau (UTC\$1 09:00)
+ Asia/Chita (UTC\$1 09:00)
+ Asia/Dili (UTC\$1 09:00)
+ Asia/Jayapura (UTC\$1 09:00)
+ Asia/Yakutsk (UTC\$1 09:00)
+ Asia/Pyongyang (UTC\$1 09:00)
+ MERCOLEDÌ (UTC\$1 09:00)
+ Asia/Seul (UTC\$1 09:00)
+ Asia/Khandyga (UTC\$1 09:00)
+ Giappone (UTC\$1 09:00)
+ Asia/Tokyo (UTC\$1 09:00)
+ Australia/Eucla (UTC\$1 08:45)
+ Asia/Kuching (UTC\$1 08:00)
+ Asia/Chungking (UTC\$1 08:00)
+ ETC/GMT-8 (UTC\$1 08:00)
+ Australia/Perth (UTC\$1 08:00)
+ Asia/Macao (UTC\$1 08:00)
+ Asia/Macao (UTC\$1 08:00)
+ Asia/Choibalsan (UTC\$1 08:00)
+ Asia/Shanghai (UTC\$1 08:00)
+ Antartide/Casey (UTC\$1 08:00)
+ Asia/Ulan\$1Bator (UTC\$1 08:00)
+ Asia/Chongqing (UTC\$1 08:00)
+ Asia/Ulan Bator (UTC\$1 08:00)
+ Asia/Taipei (UTC\$1 08:00)
+ Asia/Manila (UTC\$1 08:00)
+ PRC (UTC\$1 08:00)
+ Asia/Ujung-Pandang (UTC\$1 08:00)
+ Asia/Harbin (UTC\$1 08:00)
+ Singapore (UTC\$1 08:00)
+ Asia/Brunei (UTC\$1 08:00)
+ Australia/Ovest (UTC\$1 08:00)
+ Asia/Hong Kong (UTC\$1 08:00)
+ Asia/Makassar (UTC\$1 08:00)
+ Hong Kong (UTC\$1 08:00)
+ Asia/Kuala Lumpur (UTC\$1 08:00)
+ Asia/Irkutsk (UTC\$1 08:00)
+ Asia/Singapore (UTC\$1 08:00)
+ Asia/Pontianak (UTC\$1 07:00)
+ ETC/GMT-7 (UTC\$1 07:00)
+ Asia/Phnom\$1Penh (UTC\$1 07:00)
+ Asia/Novosibirsk (UTC\$1 07:00)
+ Antartide/Davis (UTC\$1 07:00)
+ Asia/Tomsk (UTC\$1 07:00)
+ Asia/Giacarta (UTC\$1 07:00)
+ Asia/Barnaul (UTC\$1 07:00)
+ Indiano/Natale (UTC\$1 07:00)
+ Asia/Ho Chi Minh (UTC\$1 07:00)
+ Asia/Hovd (UTC\$1 07:00)
+ Asia/Bangkok (UTC\$1 07:00)
+ Asia/Vientiane (UTC\$1 07:00)
+ Asia/Novokuzneck (UTC\$1 07:00)
+ Asia/Krasnoyarsk (UTC\$1 07:00)
+ Asia/Saigon (UTC\$1 07:00)
+ Asia/Yangon (UTC\$1 06:30)
+ Asia/Yangon (UTC\$1 06:30)
+ Indiana/Cocos (UTC\$1 06:30)
+ Asia/Kashgar (UTC\$1 06:00)
+ ETC/GMT-6 (UTC\$1 06:00)
+ Asia/Almaty (UTC\$1 06:00)
+ Asia/Dacca (UTC\$1 06:00)
+ Asia/Omsk (UTC\$1 06:00)
+ Asia/Dacca (UTC\$1 06:00)
+ Indiana/Chagos (UTC\$1 06:00)
+ Asia/Qyzylorda (UTC\$1 06:00)
+ Asia/Bishkek (UTC\$1 06:00)
+ Antartide/Vostok (UTC\$1 06:00)
+ Asia/Urumqi (UTC\$1 06:00)
+ Asia/Thimbu (UTC\$1 06:00)
+ Asia/Thimphu (UTC\$1 06:00)
+ Asia/Kathmandu (UTC\$1 05:45)
+ Asia/Kathmandu (UTC\$1 05:45)
+ Asia/Calcutta (UTC\$1 05:30)
+ Asia/Colombo (UTC\$1 05:30)
+ Asia/Calcutta (UTC\$1 05:30)
+ Asia/Aqtau (UTC\$1 05:00)
+ ETC/GMT-5 (UTC\$1 05:00)
+ Asia/Samarcanda (UTC\$1 05:00)
+ Asia/Karachi (UTC\$1 05:00)
+ Asia/Ekaterinburg (UTC\$1 05:00)
+ Asia/Dushanbe (UTC\$1 05:00)
+ Indiana/Maldive (UTC\$1 05:00)
+ Asia/Orale (UTC\$1 05:00)
+ Asia/Taskent (UTC\$1 05:00)
+ Antartide/Mawson (UTC\$1 05:00)
+ Asia/Aktobe (UTC\$1 05:00)
+ Asia/Ashkhabad (UTC\$1 05:00)
+ Asia/Ashgabat (UTC\$1 05:00)
+ Asia/Atyrau (UTC\$1 05:00)
+ Indiana/Kerguelen (UTC\$1 05:00)
+ Iran (UTC\$1 04:30)
+ Asia/Teheran (UTC\$1 04:30)
+ Asia/Kabul (UTC\$1 04:30)
+ Asia/Yerevan (UTC\$1 04:00)
+ ETC/GMT-4 (UTC\$1 04:00)
+ Etc/GMT-4 (UTC\$1 04:00)
+ Asia/Dubai (UTC\$1 04:00)
+ Indiana/Riunione (UTC\$1 04:00)
+ Europa/Saratov (UTC\$1 04:00)
+ Europa/Samara (UTC\$1 04:00)
+ Indiana/Mahé (UTC\$1 04:00)
+ Asia/Baku (UTC\$1 04:00)
+ Asia/Muscat (UTC\$1 04:00)
+ Europa/Volgograd (UTC\$1 04:00)
+ Europa/Astrakhan (UTC\$1 04:00)
+ Asia/Tbilisi (UTC\$1 04:00)
+ Europa/Ulyanovsk (UTC\$1 04:00)
+ Asia/Aden (UTC\$1 03:00)
+ Africa/Nairobi (UTC\$1 03:00)
+ Europa/Istanbul (UTC\$1 03:00)
+ ETC/GMT-3 (UTC\$1 03:00)
+ Europa/Zaporozhye (UTC\$1 03:00)
+ Israele (UTC\$1 03:00)
+ Indiana/Comore (UTC\$1 03:00)
+ Antartide/Syowa (UTC\$1 03:00)
+ Africa/Mogadiscio (UTC\$1 03:00)
+ Europa/Bucarest (UTC\$1 03:00)
+ Africa/Asmeria (UTC\$1 03:00)
+ Europa/Mariehamn (UTC\$1 03:00)
+ Asia/Istanbul (UTC\$1 03:00)
+ Europa/Tiraspol (UTC\$1 03:00)
+ Europa/Mosca (UTC\$1 03:00)
+ Europa/Chisinau (UTC\$1 03:00)
+ Europa/Helsinki (UTC\$1 03:00)
+ Asia/Beirut (UTC\$1 03:00)
+ Asia/Tel Aviv (UTC\$1 03:00)
+ Africa/Gibuti (UTC\$1 03:00)
+ Europa/Simferopol (UTC\$1 03:00)
+ Europa/Sofia (UTC\$1 03:00)
+ Asia/Gaza (UTC\$1 03:00)
+ Africa/Asmara (UTC\$1 03:00)
+ Europa/Riga (UTC\$1 03:00)
+ Asia/Bagdad (UTC\$1 03:00)
+ Asia/Damasco (UTC\$1 03:00)
+ Africa/Dar\$1es\$1Salaam (UTC\$1 03:00)
+ Africa/Addis\$1Abeba (UTC\$1 03:00)
+ Europa/Uzhgorod (UTC\$1 03:00)
+ Asia/Gerusalemme (UTC\$1 03:00)
+ Asia/Riyad (UTC\$1 03:00)
+ Asia/Kuwait (UTC\$1 03:00)
+ Europa/Kirov (UTC\$1 03:00)
+ Africa/Kampala (UTC\$1 03:00)
+ Europa/Minsk (UTC\$1 03:00)
+ Asia/Qatar (UTC\$1 03:00)
+ Europa/Kiev (UTC\$1 03:00)
+ Asia/Bahrein (UTC\$1 03:00)
+ Europa/Vilnius (UTC\$1 03:00)
+ Indiana/Antananarivo (UTC\$1 03:00)
+ Indiana/Mayotte (UTC\$1 03:00)
+ Europa/Tallinn (UTC\$1 03:00)
+ Turchia (UTC\$1 03:00)
+ Africa/Juba (UTC\$1 03:00)
+ Asia/Nicosia (UTC\$1 03:00)
+ Asia/Famagosta (UTC\$1 03:00)
+ S-DOM (UTC\$1 03:00)
+ EET (UTC\$1 03:00)
+ Asia/Hebron (UTC\$1 03:00)
+ Asia/Amman (UTC\$1 03:00)
+ Europa/Nicosia (UTC\$1 03:00)
+ Europa/Atene (UTC\$1 03:00)
+ Africa/Cairo (UTC\$1 02:00)
+ Africa/Mbabane (UTC\$1 02:00)
+ Europa/Bruxelles (UTC\$1 02:00)
+ Europa/Varsavia (UTC\$1 02:00)
+ CET (UTC\$1 02:00)
+ Europa/Lussemburgo (UTC\$1 02:00)
+ ETC/GMT-2 (UTC\$1 02:00)
+ Libia (UTC\$1 02:00)
+ Africa/Kigali (UTC\$1 02:00)
+ Africa/Tripoli (UTC\$1 02:00)
+ Europa/Kaliningrad (UTC\$1 02:00)
+ Africa/Windhoek (UTC\$1 02:00)
+ Europa/Malta (UTC\$1 02:00)
+ Europa/Busingen (UTC\$1 02:00)
+ 
+ Europa/Skopje (UTC\$1 02:00)
+ Europa/Sarajevo (UTC\$1 02:00)
+ Europa/Roma (UTC\$1 02:00)
+ Europa/Zurigo (UTC\$1 02:00)
+ Europa/Gibilterra (UTC\$1 02:00)
+ Africa/Lubumbashi (UTC\$1 02:00)
+ Europa/Vaduz (UTC\$1 02:00)
+ Europa/Lubiana (UTC\$1 02:00)
+ Europa/Berlino (UTC\$1 02:00)
+ Europa/Stoccolma (UTC\$1 02:00)
+ Europa/Budapest (UTC\$1 02:00)
+ Europa/Zagabria (UTC\$1 02:00)
+ Europa/Parigi (UTC\$1 02:00)
+ Africa/Ceuta (UTC\$1 02:00)
+ Europa/Praga (UTC\$1 02:00)
+ Antartide/Troll (UTC\$1 02:00)
+ Africa/Gaborone (UTC\$1 02:00)
+ Europa/Copenaghen (UTC\$1 02:00)
+ Europa/Vienna (UTC\$1 02:00)
+ Europa/Tirana (UTC\$1 02:00)
+ INCONTRATO (UTC\$1 02:00)
+ Europa/Amsterdam (UTC\$1 02:00)
+ Africa/Maputo (UTC\$1 02:00)
+ Europa/San\$1Marino (UTC\$1 02:00)
+ Polonia (UTC\$1 02:00)
+ Europa/Andorra (UTC\$1 02:00)
+ Europa/Oslo (UTC\$1 02:00)
+ Europa/Podgorica (UTC\$1 02:00)
+ Africa/Bujumbura (UTC\$1 02:00)
+ Atlantico/Jan\$1Mayen (UTC\$1 02:00)
+ Africa/Maseru (UTC\$1 02:00)
+ Europa/Madrid (UTC\$1 02:00)
+ Africa/Blantyre (UTC\$1 02:00)
+ Africa/Lusaka (UTC\$1 02:00)
+ Africa/Harare (UTC\$1 02:00)
+ Africa/Khartum (UTC\$1 02:00)
+ Africa/Johannesburg (UTC\$1 02:00)
+ Europa/Belgrado (UTC\$1 02:00)
+ Europa/Bratislava (UTC\$1 02:00)
+ Artico/Longyearbyen (UTC\$1 02:00)
+ Egitto (UTC\$1 02:00)
+ Europa/Vaticano (UTC\$1 02:00)
+ Europa/Monaco (UTC\$1 02:00)
+ Europa/Londra (UTC\$1 01:00)
+ Etc/GMT-1 (UTC\$1 01:00)
+ Europa/Jersey (UTC\$1 01:00)
+ Europa/Guernsey (UTC\$1 01:00)
+ Europa/Isle\$1of\$1Man (UTC\$1 01:00)
+ Africa/Tunisi (UTC\$1 01:00)
+ Africa/Malabo (UTC\$1 01:00)
+ GB-Irlanda (UTC\$1 01:00)
+ Africa/Lagos (UTC\$1 01:00)
+ Africa/Algeri (UTC\$1 01:00)
+ IT (UTC\$1 01:00)
+ Portogallo (UTC\$1 01:00)
+ Africa/Sao\$1Tomé (UTC\$1 01:00)
+ Africa/N' Djamena (UTC\$1 01:00)
+ Atlantico/Fær Øer (UTC\$1 01:00)
+ Irlanda (UTC\$1 01:00)
+ Atlantico/Faroe (UTC\$1 01:00)
+ Europa/Dublino (UTC\$1 01:00)
+ Africa/Libreville (UTC\$1 01:00)
+ Africa/El\$1Aaiun (UTC\$1 01:00)
+ Africa/El\$1Aaiun (UTC\$1 01:00)
+ Africa/Douala (UTC\$1 01:00)
+ Africa/Brazzaville (UTC\$1 01:00)
+ Africa/Porto-Novo (UTC\$1 01:00)
+ Atlantico/Madeira (UTC\$1 01:00)
+ Europa/Lisbona (UTC\$1 01:00)
+ Atlantico/Canarie (UTC\$1 01:00)
+ Africa/Casablanca (UTC\$1 01:00)
+ Europa/Belfast (UTC\$1 01:00)
+ Africa/Luanda (UTC\$1 01:00)
+ Africa/Kinshasa (UTC\$1 01:00)
+ Africa/Bangui (UTC\$1 01:00)
+ UMIDO (UTC\$1 01:00)
+ Africa/Niamey (UTC\$1 01:00)
+ GMT (UTC\$1 00:00)
+ etc/GMT-0 (UTC\$1 00:00)
+ Atlantic/Sant' Elena (UTC\$1 00:00)
+ Etc/GMT\$10 (UTC\$1 00:00)
+ Africa/Banjul (UTC\$1 00:00)
+ ETC/GMT (UTC\$1 00:00)
+ Africa/Freetown (UTC\$1 00:00)
+ Africa/Bamako (UTC\$1 00:00)
+ Africa/Conakry (UTC\$1 00:00)
+ Universale (UTC\$1 00:00)
+ Africa/Nouakchott (UTC\$1 00:00)
+ UTC (UTC\$1 00:00)
+ Etc/Universal (UTC\$1 00:00)
+ Atlantico/Azzorre (UTC\$1 00:00)
+ Africa/Abidjan (UTC\$1 00:00)
+ Africa/Accra (UTC\$1 00:00)
+ ETC/UTC (UTC\$1 00:00)
+ GMT0 (UTC\$1 00:00)
+ Zulu (UTC\$1 00:00) Zulu (UTC\$1 00:00)
+ Africa/Ouagadougou (UTC\$1 00:00)
+ Atlantico/Reykjavík (UTC\$1 00:00)
+ Etc/Zulu (UTC\$1 00:00)
+ Islanda (UTC\$1 00:00)
+ Africa/Lomé (UTC\$1 00:00)
+ Greenwich (UTC\$1 00:00)
+ GMT0 Ecc/ (UTC\$1 00:00)
+ America/Danmarkshavn (UTC\$1 00:00)
+ Africa/Dakar (UTC\$1 00:00)
+ Africa/Bissau (UTC\$1 00:00)
+ Etc/Greenwich (UTC\$1 00:00)
+ Africa/Timbuctù (UTC\$1 00:00)
+ UTC (UTC\$1 00:00)
+ Africa/Monrovia (UTC\$1 00:00)
+ ETC/UTC (UTC\$1 00:00)

# Tutorial sulle espressioni di formule
<a name="expression-tutorials"></a>

Puoi seguire questi tutorial per utilizzare le espressioni delle formule in. AWS IoT SiteWise

**Topics**
+ [Usa le stringhe nelle formule](#use-strings-in-formulas)
+ [Filtra i punti dati](#filter-data)
+ [Conta i punti dati che corrispondono a una condizione](#count-filtered-data)
+ [Dati tardivi nelle formule](#late-data)
+ [Qualità dei dati nelle formule](#data-quality)
+ [Valori indefiniti, infiniti e di overflow](#undefined-values)

## Usa le stringhe nelle formule
<a name="use-strings-in-formulas"></a>

È possibile utilizzare le stringhe nelle espressioni delle formule. È inoltre possibile inserire stringhe da variabili che fanno riferimento alle proprietà degli attributi e delle misurazioni.

**Importante**  
<a name="formula-output-rules"></a>Le espressioni delle formule possono generare solo valori doppi o stringhe. Le espressioni annidate possono generare altri tipi di dati, ad esempio stringhe, ma la formula nel suo insieme deve restituire un numero o una stringa. È possibile utilizzare la [funzione jp](expression-string-functions.md#jp-definition) per convertire una stringa in un numero. Il valore booleano deve essere 1 (vero) o 0 (falso). Per ulteriori informazioni, consulta [Valori indefiniti, infiniti e di overflow](#undefined-values).

AWS IoT SiteWise fornisce le seguenti funzionalità di espressione delle formule che è possibile utilizzare per operare sulle stringhe:
+ [Stringhe letterali](expression-literals.md#string-literal-definition)
+ L'[operatore di indice](expression-operators.md#index-operator-definition) () `s[index]`
+ L'[operatore slice](expression-operators.md#slice-operator-definition) () `s[start:end:step]`
+ [Funzioni di confronto](expression-comparison-functions.md)[, che è possibile utilizzare per confrontare le stringhe in base all'ordine lessicografico](https://en.wikipedia.org/wiki/Lexicographic_order)
+ [Funzioni di stringa](expression-string-functions.md), che includono la `jp` funzione in grado di analizzare oggetti JSON serializzati e convertire stringhe in numeri

## Filtra i punti dati
<a name="filter-data"></a>

Puoi utilizzare la [funzione if](expression-conditional-functions.md#if-definition) per filtrare i punti dati che non soddisfano una condizione. La `if` funzione valuta una condizione e restituisce valori `true` e `false` risultati diversi. È possibile utilizzare la [costante none](expression-constants.md#none-definition) come output per un caso di una `if` funzione per scartare il punto dati relativo a quel caso.

**Per filtrare i punti dati che corrispondono a una condizione**
+ Crea una trasformazione che utilizzi la `if` funzione per definire una condizione che verifichi se una condizione è soddisfatta e la restituisca `none` come `result_if_false` valore `result_if_true` or.

**Example Esempio: filtra i punti dati in cui l'acqua non bolle**  
Prendiamo in considerazione uno scenario in cui si esegue `temp_c` una misurazione che fornisce la temperatura (in gradi Celsius) dell'acqua in una macchina. Puoi definire la seguente trasformazione per filtrare i punti dati in cui l'acqua non bolle:  
+ Trasforma: `boiling_temps = if(gte(temp_c, 100), temp_c, none)` — Restituisce la temperatura se è maggiore o uguale a 100 gradi Celsius, altrimenti non restituisce alcun punto dati.

## Conta i punti dati che corrispondono a una condizione
<a name="count-filtered-data"></a>

È possibile utilizzare [le funzioni di confronto](expression-comparison-functions.md) e [sum ()](expression-aggregation-functions.md#sum-definition) per contare il numero di punti dati per i quali una condizione è vera.

**Per contare i punti dati che corrispondono a una condizione**

1. Crea una trasformazione che utilizza una funzione di confronto per definire una condizione di filtro su un'altra proprietà.

1. Creare un parametro che sommi i punti dati in cui tale condizione è soddisfatta.

**Example Esempio: contare il numero di punti dati in cui l'acqua è in ebollizione.**  
Prendiamo in considerazione uno scenario in cui si esegue `temp_c` una misurazione che fornisce la temperatura (in gradi Celsius) dell'acqua in una macchina. È possibile definire le seguenti proprietà di trasformazione e parametro per contare il numero di punti dati in cui l'acqua è in ebollizione:  
+ Trasforma: `is_boiling = gte(temp_c, 100)` — Restituisce `1` se la temperatura è maggiore o uguale a 100 gradi Celsius, altrimenti restituisce. `0`
+ Metrica: `boiling_count = sum(is_boiling)` — Restituisce il numero di punti dati in cui l'acqua bolle.

## Dati tardivi nelle formule
<a name="late-data"></a>

AWS IoT SiteWise supporta l'inserimento tardivo di dati risalenti fino a 7 giorni fa. Quando AWS IoT SiteWise riceve dati in ritardo, ricalcola i valori esistenti per qualsiasi metrica che inserisce i dati in ritardo in una finestra precedente. Questi ricalcoli comportano costi di elaborazione dei dati.

**Nota**  
Quando AWS IoT SiteWise calcola proprietà che immettono dati tardivi, utilizza l'espressione della formula corrente di ogni proprietà.

Dopo aver AWS IoT SiteWise ricalcolato una finestra precedente per una metrica, sostituisce il valore precedente per quella finestra. Se hai abilitato le notifiche per quella metrica, emette AWS IoT SiteWise anche una notifica del valore della proprietà. Ciò significa che è possibile ricevere una nuova notifica di aggiornamento del valore della proprietà per la stessa proprietà e timestamp per cui è stata precedentemente ricevuta una notifica. Se le applicazioni o i data lake utilizzano notifiche sui valori delle proprietà, devi aggiornare il valore precedente con il nuovo valore in modo che i dati siano accurati.

## Qualità dei dati nelle formule
<a name="data-quality"></a>

In AWS IoT SiteWise, ogni punto dati ha un codice di qualità, che può essere uno dei seguenti:
+ `GOOD`— I dati non sono interessati da alcun problema.
+ `BAD`— I dati sono interessati da un problema come il guasto del sensore.
+ `UNCERTAIN`— I dati sono influenzati da un problema come l'imprecisione del sensore.

AWS IoT SiteWise utilizza solo dati `GOOD` di qualità quando calcola trasformazioni e metriche. AWS IoT SiteWise restituisce solo dati di `GOOD` qualità per calcoli di successo. Se un calcolo non ha esito positivo, AWS IoT SiteWise non emette un punto dati per quel calcolo. Ciò può verificarsi se un calcolo genera un valore indefinito, infinito o di overflow.

Per ulteriori informazioni su come eseguire query sui dati e filtrare in base alla qualità dei dati, vedere [Interroga i dati da AWS IoT SiteWise](query-industrial-data.md).

## Valori indefiniti, infiniti e di overflow
<a name="undefined-values"></a>

Alcune espressioni di formule (ad esempio `x / 0``sqrt(-1)`, o`log(0)`) calcolano valori non definiti in un sistema numerico reale, infiniti o al di fuori dell'intervallo supportato da. AWS IoT SiteWise Quando l'espressione di una proprietà di asset calcola un valore indefinito, infinito o di overflow, AWS IoT SiteWise non genera un punto dati per quel calcolo.

AWS IoT SiteWise inoltre non emette un punto dati se calcola un valore non numerico come risultato di un'espressione di formula. Ciò significa che se definisci una formula che calcola una stringa, una matrice o la [costante none](expression-constants.md#none-definition), AWS IoT SiteWise non genera un punto dati per quel calcolo.

**Example Esempi**  
Ciascuna delle seguenti espressioni di formula restituisce un valore che non AWS IoT SiteWise può essere rappresentato come numero. AWS IoT SiteWise non genera un punto dati quando calcola queste espressioni di formule.  
+ `x / 0`non è definito.
+ `log(0)`non è definito.
+ `sqrt(-1)`non è definito in un sistema numerico reale.
+ `"hello" + " world"`è una stringa.
+ `jp('{"values":[3,6,7]}', '$.values')`è un array.
+ `if(gte(temp, 300), temp, none)`è `none` quando `temp` è inferiore a`300`.

# Crea modelli compositi personalizzati (componenti)
<a name="create-custom-composite-models"></a>

I modelli compositi personalizzati, o componenti, se utilizzi la console, forniscono un altro livello di organizzazione per i modelli di asset e i modelli di componenti. Puoi usarli per strutturare i tuoi modelli raggruppando le proprietà o facendo riferimento ad altri modelli. Per ulteriori informazioni sull'utilizzo di modelli compositi personalizzati, consulta. [Modelli compositi personalizzati (componenti)](custom-composite-models.md)

È possibile creare un modello composito personalizzato all'interno di un modello di asset o di componenti esistente. Esistono due tipi di modelli compositi personalizzati. Per raggruppare le proprietà correlate all'interno di un modello, è possibile creare un modello composito personalizzato **in linea**. Per fare riferimento a un modello di componente all'interno del vostro modello di asset o modello di componente, potete creare un modello composito **component-model-based**personalizzato.

Le sezioni seguenti descrivono come utilizzare l' AWS IoT SiteWise API per creare modelli compositi personalizzati.

**Topics**
+ [Crea un componente in linea (console)](#create-inline-component-console)
+ [Create un modello composito personalizzato in linea ()AWS CLI](#create-inline-composite-models-cli)
+ [Crea un component-model-based componente (console)](#create-component-console)
+ [Crea un modello composito component-model-based personalizzato (AWS CLI)](#create-component-based-composite-model-cli)

## Crea un componente in linea (console)
<a name="create-inline-component-console"></a>

È possibile utilizzare la AWS IoT SiteWise console per creare un componente in linea che definisce le proprie proprietà.

**Nota**  
Poiché si tratta di un componente *in linea*, queste proprietà si applicano solo al modello di asset corrente e non sono condivise altrove.  
Se avete bisogno di produrre un modello riutilizzabile (ad esempio, per condividerlo tra più modelli di asset o per includere più istanze all'interno di un modello di asset), dovreste invece creare un componente basato su un modello di componente. Per i dettagli, consulta la sezione seguente.

**Per creare un componente (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Nel riquadro di navigazione selezionare **Models (Modelli)**.

1. Scegliete il modello di asset a cui desiderate aggiungere un componente.

1. Nella scheda **Proprietà**, scegliete **Componenti**.

1. Scegliete **Crea componente**.

1. Nella pagina **Crea componente**, procedi come segue:

   1. Immettete un **nome** per il componente, ad esempio **ServoMotor** o**ServoMotor Model**. Questo nome deve essere univoco per tutti i componenti del tuo account in questa regione.

   1. (Facoltativo) Aggiungi le **definizioni attributi** per il modello. Gli attributi rappresentano informazioni che vengono modificate raramente. Per ulteriori informazioni, consulta [Definisci dati statici (attributi)](attributes.md).

   1. (Facoltativo) Aggiungi le **definizioni misurazione ** per il modello. Le misurazioni rappresentano flussi di dati provenienti dall'apparecchiatura. Per ulteriori informazioni, consulta [Definisci i flussi di dati provenienti dalle apparecchiature (misurazioni)](measurements.md).

   1. (Facoltativo) Aggiungi le **definizioni di trasformazione** per il modello. Le trasformazioni sono formule che mappano i dati da un modulo all'altro. Per ulteriori informazioni, consulta [Trasforma i dati (trasformazioni)](transforms.md).

   1. (Facoltativo) Aggiungi le **definizioni parametro** per il modello. Le metriche sono formule che aggregano i dati su intervalli di tempo. Le metriche possono inserire dati dalle risorse associate, in modo da poter calcolare valori che rappresentano l'operazione o un sottoinsieme dell'operazione. Per ulteriori informazioni, consulta [Aggrega i dati provenienti da proprietà e altre risorse (metriche)](metrics.md).

   1. Scegliete **Crea componente**.

## Create un modello composito personalizzato in linea ()AWS CLI
<a name="create-inline-composite-models-cli"></a>

È possibile utilizzare il AWS Command Line Interface (AWS CLI) per creare un modello composito personalizzato in linea che definisce le proprie proprietà.

Utilizzate l'[CreateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html)operazione per creare un modello in linea con proprietà. Questa operazione prevede un payload con la seguente struttura.

**Nota**  
Poiché si tratta di un modello composito *in linea*, queste proprietà si applicano solo al modello di asset corrente e non sono condivise altrove. Ciò che lo rende «in linea» è che non fornisce un valore per il `composedAssetModelId` campo.  
Se avete bisogno di produrre un modello riutilizzabile (ad esempio, da condividere tra più modelli di asset o per includere più istanze all'interno di un unico modello di asset), dovreste invece creare un modello *component-model-based*composito. Per i dettagli, consultate la sezione seguente.

```
{
    "assetModelCompositeModelName": "CNCLathe_ServoMotorA",
    "assetModelCompositeModelType": "CUSTOM",
    "assetModelCompositeModelProperties": [
        {
            "dataType": "DOUBLE",
            "name": "Servo Motor Temperature",
            "type": {
            "measurement": {}
            },
            "unit": "Celsius"
        },
        {
            "dataType": "DOUBLE",
            "name": "Spindle speed",
            "type": {
            "measurement": {}
            },
            "unit": "rpm"
        }
    ]
}
```

## Crea un component-model-based componente (console)
<a name="create-component-console"></a>

È possibile utilizzare la AWS IoT SiteWise console per creare un componente basato su un modello di componente.

**Per creare un component-model-based componente (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Nel riquadro di navigazione selezionare **Models (Modelli)**.

1. Scegliete il modello di asset a cui desiderate aggiungere un componente.

1. Nella scheda **Proprietà**, scegliete **Componenti**.

1. Scegliete **Crea componente**.

1. Nella pagina **Crea componente**, procedi come segue:

   1. Seleziona il modello di componente su cui vuoi basare il componente.

   1. Immettete un **nome** per il componente, ad esempio **ServoMotor** o**ServoMotor Model**. Questo nome deve essere univoco per tutti i componenti del tuo account in questa regione.

   1. Scegli **Crea componente**.

## Crea un modello composito component-model-based personalizzato (AWS CLI)
<a name="create-component-based-composite-model-cli"></a>

Puoi utilizzarli AWS CLI per creare un modello composito component-model-based personalizzato all'interno del tuo modello di asset. Un modello composito component-model-based personalizzato è un riferimento a un modello di componente che hai già definito altrove.

Utilizzate l'[CreateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html)operazione per creare un modello composito component-model-based personalizzato. Questa operazione prevede un payload con la seguente struttura.

**Nota**  
In questo esempio, il valore di `composedAssetModelId` è l'ID del modello di asset o l'ID esterno di un modello di componente esistente. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *. Per un esempio di come creare un modello di componente, vedete[Crea un modello di componente (AWS CLI)](create-component-models.md#create-component-model-cli).

```
{
    "assetModelCompositeModelName": "CNCLathe_ServoMotorA",
    "assetModelCompositeModelType": "CUSTOM",
    "composedAssetModelId": component model ID
]
```

Poiché è solo un riferimento, un modello composito component-model-based personalizzato non ha proprietà proprie, a parte un nome.

Se desiderate aggiungere più istanze dello stesso componente al vostro modello di asset (ad esempio, una macchina CNC con più servomotori), potete aggiungere più modelli compositi component-model-based personalizzati che hanno ciascuno il proprio nome ma che fanno tutti lo stesso riferimento. `composedAssetModelId`

È possibile annidare i componenti all'interno di altri componenti. A tale scopo, puoi aggiungere un modello component-model-based composito, come mostrato in questo esempio, a uno dei tuoi modelli di componenti.

# Crea risorse per modelli di asset in AWS IoT SiteWise
<a name="create-assets"></a>

È possibile creare un asset partendo da un modello. Devi avere un modello di asset prima di poter creare un asset. Se non hai creato nessun modello di asset, consulta [Crea modelli di asset in AWS IoT SiteWise](create-asset-models.md). 

**Nota**  
È possibile creare asset solo da modelli `ACTIVE`. Se lo stato del modello non fosse `ACTIVE`, bisognerà attendere qualche minuto per poter creare degli asset correlati. Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md).

**Topics**
+ [Creare una risorsa (console)](#create-asset-console)
+ [Crea una risorsa (AWS CLI)](#create-asset-cli)
+ [Configura una nuova risorsa](create-asset-next-steps.md)

## Creare una risorsa (console)
<a name="create-asset-console"></a>

Puoi usare la AWS IoT SiteWise console per creare una risorsa.

**Per creare un asset (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Nel riquadro di navigazione, scegli **Asset**.

1. Selezionare **Create asset (Crea asset)**.

1. Nella pagina **Crea asset**, esegui le operazioni seguenti:

   1. Per **Modello**, scegli il modello di asset da cui creare un asset.
**Nota**  
Se il modello non è **ATTIVO**, è necessario attendere che diventi attivo oppure risolvere i problemi se è **NON RIUSCITO**.

   1. Immetti un **nome** per l'asset.

   1. (Facoltativo) Aggiungi i tag per l'asset. Per ulteriori informazioni, consulta [Tagga le tue AWS IoT SiteWise risorse](tag-resources.md).

   1. Selezionare **Create asset (Crea asset)**.

   Quando crei una risorsa, la AWS IoT SiteWise console accede alla pagina della nuova risorsa. In questa pagina puoi vedere lo **stato** dell'asset che inizialmente è **CREAZIONE IN CORSO**. Questa pagina si aggiorna automaticamente, quindi attendi l'aggiornamento dello stato dell'asset.
**Nota**  
Il processo di creazione di un asset può richiedere fino a un minuto. Dopo che lo **Stato** è **ATTIVO**, potete eseguire operazioni di aggiornamento sulla risorsa. Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md).

Dopo aver creato un asset, consulta [Configura una nuova risorsa](create-asset-next-steps.md).

## Crea una risorsa (AWS CLI)
<a name="create-asset-cli"></a>

È possibile utilizzare AWS Command Line Interface (AWS CLI) per creare una risorsa da un modello di asset.

Per creare un asset, è necessario disporre di un `assetModelId`. Se avete creato un modello di asset, ma non lo conoscete`assetModelId`, utilizzate l'[ListAssetModels](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html)API per visualizzare tutti i vostri modelli di asset.

Per creare una risorsa da un modello di asset, utilizzate l'[CreateAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAsset.html)API con i seguenti parametri:
+ `assetName`— Il nome della nuova risorsa. Assegna un nome alla risorsa per aiutarti a identificarla.
+ `assetModelId`— L'ID della risorsa. Questo è l'ID effettivo in formato UUID, o `externalId:myExternalId` se ne ha uno. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

**Per creare una risorsa ()AWS CLI**
+ Esegui il comando seguente per creare un asset. Sostituitelo *asset-name* con un nome per la risorsa e *asset-model-id* con l'ID o l'ID esterno del modello di asset. 

  ```
  aws iotsitewise create-asset \
    --asset-name asset-name \
    --asset-model-id asset-model-id
  ```

  L'azione restituisce una risposta contenente lo stato e i dettagli del nuovo asset nel formato seguente.

  ```
  {
    "assetId": "String",
    "assetArn": "String",
    "assetStatus": {
      "state": "String",
      "error": {
        "code": "String",
        "message": "String"
      }
    }
  }
  ```

  L'elemento `state` è `CREATING` fino a quando l'asset non viene creato.
**Nota**  
Il processo di creazione di un asset può richiedere fino a un minuto. Per verificare lo stato della risorsa, utilizzate l'[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)operazione con l'ID della risorsa come `assetId` parametro. Dopo che la risorsa `state` è `ACTIVE` pronta, potete eseguire operazioni di aggiornamento sulla risorsa. Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md).

Dopo aver creato un asset, consulta [Configura una nuova risorsa](create-asset-next-steps.md).

# Configura una nuova risorsa
<a name="create-asset-next-steps"></a>

Dopo aver creato una risorsa in AWS IoT SiteWise, è possibile eseguire diversi passaggi successivi per utilizzare appieno la risorsa e i relativi dati. Questi passaggi possono includere la configurazione dei flussi di dati per l'acquisizione dei dati dalla risorsa, l'impostazione di allarmi e notifiche per monitorare le prestazioni della risorsa, la creazione di visualizzazioni e dashboard per visualizzare i dati della risorsa e l'integrazione della risorsa con altri AWS servizi o applicazioni di terze parti per ulteriori analisi o automazione.

Completate la configurazione della risorsa con le seguenti azioni opzionali:
+ [Gestisci i flussi di dati per AWS IoT SiteWise](manage-data-streams.md) se l'asset ha proprietà di misurazione.
+ [Aggiorna i valori degli attributi](update-attribute-values.md) se l'asset ha valori di attributo univoci.
+ [Associare e dissociare gli asset](add-associated-assets.md) se l'asset è padre.

# Cerca risorse su Console AWS IoT SiteWise
<a name="asset-search"></a>

Utilizza la funzionalità Console AWS IoT SiteWise di ricerca per trovare risorse in base ai metadati e ai filtri dei valori delle proprietà in tempo reale.

## Prerequisiti
<a name="prereqs-search"></a>

 AWS IoT SiteWise richiede autorizzazioni per l'integrazione per organizzare e AWS IoT TwinMaker modellare meglio i dati industriali. Se hai concesso le autorizzazioni a AWS IoT SiteWise, utilizza l'[ExecuteQuery](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExecuteQuery.html)API. Se non hai concesso le autorizzazioni e hai bisogno di assistenza per AWS IoT SiteWise iniziare, consulta. [Integrazione AWS IoT SiteWise e AWS IoT TwinMaker](integrate-tm.md)

## Ricerca avanzata su Console AWS IoT SiteWise
<a name="advanced-search"></a>

### Ricerca di metadati
<a name="advanced-metadata-search"></a>

1. Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. Nel riquadro di navigazione, scegli **Ricerca avanzata** in **Risorse**.

1. In **Ricerca avanzata**, scegliete l'opzione di **ricerca dei metadati**.

1. Compila i parametri. Compila il maggior numero possibile di campi per una ricerca efficiente.

   1. **Nome della risorsa**: inserisci un nome completo della risorsa o un nome parziale per una ricerca ampia.

   1. **Nome della proprietà**: inserisci il nome completo della proprietà o un nome parziale per una ricerca ampia.

   1. **Operatore**: scegli un operatore tra:
      + **=**
      + **<**
      + **>**
      + **<=**
      + **>=**

   1. **Valore della proprietà**: questo valore viene confrontato con il valore più recente della proprietà.

   1. **Tipo di valore della proprietà**: il tipo di dati della proprietà. Scegli tra le seguenti opzioni:
      + **Doppio**
      + **Numero intero**
      + **Stringa**
      + **Booleano**

1. Selezionare **Search (Cerca)**.

1. Nella tabella dei **risultati della ricerca**, scegliete la risorsa dalla colonna **Nome**. Verrà visualizzata la pagina dettagliata della risorsa.

![\[risultati della ricerca di metadati.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/search_results_all_fields.png)


#### Ricerca parziale
<a name="advanced-metadata-partial-search"></a>

Non è necessario fornire tutti i parametri per la ricerca di risorse. Ecco alcuni esempi di ricerche parziali che utilizzano l'opzione di ricerca Metadati:
+ Trova le risorse in base al loro nome:
  + Inserisci un valore solo nel campo **Nome risorsa**.
  + I campi **Nome** della **proprietà e Valore della proprietà** sono vuoti.
+ Trova risorse contenenti proprietà con un nome specifico:
  + Immettete un valore solo nel campo **Nome della proprietà**.
  + I campi **Nome della risorsa** e **Valore della proprietà** sono vuoti.
+ Trova le risorse in base ai valori più recenti delle loro proprietà:
  + Immettete i valori nei campi **Nome** della **proprietà e Valore della proprietà**.
  + Seleziona un **tipo di valore **dell'operatore** e della proprietà**.

### Ricerca con Query Builder
<a name="query-builder-search"></a>

1. Passare alla Console AWS IoT SiteWise.

1. Nel riquadro di navigazione, scegli **Ricerca avanzata** in **Risorse**.

1. In **Ricerca avanzata** scegli l'opzione **Query builder**.

1. Nel riquadro **Query Builder**, scrivi la tua query SQL per recuperare un`asset_name`, e. `asset_id` `asset_description`

1. Selezionare **Search (Cerca)**.

1. Dalla tabella dei **risultati della ricerca**, scegliete la risorsa dalla colonna **Nome**. Verrà visualizzata la pagina dettagliata della risorsa.

![\[risultati della ricerca di query builder.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/search_results_sql_query.png)


**Nota**  
 La `SELECT` clausola della query SQL deve includere i `asset_id` campi `asset_name` and per garantire una risorsa valida nella tabella dei **risultati della ricerca**. 
 Il **generatore di query** visualizza solo il **nome**, l'**ID della risorsa** e la **descrizione** nella tabella dei risultati. L'aggiunta di altri campi alla `SELECT` clausola non aggiunge altre colonne alla tabella dei risultati 

# Aggiorna i valori degli attributi
<a name="update-attribute-values"></a>

Gli asset ereditano gli attributi del proprio modello con i relativi valori predefiniti. In alcuni casi, è consigliabile mantenere l'attributo predefinito del modello di asset; ad esempio, per la proprietà del produttore di un asset. In altri casi, invece, occorre aggiornare l'attributo ereditato; ad esempio, per la latitudine e la longitudine di un asset. 

------
#### [ Updating an attribute value (console) ]

È possibile utilizzare la AWS IoT SiteWise console per aggiornare il valore di una proprietà di un asset attributo.

**Per aggiornare il valore di un attributo (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Nel riquadro di navigazione, scegli **Asset**.

1. Scegli l'asset per cui vuoi aggiornare un attributo.
**Suggerimento**  <a name="sitewise-expand-asset-hierarchy"></a>
Puoi scegliere l'icona a forma di freccia per espandere una gerarchia di asset e trovare il tuo asset.

1. Scegli **Modifica**.

1. Individua l'attributo da aggiornare e quindi immetti il nuovo valore.  
![\[AWS IoT SiteWise Schermata della pagina «Modifica risorsa» con il valore di un attributo evidenziato.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/sitewise-update-asset-attribute-console.png)

1. Scegli **Save** (Salva).

------
#### [ Updating an attribute value (AWS CLI) ]

È possibile utilizzare AWS Command Line Interface (AWS CLI) per aggiornare il valore di un attributo.

Per completare questa procedura, è necessario conoscere l'elemento `assetId` dell'asset e l'elemento `propertyId` della proprietà. Puoi anche usare l'ID esterno. Se hai creato una risorsa e non la conosci`assetId`, utilizza l'[ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html)API per elencare tutte le risorse per un modello specifico. Utilizzate l'[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)operazione per visualizzare le proprietà della risorsa, inclusa la proprietà IDs.

L'operazione [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) consente di assegnare i valori degli attributi all'asset. È possibile utilizzare questa operazione per impostare più attributi contemporaneamente. Il payload di questa operazione include un elenco di voci, ciascuna delle quali contenente l'ID asset, l'ID proprietà e il valore dell'attributo.<a name="attribute-id-update-cli"></a>

**Per aggiornare il valore di un attributo (AWS CLI)**

1. Crea un file denominato `batch-put-payload.json` e copia il seguente oggetto JSON nel file. Questo esempio di payload mostra come impostare la latitudine e la longitudine di una turbina eolica. Aggiorna i valori IDs, e i timestamp per modificare il payload per il tuo caso d'uso.

   ```
   {
     "entries": [
       {
         "entryId": "windfarm3-turbine7-latitude",
         "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
         "propertyId": "a1b2c3d4-5678-90ab-cdef-33333EXAMPLE",
         "propertyValues": [
           {
             "value": {
               "doubleValue": 47.6204
             },
             "timestamp": {
               "timeInSeconds": 1575691200
             }
           }
         ]
       },
       {
         "entryId": "windfarm3-turbine7-longitude",
         "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
         "propertyId": "a1b2c3d4-5678-90ab-cdef-55555EXAMPLE",
         "propertyValues": [
           {
             "value": {
               "doubleValue": 122.3491
             },
             "timestamp": {
               "timeInSeconds": 1575691200
             }
           }
         ]
       }
     ]
   }
   ```
   + Ogni voce nel payload contiene un `entryId` che è possibile definire come una qualsiasi stringa univoca. Se una richiesta non riesce, ciascun errore conterrà l'`entryId` della richiesta corrispondente in modo che sia possibile sapere quale richiesta riprovare.
   + Per impostare il valore di un attributo, è possibile includere una struttura timestamp-quality-value (TQV) nell'elenco di proprietà di `propertyValues` ogni attributo. Questa struttura deve contenere il nuovo `value` e il `timestamp` corrente.
     + `value`— Una struttura che contiene uno dei seguenti campi, a seconda del tipo di proprietà impostata:
       + `booleanValue`
       + `doubleValue`
       + `integerValue`
       + `stringValue`
       + `nullValue`
     + `timestamp`— Una struttura che contiene l'ora attuale dell'epoca Unix in secondi,. `timeInSeconds` AWS IoT SiteWise rifiuta tutti i punti dati con timestamp che esistevano da più di 7 giorni nel passato o più recenti di 5 minuti nelle future.

   Per ulteriori informazioni su come preparare un payload per [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html), consulta [Inserisci dati con AWS IoT SiteWise APIs](ingest-api.md).

1. Esegui il comando seguente per inviare i valori degli attributi a: AWS IoT SiteWise

   ```
   aws iotsitewise batch-put-asset-property-value -\-cli-input-json file://batch-put-payload.json
   ```

------

# Associare e dissociare gli asset
<a name="add-associated-assets"></a>

Se il modello di asset li prevede nelle proprie gerarchie, è possibile associare asset figlio all'asset padre. Gli asset padre possono accedere e aggregare i dati dagli asset associati. Per ulteriori informazioni sui modelli di asset gerarchici, consulta [Definite le gerarchie dei modelli di asset](define-asset-hierarchies.md). Se si utilizzano interfacce, le gerarchie definite nell'interfaccia vengono applicate ai modelli di asset che implementano l'interfaccia. Per ulteriori informazioni sulle interfacce, consulta. [Interfacce del modello di asset](model-interfaces.md)

**Topics**
+ [Associare e dissociare le risorse (console)](#associate-asset-console)
+ [Associa e dissocia le risorse ()AWS CLI](#associate-asset-cli)

## Associare e dissociare le risorse (console)
<a name="associate-asset-console"></a>

Puoi utilizzare la AWS IoT SiteWise console per associare e dissociare le risorse.

**Per associare un asset (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Nel riquadro di navigazione, scegli **Asset**.

1. Scegli l'asset padre a cui vuoi associare un asset figlio.
**Suggerimento**  <a name="sitewise-expand-asset-hierarchy"></a>
Puoi scegliere l'icona a forma di freccia per espandere una gerarchia di asset e trovare il tuo asset.

1. Scegli **Modifica**.

1. In **Asset associati a questo asset** scegli **Aggiungi asset associato**.  
![\[La pagina AWS IoT SiteWise Modifica risorsa con questo campo di testo: Aggiungi risorsa associata.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/sitewise-associate-asset-console.png)

1. Per **Gerarchia**, scegli la gerarchia che definisce la relazione tra l'asset padre e l'asset figlio.

1. Per **Asset**, scegli l'asset figlio da associare.

1. Scegli **Save** (Salva).

**Per annullare l'associazione di un asset (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Nel riquadro di navigazione, scegli **Asset**.

1. Scegli l'asset padre per cui vuoi annullare l'associazione di un asset figlio.
**Suggerimento**  <a name="sitewise-expand-asset-hierarchy"></a>
Puoi scegliere l'icona a forma di freccia per espandere una gerarchia di asset e trovare il tuo asset.

1. Scegli **Modifica**.

1. In **Asset associati a questo asset** scegli **Annulla associazione**.  
![\[AWS IoT SiteWise Schermata della pagina «Modifica risorsa» con «Dissocia» evidenziato.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/sitewise-disassociate-asset-console.png)

1. Scegli **Save** (Salva).

## Associa e dissocia le risorse ()AWS CLI
<a name="associate-asset-cli"></a>

È possibile utilizzare AWS Command Line Interface (AWS CLI) per associare e dissociare gli asset.

Per questa procedura, devi conoscere l'ID della gerarchia (`hierarchyId`) presente nel modello di asset padre che definisce la relazione con il modello di asset figlio. Utilizzate l'[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)operazione per trovare l'ID della gerarchia nella risposta.

**Per trovare un ID gerarchia**
+ Esegui il comando seguente per descrivere l'asset padre. Sostituisci *parent-asset-id* con l'ID o l'ID esterno della risorsa principale.

  ```
  aws iotsitewise describe-asset --asset-id parent-asset-id
  ```

  L'operazione restituisce una risposta contenente i dettagli dell'asset. La risposta contiene un `assetHierarchies` elenco con la seguente struttura:

  ```
  {
    ...
    "assetHierarchies": [
      {
        "id": "String",
        "name": "String"
      }
    ],
    ...
  }
  ```

  L'ID gerarchia è il valore `id` di una gerarchia nell'elenco delle gerarchie di asset.

Una volta ottenuto l'ID gerarchia puoi associare o annullare l'associazione di un asset alla gerarchia.

Per associare una risorsa secondaria a una risorsa principale, utilizzate l'[AssociateAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssociateAssets.html)operazione. Per dissociare una risorsa secondaria da una risorsa principale, utilizzate l'[DisassociateAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DisassociateAssets.html)operazione. Specifica i seguenti parametri, che sono gli stessi per entrambe le operazioni:
+ `assetId`— L'ID o l'ID esterno della risorsa principale.
+ `hierarchyId`— L'ID della gerarchia o l'ID esterno nella risorsa principale.
+ `childAssetId`— L'ID o l'ID esterno della risorsa secondaria.

**Per associare una risorsa (AWS CLI)**
+ Esegui il comando seguente per associare un asset figlio a un asset padre. Sostituisci *parent-asset-id**hierarchy-id*, e *child-asset-id* con il rispettivo IDs:

  ```
  aws iotsitewise associate-assets \
    --asset-id parent-asset-id \
    --hierarchy-id hierarchy-id \
    --child-asset-id child-asset-id
  ```

**Per dissociare una risorsa ()AWS CLI**
+ Esegui il comando seguente per annullare l'associazione di un asset figlio a un asset padre. Sostituisci *parent-asset-id**hierarchy-id*, e *child-asset-id* con il rispettivo IDs:

  ```
  aws iotsitewise disassociate-assets \
    --asset-id parent-asset-id \
    --hierarchy-id hierarchy-id \
    --child-asset-id child-asset-id
  ```

# Aggiorna risorse e modelli
<a name="update-assets-and-models"></a>

È possibile aggiornare gli asset, i modelli di asset, i modelli di componenti e le interfacce AWS IoT SiteWise per modificarne i nomi e le definizioni. Queste operazioni di aggiornamento sono asincrone e richiedono tempo per essere propagate. AWS IoT SiteWise Controllate lo stato della risorsa o del modello prima di apportare ulteriori modifiche. È necessario attendere la propagazione delle modifiche prima di poter continuare a utilizzare l'asset o il modello aggiornato.

**Topics**
+ [Aggiorna le risorse in AWS IoT SiteWise](update-assets.md)
+ [Aggiorna i modelli di asset, i modelli dei componenti e le interfacce](update-asset-models.md)
+ [Aggiorna modelli compositi personalizzati (componenti)](update-custom-composite-models.md)
+ [Blocco ottimistico per le scritture dei modelli di asset](opt-locking-for-model.md)

# Aggiorna le risorse in AWS IoT SiteWise
<a name="update-assets"></a>

Puoi utilizzare la AWS IoT SiteWise console o l'API per aggiornare il nome di una risorsa.

Quando aggiorni una risorsa, lo stato della risorsa rimane invariato `UPDATING` fino alla propagazione delle modifiche. Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md).

**Topics**
+ [Aggiorna una risorsa (console)](#update-asset-console)
+ [Aggiorna una risorsa (AWS CLI)](#update-asset-cli)

## Aggiorna una risorsa (console)
<a name="update-asset-console"></a>

Puoi utilizzare la AWS IoT SiteWise console per aggiornare i dettagli della risorsa.

**Per aggiornare un asset (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Nel riquadro di navigazione, scegli **Asset**.

1. Scegli l'asset da aggiornare.
**Suggerimento**  <a name="sitewise-expand-asset-hierarchy"></a>
Puoi scegliere l'icona a forma di freccia per espandere una gerarchia di asset e trovare il tuo asset.

1. Scegli **Modifica**.

1. Aggiorna il **nome**dell'asset.

1. (Facoltativo) In questa pagina aggiorna altre informazioni relative all'asset. Per ulteriori informazioni, consulta gli argomenti seguenti:
   + [Gestisci i flussi di dati per AWS IoT SiteWise](manage-data-streams.md)
   + [Aggiorna i valori degli attributi](update-attribute-values.md)
   + [Interagisci con altri AWS servizi](interact-with-other-services.md)

1. Scegli **Save** (Salva).

## Aggiorna una risorsa (AWS CLI)
<a name="update-asset-cli"></a>

Puoi usare il AWS Command Line Interface (AWS CLI) per aggiornare il nome di una risorsa.

Utilizzate l'[UpdateAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAsset.html)operazione per aggiornare una risorsa. Specifica i seguenti parametri:
+ `assetId`— L'ID della risorsa. Questo è l'ID effettivo in formato UUID, o `externalId:myExternalId` se ne ha uno. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.
+ `assetName`— Il nuovo nome della risorsa.

**Per aggiornare il nome di una risorsa (AWS CLI)**
+ Esegui il comando seguente per aggiornare il nome di un asset. Sostituisci *asset-id* con l'ID o l'ID esterno della risorsa. Aggiorna il *asset-name* con il nuovo nome della risorsa.

  ```
  aws iotsitewise update-asset \
    --asset-id asset-id \
    --asset-name asset-name
  ```

# Aggiorna i modelli di asset, i modelli dei componenti e le interfacce
<a name="update-asset-models"></a>

Utilizza la AWS IoT SiteWise console o l'API per aggiornare un modello di asset, un modello di componente o un'interfaccia.

Non puoi modificare il tipo o il tipo di dati di una proprietà esistente o la finestra di una metrica esistente. Inoltre, non è possibile modificare il tipo di modello da modello di asset a modello di componenti o interfaccia o viceversa.

**Importante**  
Se rimuovete una proprietà da un modello di asset o da un modello di componente, AWS IoT SiteWise elimina tutti i dati precedenti relativi a quella proprietà. Per quanto riguarda i modelli a componenti, ciò influisce su **tutti i modelli di asset che utilizzano quel modello di componenti**, quindi prestate particolare attenzione a capire in che misura la modifica può essere applicata.
Se rimuovete una definizione di gerarchia da un modello di asset, AWS IoT SiteWise dissocia tutti gli asset in quella gerarchia.

Quando aggiorni un modello, anche gli asset basati su quel modello assimilano le modifiche apportate. Fino a quando le modifiche non si propagano, ogni asset ha lo stato `UPDATING`. È necessario attendere fino a quando gli asset ritornano nello stato `ACTIVE` prima di poter interagire con loro. In questo lasso di tempo, lo stato del modello di asset aggiornato sarà `PROPAGATING`.

Quando aggiornate un modello di componente, ogni modello di asset che incorpora quel modello di componente riflette le modifiche. Fino a quando le modifiche al modello di componente non si propagano, ogni modello di asset interessato presenta `UPDATING` lo stato, seguito dall'`PROPAGATING`aggiornamento degli asset associati, come descritto nel paragrafo precedente. È necessario attendere che tali modelli di asset tornino allo `ACTIVE` stato precedente prima di interagire con essi. Durante questo periodo, lo stato del modello di componente aggiornato sarà`PROPAGATING`.

Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md).

**Topics**
+ [Aggiornamento di un modello di asset, di un modello di componente o di un'interfaccia (console)](#update-asset-model-console)
+ [Aggiornate un modello di asset, un modello di componente o un'interfaccia ()AWS CLI](#update-asset-model-cli)

## Aggiornamento di un modello di asset, di un modello di componente o di un'interfaccia (console)
<a name="update-asset-model-console"></a>

È possibile utilizzare la AWS IoT SiteWise console per aggiornare un modello di asset, un modello di componente o un'interfaccia.

**Per aggiornare un modello di asset, un modello di componente o un'interfaccia (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Nel riquadro di navigazione selezionare **Models (Modelli)**.

1. Scegliete il modello di asset, il modello di componente o l'interfaccia da aggiornare.

1. Scegli **Modifica**.

1. Nella pagina **Modifica modello** esegui una delle operazioni seguenti:
   + In **Dettagli del modello** modifica il **nome** del modello.
   + Modifica una delle **definizioni degli attributi**. Non è possibile modificare il **tipo di dati** degli attributi esistenti. Per ulteriori informazioni, consulta [Definisci dati statici (attributi)](attributes.md).
   + Modifica una delle **definizioni di misurazione**. Non è possibile modificare il **tipo di dati** delle misurazioni esistenti. Per ulteriori informazioni, consulta [Definisci i flussi di dati provenienti dalle apparecchiature (misurazioni)](measurements.md).
   + Modifica una delle **definizioni di trasformazione**. Per ulteriori informazioni, consulta [Trasforma i dati (trasformazioni)](transforms.md).
   + Modifica una delle **definizioni di parametro**. Non è possibile modificare l'**intervallo di tempo** dei parametri esistenti. Per ulteriori informazioni, consulta [Aggrega i dati provenienti da proprietà e altre risorse (metriche)](metrics.md).
   + (Solo modelli di asset) Modificate una qualsiasi **definizione della gerarchia**. Non è possibile modificare il **modello di gerarchia** delle gerarchie esistenti. Per ulteriori informazioni, consulta [Definite le gerarchie dei modelli di asset](define-asset-hierarchies.md).

1. Scegli **Save** (Salva).

**Nota**  
 Le richieste di aggiornamento effettuate nella console vengono rifiutate se un altro utente aggiorna correttamente il modello di asset dall'ultima apertura della pagina **Modifica modello**. La console richiede all'utente di **aggiornare** la pagina **Modifica modello** per recuperare il modello aggiornato. È necessario effettuare nuovamente gli aggiornamenti e riprovare a salvare. Per ulteriori dettagli, consulta [Blocco ottimistico per le scritture dei modelli di asset](opt-locking-for-model.md). 

## Aggiornate un modello di asset, un modello di componente o un'interfaccia ()AWS CLI
<a name="update-asset-model-cli"></a>

Utilizzate AWS Command Line Interface (AWS CLI) per aggiornare un modello di asset, un modello di componente o un'interfaccia.

Utilizzate l'[UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)API per aggiornare il nome, la descrizione e le proprietà di un modello di asset, di un modello di componente o di un'interfaccia. Solo per i modelli di asset, puoi aggiornare le gerarchie. Per quanto riguarda le interfacce, è possibile aggiornare proprietà e gerarchie. Specifica i seguenti parametri:
+ `assetModelId`— L'ID della risorsa. Questo è l'ID effettivo in formato UUID, o `externalId:myExternalId` se ne ha uno. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

Specificate il modello aggiornato nel payload. Per ulteriori informazioni sul formato previsto di un modello di asset o di un modello di componente, vedere[Crea modelli di asset in AWS IoT SiteWise](create-asset-models.md). 

**avvertimento**  
L'[UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)API sovrascrive il modello esistente con il modello fornito nel payload. Per evitare di eliminare le proprietà o le gerarchie del modello, è necessario includere le relative definizioni nel payload IDs del modello aggiornato. Per informazioni su come interrogare la struttura esistente del modello, consultate l'operazione. [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)

**Nota**  
La procedura seguente può aggiornare solo modelli compositi di tipo`AWS/ALARM`. Se desideri aggiornare i modelli `CUSTOM` compositi, usa [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)invece. Per ulteriori informazioni, consulta [Aggiorna modelli compositi personalizzati (componenti)](update-custom-composite-models.md).

**Per aggiornare un modello di asset o un modello di componente (AWS CLI)**

1. Eseguite il comando seguente per recuperare la definizione del modello esistente. *asset-model-id*Sostituitelo con l'ID o l'ID esterno del modello di asset o del modello di componente da aggiornare.

   ```
   aws iotsitewise describe-asset-model --asset-model-id asset-model-id
   ```

   Il comando precedente restituisce la definizione del modello corrispondente alla versione più recente del modello.

    Per un caso d'uso in cui un modello di asset si trova in uno `FAILED` stato, recuperate la definizione di modello valida corrispondente alla sua versione attiva per creare la richiesta di aggiornamento. Per informazioni dettagliate, vedi [Versioni del modello di asset](model-active-version.md). Eseguite il comando seguente per recuperare la definizione attiva del modello:

   ```
   aws iotsitewise describe-asset-model --asset-model-id asset-model-id --asset-model-version ACTIVE 
   ```

   L'operazione restituisce una risposta che contiene i dettagli del modello. La risposta ha la seguente struttura.

   ```
   {
       "assetModelId": "String",
       "assetModelArn": "String",
       "assetModelName": "String",
       "assetModelDescription": "String",
       "assetModelProperties": Array of AssetModelProperty,
       "assetModelHierarchies": Array of AssetModelHierarchyDefinition,
       "assetModelCompositeModels": Array of AssetModelCompositeModel,
       "assetModelCompositeModelSummaries": Array of AssetModelCompositeModelSummary,
       "assetModelCreationDate": "String",
       "assetModelLastUpdateDate": "String",
       "assetModelStatus": {
         "state": "String",
         "error": {
           "code": "String",
           "message": "String"
         },
       "assetModelType": "String"
       },
       "assetModelVersion": "String",
       "eTag": "String"
   }
   ```

   Per maggiori informazioni, vedi l'operazione [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html).

1. Crea un file denominato `update-asset-model.json` e copia la risposta del comando precedente nel file.

1. Rimuovi le seguenti coppie chiave-valore dall'oggetto JSON in `update-asset-model.json`:
   + `assetModelId`
   + `assetModelArn`
   + `assetModelCompositeModelSummaries`
   + `assetModelCreationDate`
   + `assetModelLastUpdateDate`
   + `assetModelStatus`
   + `assetModelType`
   + `assetModelVersion`
   + `eTag`

   L'[UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)operazione prevede un payload con la seguente struttura:

   ```
   {
     "assetModelName": "String",
     "assetModelDescription": "String",
     "assetModelProperties": Array of AssetModelProperty,
     "assetModelHierarchies": Array of AssetModelHierarchyDefinition,
     "assetModelCompositeModels": Array of AssetModelCompositeModel
   }
   ```

1. In `update-asset-model.json`, effettua una delle seguenti operazioni:
   + Modifica il nome del modello di asset (`assetModelName`).
   + Modifica, aggiungi o rimuovi la descrizione del modello di asset (`assetModelDescription`).
   + Modifica, aggiungi o rimuovi qualsiasi proprietà del modello di asset (`assetModelProperties`). Non è possibile modificare l'elemento `dataType` delle proprietà esistenti o l'elemento `window` dei parametri esistenti. Per ulteriori informazioni, consulta [Definite le proprietà dei dati](asset-properties.md).
   + Modifica, aggiungi o rimuovi una delle gerarchie del modello di asset (`assetModelHierarchies`). Non è possibile modificare l'elemento `childAssetModelId` delle gerarchie esistenti. Per ulteriori informazioni, consulta [Definite le gerarchie dei modelli di asset](define-asset-hierarchies.md).
   + Modifica, aggiungi o rimuovi uno qualsiasi dei modelli compositi di type `AWS/ALARM` () `assetModelCompositeModels` del modello di asset. Gli allarmi monitorano altre proprietà in modo da poter identificare quando le apparecchiature o i processi richiedono attenzione. Ogni definizione di allarme è un modello composito che standardizza l'insieme di proprietà utilizzate dall'allarme. Per ulteriori informazioni, consultare [Monitora i dati con allarmi in AWS IoT SiteWise](industrial-alarms.md) e [Definisci gli allarmi sui modelli di asset in AWS IoT SiteWise](define-alarms.md).

1. Esegui il comando seguente per aggiornare il modello di asset con la definizione memorizzata in `update-asset-model.json`. Sostituisci *asset-model-id* con l'ID del modello di asset:

   ```
   aws iotsitewise update-asset-model \
     --asset-model-id asset-model-id \
     --cli-input-json file://model-payload.json
   ```

**Importante**  
 Quando più utenti aggiornano un modello di asset contemporaneamente, le modifiche di un utente possono essere inavvertitamente sovrascritte da un altro utente. Per evitare ciò, è necessario definire una richiesta di aggiornamento condizionale. Per informazioni, consulta [Blocco ottimistico per le scritture dei modelli di asset](opt-locking-for-model.md). 

# Aggiorna modelli compositi personalizzati (componenti)
<a name="update-custom-composite-models"></a>

È possibile utilizzare l' AWS IoT SiteWise API per aggiornare un modello composito personalizzato o la AWS IoT SiteWise console per aggiornare i componenti.

**Topics**
+ [Aggiorna un componente (console)](#update-custom-composite-model-console)
+ [Aggiornate un modello composito personalizzato (AWS CLI)](#update-custom-composite-model-cli)

## Aggiorna un componente (console)
<a name="update-custom-composite-model-console"></a>

È possibile utilizzare la AWS IoT SiteWise console per aggiornare un componente.

**Per aggiornare un componente (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Nel riquadro di navigazione selezionare **Models (Modelli)**.

1. Scegliete il modello di asset in cui si trova il componente.

1. Nella scheda **Proprietà**, scegliete **Componenti**.

1. Scegliete il componente che desiderate aggiornare.

1. Scegli **Modifica**.

1. Nella pagina **Modifica componente**, effettuate una delle seguenti operazioni:
   + In **Dettagli del modello** modifica il **nome** del modello.
   + Modifica una delle **definizioni degli attributi**. Non è possibile modificare il **tipo di dati** degli attributi esistenti. Per ulteriori informazioni, consulta [Definisci dati statici (attributi)](attributes.md).
   + Modifica una delle **definizioni di misurazione**. Non è possibile modificare il **tipo di dati** delle misurazioni esistenti. Per ulteriori informazioni, consulta [Definisci i flussi di dati provenienti dalle apparecchiature (misurazioni)](measurements.md).
   + Modifica una delle **definizioni di trasformazione**. Per ulteriori informazioni, consulta [Trasforma i dati (trasformazioni)](transforms.md).
   + Modifica una delle **definizioni di parametro**. Non è possibile modificare l'**intervallo di tempo** dei parametri esistenti. Per ulteriori informazioni, consulta [Aggrega i dati provenienti da proprietà e altre risorse (metriche)](metrics.md).

1. Scegli **Save** (Salva).

## Aggiornate un modello composito personalizzato (AWS CLI)
<a name="update-custom-composite-model-cli"></a>

Utilizzate il AWS Command Line Interface (AWS CLI) per aggiornare un modello composito personalizzato.

Per aggiornare il nome o la descrizione, utilizzate l'[UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)operazione. Solo per i modelli compositi personalizzati in linea, puoi anche aggiornare le proprietà. Non è possibile aggiornare le proprietà di un modello composito component-model-based personalizzato, poiché il modello di componente a cui fa riferimento fornisce le proprietà associate.

**Importante**  
Se rimuovete una proprietà da un modello composito personalizzato, AWS IoT SiteWise elimina tutti i dati precedenti relativi a quella proprietà. Non è possibile modificare il tipo o il tipo di dati di una proprietà esistente.  
Per sostituire una proprietà esistente del modello composito con una nuova con la stessa proprietà`name`, procedi come segue:  
Inviate una `UpdateAssetModelCompositeModel` richiesta con l'intera proprietà esistente rimossa.
Invia una seconda `UpdateAssetModelCompositeModel` richiesta che includa la nuova proprietà. La nuova proprietà dell'asset avrà la `name` stessa di quella precedente e AWS IoT SiteWise genererà una nuova proprietà univoca`id`.

**Per aggiornare un modello composito personalizzato (AWS CLI)**

1. Per recuperare la definizione del modello composito esistente, eseguite il comando seguente. Sostituitelo *composite-model-id* con l'ID o l'ID esterno del modello composito personalizzato da aggiornare e *asset-model-id* con il modello di asset a cui è associato il modello composito personalizzato. Per ulteriori informazioni, consulta la *Guida per l'utente AWS IoT SiteWise *.

   1. Eseguite il comando seguente:

      ```
      aws iotsitewise describe-asset-model-composite-model \
      --asset-model-composite-model-id composite-model-id \
      --asset-model-id asset-model-id
      ```

   1.  Il comando precedente restituisce la definizione del modello composito corrispondente all'ultima versione del modello associato. Per un caso d'uso in cui un modello di asset si trova in uno `FAILED` stato, recuperate la definizione di modello valida corrispondente alla sua versione attiva per creare la richiesta di aggiornamento. Per informazioni dettagliate, vedi [Versioni del modello di asset](model-active-version.md). 

   1. Eseguite il comando seguente per recuperare la definizione attiva del modello:

      ```
      aws iotsitewise describe-asset-model-composite-model \
      --asset-model-composite-model-id composite-model-id \
      --asset-model-id asset-model-id \
      --asset-model-version ACTIVE
      ```

   1. Per maggiori informazioni, vedi l'operazione [DescribeAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModelCompositeModel.html).

1. Create un file chiamato`update-custom-composite-model.json`, quindi copiate la risposta del comando precedente nel file.

1. Rimuovi ogni coppia chiave-valore dall'oggetto JSON ad `update-custom-composite-model.json` eccezione dei seguenti campi:
   + `assetModelCompositeModelName`
   + `assetModelCompositeModelDescription`(se presente)
   + `assetModelCompositeModelProperties`(se presente)

1. In `update-custom-composite-model.json`, effettua una delle seguenti operazioni:
   + Modificare il valore di`assetModelCompositeModelName`.
   + Aggiungi o `assetModelCompositeModelDescription` rimuovi o modificane il valore.
   + Solo per i modelli compositi personalizzati in linea: modifica, aggiungi o rimuovi qualsiasi proprietà del modello di asset in`assetModelCompositeModelProperties`.

   Per ulteriori informazioni sul formato richiesto per questo file, consultate la sintassi della richiesta per. [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)

1. Eseguite il comando seguente per aggiornare il modello composito personalizzato con la definizione memorizzata in`update-custom-composite-model.json`. Sostituiscilo *composite-model-id* con l'ID del modello composito e *asset-model-id* con l'ID del modello di asset in cui si trova.

   ```
   aws iotsitewise update-asset-model-composite-model \
   --asset-model-composite-model-id composite-model-id \
   --asset-model-id asset-model-id \
   --cli-input-json file://update-custom-composite-model.json
   ```

**Importante**  
 Quando più utenti aggiornano un modello di asset contemporaneamente, le modifiche di un utente possono essere inavvertitamente sovrascritte da un altro utente. Per evitare ciò, è necessario definire una richiesta di aggiornamento condizionale. Per informazioni, consulta [Blocco ottimistico per le scritture dei modelli di asset](opt-locking-for-model.md). 

# Blocco ottimistico per le scritture dei modelli di asset
<a name="opt-locking-for-model"></a>

 Quando aggiorna un modello di asset, un utente esegue le seguenti operazioni: 

1. Leggete la definizione attuale del modello di asset.

1. Modifica la definizione del modello di asset con le modifiche richieste.

1. Aggiorna il modello di asset con la nuova definizione.

 In uno scenario con due utenti che aggiornano un modello, è possibile quanto segue: 
+ L'utente A legge la definizione X del modello di asset.
+ L'utente B legge la definizione del modello di asset X e apporta le modifiche, modificando la definizione di X.
+ L'utente A esegue il commit e sovrascrive la modifica apportata dall'utente B per il modello di asset X, senza verificare o incorporare le modifiche dell'utente B.

 Il blocco ottimistico è un meccanismo utilizzato da per prevenire sovrascritture accidentali AWS IoT SiteWise come nello scenario precedente. Il blocco ottimistico è una strategia per garantire che la versione corrente del modello di asset venga aggiornata o eliminata e che corrisponda alla versione attuale. AWS IoT SiteWise In questo modo si evita che le scritture del modello di asset vengano sovrascritte da aggiornamenti accidentali. 

Segui questi passaggi per eseguire la scrittura del modello di asset con blocco ottimistico:

**Topics**
+ [Esecuzione di scritture su modelli di asset con blocco ottimistico (console)](#opt-locking-for-model-console)
+ [Esecuzione di scritture su modelli di asset con optimistic lock ()AWS CLI](#opt-locking-for-model-cli)

## Esecuzione di scritture su modelli di asset con blocco ottimistico (console)
<a name="opt-locking-for-model-console"></a>

La procedura riportata di seguito descrive come eseguire le scritture dei modelli di asset con un blocco ottimistico sulla versione attiva del modello di asset nella console.

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Nel riquadro di navigazione selezionare **Models (Modelli)**.

1. Scegliete il modello di asset o il modello di componente da aggiornare.

1. Scegli **Modifica**.

1. Apporta le modifiche nella pagina **Modifica modello**.

1. Scegli **Save** (Salva).
**Nota**  
A volte, uno o più aggiornamenti del modello sono stati eseguiti correttamente tra il momento in cui l'utente inizia a modificare il modello e il salvataggio delle modifiche apportate al modello.  
Per garantire che l'utente non sovrascriva accidentalmente i nuovi aggiornamenti riusciti, la scrittura dell'utente viene rifiutata. **La console disattiva il pulsante **Salva** e richiede all'utente di aggiornare la pagina Modifica modello.** L'utente deve aggiornare nuovamente la nuova versione attiva del modello. L'utente deve eseguire i seguenti passaggi aggiuntivi: 

1. Scegliere **Refresh (Aggiorna)**.

1. Segui nuovamente i passaggi 5 e 6.

## Esecuzione di scritture su modelli di asset con optimistic lock ()AWS CLI
<a name="opt-locking-for-model-cli"></a>

La procedura riportata di seguito descrive come eseguire la scrittura di modelli di asset con blocco ottimistico in. AWS CLI

1. **Recupera la definizione del modello ETag associata alla definizione corrente**

    `ETag`è un token unico generato per ogni nuova rappresentazione di un modello di asset. Chiama [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)l'API per recuperare la definizione corrente del modello di asset e la relativa definizione associata alla `ETag` risposta. 

    Durante gli aggiornamenti simultanei, gli utenti eseguono aggiornamenti con successo (modello in `ACTIVE` stato) o aggiornamenti non riusciti (modello in `FAILED` stato). Per evitare che un utente sovrascriva accidentalmente un aggiornamento riuscito, dovete recuperare la versione attiva del modello di asset da [Versioni del modello di asset](model-active-version.md) e ottenerne il valore. `ETag` 

   Esegui il comando seguente:

   ```
   aws iotsitewise describe-asset-model --asset-model-id asset-model-id \
   --asset-model-version ACTIVE
   ```

    La risposta restituisce la seguente struttura: 

   ```
   {
     "assetModelId": "String",
     "assetModelArn": "String",
     "assetModelName": "String",
     ...
     "eTag": "String"
   }
   ```
**Nota**  
 È necessario recuperare la versione più recente del modello di asset e la relativa `ETag` per non sovrascrivere gli aggiornamenti. 

1. **Esegui le operazioni UPDATE e DELETE con condizioni di scrittura**

   Il seguente modello di asset APIs supporta il blocco ottimistico:
   + [UpdateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html)
   + [DeleteAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAssetModel.html)
   + [CreateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html)
   + [UpdateAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModelCompositeModel.html)
   + [DeleteAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAssetModelCompositeModel.html)
**Nota**  
 Gli scenari seguenti utilizzano l'`UpdateAssetModel`API come riferimento. Le condizioni si applicano a tutte le operazioni sopra elencate. 

   Gli scenari seguenti descrivono le diverse condizioni di scrittura a seconda dei requisiti di controllo della concorrenza:
   +  Esegui il comando seguente per non sovrascrivere eventuali aggiornamenti riusciti. Non deve esistere una nuova versione attiva, a partire dall'ultima versione attiva letta. Sostituisci `e-tag` con quella `ETag` restituita nell'operazione API utilizzata nella lettura della versione attiva. 

     ```
     aws iotsitewise update-asset-model \
       --asset-model-id asset-model-id \
       --if-match e-tag \
       --match-for-version-type ACTIVE \
       --cli-input-json file://model-payload.json
     ```
   +  Quando la creazione di un modello fallisce, non esiste ancora una versione attiva del modello, perché è in uno `FAILED` stato. È comunque possibile sovrascrivere una nuova versione attiva presente, prima che le modifiche vengano confermate. Esegui il comando seguente per non sovrascrivere una nuova versione attiva, quando una versione attiva non esiste durante l'ultima lettura.

     ```
     aws iotsitewise update-asset-model \
       --asset-model-id asset-model-id \
       --if-none-match "*" \
       --match-for-version-type ACTIVE \
       --cli-input-json file://model-payload.json
     ```
   +  Esegui il comando seguente per evitare di sovrascrivere eventuali aggiornamenti riusciti o meno. Questo comando definisce una condizione di scrittura che garantisce che non venga creata una versione più recente dopo l'ultima versione letta. Sostituisci `e-tag` con l'operazione API `ETag` restituita nella lettura della versione attiva.

     ```
     aws iotsitewise update-asset-model \
       --asset-model-id asset-model-id \
       --if-match eTag \
       --match-for-version-type LATEST \
       --cli-input-json file://model-payload.json
     ```

     Se la condizione di scrittura restituisce un risultato positivo`FALSE`, la richiesta di scrittura ha esito negativo e restituisce`PreconditionFailedException`.

# Eliminare risorse e modelli in AWS IoT SiteWise
<a name="delete-assets-and-models"></a>

Puoi eliminare le tue risorse, i modelli di asset, i modelli di componenti e le interfacce una AWS IoT SiteWise volta che hai finito di utilizzarli. Le operazioni di eliminazione sono asincrone e richiedono tempo per essere propagate. AWS IoT SiteWise

**Topics**
+ [Eliminare le risorse in AWS IoT SiteWise](delete-assets.md)
+ [Eliminate i modelli di asset, i modelli di componenti e le interfacce in AWS IoT SiteWise](delete-asset-models.md)

# Eliminare le risorse in AWS IoT SiteWise
<a name="delete-assets"></a>

Puoi utilizzare la AWS IoT SiteWise console o l'API per eliminare una risorsa non più necessaria nel tuo ambiente. L'eliminazione di un modello di asset elimina anche tutti gli asset e i modelli di componenti associati. Tuttavia, è importante notare che l'eliminazione di una risorsa o di un modello è un'azione permanente e che vengono rimossi anche tutti i dati associati alle risorse eliminate. Prima di eliminare risorse o modelli, si consiglia di esaminare eventuali dipendenze o integrazioni che potrebbero essere influenzate e assicurarsi di disporre di un backup di tutti i dati importanti.

Prima di eliminare un asset, è necessario innanzitutto annullare l'associazione degli asset figlio all'asset padre. Per ulteriori informazioni, consulta [Associare e dissociare gli asset](add-associated-assets.md). Se utilizzate il AWS Command Line Interface (AWS CLI), potete utilizzare l'[ListAssociatedAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssociatedAssets.html)operazione per elencare i figli di una risorsa.

Quando elimini un asset, lo stato dell'asset è `DELETING` fino a quando le modifiche non vengono propagate. Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md). Non è possibile eseguire query su un asset eliminato. Se lo facessi, l'API restituirebbe una risposta HTTP 404.

**Importante**  
AWS IoT SiteWise elimina tutti i dati delle proprietà degli asset eliminati.

**Topics**
+ [Eliminare una risorsa (console)](#delete-asset-console)
+ [Eliminate una risorsa (AWS CLI)](#delete-asset-cli)

## Eliminare una risorsa (console)
<a name="delete-asset-console"></a>

Puoi utilizzare la AWS IoT SiteWise console per eliminare una risorsa.

**Per eliminare un asset (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>Nel riquadro di navigazione, scegli **Asset**.

1. Scegli l'asset da eliminare.
**Suggerimento**  <a name="sitewise-expand-asset-hierarchy"></a>
Puoi scegliere l'icona a forma di freccia per espandere una gerarchia di asset e trovare il tuo asset.

1. Se l'asset ha **asset associati**, elimina ogni asset associato. Puoi scegliere il nome di un asset per aprire la relativa pagina in cui è possibile eliminarlo.

1. Nella pagina dell'asset, scegli **Elimina**.

1. Nella finestra di dialogo **Elimina risorsa**, effettuate le seguenti operazioni:

   1. Immetti **Delete** per confermare l'eliminazione.

   1. Scegli **Elimina**.

## Eliminate una risorsa (AWS CLI)
<a name="delete-asset-cli"></a>

È possibile utilizzare il AWS Command Line Interface (AWS CLI) per eliminare una risorsa.

Utilizzate l'[DeleteAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAsset.html)operazione per eliminare una risorsa. Specifica il parametro seguente:
+ `assetId`— L'ID della risorsa. Questo è l'ID effettivo in formato UUID, o `externalId:myExternalId` se ne ha uno. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

**Per eliminare una risorsa ()AWS CLI**

1. Esegui il comando seguente per elencare le gerarchie dell'asset. Sostituisci *asset-id* con l'ID o l'ID esterno della risorsa:

   ```
   aws iotsitewise describe-asset --asset-id asset-id
   ```

   L'operazione restituisce una risposta contenente i dettagli dell'asset. La risposta contiene un `assetHierarchies` elenco con la seguente struttura:

   ```
   {
     ...
     "assetHierarchies": [
       {
         "id": "String",
         "name": "String"
       }
     ],
     ...
   }
   ```

   Per maggiori informazioni, vedi l'operazione [DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html).

1. Per ogni gerarchia, esegui il comando seguente per elencare gli elementi figlio dell'asset associati alla gerarchia. Sostituisci *asset-id* con l'ID o l'ID esterno della risorsa e *hierarchy-id* con l'ID o l'ID esterno della gerarchia.

   ```
   aws iotsitewise list-associated-assets \
     --asset-id asset-id \
     --hierarchy-id hierarchy-id
   ```

   Per maggiori informazioni, vedi l'operazione [ListAssociatedAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssociatedAssets.html).

1. Esegui il comando seguente per eliminare ogni asset associato e quindi eliminare l'asset. *asset-id*Sostituitelo con l'ID o l'ID esterno della risorsa.

   ```
   aws iotsitewise delete-asset --asset-id asset-id
   ```

# Eliminate i modelli di asset, i modelli di componenti e le interfacce in AWS IoT SiteWise
<a name="delete-asset-models"></a>

È possibile utilizzare la AWS IoT SiteWise console o l'API per eliminare un modello di asset, un modello di componente o un'interfaccia.

Prima di poter eliminare un modello di asset, dovete prima eliminare tutte le risorse che sono state create dal modello di asset. Prima di poter eliminare un'interfaccia, dovete prima scollegarla da tutti i modelli di asset che la implementano.

Quando eliminate un modello di asset o un'interfaccia, il relativo stato rimane invariato `DELETING` fino alla propagazione delle modifiche. Per ulteriori informazioni, consulta [Stati di asset e modelli](asset-and-model-states.md). Dopo l'eliminazione del modello o dell'interfaccia di asset, non è possibile interrogare quel modello o interfaccia di asset. Se lo facessi, l'API restituirebbe una risposta HTTP 404.

**Topics**
+ [Eliminate un modello di asset, un modello di componente o un'interfaccia (console)](#delete-asset-model-console)
+ [Eliminate un modello di asset, un modello di componente o un'interfaccia (AWS CLI)](#delete-asset-model-cli)

## Eliminate un modello di asset, un modello di componente o un'interfaccia (console)
<a name="delete-asset-model-console"></a>

È possibile utilizzare la AWS IoT SiteWise console per eliminare un modello di asset, un modello di componente o un'interfaccia.

**Topics**

**Per eliminare un modello di asset, un modello di componente o un'interfaccia (console)**

1. <a name="sitewise-open-console"></a>Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-models"></a>Nel riquadro di navigazione selezionare **Models (Modelli)**.

1. Scegliete il modello di asset, il modello di componente o l'interfaccia da eliminare.

1. Se state eliminando un modello di asset che contiene **delle risorse**, eliminate ciascuna risorsa. Scegli il nome di un asset per aprire la relativa pagina in cui è possibile eliminarlo. Per ulteriori informazioni, consulta [Eliminare una risorsa (console)](delete-assets.md#delete-asset-console).

1. Nella pagina del modello, scegli **Elimina**.

1. Nella finestra di dialogo **Elimina modello**, effettuate le seguenti operazioni:

   1. Immetti **Delete** per confermare l'eliminazione.

   1. Scegli **Elimina**.

## Eliminate un modello di asset, un modello di componente o un'interfaccia (AWS CLI)
<a name="delete-asset-model-cli"></a>

È possibile utilizzare AWS Command Line Interface (AWS CLI) per eliminare un modello di asset, un modello di componente o un'interfaccia.

Utilizzate l'[DeleteAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteAssetModel.html)operazione per eliminare un modello di asset, un modello di componente o un'interfaccia. Specifica il parametro seguente:
+ `assetModelId`— L'ID della risorsa. Questo è l'ID effettivo in formato UUID, o `externalId:myExternalId` se ne ha uno. Per ulteriori informazioni, consulta [Oggetti di riferimento con oggetti esterni IDs](object-ids.md#external-id-references) nella *Guida per l'utente di AWS IoT SiteWise *.

**Per eliminare un modello di asset ()AWS CLI**

1. Esegui il comando seguente per elencare tutti gli asset creati dal modello. *asset-model-id*Sostituitelo con l'ID o l'ID esterno del modello di asset.

   ```
   aws iotsitewise list-assets --asset-model-id asset-model-id
   ```

   Per maggiori informazioni, vedi l'operazione [ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html).

1. Se il comando precedente restituisce asset dal modello, elimina ogni asset. Per ulteriori informazioni, consulta [Eliminate una risorsa (AWS CLI)](delete-assets.md#delete-asset-cli).

1. Esegui il comando seguente per eliminare il modello di asset. *asset-model-id*Sostituitelo con l'ID o l'ID esterno del modello di asset.

   ```
   aws iotsitewise delete-asset-model --asset-model-id asset-model-id
   ```

**Importante**  
 Per evitare di eliminare un modello di asset aggiornato contemporaneamente dall'ultima operazione di lettura, è necessario definire una richiesta di eliminazione condizionale. Per informazioni, consulta [Blocco ottimistico per le scritture dei modelli di asset](opt-locking-for-model.md). 

# Operazioni in blocco con asset e modelli
<a name="bulk-operations-assets-and-models"></a>

Per lavorare con un gran numero di risorse o modelli di asset, utilizzate le operazioni in blocco per importare ed esportare in blocco le risorse in una posizione diversa. Ad esempio, puoi creare un file di dati che definisce asset o modelli di asset in un bucket Amazon S3 e utilizzare l'importazione in blocco per crearli o aggiornarli. AWS IoT SiteWise In alternativa, se disponi di un gran numero di asset o modelli di asset AWS IoT SiteWise, puoi esportarli in Amazon S3. 

**Nota**  
Puoi eseguire operazioni in blocco AWS IoT SiteWise richiamando le operazioni nell' AWS IoT TwinMaker API. Puoi farlo senza configurare AWS IoT TwinMaker o creare un' AWS IoT TwinMaker area di lavoro. Tutto ciò di cui hai bisogno è un bucket Amazon S3 in cui inserire i tuoi contenuti. AWS IoT SiteWise   


**Topics**
+ [Concetti e terminologia chiave](#bulk-operations-terminology)
+ [Funzionalità supportate](#bulk-operations-functionality)
+ [Prerequisiti per le operazioni in blocco](bulk-operations-prereqs.md)
+ [Eseguire un processo di importazione in blocco](running-bulk-operations-import.md)
+ [Esegui un processo di esportazione in blocco](running-bulk-operations-export.md)
+ [Monitoraggio dell'avanzamento dei lavori e gestione degli errori](jobs-progress-error-handling.md)
+ [Importa esempi di metadati](bulk-operations-import-metadata-example.md)
+ [Esporta esempi di metadati](bulk-operations-export-filter-examples.md)
+ [AWS IoT SiteWise schema del processo di trasferimento dei metadati](bulk-operations-schema.md)

## Concetti e terminologia chiave
<a name="bulk-operations-terminology"></a>

AWS IoT SiteWise le funzionalità di importazione ed esportazione in blocco si basano sui seguenti concetti e terminologia:
+ **Importazione**: l'azione di spostare risorse o modelli di asset da un file in un bucket Amazon S3 a. AWS IoT SiteWise
+ **Esportazione**: l'azione di spostare risorse o modelli di asset AWS IoT SiteWise da un bucket Amazon S3.
+ **Fonte**: la posizione di partenza da cui desideri spostare i contenuti.

  Ad esempio, un bucket Amazon S3 è una fonte di importazione ed AWS IoT SiteWise è una fonte di esportazione.
+ **Destinazione**: la posizione desiderata in cui desideri spostare i tuoi contenuti.

  Ad esempio, un bucket Amazon S3 è una destinazione di esportazione ed AWS IoT SiteWise è una destinazione di importazione.
+ **AWS IoT SiteWise Schema**: questo schema viene utilizzato per importare ed esportare metadati da. AWS IoT SiteWise
+ **Risorsa di primo livello:** una AWS IoT SiteWise risorsa che è possibile creare o aggiornare singolarmente, ad esempio una risorsa o un modello di risorsa.
+ **Risorsa secondaria: una risorsa** annidata all'interno di una AWS IoT SiteWise risorsa di primo livello. Gli esempi includono proprietà, gerarchie e modelli compositi.
+ **Metadati**: informazioni chiave necessarie per importare o esportare correttamente le risorse. Esempi di metadati sono le definizioni degli asset e i modelli di asset.
+ **metadataTransferJob**: L'oggetto creato durante l'esecuzione`CreateMetadataTransferJob`.

## Funzionalità supportate
<a name="bulk-operations-functionality"></a>

Questo argomento spiega cosa è possibile fare quando si esegue un'operazione in blocco. Le operazioni in blocco supportano le seguenti funzionalità:
+ **Creazione di risorse di primo livello:** quando importate una risorsa o un modello di asset che non definisce un ID o il cui ID non corrisponde a quello di uno esistente, verrà creato come nuova risorsa.
+ **Sostituzione di risorse di primo livello:** quando importate una risorsa o un modello di risorsa il cui ID corrisponde a uno già esistente, sostituirà la risorsa esistente.
+ **Creazione, sostituzione o eliminazione di sottorisorse:** quando l'importazione sostituisce una risorsa di primo livello come una risorsa o un modello di risorsa, la nuova definizione sostituisce tutte le risorse secondarie, come proprietà, gerarchie o modelli compositi. 

  Ad esempio, se aggiorni un modello di asset durante un'importazione in blocco e la versione aggiornata definisce una proprietà che non era presente nell'originale, viene creata una nuova proprietà. Se definisce una proprietà già esistente, la proprietà esistente verrà aggiornata. Se il modello di asset aggiornato omette una proprietà che era presente nell'originale, la proprietà viene eliminata.
+ **Nessuna eliminazione di risorse di primo livello:** le operazioni in blocco non eliminano una risorsa o un modello di asset. Le operazioni in blocco si limitano a crearli o aggiornarli.

# Prerequisiti per le operazioni in blocco
<a name="bulk-operations-prereqs"></a>

Questa sezione spiega i prerequisiti delle operazioni in blocco, incluse le autorizzazioni AWS Identity and Access Management (IAM) per lo scambio di risorse tra i AWS servizi e il computer locale. Prima di iniziare un'operazione in blocco, completa il seguente prerequisito:
+ Crea un bucket Amazon S3 per archiviare le risorse. Per ulteriori informazioni sull'uso di Amazon S3, consulta [Che cos'è Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/Welcome.html)?

## autorizzazioni IAM
<a name="bulk-operations-prereqs-permissions"></a>

Per eseguire operazioni in blocco, è necessario creare una policy AWS Identity and Access Management (IAM) con autorizzazioni che consentano lo scambio di AWS risorse tra Amazon S3 e il AWS IoT SiteWise computer locale. Per ulteriori informazioni sulla creazione di policy IAM, consulta la sezione relativa alla [creazione delle policy IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html). 

Per eseguire operazioni in blocco, sono necessarie le seguenti politiche.

### AWS IoT SiteWise politica
<a name="bluk-operations-prereqs-policy"></a>

Questa policy consente l'accesso alle azioni AWS IoT SiteWise API richieste per le operazioni in blocco:

```
{
    "Sid": "SiteWiseApiAccess",
    "Effect": "Allow",
    "Action": [
        "iotsitewise:CreateAsset",
        "iotsitewise:CreateAssetModel",
        "iotsitewise:UpdateAsset",
        "iotsitewise:UpdateAssetModel",
        "iotsitewise:UpdateAssetProperty",
        "iotsitewise:ListAssets",
        "iotsitewise:ListAssetModels",
        "iotsitewise:ListAssetProperties",
        "iotsitewise:ListAssetModelProperties",
        "iotsitewise:ListAssociatedAssets",
        "iotsitewise:DescribeAsset",
        "iotsitewise:DescribeAssetModel",
        "iotsitewise:DescribeAssetProperty",
        "iotsitewise:AssociateAssets",
        "iotsitewise:DisassociateAssets",
        "iotsitewise:AssociateTimeSeriesToAssetProperty",
        "iotsitewise:DisassociateTimeSeriesFromAssetProperty",
        "iotsitewise:BatchPutAssetPropertyValue",
        "iotsitewise:BatchGetAssetPropertyValue",
        "iotsitewise:TagResource",
        "iotsitewise:UntagResource",
        "iotsitewise:ListTagsForResource",
        "iotsitewise:CreateAssetModelCompositeModel",
        "iotsitewise:UpdateAssetModelCompositeModel",
        "iotsitewise:DescribeAssetModelCompositeModel",
        "iotsitewise:DeleteAssetModelCompositeModel",
        "iotsitewise:ListAssetModelCompositeModels",
        "iotsitewise:ListCompositionRelationships",
        "iotsitewise:DescribeAssetCompositeModel"
    ],
    "Resource": "*"
}
```

### AWS IoT TwinMaker politica
<a name="bulk-operations-TwinMaker-policy"></a>

Questa politica consente l'accesso alle operazioni AWS IoT TwinMaker API utilizzate per lavorare con operazioni di massa:

```
{
    "Sid": "MetadataTransferJobApiAccess",
    "Effect": "Allow",
    "Action": [
        "iottwinmaker:CreateMetadataTransferJob",
        "iottwinmaker:CancelMetadataTransferJob",
        "iottwinmaker:GetMetadataTransferJob",
        "iottwinmaker:ListMetadataTransferJobs"
    ],
    "Resource": "*"
}
```

### Politica di Amazon S3
<a name="bulk-operations-S3-policy"></a>

Questa policy fornisce l'accesso ai bucket Amazon S3 per il trasferimento di metadati per operazioni di massa.

------
#### [ For a specific Amazon S3 bucket ]

Se utilizzi un bucket specifico per lavorare con i metadati delle tue operazioni di massa, questa policy fornisce l'accesso a quel bucket:

```
{
    "Effect": "Allow",
    "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:AbortMultipartUpload",
        "s3:ListBucketMultipartUploads",
        "s3:ListMultipartUploadParts"
    ],
    "Resource": [
        "arn:aws:s3:::bucket name",
        "arn:aws:s3:::bucket name/*"
    ]
}
```

------
#### [ To allow any Amazon S3 bucket ]

Se utilizzerai molti bucket diversi per lavorare con i metadati delle operazioni di massa, questa policy fornisce l'accesso a qualsiasi bucket:

```
{
    "Effect": "Allow",
    "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:AbortMultipartUpload",
        "s3:ListBucketMultipartUploads",
        "s3:ListMultipartUploadParts"
    ],
    "Resource": "*"
}
```

------<a name="bulk-operations-troubleshooting"></a>

Per informazioni sulla risoluzione dei problemi relativi alle operazioni di importazione ed esportazione, consulta. [Risolvi i problemi di importazione ed esportazione in blocco](troubleshooting-bulk.md)

# Eseguire un processo di importazione in blocco
<a name="running-bulk-operations-import"></a>

 L'importazione in blocco è l'azione di spostare i metadati in un'area di lavoro. AWS IoT SiteWise Ad esempio, l'importazione in blocco può spostare i metadati da un file locale o da un file in un bucket Amazon S3 a un'area di lavoro. AWS IoT SiteWise 

## Passaggio 1: preparare il file da importare
<a name="preparing-import-file"></a>

Scaricate il file in formato AWS IoT SiteWise nativo per importare gli asset e i relativi modelli. Per ulteriori dettagli, consulta [AWS IoT SiteWise schema del processo di trasferimento dei metadati](bulk-operations-schema.md). 

## Passaggio 2: carica il file preparato su Amazon S3
<a name="uploading-import-file"></a>

 Carica il file su Amazon S3. Per ulteriori informazioni, consulta [Caricamento di un file su Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#uploading-an-object-bucket) S3 nella Guida per l'*utente di Amazon Simple Storage Service*. 

## Importa metadati (console)
<a name="import-metadata-console"></a>

Puoi utilizzare il Console AWS IoT SiteWise per importare in blocco i metadati. Segui [Passaggio 1: preparare il file da importare](#preparing-import-file) e [Passaggio 2: carica il file preparato su Amazon S3](#uploading-import-file) prepara un file pronto per essere importato.

**Importa dati da Amazon S3 a Console AWS IoT SiteWise**

1. Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. Scegli **Bulk operations New** dal pannello di navigazione.

1. Scegli **Nuova importazione** per avviare il processo di importazione.

1. Nella pagina **Importa metadati**:
   + Scegli **Browse Amazon S3** per visualizzare il bucket e i file Amazon S3.
   + Passa al bucket Amazon S3 che contiene il file di importazione preparato.
   + Seleziona il file da importare.
   + Esaminate il file selezionato e scegliete **Importa**.

1. La pagina **Operazioni in blocco sui SiteWise metadati** di Console AWS IoT SiteWise mostra il processo di importazione appena creato nella tabella di **avanzamento dei lavori**.

## Importa metadati ()AWS CLI
<a name="import-metadata-cli"></a>

Per eseguire un'azione di importazione, utilizzate la procedura seguente:

**Importa dati da Amazon S3 a AWS CLI**

1. Crea un file di metadati che specifichi le risorse che desideri importare, seguendo il. [AWS IoT SiteWise schema del processo di trasferimento dei metadati](bulk-operations-schema.md) Archivia questo file nel tuo bucket Amazon S3.

   Per esempi di file di metadati da importare, consulta. [Importa esempi di metadati](bulk-operations-import-metadata-example.md) 

1. Ora create un file JSON con il corpo della richiesta. Il corpo della richiesta specifica l'origine e la destinazione del processo di trasferimento. Questo file è separato dal file del passaggio precedente. Assicurati di specificare il tuo bucket Amazon S3 come origine e `iotsitewise` come destinazione. 

   L'esempio seguente mostra il corpo della richiesta:

   ```
   {
         "metadataTransferJobId": "your-transfer-job-Id",
         "sources": [{
             "type": "s3",
             "s3Configuration": {
                 "location": "arn:aws:s3:::amzn-s3-demo-bucket/your_import_metadata.json"
             }
         }],
         "destination": {
             "type": "iotsitewise"
         }
     }
   ```

1. Invoca il `CreateMetadataTransferJob` eseguendo il AWS CLI comando seguente. In questo esempio, viene denominato `createMetadataTransferJobExport.json` il file del corpo della richiesta del passaggio precedente.

   ```
   aws iottwinmaker create-metadata-transfer-job --region us-east-1 \
     --cli-input-json file://createMetadataTransferJobImport.json
   ```

   Questo creerà un processo di trasferimento dei metadati e inizierà il processo di trasferimento delle risorse selezionate.

# Esegui un processo di esportazione in blocco
<a name="running-bulk-operations-export"></a>

 L'esportazione in blocco è l'azione di spostare i metadati da un' AWS IoT SiteWise area di lavoro a un bucket Amazon S3. 

Quando esegui un'esportazione in blocco dei tuoi AWS IoT SiteWise contenuti su Amazon S3, puoi specificare filtri per limitare i modelli e gli asset specifici che desideri esportare.

I filtri devono essere specificati in una `iotSiteWiseConfiguration` sezione all'interno della sezione delle fonti della richiesta JSON.

**Nota**  
 Puoi includere più filtri nella tua richiesta. L'operazione in blocco esporterà modelli di asset e asset che corrispondono a uno qualsiasi dei filtri.   
 Se non fornite alcun filtro, l'operazione in blocco esporta tutti i modelli e gli asset degli asset. 

**Example corpo della richiesta con filtri**  

```
{
      "metadataTransferJobId": "your-transfer-job-id",
      "sources": [
       {
        "type": "iotsitewise",
        "iotSiteWiseConfiguration": {
          "filters": [
           {
              "filterByAssetModel": {
                  "assetModelId": "asset model ID"
              }
            },
            {
              "filterByAssetModel": {
                  "assetModelId": "asset model ID",
                  "includeAssets": true
              }
            },
            {
              "filterByAssetModel": {
                  "assetModelId": "asset model ID",
                  "includeOffspring": true
               }
             }
           ]
          }
        }
       ],
       "destination": {
          "type": "s3",
          "s3Configuration": {
            "location": "arn:aws:s3:::amzn-s3-demo-bucket"
          }
      }
}
```

## Esporta metadati (console)
<a name="export-metadata-console"></a>

La procedura seguente spiega l'azione di esportazione della console:

**Creare un processo di esportazione in Console AWS IoT SiteWise**

1.  Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. Scegli **Operazioni in blocco Nuove** dal pannello di navigazione.

1. Scegli **Nuova esportazione** per avviare il processo di esportazione.

1. Nella pagina **Esporta metadati**:
   +  Immettete un nome per il processo di esportazione. Questo è il nome usato per il file esportato nel tuo bucket Amazon S3. 
   + Scegliete le risorse da esportare, che imposta i filtri per il lavoro:
     + Esporta tutti gli asset e i modelli di asset. Utilizza i filtri sugli asset e sui modelli di asset.
     + Esporta risorse. Filtra in base alle tue risorse.
       + Seleziona la risorsa da utilizzare per il filtro di esportazione.
       + (Facoltativo) Aggiungete la progenie o il modello di asset associato.
     + Esporta modelli di asset. Filtra i tuoi modelli di asset.
       + Seleziona il modello di asset da utilizzare per il filtro di esportazione.
       + (Facoltativo) Aggiungi la progenie, l'asset associato o entrambi. 
     + Scegli **Next (Successivo)**.
   + Passa al bucket Amazon S3:
     + Scegli **Browse Amazon S3** per visualizzare il bucket e i file Amazon S3.
     + Passa al bucket Amazon S3 in cui deve essere inserito il file.
     + Scegli **Next (Successivo)**.
   + **Controlla il processo di esportazione e scegli Esporta.**

1. La pagina **Operazioni in blocco sui SiteWise metadati** di Console AWS IoT SiteWise mostra il processo di importazione appena creato nella tabella di **avanzamento dei lavori**.

Per i diversi modi di utilizzare i filtri durante l'esportazione dei metadati, consulta. [Esporta esempi di metadati](bulk-operations-export-filter-examples.md) 

## Esporta metadati ()AWS CLI
<a name="export-metadata-cli"></a>

La procedura seguente spiega l'azione di AWS CLI esportazione:

**Esportazione di dati AWS IoT SiteWise da Amazon S3**

1. Crea un file JSON con il corpo della richiesta. Il corpo della richiesta specifica l'origine e la destinazione del processo di trasferimento. L'esempio seguente mostra un esempio di corpo della richiesta:

   ```
   {
       "metadataTransferJobId": "your-transfer-job-Id",
       "sources": [{
           "type": "iotsitewise"
       }],
       "destination": {
           "type": "s3",
           "s3Configuration": {
               "location": "arn:aws:s3:::amzn-s3-demo-bucket"
           }
       }
   }
   ```

   Assicurati di specificare il tuo bucket Amazon S3 come destinazione del processo di trasferimento dei metadati.
**Nota**  
Questo esempio esporterà tutti i tuoi modelli e asset di asset. Per limitare l'esportazione a modelli o asset specifici, potete includere filtri nel corpo della richiesta. Per ulteriori informazioni sull'applicazione dei filtri di esportazione, consulta[Esporta esempi di metadati](bulk-operations-export-filter-examples.md).

1. Salva il file del corpo della richiesta da utilizzare nel passaggio successivo. In questo esempio, il file è denominato `createMetadataTransferJobExport.json`.

1. Invoca il `CreateMetadataTransferJob` eseguendo il seguente AWS CLI comando:

   ```
   aws iottwinmaker create-metadata-transfer-job --region us-east-1 \ 
            --cli-input-json file://createMetadataTransferJobExport.json
   ```

   Sostituisci il file JSON di input `createMetadataTransferJobExport.json` con il tuo nome del file di trasferimento.

# Monitoraggio dell'avanzamento dei lavori e gestione degli errori
<a name="jobs-progress-error-handling"></a>

 L'elaborazione di un processo in blocco richiede tempo. Ogni processo viene elaborato nell'ordine di AWS IoT SiteWise ricezione della richiesta. Viene elaborato one-at-a-time per ogni account. Quando un lavoro viene completato, il successivo in coda avvia automaticamente l'elaborazione. AWS IoT SiteWise risolve i job in modo asincrono e aggiorna lo stato di ciascuno man mano che procede. Ogni processo ha un campo di stato che contiene lo stato della risorsa e un messaggio di errore, se applicabile.

Lo stato può essere uno dei seguenti valori:
+ `VALIDATING`— Convalida del lavoro, incluso il formato del file inviato e il relativo contenuto.
+ `PENDING`— Il lavoro è in coda. È possibile annullare i lavori in questo stato dalla AWS IoT SiteWise console, ma tutti gli altri stati continueranno fino alla fine.
+ `RUNNING`— Elaborazione del lavoro. Sta creando e aggiornando risorse come definito dal file di importazione o esportando risorse in base ai filtri del processo di esportazione scelti. Se viene annullata, qualsiasi risorsa importata da questo lavoro non viene eliminata. Per ulteriori informazioni, consulta [Rivedi lo stato di avanzamento e i dettagli del lavoro (console)](review-job-progress.md#review-job-progress-console).
+ `CANCELLING`— Il lavoro viene annullato attivamente.
+ `ERROR`— Una o più risorse non sono state elaborate. Consulta il rapporto dettagliato sul lavoro per ulteriori informazioni. Per ulteriori informazioni, consulta [Controlla i dettagli dell'errore (console)](inspect-errors.md#inspect-errors-console).
+ `COMPLETED`— Job completato senza errori.
+ `CANCELLED`— Il lavoro viene annullato e non è in coda. Se hai annullato un `RUNNING` lavoro, le risorse già importate da questo lavoro al momento dell'annullamento non vengono eliminate da. AWS IoT SiteWise

**Topics**
+ [Monitoraggio dei progressi dei lavori](review-job-progress.md)
+ [Ispeziona gli errori per AWS IoT SiteWise](inspect-errors.md)

# Monitoraggio dei progressi dei lavori
<a name="review-job-progress"></a>

## Rivedi lo stato di avanzamento e i dettagli del lavoro (console)
<a name="review-job-progress-console"></a>

Visualizza [Importa metadati (console)](running-bulk-operations-import.md#import-metadata-console) o [Esporta metadati (console)](running-bulk-operations-export.md#export-metadata-console) avvia un lavoro collettivo.

**Panoramica dello stato di avanzamento del lavoro nella AWS IoT SiteWise console:**

1. Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. Scegli **Operazioni in blocco Nuove** dal pannello di navigazione.

1. La tabella **di avanzamento dei lavori** nella AWS IoT SiteWise console mostra l'elenco dei lavori relativi alle operazioni in blocco.

1. La colonna **Job type** descrive se si tratta di un processo di esportazione o importazione. Le colonne **Data di importazione** mostrano la data di inizio del processo.

1. La colonna **Stato** mostra lo stato del lavoro. È possibile selezionare un lavoro per visualizzarne i dettagli.

1. Il lavoro selezionato mostra **Successo** in caso di esito positivo o un elenco di errori se il lavoro non è riuscito. Per ogni tipo di risorsa viene inoltre visualizzata una descrizione dell'errore.

**Panoramica dei dettagli del lavoro nella AWS IoT SiteWise console:**

La tabella **di avanzamento dei lavori** nella AWS IoT SiteWise console mostra l'elenco dei lavori eseguiti in blocco.

1. Scegli un lavoro per visualizzare maggiori dettagli.

1. Per un processo di **importazione**, `Data source ARN` rappresenta la posizione Amazon S3 del file di importazione.

1. Per un processo di **esportazione**, `Data destination ARN` rappresenta la posizione Amazon S3 del file dopo l'esportazione.

1. Inoltre `Status``Status reason`, fornisci ulteriori dettagli sul lavoro corrente. Per ulteriori dettagli, consulta [Monitoraggio dell'avanzamento dei lavori e gestione degli errori](jobs-progress-error-handling.md).

1. `Queued position`Rappresenta la posizione del lavoro nella coda del processo. I lavori vengono elaborati uno alla volta. Una posizione in coda pari a 1 indica che il lavoro verrà elaborato successivamente.

1.  La pagina dei dettagli dei lavori mostra anche i conteggi relativi all'avanzamento dei lavori.

   1. I tipi di conteggio dello stato di avanzamento dei lavori sono:

     1. `Total resources`— Indica il numero totale di asset nel processo di trasferimento.

     1. `Succeeded`— Indica il numero di asset trasferiti con successo durante il processo.

     1. `Failed`— Indica il numero di asset che hanno avuto esito negativo durante il processo.

     1. `Skipped`— Indica il numero di risorse che sono state ignorate durante il processo.

1. Uno stato del lavoro pari a `PENDING` o`VALIDATING`, visualizza tutti i conteggi relativi all'avanzamento dei lavori. `–` Ciò indica che i conteggi relativi allo stato di avanzamento dei lavori sono in fase di valutazione.

1. Uno stato del lavoro pari a `RUNNING` mostra il `Total resources` conteggio, il lavoro inviato per l'elaborazione. I conteggi dettagliati (`Succeeded``Failed`, e`Skipped`) si applicano alle risorse elaborate. La somma dei conteggi dettagliati è inferiore al `Total resources` conteggio, finché lo stato del lavoro non è `COMPLETED` o`ERROR`.

1.  Se lo stato di un lavoro è `COMPLETED` o`ERROR`, il `Total resources` conteggio è uguale alla somma dei conteggi dettagliati (`Succeeded``Failed`, e). `Skipped` 

1.  Se lo stato di un lavoro è`ERROR`, consulta la tabella **Job failures** per i dettagli sugli errori e gli errori specifici. Per ulteriori dettagli, consulta [Controlla i dettagli dell'errore (console)](inspect-errors.md#inspect-errors-console). 

## Rivedi lo stato di avanzamento e i dettagli del lavoro ()AWS CLI
<a name="review-job-progress-cli"></a>

Dopo aver avviato un'operazione in blocco, puoi verificarne o aggiornarne lo stato utilizzando le seguenti azioni API:
+ Per recuperare informazioni su un lavoro specifico, utilizza l'azione [ GetMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_GetMetadataTransferJob.html)API.

**Recupera informazioni con l'`GetMetadataTransferJob`API:**

  1. Crea ed esegui un processo di trasferimento. Chiamata dell'API `GetMetadataTransferJob`.  
**Example AWS CLI comando:**  

     ```
     aws iottwinmaker get-metadata-transfer-job \ 
             --metadata-transfer-job-id your_metadata_transfer_job_id \
             --region your_region
     ```

  1.  L'`GetMetadataTransferJob`API restituisce un `MetadataTransferJobProgress` oggetto con i seguenti parametri: 
     + **successeededCount**: indica il numero di risorse trasferite correttamente durante il processo.
     + **FailedCount**: indica il numero di asset che hanno avuto esito negativo durante il processo.
     + **SkippedCount**: indica il conteggio degli asset che sono stati ignorati durante il processo.
     + **totalCount**: indica il conteggio totale degli asset nel processo di trasferimento.

     Questi parametri indicano lo stato di avanzamento del lavoro. Se lo stato è`RUNNING`, aiutano a tenere traccia del numero di risorse ancora da elaborare.

     Se si verificano errori di convalida dello schema o se **failedCount** è maggiore o uguale a 1, lo stato di avanzamento del lavoro diventa. `ERROR` Un report di errore completo per il processo viene inserito nel tuo bucket Amazon S3. Per ulteriori dettagli, consulta [Ispeziona gli errori per AWS IoT SiteWise](inspect-errors.md).
+ Per elencare i lavori correnti, utilizza l'azione [ListMetadataTransferJobs](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_ListMetadataTransferJobs.html)API.

  Utilizza un file JSON per filtrare i lavori restituiti in base al loro stato corrente. Consultate la procedura seguente:

  1. Per specificare i filtri che desideri utilizzare, crea un file JSON AWS CLI di input. Vuoi usare:

     ```
     {
         "sourceType": "s3",
         "destinationType": "iottwinmaker",
         "filters": [{
             "state": "COMPLETED"
         }]
     }
     ```

     Per un elenco di `state` valori validi, consulta la Guida [ListMetadataTransferJobsFilter](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_ListMetadataTransferJobsFilter.html)di *riferimento dell'AWS IoT TwinMaker API.*

  1.  Utilizzate il file JSON come argomento nel seguente comando di AWS CLI esempio:

     ```
     aws iottwinmaker list-metadata-transfer-job --region your_region \
             --cli-input-json file://ListMetadataTransferJobsExample.json
     ```
+ Per annullare un lavoro, utilizza l'azione [CancelMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CancelMetadataTransferJob.html)API. Questa API annulla lo specifico processo di trasferimento dei metadati, senza influire sulle risorse già esportate o importate:

  ```
  aws iottwinmaker cancel-metadata-transfer-job \ 
          --region your_region \ 
          --metadata-transfer-job-id job-to-cancel-id
  ```

# Ispeziona gli errori per AWS IoT SiteWise
<a name="inspect-errors"></a>

## Controlla i dettagli dell'errore (console)
<a name="inspect-errors-console"></a>

**I dettagli dell'errore nella AWS IoT SiteWise console:**

1. Passare alla [console AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. Consulta la tabella **di avanzamento dei lavori** in blocco Console AWS IoT SiteWise per un elenco dei lavori eseguiti in blocco.

1. Seleziona un lavoro per visualizzarne i dettagli.

1. Se lo stato di un lavoro è `COMPLETED` o`ERROR`, il `Total resources` conteggio è uguale alla somma dei conteggi dettagliati (`Succeeded``Failed`, e`Skipped`).

1.  Se lo stato di un lavoro è`ERROR`, consulta la tabella **Job failures** per i dettagli sugli errori e gli errori specifici.

1. La tabella **Job failures** mostra il contenuto del rapporto Job. Il `Resource type` campo indica la posizione dell'errore o degli errori, ad esempio:
   + Ad esempio, un errore di convalida nel `Resource type` campo indica che il modello di importazione e il formato del file dello schema dei metadati non corrispondono. `Bulk operations template` Per ulteriori informazioni, consulta [AWS IoT SiteWise schema del processo di trasferimento dei metadati](bulk-operations-schema.md). 
   + Un errore `Asset` nel `Resource type` campo indica che la risorsa non è stata creata a causa di un conflitto con un'altra risorsa. Per informazioni sugli [errori](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/CommonErrors.html) e i conflitti relativi alle AWS IoT SiteWise risorse, consultate Errori comuni. 

## Controlla i dettagli dell'errore ()AWS CLI
<a name="inspect-errors-cli"></a>

Per gestire e diagnosticare gli errori prodotti durante un processo di trasferimento, vedete la seguente procedura sull'utilizzo dell'azione `GetMetadataTransferJob` API:

1. Dopo aver creato ed eseguito un processo di trasferimento, chiama [GetMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_GetMetadataTransferJob.html):

   ```
   aws iottwinmaker get-metadata-transfer-job \
           --metadata-transfer-job-id your_metadata_transfer_job_id \
           --region us-east-1
   ```

1. Una volta visualizzato lo stato del lavoro a cui rivolgiti`COMPLETED`, puoi iniziare a verificare i risultati del lavoro.

1. Quando si chiama`GetMetadataTransferJob`, restituisce un oggetto chiamato [https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_MetadataTransferJobProgress.html](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_MetadataTransferJobProgress.html).

   L' MetadataTransferJobProgress oggetto contiene i seguenti parametri:
   + **FailedCount:** indica il numero di asset che hanno avuto esito negativo durante il processo di trasferimento.
   + **SkippedCount:** indica il numero di asset che sono stati ignorati durante il processo di trasferimento.
   + **successeededCount:** indica il numero di asset che hanno avuto successo durante il processo di trasferimento.
   + **totalCount:** indica il numero totale di asset coinvolti nel processo di trasferimento.

1. Inoltre, la chiamata API restituisce un elemento `reportUrl` che contiene un URL predefinito. Se la tua operazione di trasferimento presenta problemi che devi approfondire, visita questo URL. 

# Importa esempi di metadati
<a name="bulk-operations-import-metadata-example"></a>

Questa sezione mostra come creare file di metadati per importare modelli di asset e asset con un'unica operazione di importazione in blocco.

## Esempio di importazione in blocco
<a name="example-metadata-file"></a>

È possibile importare molti modelli di asset e asset con un'unica operazione di importazione in blocco. L'esempio seguente mostra come creare un file di metadati a tale scopo.

 In questo scenario di esempio, sono presenti diversi siti di lavoro che contengono robot industriali nelle celle di lavoro. 

L'esempio definisce due modelli di asset:
+ `RobotModel1`: Questo modello di asset rappresenta un particolare tipo di robot che avete nei vostri cantieri. Il robot ha una proprietà di misurazione,`Temperature`. 
+ `WorkCell`: Questo modello di asset rappresenta una raccolta di robot all'interno di uno dei vostri siti di lavoro. Il modello di asset definisce una gerarchia`robotHierarchyOEM1`, per rappresentare la relazione tra robot e celle di lavoro. 

L'esempio definisce anche alcune risorse:
+ `WorkCell1`: una cella di lavoro all'interno del sito di Boston
+ `RobotArm123456`: un robot all'interno di quella cella di lavoro
+ `RobotArm987654`: un altro robot all'interno di quella cella di lavoro

Il seguente file di metadati JSON definisce questi modelli e asset. L'esecuzione di un'importazione in blocco con questi metadati crea i modelli di asset e le risorse al loro interno AWS IoT SiteWise, comprese le relative relazioni gerarchiche.

### File di metadati per l'importazione
<a name="bulk-import-metadata-file"></a>

```
{
    "assetModels": [
        {
            "assetModelExternalId": "Robot.OEM1.3536",
            "assetModelName": "RobotModel1",
            "assetModelProperties": [
                {
                    "dataType": "DOUBLE",
                    "externalId": "Temperature",
                    "name": "Temperature",
                    "type": {
                        "measurement": {
                            "processingConfig": {
                                "forwardingConfig": {
                                    "state": "ENABLED"
                                }
                            }
                        }
                    },
                    "unit": "fahrenheit"
                }
            ]
        },
        {
            "assetModelExternalId": "ISA95.WorkCell",
            "assetModelName": "WorkCell",
            "assetModelProperties": [],
            "assetModelHierarchies": [
                {
                    "externalId": "workCellHierarchyWithOEM1Robot",
                    "name": "robotHierarchyOEM1",
                    "childAssetModelExternalId": "Robot.OEM1.3536"
                }
            ]
        }
    ],
    "assets": [
        {
            "assetExternalId": "Robot.OEM1.3536.123456",
            "assetName": "RobotArm123456",
            "assetModelExternalId": "Robot.OEM1.3536"
        },
        {
            "assetExternalId": "Robot.OEM1.3536.987654",
            "assetName": "RobotArm987654",
            "assetModelExternalId": "Robot.OEM1.3536"
        },
        {
            "assetExternalId": "BostonSite.Area1.Line1.WorkCell1",
            "assetName": "WorkCell1",
            "assetModelExternalId": "ISA95.WorkCell",
            "assetHierarchies": [
                {
                    "externalId": "workCellHierarchyWithOEM1Robot",
                    "childAssetExternalId": "Robot.OEM1.3536.123456"
                },
                {
                    "externalId": "workCellHierarchyWithOEM1Robot",
                    "childAssetExternalId": "Robot.OEM1.3536.987654"
                }
            ]
        }
    ]
}
```

## Esempio di integrazione iniziale di modelli e asset
<a name="example-scenario1"></a>

In questo scenario di esempio, in un'azienda sono presenti diversi siti di lavoro che contengono robot industriali.

L'esempio definisce più modelli di asset:
+ `Sample_Enterprise`— Questo modello di asset rappresenta la società di cui fanno parte i siti. Il modello di asset definisce una gerarchia per rappresentare la relazione tra i siti e l'azienda. `Enterprise to Site`
+ `Sample_Site`— Questo modello di asset rappresenta i siti di produzione all'interno dell'azienda. Il modello di asset definisce una gerarchia`Site to Line`, per rappresentare la relazione tra le linee e il sito.
+ `Sample_Welding Line`— Questo modello di asset rappresenta una linea di assemblaggio all'interno dei siti di lavoro. Il modello di asset definisce una gerarchia per rappresentare la relazione tra i robot e la linea. `Line to Robot`
+ `Sample_Welding Robot`— Questo modello di asset rappresenta un particolare tipo di robot nei vostri cantieri.

L'esempio definisce anche gli asset in base ai modelli di asset.
+ `Sample_AnyCompany Motor`— Questa risorsa viene creata a partire da un modello di `Sample_Enterprise` asset.
+ `Sample_Chicago`— Questa risorsa viene creata a partire da un modello di `Sample_Site` asset.
+ `Sample_Welding Line 1`— Questa risorsa viene creata a partire da un modello di `Sample_Welding Line` asset.
+ `Sample_Welding Robot 1`— Questa risorsa viene creata a partire da un modello di `Sample_Welding Robot` asset.
+ `Sample_Welding Robot 2`— Questa risorsa viene creata a partire da un modello di `Sample_Welding Robot` asset.

Il seguente file di metadati JSON definisce questi modelli e risorse di asset. L'esecuzione di un'importazione in blocco con questi metadati crea i modelli di asset e le risorse al loro interno AWS IoT SiteWise, comprese le relative relazioni gerarchiche.

### File JSON per integrare risorse e modelli da importare
<a name="bulk-import-JSON-file"></a>

```
{
    "assetModels": [
        {
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetModelName": "Sample_Welding Robot",
            "assetModelProperties": [
                {
                    "dataType": "STRING",
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "name": "Serial Number",
                    "type": {
                        "attribute": {
                            "defaultValue": "-"
                        }
                    },
                    "unit": "-"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "name": "CycleCount",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "EA"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "name": "Joint 1 Current",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "Amps"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Max_Current",
                    "name": "Max Joint 1 Current",
                    "type": {
                        "metric": {
                            "expression": "max(joint1current)",
                            "variables": [
                                {
                                    "name": "joint1current",
                                    "value": {
                                        "propertyExternalId": "External_Id_Welding_Robot_Joint_1_Current"
                                    }
                                }
                            ],
                            "window": {
                                "tumbling": {
                                    "interval": "5m"
                                }
                            }
                        }
                    },
                    "unit": "Amps"
                }
            ]
        },
        {
            "assetModelExternalId": "External_Id_Welding_Line",
            "assetModelName": "Sample_Welding Line",
            "assetModelProperties": [
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Line_Availability",
                    "name": "Availability",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "%"
                }
            ],
            "assetModelHierarchies": [
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "name": "Line to Robot",
                    "childAssetModelExternalId": "External_Id_Welding_Robot"
                }
            ]
        },
        {
            "assetModelExternalId": "External_Id_Site",
            "assetModelName": "Sample_Site",
            "assetModelProperties": [
                {
                    "dataType": "STRING",
                    "externalId": "External_Id_Site_Street_Address",
                    "name": "Street Address",
                    "type": {
                        "attribute": {
                            "defaultValue": "-"
                        }
                    },
                    "unit": "-"
                }
            ],
            "assetModelHierarchies": [
                {
                    "externalId": "External_Id_Site_TO_Line",
                    "name": "Site to Line",
                    "childAssetModelExternalId": "External_Id_Welding_Line"
                }
            ]
        },
        {
            "assetModelExternalId": "External_Id_Enterprise",
            "assetModelName": "Sample_Enterprise",
            "assetModelProperties": [
                {
                    "dataType": "STRING",
                    "name": "Company Name",
                    "externalId": "External_Id_Enterprise_Company_Name",
                    "type": {
                        "attribute": {
                            "defaultValue": "-"
                        }
                    },
                    "unit": "-"
                }
            ],
            "assetModelHierarchies": [
                {
                    "externalId": "External_Id_Enterprise_TO_Site",
                    "name": "Enterprise to Site",
                    "childAssetModelExternalId": "External_Id_Site"
                }
            ]
        }
    ],
    "assets": [
        {
            "assetExternalId": "External_Id_Welding_Robot_1",
            "assetName": "Sample_Welding Robot 1",
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "attributeValue": "S1000"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "alias": "AnyCompany/Chicago/Welding Line/S1000/Count"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "alias": "AnyCompany/Chicago/Welding Line/S1000/1/Current"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Robot_2",
            "assetName": "Sample_Welding Robot 2",
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "attributeValue": "S2000"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "alias": "AnyCompany/Chicago/Welding Line/S2000/Count"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "alias": "AnyCompany/Chicago/Welding Line/S2000/1/Current"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Line_1",
            "assetName": "Sample_Welding Line 1",
            "assetModelExternalId": "External_Id_Welding_Line",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Line_Availability",
                    "alias": "AnyCompany/Chicago/Welding Line/Availability"
                }
            ],
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_1"
                },
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_2"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Site_Chicago",
            "assetName": "Sample_Chicago",
            "assetModelExternalId": "External_Id_Site",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Site_TO_Line",
                    "childAssetExternalId": "External_Id_Welding_Line_1"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Enterprise_AnyCompany",
            "assetName": "Sample_AnyEnterprise Motor",
            "assetModelExternalId": "External_Id_Enterprise",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Enterprise_TO_Site",
                    "childAssetExternalId": "External_Id_Site_Chicago"
                }
            ]
        }
    ]
}
```

La schermata seguente mostra i modelli visualizzati nell'esempio di codice precedente Console AWS IoT SiteWise dopo l'esecuzione del precedente esempio di codice.

![\[AWS IoT SiteWise modelli con asset e modelli di asset.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/import-example-asset.png)


La schermata seguente mostra modelli, risorse e gerarchie visualizzati Console AWS IoT SiteWise dopo l'esecuzione del precedente esempio di codice.

![\[AWS IoT SiteWise modelli con risorse, modelli di asset e gerarchie.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/hierarchy-example-import.png)


## Esempio di onboarding di risorse aggiuntive
<a name="example-scenario2"></a>

Questo esempio definisce risorse aggiuntive da importare in un modello di asset esistente nel tuo account:
+ `Sample_Welding Line 2`— Questa risorsa viene creata a partire da un modello di `Sample_Welding Line` asset.
+ `Sample_Welding Robot 3`— Questa risorsa viene creata a partire da un modello di `Sample_Welding Robot` asset.
+ `Sample_Welding Robot 4`— Questa risorsa viene creata a partire da un modello di `Sample_Welding Robot` asset.

Per creare le risorse iniziali per questo esempio, vedere[Esempio di integrazione iniziale di modelli e asset](#example-scenario1).

Il seguente file di metadati JSON definisce questi modelli e asset di asset. L'esecuzione di un'importazione in blocco con questi metadati crea i modelli di asset e le risorse al loro interno AWS IoT SiteWise, comprese le relative relazioni gerarchiche.

### File JSON per l'onboarding di risorse aggiuntive
<a name="bulk-import-JSON-file-additional-assets"></a>

```
{
    "assets": [
        {
            "assetExternalId": "External_Id_Welding_Robot_3",
            "assetName": "Sample_Welding Robot 3",
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "attributeValue": "S3000"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "alias": "AnyCompany/Chicago/Welding Line/S3000/Count"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "alias": "AnyCompany/Chicago/Welding Line/S3000/1/Current"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Robot_4",
            "assetName": "Sample_Welding Robot 4",
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetProperties": [
                {
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "attributeValue": "S4000"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "alias": "AnyCompany/Chicago/Welding Line/S4000/Count"
                },
                {
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "alias": "AnyCompany/Chicago/Welding Line/S4000/1/Current"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Line_1",
            "assetName": "Sample_Welding Line 1",
            "assetModelExternalId": "External_Id_Welding_Line",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_1"
                },
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_2"
                },
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_3"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Welding_Line_2",
            "assetName": "Sample_Welding Line 2",
            "assetModelExternalId": "External_Id_Welding_Line",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Welding_Line_TO_Robot",
                    "childAssetExternalId": "External_Id_Welding_Robot_4"
                }
            ]
        },
        {
            "assetExternalId": "External_Id_Site_Chicago",
            "assetName": "Sample_Chicago",
            "assetModelExternalId": "External_Id_Site",
            "assetHierarchies": [
                {
                    "externalId": "External_Id_Site_TO_Line",
                    "childAssetExternalId": "External_Id_Welding_Line_1"
                },
                {
                    "externalId": "External_Id_Site_TO_Line",
                    "childAssetExternalId": "External_Id_Welding_Line_2"
                }
            ]
        }
    ]
}
```

La schermata seguente mostra modelli, risorse e gerarchie visualizzati Console AWS IoT SiteWise dopo l'esecuzione del precedente esempio di codice.

![\[AWS IoT SiteWise modelli con asset e modelli di asset.\]](http://docs.aws.amazon.com/it_it/iot-sitewise/latest/userguide/images/additional-assets-import.png)


## Esempio di onboarding di nuove proprietà
<a name="example-scenario3"></a>

Questo esempio definisce nuove proprietà sui modelli di asset esistenti. Guarda [Esempio di onboarding di risorse aggiuntive](#example-scenario2) come integrare risorse e modelli aggiuntivi.
+ `Joint 1 Temperature`— Questa proprietà viene aggiunta al modello di `Sample_Welding Robot` asset. Questa nuova proprietà si propagherà anche a ogni risorsa creata dal modello di `Sample_Welding Robot` asset. 

Per aggiungere una nuova proprietà a un modello di asset esistente, vedete il seguente esempio di file di metadati JSON. Come mostrato in JSON, l'intera definizione del modello di `Sample_Welding Robot` asset esistente deve essere fornita insieme alla nuova proprietà. Se non viene fornito l'intero elenco di proprietà della definizione esistente, AWS IoT SiteWise elimina le proprietà omesse. 

### File JSON per incorporare nuove proprietà
<a name="bulk-import-JSON-file-new-properties"></a>

Questo esempio aggiunge una nuova proprietà `Joint 1 Temperature` al modello di asset.

```
{
    "assetModels": [
        {
            "assetModelExternalId": "External_Id_Welding_Robot",
            "assetModelName": "Sample_Welding Robot",
            "assetModelProperties": [
                {
                    "dataType": "STRING",
                    "externalId": "External_Id_Welding_Robot_Serial_Number",
                    "name": "Serial Number",
                    "type": {
                        "attribute": {
                            "defaultValue": "-"
                        }
                    },
                    "unit": "-"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Cycle_Count",
                    "name": "CycleCount",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "EA"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Current",
                    "name": "Joint 1 Current",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "Amps"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Max_Current",
                    "name": "Max Joint 1 Current",
                    "type": {
                        "metric": {
                            "expression": "max(joint1current)",
                            "variables": [
                                {
                                    "name": "joint1current",
                                    "value": {
                                        "propertyExternalId": "External_Id_Welding_Robot_Joint_1_Current"
                                    }
                                }
                            ],
                            "window": {
                                "tumbling": {
                                    "interval": "5m"
                                }
                            }
                        }
                    },
                    "unit": "Amps"
                },
                {
                    "dataType": "DOUBLE",
                    "externalId": "External_Id_Welding_Robot_Joint_1_Temperature",
                    "name": "Joint 1 Temperature",
                    "type": {
                        "measurement": {}
                    },
                    "unit": "degC"
                }
            ]
        }
    ]
}
```

## Esempio di gestione dei flussi di dati
<a name="example-managing-data-streams"></a>

 Questo esempio mostra due modi di gestire i flussi di dati associati a una proprietà di un asset. Quando si rinomina un alias di proprietà della risorsa, sono disponibili due opzioni per i dati storici attualmente archiviati nel flusso di dati della proprietà della risorsa.
+  Opzione uno: mantiene il flusso di dati corrente e rinomina solo l'alias, in modo che i dati storici siano accessibili con il nuovo alias. 

   Nell'esempio del file di metadati JSON, la proprietà asset con ID `External_Id_Welding_Robot_Cycle_Count` cambia il suo alias in. `AnyCompany/Chicago/Welding Line/S3000/Count-Updated` I dati storici per questa proprietà dell'asset rimangono gli stessi dopo questa modifica. 
+  Opzione due: assegna un nuovo flusso di dati alla proprietà dell'asset, accessibile con il nuovo alias. Il vecchio flusso di dati e i relativi dati storici sono ancora accessibili con il vecchio alias, ma non sono associati ad alcuna proprietà dell'asset. 

   Nell'esempio del file di metadati JSON, la proprietà dell'asset con ID `External_Id_Welding_Robot_Joint_1_Current` cambia il suo alias in. `AnyCompany/Chicago/Welding Line/S4999/1/Current` Questa volta il valore aggiuntivo `retainDataOnAliasChange` è presente e impostato su. `False` Con questa impostazione, il flusso di dati originale viene dissociato dalla proprietà dell'asset e viene creato un nuovo flusso di dati senza dati storici. 

 Per accedere al vecchio flusso di dati con i dati storici originali, in AWS Console Home, vai alla pagina *Data Streams* e cerca il vecchio alias. `AnyCompany/Chicago/Welding Line/S3000/1/Current` 

### File JSON per aggiornare gli alias delle proprietà
<a name="bulk-import-JSON-file-update-aliases"></a>

```
{
    "assetExternalId": "External_Id_Welding_Robot_3",
    "assetName": "Sample_Welding Robot 3",
    "assetModelExternalId": "External_Id_Welding_Robot",
    "assetProperties": [
        {
            "externalId": "External_Id_Welding_Robot_Serial_Number",
            "attributeValue": "S3000"
        },
        {
            "externalId": "External_Id_Welding_Robot_Cycle_Count",
            "alias": "AnyCompany/Chicago/Welding Line/S3000/Count-Updated"
        },
        {
            "externalId": "External_Id_Welding_Robot_Joint_1_Current",
            "alias": "AnyCompany/Chicago/Welding Line/S4999/1/Current",
            "retainDataOnAliasChange": "FALSE"
        }
    ]
}
```

# Esporta esempi di metadati
<a name="bulk-operations-export-filter-examples"></a>

Quando esegui un'esportazione in blocco dei tuoi AWS IoT SiteWise contenuti su Amazon S3, puoi *specificare* filtri per limitare i modelli e gli asset specifici che desideri esportare. 

Specificate i filtri in una `iotSiteWiseConfiguration` sezione all'interno della `sources` sezione del corpo della richiesta.

**Nota**  
Puoi includere più filtri. L'operazione in blocco esporterà qualsiasi modello di asset o risorsa che corrisponde a uno qualsiasi dei filtri.  
Se non fornite alcun filtro, l'operazione esporterà tutti i modelli e gli asset degli asset.

```
{
    "metadataTransferJobId": "your-transfer-job-id",
    "sources": [{
        "type": "iotsitewise",
        "iotSiteWiseConfiguration": {
            "filters": [{
                list of filters
            }]
        }
    }],
    "destination": {
        "type": "s3",
        "s3Configuration": {
            "location": "arn:aws:s3:::amzn-s3-demo-bucket"
        }
    }
}
```



## Filtra per modello di asset
<a name="bulk-export-filter-asset-model"></a>

Puoi filtrare un modello di asset specifico. Puoi anche includere tutti gli asset che utilizzano quel modello o tutti i modelli di asset all'interno della sua gerarchia. Non puoi includere sia gli asset che la gerarchia.

Per ulteriori informazioni sulle gerarchie, consultare [Definite le gerarchie dei modelli di asset](define-asset-hierarchies.md).

------
#### [ Asset model ]

Questo filtro include il modello di asset specificato:

```
"filterByAssetModel": {
    "assetModelId": "asset model ID"
}
```

------
#### [ Asset model and its assets ]

Questo filtro include il modello di asset specificato, insieme a tutti gli asset che utilizzano quel modello di asset:

```
"filterByAssetModel": {
    "assetModelId": "asset model ID",
    "includeAssets": true
}
```

------
#### [ Asset model and its hierarchy ]

Questo filtro include il modello di asset specificato, insieme a tutti i modelli di asset associati nella sua gerarchia:

```
"filterByAssetModel": {
    "assetModelId": "asset model ID",
    "includeOffspring": true
}
```

------

## Filtra per risorsa
<a name="bulk-export-filter-asset"></a>

Puoi filtrare una risorsa specifica. Puoi anche includere il suo modello di asset o tutte le risorse associate all'interno della sua gerarchia. Non è possibile includere sia il modello di asset che la gerarchia.

Per ulteriori informazioni sulle gerarchie, consultare [Definite le gerarchie dei modelli di asset](define-asset-hierarchies.md).

------
#### [ Asset ]

Questo filtro include la risorsa specificata:

```
"filterByAsset": {
    "assetId": "asset ID"
}
```

------
#### [ Asset and its asset model ]

Questo filtro include l'asset specificato, insieme al modello di asset che utilizza:

```
"filterByAsset": {
    "assetId": "asset ID",
    "includeAssetModel": true
}
```

------
#### [ Asset and its hierarchy ]

Questo filtro include la risorsa specificata, insieme a tutte le risorse associate nella sua gerarchia:

```
"filterByAsset": {
    "assetId": "asset ID",
    "includeOffspring": true
}
```

------

# AWS IoT SiteWise schema del processo di trasferimento dei metadati
<a name="bulk-operations-schema"></a>

Utilizza lo schema del processo di trasferimento AWS IoT SiteWise dei metadati come riferimento quando esegui le tue operazioni di importazione ed esportazione in blocco:

```
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "IoTSiteWise",
  "description": "Metadata transfer job resource schema for IoTSiteWise",
  "definitions": {
    "Name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "pattern": "[^\\u0000-\\u001F\\u007F]+"
    },
    "Description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048,
      "pattern": "[^\\u0000-\\u001F\\u007F]+"
    },
    "ID": {
      "type": "string",
      "minLength": 36,
      "maxLength": 36,
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
    },
    "ExternalId": {
      "type": "string",
      "minLength": 2,
      "maxLength": 128,
      "pattern": "[a-zA-Z0-9_][a-zA-Z_\\-0-9.:]*[a-zA-Z0-9_]+"
    },
    "AttributeValue": {
      "description": "The value of the property attribute.",
      "type": "string",
      "pattern": "[^\\u0000-\\u001F\\u007F]+"
    },
    "PropertyUnit": {
      "description": "The unit of measure (such as Newtons or RPM) of the asset property.",
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "pattern": "[^\\u0000-\\u001F\\u007F]+"
    },
    "PropertyAlias": {
      "description": "The property alias that identifies the property.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "pattern": "[^\\u0000-\\u001F\\u007F]+"
    },
    "AssetProperty": {
      "description": "The asset property's definition, alias, unit, and notification state.",
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "id"
          ]
        },
        {
          "required": [
            "externalId"
          ]
        }
      ],
      "properties": {
        "id": {
          "description": "The ID of the asset property.",
          "$ref": "#/definitions/ID"
        },
        "externalId": {
          "description": "The ExternalID of the asset property.",
          "$ref": "#/definitions/ExternalId"
        },
        "alias": {
          "$ref": "#/definitions/PropertyAlias"
        },
        "unit": {
          "$ref": "#/definitions/PropertyUnit"
        },
        "attributeValue": {
          "$ref": "#/definitions/AttributeValue"
        },
        "retainDataOnAliasChange": {
          "type": "string",
          "default": "TRUE",
          "enum": [
            "TRUE",
            "FALSE"
          ]
        },
        "propertyNotificationState": {
          "description": "The MQTT notification state (ENABLED or DISABLED) for this asset property.",
          "type": "string",
          "enum": [
            "ENABLED",
            "DISABLED"
          ]
        }
      }
    },
    "AssetHierarchy": {
      "description": "A hierarchy specifies allowed parent/child asset relationships.",
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "id",
            "childAssetId"
          ]
        },
        {
          "required": [
            "externalId",
            "childAssetId"
          ]
        },
        {
          "required": [
            "id",
            "childAssetExternalId"
          ]
        },
        {
          "required": [
            "externalId",
            "childAssetExternalId"
          ]
        }
      ],
      "properties": {
        "id": {
          "description": "The ID of a hierarchy in the parent asset's model.",
          "$ref": "#/definitions/ID"
        },
        "externalId": {
          "description": "The ExternalID of a hierarchy in the parent asset's model.",
          "$ref": "#/definitions/ExternalId"
        },
        "childAssetId": {
          "description": "The ID of the child asset to be associated.",
          "$ref": "#/definitions/ID"
        },
        "childAssetExternalId": {
          "description": "The ExternalID of the child asset to be associated.",
          "$ref": "#/definitions/ExternalId"
        }
      }
    },
    "Tag": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "key",
        "value"
      ],
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "AssetModelType": {
      "type": "string",
      "default": null,
      "enum": [
        "ASSET_MODEL",
        "COMPONENT_MODEL"
      ]
    },
    "AssetModelCompositeModel": {
      "description": "Contains a composite model definition in an asset model. This composite model definition is applied to all assets created from the asset model.",
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "id"
          ]
        },
        {
          "required": [
            "externalId"
          ]
        }
      ],
      "required": [
        "name",
        "type"
      ],
      "properties": {
        "id": {
          "description": "The ID of the asset model composite model.",
          "$ref": "#/definitions/ID"
        },
        "externalId": {
          "description": "The ExternalID of the asset model composite model.",
          "$ref": "#/definitions/ExternalId"
        },
        "parentId": {
          "description": "The ID of the parent asset model composite model.",
          "$ref": "#/definitions/ID"
        },
        "parentExternalId": {
          "description": "The ExternalID of the parent asset model composite model.",
          "$ref": "#/definitions/ExternalId"
        },
        "composedAssetModelId": {
          "description": "The ID of the composed asset model.",
          "$ref": "#/definitions/ID"
        },
        "composedAssetModelExternalId": {
          "description": "The ExternalID of the composed asset model.",
          "$ref": "#/definitions/ExternalId"
        },
        "description": {
          "description": "A description for the asset composite model.",
          "$ref": "#/definitions/Description"
        },
        "name": {
          "description": "A unique, friendly name for the asset composite model.",
          "$ref": "#/definitions/Name"
        },
        "type": {
          "description": "The type of the composite model. For alarm composite models, this type is AWS/ALARM.",
          "$ref": "#/definitions/Name"
        },
        "properties": {
          "description": "The property definitions of the asset model.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssetModelProperty"
          }
        }
      }
    },
    "AssetModelProperty": {
      "description": "Contains information about an asset model property.",
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "id"
          ]
        },
        {
          "required": [
            "externalId"
          ]
        }
      ],
      "required": [
        "name",
        "dataType",
        "type"
      ],
      "properties": {
        "id": {
          "description": "The ID of the asset model property.",
          "$ref": "#/definitions/ID"
        },
        "externalId": {
          "description": "The ExternalID of the asset model property.",
          "$ref": "#/definitions/ExternalId"
        },
        "name": {
          "description": "The name of the asset model property.",
          "$ref": "#/definitions/Name"
        },
        "dataType": {
          "description": "The data type of the asset model property.",
          "$ref": "#/definitions/DataType"
        },
        "dataTypeSpec": {
          "description": "The data type of the structure for this property.",
          "$ref": "#/definitions/Name"
        },
        "unit": {
          "description": "The unit of the asset model property, such as Newtons or RPM.",
          "type": "string",
          "minLength": 1,
          "maxLength": 256,
          "pattern": "[^\\u0000-\\u001F\\u007F]+"
        },
        "type": {
          "description": "The property type",
          "$ref": "#/definitions/PropertyType"
        }
      }
    },
    "DataType": {
      "type": "string",
      "enum": [
        "STRING",
        "INTEGER",
        "DOUBLE",
        "BOOLEAN",
        "STRUCT"
      ]
    },
    "PropertyType": {
      "description": "Contains a property type, which can be one of attribute, measurement, metric, or transform.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "attribute": {
          "$ref": "#/definitions/Attribute"
        },
        "transform": {
          "$ref": "#/definitions/Transform"
        },
        "metric": {
          "$ref": "#/definitions/Metric"
        },
        "measurement": {
          "$ref": "#/definitions/Measurement"
        }
      }
    },
    "Attribute": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "defaultValue": {
          "type": "string",
          "pattern": "[^\\u0000-\\u001F\\u007F]+"
        }
      }
    },
    "Transform": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "expression",
        "variables"
      ],
      "properties": {
        "expression": {
          "description": "The mathematical expression that defines the transformation function.",
          "type": "string",
          "minLength": 1,
          "maxLength": 1024
        },
        "variables": {
          "description": "The list of variables used in the expression.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExpressionVariable"
          }
        },
        "processingConfig": {
          "$ref": "#/definitions/TransformProcessingConfig"
        }
      }
    },
    "TransformProcessingConfig": {
      "description": "The processing configuration for the given transform property.",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "computeLocation"
      ],
      "properties": {
        "computeLocation": {
          "description": "The compute location for the given transform property.",
          "$ref": "#/definitions/ComputeLocation"
        },
        "forwardingConfig": {
          "description": "The forwarding configuration for a given property.",
          "$ref": "#/definitions/ForwardingConfig"
        }
      }
    },
    "Metric": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "expression",
        "variables",
        "window"
      ],
      "properties": {
        "expression": {
          "description": "The mathematical expression that defines the metric aggregation function.",
          "type": "string",
          "minLength": 1,
          "maxLength": 1024
        },
        "variables": {
          "description": "The list of variables used in the expression.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExpressionVariable"
          }
        },
        "window": {
          "description": "The window (time interval) over which AWS IoT SiteWise computes the metric's aggregation expression",
          "$ref": "#/definitions/MetricWindow"
        },
        "processingConfig": {
          "$ref": "#/definitions/MetricProcessingConfig"
        }
      }
    },
    "MetricProcessingConfig": {
      "description": "The processing configuration for the metric.",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "computeLocation"
      ],
      "properties": {
        "computeLocation": {
          "description": "The compute location for the given metric property.",
          "$ref": "#/definitions/ComputeLocation"
        }
      }
    },
    "ComputeLocation": {
      "type": "string",
      "enum": [
        "EDGE",
        "CLOUD"
      ]
    },
    "ForwardingConfig": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "state"
      ],
      "properties": {
        "state": {
          "type": "string",
          "enum": [
            "ENABLED",
            "DISABLED"
          ]
        }
      }
    },
    "MetricWindow": {
      "description": "Contains a time interval window used for data aggregate computations (for example, average, sum, count, and so on).",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "tumbling": {
          "description": "The tumbling time interval window.",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "interval"
          ],
          "properties": {
            "interval": {
              "description": "The time interval for the tumbling window.",
              "type": "string",
              "minLength": 2,
              "maxLength": 23
            },
            "offset": {
              "description": "The offset for the tumbling window.",
              "type": "string",
              "minLength": 2,
              "maxLength": 25
            }
          }
        }
      }
    },
    "ExpressionVariable": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "name",
        "value"
      ],
      "properties": {
        "name": {
          "description": "The friendly name of the variable to be used in the expression.",
          "type": "string",
          "minLength": 1,
          "maxLength": 64,
          "pattern": "^[a-z][a-z0-9_]*$"
        },
        "value": {
          "description": "The variable that identifies an asset property from which to use values.",
          "$ref": "#/definitions/VariableValue"
        }
      }
    },
    "VariableValue": {
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "propertyId"
          ]
        },
        {
          "required": [
            "propertyExternalId"
          ]
        }
      ],
      "properties": {
        "propertyId": {
          "$ref": "#/definitions/ID"
        },
        "propertyExternalId": {
          "$ref": "#/definitions/ExternalId"
        },
        "hierarchyId": {
          "$ref": "#/definitions/ID"
        },
        "hierarchyExternalId": {
          "$ref": "#/definitions/ExternalId"
        }
      }
    },
    "Measurement": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "processingConfig": {
          "$ref": "#/definitions/MeasurementProcessingConfig"
        }
      }
    },
    "MeasurementProcessingConfig": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "forwardingConfig"
      ],
      "properties": {
        "forwardingConfig": {
          "description": "The forwarding configuration for the given measurement property.",
          "$ref": "#/definitions/ForwardingConfig"
        }
      }
    },
    "AssetModelHierarchy": {
      "description": "Contains information about an asset model hierarchy.",
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "id",
            "childAssetModelId"
          ]
        },
        {
          "required": [
            "id",
            "childAssetModelExternalId"
          ]
        },
        {
          "required": [
            "externalId",
            "childAssetModelId"
          ]
        },
        {
          "required": [
            "externalId",
            "childAssetModelExternalId"
          ]
        }
      ],
      "required": [
        "name"
      ],
      "properties": {
        "id": {
          "description": "The ID of the asset model hierarchy.",
          "$ref": "#/definitions/ID"
        },
        "externalId": {
          "description": "The ExternalID of the asset model hierarchy.",
          "$ref": "#/definitions/ExternalId"
        },
        "name": {
          "description": "The name of the asset model hierarchy.",
          "$ref": "#/definitions/Name"
        },
        "childAssetModelId": {
          "description": "The ID of the asset model. All assets in this hierarchy must be instances of the child AssetModelId asset model.",
          "$ref": "#/definitions/ID"
        },
        "childAssetModelExternalId": {
          "description": "The ExternalID of the asset model. All assets in this hierarchy must be instances of the child AssetModelId asset model.",
          "$ref": "#/definitions/ExternalId"
        }
      }
    },
    "AssetModel": {
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "assetModelId"
          ]
        },
        {
          "required": [
            "assetModelExternalId"
          ]
        }
      ],
      "required": [
        "assetModelName"
      ],
      "properties": {
        "assetModelId": {
          "description": "The ID of the asset model.",
          "$ref": "#/definitions/ID"
        },
        "assetModelExternalId": {
          "description": "The ID of the asset model.",
          "$ref": "#/definitions/ExternalId"
        },
        "assetModelName": {
          "description": "A unique, friendly name for the asset model.",
          "$ref": "#/definitions/Name"
        },
        "assetModelDescription": {
          "description": "A description for the asset model.",
          "$ref": "#/definitions/Description"
        },
        "assetModelType": {
          "description": "The type of the asset model.",
          "$ref": "#/definitions/AssetModelType"
        },
        "assetModelProperties": {
          "description": "The property definitions of the asset model.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssetModelProperty"
          }
        },
        "assetModelCompositeModels": {
          "description": "The composite asset models that are part of this asset model. Composite asset models are asset models that contain specific properties.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssetModelCompositeModel"
          }
        },
        "assetModelHierarchies": {
          "description": "The hierarchy definitions of the asset model. Each hierarchy specifies an asset model whose assets can be children of any other assets created from this asset model.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssetModelHierarchy"
          }
        },
        "tags": {
          "description": "A list of key-value pairs that contain metadata for the asset model.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Tag"
          }
        }
      }
    },
    "Asset": {
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "assetId",
            "assetModelId"
          ]
        },
        {
          "required": [
            "assetExternalId",
            "assetModelId"
          ]
        },
        {
          "required": [
            "assetId",
            "assetModelExternalId"
          ]
        },
        {
          "required": [
            "assetExternalId",
            "assetModelExternalId"
          ]
        }
      ],
      "required": [
        "assetName"
      ],
      "properties": {
        "assetId": {
          "description": "The ID of the asset",
          "$ref": "#/definitions/ID"
        },
        "assetExternalId": {
          "description": "The external ID of the asset",
          "$ref": "#/definitions/ExternalId"
        },
        "assetModelId": {
          "description": "The ID of the asset model from which to create the asset.",
          "$ref": "#/definitions/ID"
        },
        "assetModelExternalId": {
          "description": "The ExternalID of the asset model from which to create the asset.",
          "$ref": "#/definitions/ExternalId"
        },
        "assetName": {
          "description": "A unique, friendly name for the asset.",
          "$ref": "#/definitions/Name"
        },
        "assetDescription": {
          "description": "A description for the asset",
          "$ref": "#/definitions/Description"
        },
        "assetProperties": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssetProperty"
          }
        },
        "assetHierarchies": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssetHierarchy"
          }
        },
        "tags": {
          "description": "A list of key-value pairs that contain metadata for the asset.",
          "type": "array",
          "uniqueItems": false,
          "items": {
            "$ref": "#/definitions/Tag"
          }
        }
      }
    }
  },
  "additionalProperties": false,
  "properties": {
    "assetModels": {
      "type": "array",
      "uniqueItems": false,
      "items": {
        "$ref": "#/definitions/AssetModel"
      }
    },
    "assets": {
      "type": "array",
      "uniqueItems": false,
      "items": {
        "$ref": "#/definitions/Asset"
      }
    }
  }
}
```