

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

# Integrazioni gestite Contenitore Docker Hub SDK su Raspberry Pi
<a name="raspberrypi-container-docker-sdk"></a>

**Nota**  
 Questa implementazione di AWS IoT Hub SDK su Raspberry Pi è un progetto dimostrativo destinato esclusivamente a scopi di apprendimento e test e non è destinata all'uso in ambienti di produzione. Ai fini di questa demo, imposta le seguenti configurazioni per facilitare lo sviluppo:   
 **AWS archiviazione delle credenziali**: solo a scopo dimostrativo, le credenziali e i certificati vengono archiviati in una posizione accessibile per facilitare i test e lo sviluppo. Gli ambienti di produzione devono utilizzare soluzioni di storage sicure come Gestione dei segreti AWS Systems Manager Parameter Store. Devono implementare la crittografia a riposo e seguire le linee guida AWS IoT di sicurezza.   
 **Privilegi dei container**: la demo viene eseguita con privilegi elevati per consentire l'accesso illimitato alle risorse dell'host e semplificare i flussi di lavoro di sviluppo. In produzione, i container devono funzionare con i privilegi minimi richiesti.   
 **Configurazione del bridge di rete**: la demo utilizza una configurazione di bridge di rete che espone il traffico di rete interno per facilitare il debug e il monitoraggio. Negli ambienti di produzione, implementa l'isolamento e la segmentazione della rete adeguati per impedire l'accesso non autorizzato al traffico di rete interno.   
 **Autorizzazioni per dispositivi USB**: l'accesso illimitato ai dispositivi USB è abilitato per facilitare il collegamento di periferiche di sviluppo e dispositivi di test. Per la produzione, implementa controlli e convalida rigorosi dei dispositivi USB per prevenire attacchi di spoofing dei dispositivi.   
 Queste configurazioni consentono test semplici e non devono essere utilizzate negli ambienti di produzione. Durante l'implementazione in produzione, segui le migliori pratiche di sicurezza per evitare la compromissione del sistema host e l'accesso non autorizzato alle credenziali. 

## Prerequisiti
<a name="required-hardware-software"></a>

