

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Conteneur Docker du SDK Managed Integrations Hub sur Raspberry Pi
<a name="raspberrypi-container-docker-sdk"></a>

**Note**  
 Cette implémentation du SDK AWS IoT Hub sur Raspberry Pi est un projet de démonstration destiné uniquement à des fins d'apprentissage et de test et n'est pas destiné à être utilisé dans des environnements de production. Dans le cadre de cette démonstration, définissez les configurations suivantes pour faciliter le développement :   
 **AWS stockage des informations d'identification** : à des fins de démonstration uniquement, les informations d'identification et les certificats sont stockés dans un endroit accessible pour faciliter les tests et le développement. Les environnements de production doivent utiliser des solutions de stockage sécurisées telles que AWS Secrets Manager Systems Manager Parameter Store. Ils doivent implémenter le chiffrement au repos et suivre les consignes AWS IoT de sécurité.   
 **Privilèges de conteneur** : la démo s'exécute avec des privilèges élevés afin de permettre un accès illimité aux ressources de l'hôte et de simplifier les flux de développement. En production, les conteneurs doivent fonctionner avec les privilèges minimaux requis.   
 **Configuration du pont réseau** : La démonstration utilise une configuration de pont réseau qui expose le trafic réseau interne pour faciliter le débogage et la surveillance. Dans les environnements de production, mettez en œuvre une isolation et une segmentation appropriées du réseau pour empêcher tout accès non autorisé au trafic réseau interne.   
 **Autorisations des périphériques USB** : l'accès illimité aux périphériques USB est activé pour faciliter la connexion des périphériques de développement et des appareils de test. Pour la production, mettez en œuvre des contrôles et une validation stricts des périphériques USB afin de prévenir les attaques par usurpation d'appareil.   
 Ces configurations permettent des tests simples et ne doivent pas être utilisées dans des environnements de production. Lors du déploiement en production, veuillez suivre les meilleures pratiques en matière de sécurité afin d'éviter toute compromission du système hôte et tout accès non autorisé aux informations d'identification. 

## Conditions préalables
<a name="required-hardware-software"></a>

Les conditions préalables suivantes sont requises pour le conteneur docker.
+ Téléchargez et installez l'[imageur Raspberry Pi](https://www.raspberrypi.com/software/).
+ Procurez-vous une [carte SD](https://www.amazon.com/dp/B0CWPPDS3D?ref=ppx_yo2ov_dt_b_fed_asin_title).
+ Configurez un [Raspberry Pi 5 avec un processeur quadricœur 64 bits 2,4 GHz (8](https://www.amazon.com/CanaKit-Raspberry-Starter-Kit-PRO/dp/B0CRSNCJ6Y/) Go de RAM).
+ Connectez un dongle [USB Sonoff Zigbee](https://www.amazon.com/Plus-ZBDongle-Interface-Pre-Installed-Coordinated-Zigbee2MQTT/dp/B0B6P22YJC/).
+ [Flasher le firmware sur le dongle USB Sonoff Zigbee](supported-raspberry.md#sonoff-zigbee-firmware-flashing).
+ Connectez un dongle [Silicon Labs SLUSB001A](https://www.digikey.com/en/products/detail/silicon-labs/SLUSB001A/9867108).
+ [Ouvrez un AWS compte](https://docs.aws.amazon.com/iot-mi/latest/devguide/setting-up.html#sign-up-for-aws).
+ Installez la dernière version de [AWS CLI depuis le Managed Integrations AWS CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/iot-managed-integrations/).
+ Accès SSH au Raspberry Pi avec adresse IP ou nom d'hôte.

## Utiliser le conteneur Docker du SDK Managed Integrations Hub sur Raspberry Pi
<a name="docker-container-deployment"></a>

1. Téléchargez [Managed Integrations Raspberry Pi Hub SDK Docker.](https://d2no7dt1utuyzo.cloudfront.net/IotMI-HubSDK-RaspberryPi/1.0.0/IotMI-HubSDK-Docker-v1.0.0.tar.gz)

1. Copiez le fichier sur le Raspberry Pi en utilisant SCP :

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

1. Connectez-vous au Raspberry Pi via SSH :

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

1. Installez Docker s'il n'est pas présent :

   ```
   # 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. Installez Docker Compose s'il n'est pas présent :

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

1. Extrayez les fichiers du SDK du Hub :

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

1. Accédez au répertoire hub-docker :

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

1. Complétez la [configuration d'intégration du Hub](https://docs.aws.amazon.com/iot-mi/latest/devguide/managedintegrations-sdk-v2-cookbook-hubsetup.html) pour configurer l'authentification et les paramètres.
**Note**  
Vous devez être connecté à `YUL` ou à une `DUB` région pour effectuer cette étape.

1. Démarrez le conteneur Docker :

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

**Résultat attendu :**

```
[+] 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-\-\-\-
```

Après avoir démarré avec succès le SDK du Hub, procédez à l'intégration et à la gestion des appareils à l'adresse. [Configuration guidée par l'utilisateur pour embarquer et faire fonctionner les appareils](managedintegrations-sdk-v2-cookbook-ugs.md) 

**Note**  
Pour accéder au shell bash du conteneur Docker, exécutez la commande suivante :  

  ```
  docker compose exec hubsdk bash
  ```
Pour redémarrer le conteneur après le redémarrage, exécutez la commande suivante :  

  ```
  docker compose up -d
  ```
Pour mettre à jour le SDK du Hub, remplacez les fichiers binaires dans le dossier suivant :  

  ```
  hub-docker/iotmi
  ```
Pour redémarrer le conteneur en toute sécurité tout en préservant les données, procédez comme suit :  

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