

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

# Interagisci con le ombre dei dispositivi
<a name="interact-with-shadows"></a>

I dispositivi core Greengrass possono interagire con le [ombre dei dispositivi AWS IoT utilizzando](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) i componenti. Un'*ombra* è un documento JSON che memorizza le informazioni sullo stato corrente o desiderato per qualsiasi cosa. AWS IoT Le ombre possono rendere disponibile lo stato di un dispositivo ad altri AWS IoT Greengrass componenti, a prescindere dal fatto che il dispositivo sia connesso AWS IoT o meno. Ogni AWS IoT dispositivo ha la propria ombra classica senza nome. Puoi anche creare più ombre con nome per ogni dispositivo. 

[I dispositivi e i servizi possono creare, aggiornare ed eliminare cloud shadow utilizzando MQTT e gli [argomenti shadow MQTT riservati](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-shadow), HTTP utilizzando l'[API REST Device Shadow](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-rest-api.html) e for.AWS CLIAWS IoT](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot-data/index.html)

Il componente [shadow manager](shadow-manager-component.md) consente ai componenti Greengrass di creare, aggiornare ed eliminare le ombre locali utilizzando il [servizio shadow locale e gli argomenti shadow locali](ipc-local-shadows.md) di pubblicazione/sottoscrizione. Lo shadow manager gestisce anche l'archiviazione di questi documenti shadow locali sul dispositivo principale e gestisce la sincronizzazione delle informazioni sullo stato dell'ombra con le ombre del cloud.

È inoltre possibile utilizzare il componente shadow manager per gestire le shadow locali per [i dispositivi client](interact-with-local-iot-devices.md) che si connettono al dispositivo principale. Per consentire allo shadow manager di gestire le ombre dei dispositivi client, è necessario configurare il [componente bridge MQTT](mqtt-bridge-component.md) per inoltrare i messaggi tra il broker MQTT locale e il servizio di pubblicazione/sottoscrizione locale. Per ulteriori informazioni, consulta [Interazione e sincronizzazione delle ombre dei dispositivi client](work-with-client-device-shadows.md).

Per ulteriori informazioni sui concetti relativi al AWS IoT device shadow, consulta [AWS IoT Device Shadow service](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) nella *AWS IoT Developer Guide*.

**Topics**
+ [Interagisci con le ombre nei componenti](interact-with-shadows-in-components.md)
+ [Sincronizza le ombre del dispositivo locale con AWS IoT Core](sync-shadows-with-iot-core.md)

# Interagisci con le ombre nei componenti
<a name="interact-with-shadows-in-components"></a>

È possibile sviluppare componenti personalizzati, inclusi i componenti della funzione Lambda, che utilizzano il servizio shadow locale per leggere e modificare documenti shadow locali e documenti shadow dei dispositivi client.

I componenti personalizzati interagiscono con il servizio shadow locale utilizzando le librerie IPC AWS IoT Greengrass Core di. SDK per dispositivi AWS IoT Il componente [shadow manager](shadow-manager-component.md) abilita il servizio shadow locale sul dispositivo principale.

Per distribuire il componente shadow manager su un dispositivo principale Greengrass[, crea una](create-deployments.md) distribuzione che `aws.greengrass.ShadowManager` includa il componente.

**Nota**  
Per impostazione predefinita, la distribuzione del componente shadow manager abilita solo le operazioni shadow locali. AWS IoT Greengrass Per abilitare la sincronizzazione delle informazioni sullo stato dello shadow per le ombre dei dispositivi principali o qualsiasi ombra per i dispositivi client con i corrispondenti documenti cloud shadow in AWS IoT Core, è necessario creare un aggiornamento della configurazione per il componente shadow manager che include il parametro. `synchronize` Per ulteriori informazioni, consulta [Sincronizza le ombre del dispositivo locale con AWS IoT Core](sync-shadows-with-iot-core.md).

**Topics**
+ [Recuperate e modificate gli stati delle ombre](#interact-shadow-states)
+ [Reagisci ai cambiamenti dello stato ombra](#react-shadow-events)

## Recuperate e modificate gli stati delle ombre
<a name="interact-shadow-states"></a>

Le operazioni IPC shadow recuperano e aggiornano le informazioni sullo stato nei documenti shadow locali. Il componente shadow manager gestisce l'archiviazione di questi documenti shadow sul dispositivo principale.

**Per modificare gli stati shadow locali**

1. Aggiungi politiche di autorizzazione alla ricetta del tuo componente personalizzato per consentire al componente di ricevere messaggi su argomenti shadow locali.

   Ad esempio, le politiche di autorizzazione, vedi [Esempi di politiche di autorizzazione IPC Shadow Local](ipc-local-shadows.md#ipc-local-shadow-authorization-policy-examples).

1. Utilizzate le operazioni shadow IPC per recuperare e modificare le informazioni sullo stato dello shadow. Per ulteriori informazioni sull'utilizzo delle operazioni IPC shadow nel codice dei componenti, vedere. [Interagisci con le ombre locali](ipc-local-shadows.md)

**Nota**  <a name="note-requirement-enable-shadow-manager-client-devices"></a>
Per consentire a un dispositivo principale di interagire con le ombre dei dispositivi client, è inoltre necessario configurare e distribuire il componente bridge MQTT. Per ulteriori informazioni, consultate [Attivare lo shadow manager per comunicare con](work-with-client-device-shadows.md) i dispositivi client.

## Reagisci ai cambiamenti dello stato ombra
<a name="react-shadow-events"></a>

I componenti Greengrass utilizzano l' publish/subscribe interfaccia locale per comunicare su un dispositivo principale. Per consentire a un componente personalizzato di reagire ai cambiamenti dello stato ombra, puoi iscriverti agli publish/subscribe argomenti locali. Ciò consente al componente di ricevere messaggi sugli argomenti shadow locali e quindi di agire su tali messaggi. 

Gli argomenti shadow locali utilizzano lo stesso formato degli argomenti MQTT di AWS IoT Device Shadow. Per ulteriori informazioni sugli argomenti shadow, consultate gli argomenti [Device Shadow MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html) nella *AWS IoT Device Shadow Guide*.

**Per reagire ai cambiamenti dello stato ombra locale**

1. Aggiungi le politiche di controllo degli accessi alla ricetta del tuo componente personalizzato per consentire al componente di ricevere messaggi su argomenti shadow locali.

   Ad esempio, le politiche di autorizzazione, vedi [Esempi di politiche di autorizzazione IPC Shadow Local](ipc-local-shadows.md#ipc-local-shadow-authorization-policy-examples).

1. Per avviare un'azione personalizzata in un componente, utilizzate le operazioni `SubscribeToTopic` IPC per sottoscrivere gli argomenti shadow su cui desiderate ricevere messaggi. Per ulteriori informazioni sull'utilizzo delle operazioni publish/subscribe IPC locali nel codice del componente, vedere. [Pubblicare/sottoscrivere messaggi locali](ipc-publish-subscribe.md)

1. Per richiamare una funzione Lambda, usa la configurazione dell'origine dell'evento per fornire il nome dell'argomento ombra e specifica che si tratta di un publish/subscribe argomento locale. Per informazioni sulla creazione di componenti della funzione Lambda, vedere. [Esegui AWS Lambda funzioni](run-lambda-functions.md)

**Nota**  <a name="note-requirement-enable-shadow-manager-client-devices"></a>
Per consentire a un dispositivo principale di interagire con le ombre dei dispositivi client, è inoltre necessario configurare e distribuire il componente bridge MQTT. Per ulteriori informazioni, consultate [Attivare lo shadow manager per comunicare con](work-with-client-device-shadows.md) i dispositivi client.

# Sincronizza le ombre del dispositivo locale con AWS IoT Core
<a name="sync-shadows-with-iot-core"></a>

Il componente shadow manager consente di AWS IoT Greengrass sincronizzare gli stati ombra del dispositivo locale con. AWS IoT CoreÈ necessario modificare la configurazione del componente shadow manager per includere il parametro di `synchronization` configurazione e specificare i nomi AWS IoT degli oggetti per i dispositivi e le ombre che si desidera sincronizzare. 

Quando configurate Shadow Manager per sincronizzare le ombre, sincronizza tutte le modifiche di stato per le ombre specificate, indipendentemente dal fatto che le modifiche avvengano nei documenti shadow locali o nei documenti shadow nel cloud.

È inoltre possibile specificare se il componente shadow manager sincronizza le ombre in tempo reale o a intervalli periodici. Per impostazione predefinita, il componente shadow manager sincronizza le ombre in tempo reale, in modo che il dispositivo principale invii e riceva gli aggiornamenti delle ombre da e verso ogni aggiornamento. AWS IoT Core È possibile configurare intervalli periodici per ridurre l'utilizzo della larghezza di banda e i costi.

**Topics**
+ [Prerequisiti](#shadow-sync-prereqs)
+ [Configurare il componente shadow manager](#configure-shadow-manager-for-sync)
+ [Sincronizza le ombre locali](#sync-local-shadows)
+ [Comportamento dei conflitti di fusione delle ombre](#shadow-merge-behavior)

## Prerequisiti
<a name="shadow-sync-prereqs"></a>

Per sincronizzare le ombre locali con AWS IoT Core, è necessario configurare la politica del dispositivo principale AWS IoT di Greengrass per consentire le AWS IoT Core seguenti azioni di policy ombra.
+ `iot:GetThingShadow`
+ `iot:UpdateThingShadow`
+ `iot:DeleteThingShadow`

Per ulteriori informazioni, consulta gli argomenti seguenti:
+ [AWS IoT Core azioni politiche nella Guida](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) *per gli sviluppatori AWS IoT *
+ [AWS IoT Politica minima per i dispositivi AWS IoT Greengrass V2 principali](device-auth.md#greengrass-core-minimal-iot-policy)
+ [Aggiorna la politica di un dispositivo principale AWS IoT](device-auth.md#update-core-device-iot-policy)

## Configurare il componente shadow manager
<a name="configure-shadow-manager-for-sync"></a>

Lo shadow manager richiede un elenco di mappature dei nomi shadow per sincronizzare le informazioni sullo stato ombra nei documenti shadow locali con i documenti shadow nel cloud. AWS IoT Core

Per sincronizzare gli stati shadow, [create una distribuzione](create-deployments.md) che includa il `aws.greengrass.ShadowManager` componente e specificate le shadow che desiderate sincronizzare nel parametro di `synchronize` configurazione nella configurazione dello shadow manager nella distribuzione.

**Nota**  <a name="note-requirement-enable-shadow-manager-client-devices"></a>
Per consentire a un dispositivo principale di interagire con le ombre dei dispositivi client, è inoltre necessario configurare e distribuire il componente bridge MQTT. Per ulteriori informazioni, consultate [Attivare lo shadow manager per comunicare con](work-with-client-device-shadows.md) i dispositivi client.

L'aggiornamento della configurazione di esempio seguente indica al componente shadow manager di sincronizzare le seguenti ombre con: AWS IoT Core
+ L'ombra classica per il dispositivo principale 
+ Il nome `MyCoreShadow` del dispositivo principale 
+ La classica ombra per una cosa chiamata IoT `MyDevice2` 
+ Le ombre denominate `MyShadowA` e `MyShadowB` per una cosa chiamata IoT `MyDevice1`

Questo aggiornamento della configurazione specifica di sincronizzare le ombre con AWS IoT Core in tempo reale. Se si utilizza shadow manager v2.1.0 o versione successiva, è possibile configurare il componente shadow manager per sincronizzare le ombre a intervalli periodici. Per configurare questa funzionalità, modificate la strategia di sincronizzazione in e specificate un intervallo `delay` in secondi. `periodic` Per ulteriori informazioni, vedete [il parametro di configurazione della strategia](shadow-manager-component.md#shadow-manager-component-configuration) del componente shadow manager.

Questo aggiornamento della configurazione specifica di sincronizzare le ombre in entrambe le direzioni tra AWS IoT Core e il dispositivo principale. Se si utilizza shadow manager v2.2.0 o versione successiva, è possibile configurare il componente Shadow Manager per sincronizzare le ombre in una sola direzione. Per configurare questa funzionalità, modifica la sincronizzazione `direction` in o. `deviceToCloud` `cloudToDevice` Per ulteriori informazioni, vedete [il parametro di configurazione della direzione](shadow-manager-component.md#shadow-manager-component-configuration) del componente shadow manager.

```
{
  "strategy": {
    "type": "realTime"
  },
  "synchronize": {
    "coreThing": {
      "classic": true,
      "namedShadows": [
        "MyCoreShadow"
      ]
    },
    "shadowDocuments": [
      {
        "thingName": "MyDevice1",
        "classic": false,
        "namedShadows": [
          "MyShadowA",
          "MyShadowB"
        ]
      },
      {
        "thingName": "MyDevice2",
        "classic": true,
        "namedShadows": [ ]
      }
    ],
    "direction": "betweenDeviceAndCloud"
  }
}
```

## Sincronizza le ombre locali
<a name="sync-local-shadows"></a>

Quando il dispositivo principale Greengrass è connesso al AWS IoT cloud, lo shadow manager esegue le seguenti attività per le ombre specificate nella configurazione del componente. Il comportamento dipende dall'opzione di configurazione della direzione di sincronizzazione delle ombre specificata. Per impostazione predefinita, Shadow Manager utilizza l'`betweenDeviceAndCloud`opzione per sincronizzare le ombre in entrambe le direzioni. Se si utilizza shadow manager v2.2.0 o versione successiva, è possibile configurare il dispositivo principale per sincronizzare le ombre in una sola direzione, che può essere o. `cloudToDevice` `deviceToCloud`
+ Se la configurazione della direzione di sincronizzazione dello shadow è `betweenDeviceAndCloud` o`cloudToDevice`, shadow manager recupera le informazioni sullo stato riportate dal documento cloud shadow in. AWS IoT Core Quindi, aggiorna i documenti shadow archiviati localmente per sincronizzare lo stato del dispositivo.
+ Se la configurazione della direzione di sincronizzazione dello shadow è `betweenDeviceAndCloud` o`deviceToCloud`, shadow manager pubblica lo stato corrente del dispositivo nel documento cloud shadow.

## Comportamento dei conflitti di fusione delle ombre
<a name="shadow-merge-behavior"></a>

In alcuni casi, ad esempio quando il dispositivo principale è disconnesso da Internet, uno shadow potrebbe cambiare nel servizio shadow locale e nel AWS IoT cloud prima che lo shadow manager sincronizzi le modifiche. Di conseguenza, gli stati desiderati e quelli riportati differiscono tra il servizio shadow locale e il cloud AWS IoT 

Quando lo shadow manager sincronizza l'ombra, unisce le modifiche in base al seguente comportamento:
+ Se utilizzate una versione di shadow manager precedente alla v2.2.0 o quando specificate la direzione di sincronizzazione dello `betweenDeviceAndCloud` shadow, si applica il seguente comportamento:
  + Quando si verifica un conflitto di fusione nello stato desiderato di un'ombra, lo shadow manager sovrascrive la sezione in conflitto del documento shadow locale con il valore proveniente dal cloud. AWS IoT 
  + Quando si verifica un conflitto di unione nello stato riportato da un'ombra, lo shadow manager sovrascrive la sezione in conflitto dell'ombra nel AWS IoT cloud con il valore del documento shadow locale.
+ Quando specificate la `deviceToCloud` direzione di sincronizzazione delle ombre, lo shadow manager sovrascrive la sezione in conflitto dell'ombra nel AWS IoT cloud con il valore del documento shadow locale.
+ Quando specificate la direzione di sincronizzazione dello `cloudToDevice` shadow, lo shadow manager sovrascrive la sezione in conflitto del documento shadow locale con il valore proveniente dal cloud. AWS IoT 