I seguenti prerequisiti sono richiesti per il contenitore docker.
+ Scarica e installa [Raspberry Pi imager](https://www.raspberrypi.com/software/).
+ Procurati una [scheda SD](https://www.amazon.com/dp/B0CWPPDS3D?ref=ppx_yo2ov_dt_b_fed_asin_title).
+ Configura un [Raspberry Pi 5 con CPU quad-core a 64 bit da 2,4 Ghz (8 GB](https://www.amazon.com/CanaKit-Raspberry-Starter-Kit-PRO/dp/B0CRSNCJ6Y/) di RAM).
+ Collega un dongle [USB Sonoff Zigbee](https://www.amazon.com/Plus-ZBDongle-Interface-Pre-Installed-Coordinated-Zigbee2MQTT/dp/B0B6P22YJC/).
+ [Firmware flash sul dongle USB Sonoff Zigbee](supported-raspberry.md#sonoff-zigbee-firmware-flashing).
+ Connect un dongle [SLUSB001A di Silicon Labs.](https://www.digikey.com/en/products/detail/silicon-labs/SLUSB001A/9867108)
+ [Registrati per AWS creare un account](https://docs.aws.amazon.com/iot-mi/latest/devguide/setting-up.html#sign-up-for-aws).
+ Installa la versione più recente di [AWS CLI da Managed Integrations AWS CLI Command Reference.](https://docs.aws.amazon.com/cli/latest/reference/iot-managed-integrations/)
+ Accesso SSH al Raspberry Pi con indirizzo IP o nome host.

## Usa il contenitore Docker di Managed Integrations Hub SDK su Raspberry Pi
<a name="docker-container-deployment"></a>

1. Scarica [Integrazioni gestite Raspberry Pi Hub SDK Docker](https://d2no7dt1utuyzo.cloudfront.net/IotMI-HubSDK-RaspberryPi/1.0.0/IotMI-HubSDK-Docker-v1.0.0.tar.gz).

1. Copia il file su Raspberry Pi usando SCP:

   ```
   scp ~/path/to/IotMI-HubSDK-Docker-v1.0.0.tar.gz [username]@raspberrypi.local:~
   ```

1. Connect al Raspberry Pi tramite SSH:

   ```
   ssh hub123456@raspberrypi.local
   ```

1. Installa Docker se non è presente:

   ```
   # Install Docker
   cd
   curl -fsSL https://get.docker.com | sudo sh
   
   # Add your user to docker group
   sudo usermod -aG docker $USER
   exit # exit ssh
   
   # Log in again
   ```

1. Installa Docker Compose se non è presente:

   ```
   # Install Docker Compose
   sudo apt-get update
   sudo apt-get install -y docker-compose-plugin
   ```

1. Estrai i file Hub SDK:

   ```
   # Navigate to the home directory
   cd
   
   # Extract the hub-docker.tar.gz file
   tar -xzf IotMI-HubSDK-Docker-v1.0.0.tar.gz
   ```

1. Vai alla directory hub-docker:

   ```
   cd IotMI-HubSDK-Docker
   ```

1. Completa la configurazione di [Hub onboarding per configurare l'autenticazione e le impostazioni](https://docs.aws.amazon.com/iot-mi/latest/devguide/managedintegrations-sdk-v2-cookbook-hubsetup.html).
**Nota**  
Per eseguire questo passaggio devi `YUL` trovarti `DUB` nella nostra regione.

1. Avvia il contenitore Docker:

   ```
   # The first time it's called, it will build the container
   docker compose up -d
   docker compose logs -f
   ```

**Output previsto:**

```
[+] Running 1/1
 ✔ Container iotmi-hubsdk-docker-hubsdk-1  Started
hubsdk-1  | -\-\-\-\-\-\-Checking USB dongles-\-\-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Stopping SDK running processes-\-\-
hubsdk-1  | iotmi_mqtt_proxy: no process found
hubsdk-1  | ace_eventmgr: no process found
hubsdk-1  | ace_zigbee_service: no process found
hubsdk-1  | zwave_svc: no process found
hubsdk-1  | iotmi_cdmb: no process found
hubsdk-1  | iotmi_device_agent: no process found
hubsdk-1  | iotmi_lpw_provisioner: no process found
hubsdk-1  | iotmi_log_daemon: no process found
hubsdk-1  | -\-\-\-\-\-\-Starting Hub SDK-\-\-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Creating logs directory-\-\-\-\-\-\-\-\-\-
hubsdk-1  | Logs directory created.
hubsdk-1  | -\-\-\-\-\-\-Verifying Middleware paths-\-\-\-\-\-\-
hubsdk-1  | All middleware libraries exist
hubsdk-1  | -\-\-\-\-\-\-Verifying Middleware pre reqs-\-\-
hubsdk-1  | AIPC and KVstroage directories exist
hubsdk-1  | -\-\-\-\-\-\-Starting HubOnboarding-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Starting MQTT Proxy-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Staring Log Daemon-\-\-
hubsdk-1  | -\-\-\-\-\-\-Starting Event Manager-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Starting Zigbee Service-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Starting Zwave Service-\-\-\-\-\-\-\-\-\-
hubsdk-1  | /data/aws/iotmi/middleware/AceZwave/bin /data/aws/iotmi
hubsdk-1  | /data/aws/iotmi
hubsdk-1  | -\-\-\-\-\-\-Starting CDMB-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Starting Agent-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Starting Provisioner-\-\-\-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Checking SDK status-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | root         105  0.2  0.2 1093488 16608 ?       Sl   20:51   0:00 ./iotmi_mqtt_proxy -C /data/aws/iotmi/config/iotmi_config.json
hubsdk-1  | Process 'iotmi_mqtt_proxy' is running.
hubsdk-1  | root         183  0.0  0.0 236272  3152 ?        Sl   20:51   0:00 ./middleware/AceCommon/bin/ace_eventmgr
hubsdk-1  | Process 'ace_eventmgr' is running.
hubsdk-1  | root         190 12.0  0.1 319264  8352 ?        Sl   20:51   0:04 ./middleware/AceZigbee/bin/ace_zigbee_service
hubsdk-1  | Process 'ace_zigbee_service' is running.
hubsdk-1  | root         200  0.0  0.1 1365792 12480 ?       Sl   20:51   0:00 ./zwave_svc
hubsdk-1  | Process 'zwave_svc' is running.
hubsdk-1  | root         233  0.0  0.0 1198704 5760 ?        Sl   20:51   0:00 ./iotmi_cdmb
hubsdk-1  | Process 'iotmi_cdmb' is running.
hubsdk-1  | root         268  0.2  0.2 2017424 21968 ?       Sl   20:51   0:00 ./iotmi_device_agent
hubsdk-1  | Process 'iotmi_device_agent' is running.
hubsdk-1  | root         311  0.1  0.1 1523072 13008 ?       Sl   20:51   0:00 ./iotmi_lpw_provisioner
hubsdk-1  | Process 'iotmi_lpw_provisioner' is running.
hubsdk-1  | root         132  0.0  0.0 875024  7232 ?        Sl   20:51   0:00 ./iotmi_log_daemon
hubsdk-1  | Process 'iotmi_log_daemon' is running.
hubsdk-1  | -\-\-\-\-\-Successfully Started Hub SDK-\-\-\-
```

Dopo aver avviato con successo l'Hub SDK, procedi con l'onboarding e la gestione del dispositivo all'indirizzo. [Configurazione guidata dall'utente per l'installazione e il funzionamento dei dispositivi](managedintegrations-sdk-v2-cookbook-ugs.md) 

**Nota**  
Per accedere alla shell bash del contenitore Docker, esegui il seguente comando:  

  ```
  docker compose exec hubsdk bash
  ```
Per riavviare il contenitore dopo il riavvio, esegui il seguente comando:  

  ```
  docker compose up -d
  ```
Per aggiornare l'Hub SDK, sostituisci i file binari nella seguente cartella:  

  ```
  hub-docker/iotmi
  ```
Per riavviare il contenitore in sicurezza preservando i dati, procedi:  

  ```
  docker compose down
  docker compose up -d
  docker compose logs -f
  ```