

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Contêiner Docker SDK do Hub de Integrações Gerenciadas no Raspberry Pi
<a name="raspberrypi-container-docker-sdk"></a>

**nota**  
 Essa implementação do AWS IoT Hub SDK no Raspberry Pi é um projeto de demonstração destinado apenas para fins de aprendizado e teste e não deve ser usada em ambientes de produção. Para fins desta demonstração, defina as seguintes configurações para facilitar o desenvolvimento:   
 **AWS armazenamento de credenciais**: somente para fins de demonstração, as credenciais e os certificados são armazenados em um local acessível para facilitar o teste e o desenvolvimento. Os ambientes de produção devem usar soluções de armazenamento seguro AWS Secrets Manager, como o Systems Manager Parameter Store. Eles devem implementar a criptografia em repouso e seguir as diretrizes AWS IoT de segurança.   
 **Privilégios de contêiner**: a demonstração é executada com privilégios elevados para permitir acesso irrestrito aos recursos do host e simplificar os fluxos de trabalho de desenvolvimento. Na produção, os contêineres devem operar com os privilégios mínimos necessários.   
 **Configuração da ponte de rede**: a demonstração usa uma configuração de ponte de rede que expõe o tráfego interno da rede para facilitar a depuração e o monitoramento. Em ambientes de produção, implemente o isolamento e a segmentação adequados da rede para evitar o acesso não autorizado ao tráfego interno da rede.   
 **Permissões do dispositivo USB**: o acesso irrestrito ao dispositivo USB é ativado para facilitar a conexão dos periféricos de desenvolvimento e dos dispositivos de teste. Para produção, implemente controles e validação rígidos de dispositivos USB para evitar ataques de falsificação de dispositivos.   
 Essas configurações permitem testes diretos e não devem ser usadas em ambientes de produção. Ao implantar na produção, siga as melhores práticas de segurança para evitar o comprometimento do sistema host e o acesso não autorizado às credenciais. 

## Pré-requisitos
<a name="required-hardware-software"></a>

Os pré-requisitos a seguir são necessários para o contêiner docker.
+ Baixe e instale o gerador de [imagens Raspberry Pi](https://www.raspberrypi.com/software/).
+ Obtenha um [cartão SD](https://www.amazon.com/dp/B0CWPPDS3D?ref=ppx_yo2ov_dt_b_fed_asin_title).
+ Configure um [Raspberry Pi 5 com CPU quad-core de 2,4 GHz e 64 bits](https://www.amazon.com/CanaKit-Raspberry-Starter-Kit-PRO/dp/B0CRSNCJ6Y/) (8 GB de RAM).
+ Conecte um [dongle USB Sonoff Zigbee](https://www.amazon.com/Plus-ZBDongle-Interface-Pre-Installed-Coordinated-Zigbee2MQTT/dp/B0B6P22YJC/).
+ [Firmware flash para dongle USB Sonoff Zigbee](supported-raspberry.md#sonoff-zigbee-firmware-flashing).
+ Conecte um dongle [SLUSB001A da Silicon Labs](https://www.digikey.com/en/products/detail/silicon-labs/SLUSB001A/9867108).
+ [Cadastre-se para criar uma AWS conta](https://docs.aws.amazon.com/iot-mi/latest/devguide/setting-up.html#sign-up-for-aws).
+ Instale a versão mais recente do [a AWS CLI partir da Referência de AWS CLI Comandos de Integrações Gerenciadas](https://docs.aws.amazon.com/cli/latest/reference/iot-managed-integrations/).
+ Acesso SSH ao Raspberry Pi com endereço IP ou nome do host.

## Use o contêiner Docker do Managed Integrations Hub SDK no Raspberry Pi
<a name="docker-container-deployment"></a>

1. Baixe [integrações gerenciadas Raspberry Pi Hub SDK Docker](https://d2no7dt1utuyzo.cloudfront.net/IotMI-HubSDK-RaspberryPi/1.0.0/IotMI-HubSDK-Docker-v1.0.0.tar.gz).

1. Copie o arquivo para o Raspberry Pi usando o SCP:

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

1. Conecte-se ao Raspberry Pi via SSH:

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

1. Instale o Docker se não estiver 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. Instale o Docker Compose se não estiver presente:

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

1. Extraia os arquivos do 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. Navegue até o diretório hub-docker:

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

1. Conclua a [configuração de integração do Hub](https://docs.aws.amazon.com/iot-mi/latest/devguide/managedintegrations-sdk-v2-cookbook-hubsetup.html) para definir a autenticação e as configurações.
**nota**  
Você deve estar em `YUL` nossa `DUB` região para realizar essa etapa.

1. Inicie o contêiner Docker:

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

**Saída esperada:**

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

Depois de iniciar com sucesso o Hub SDK, continue com a integração e o gerenciamento do dispositivo em. [Configuração guiada pelo usuário para integrar e operar dispositivos](managedintegrations-sdk-v2-cookbook-ugs.md) 

**nota**  
Para acessar o shell bash do contêiner Docker, execute o seguinte comando:  

  ```
  docker compose exec hubsdk bash
  ```
Para reiniciar o contêiner após a reinicialização, execute o seguinte comando:  

  ```
  docker compose up -d
  ```
Para atualizar o SDK do Hub, substitua os binários na seguinte pasta:  

  ```
  hub-docker/iotmi
  ```
Para reiniciar o contêiner com segurança e, ao mesmo tempo, preservar os dados, faça:  

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