

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

# AWS IoT GreengrassBiblioteca de descoberta do
<a name="freertos-lib-gg-connectivity"></a>

**nota**  <a name="out-of-date-message"></a>
O conteúdo desta página pode não estar atualizado. Consulte a [página da biblioteca do FreeRTOS.org](https://www.freertos.org/Documentation/03-Libraries/01-Library-overview/01-All-libraries) para obter a atualização mais recente.

## Visão geral
<a name="freertos-gg-overview"></a>

A biblioteca de [descobertas do AWS IoT Greengrass](https://docs.aws.amazon.com/freertos/latest/lib-ref/html1/aws__greengrass__discovery_8h.html) é usada pelos dispositivos do microcontrolador para descobrir um núcleo do Greengrass na rede. Usando as APIs de descoberta do AWS IoT Greengrass, o dispositivo pode enviar mensagens para um núcleo do Greengrass depois de encontrar o endpoint do núcleo.

## Dependências e requisitos
<a name="freertos-gg-dependencies"></a>

Para usar a biblioteca de descoberta do Greengrass, é necessário criar um item na AWS IoT, incluindo um certificado e uma política. Para obter mais informações, consulte [Conceitos básicos do AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html). 

É necessário definir valores para as constantes a seguir no arquivo `freertos/demos/include/aws_clientcredential.h`:

**`clientcredentialMQTT_BROKER_ENDPOINT`**  
O endpoint da AWS IoT.

**`clientcredentialIOT_THING_NAME`**  
O nome da coisa da IoT.

**`clientcredentialWIFI_SSID`**  
O SSID da rede Wi-Fi.

**`clientcredentialWIFI_PASSWORD`**  
A senha de Wi-Fi.

**`clientcredentialWIFI_SECURITY`**  
O tipo de segurança usado pela rede Wi-Fi.

Também é necessário definir valores para as constantes a seguir no arquivo `freertos/demos/include/aws_clientcredential_keys.h`:

**`keyCLIENT_CERTIFICATE_PEM`**  
O certificado PEM associado à coisa.

**`keyCLIENT_PRIVATE_KEY_PEM`**  
A chave privada PEM associada à coisa.

É necessário ter um grupo do Greengrass e um dispositivo de núcleo configurados no console. Para obter mais informações, consulte o tópico [Conceitos básicos sobre a AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/latest/developerguide/).

Embora a biblioteca coreMQTT não seja necessária para a conectividade do Greengrass, recomendamos que você a instale. A biblioteca pode ser usada para se comunicar com o núcleo do Greengrass após ele ter sido descoberto.

## Referência de API
<a name="freertos-gg-api"></a>

Para obter uma referência completa de API, consulte [Referência de API do Greengrass](https://docs.aws.amazon.com/freertos/latest/lib-ref/html1/aws__greengrass__discovery_8h.html).

## Exemplo de uso
<a name="freertos-gg-example"></a>

### Fluxo de trabalho do Greengrass
<a name="freertos-lib-gg-workflow"></a>

O dispositivo MCU inicia o processo de descoberta solicitando à AWS IoT um arquivo JSON que contenha os parâmetros de conectividade de núcleo do Greengrass. Existem dois métodos para recuperar os parâmetros de conectividade de núcleo do Greengrass a partir do arquivo JSON:
+ A seleção automática itera todos os núcleos do Greengrass listados no arquivo JSON e se conecta ao primeiro disponível. 
+ A seleção manual usa as informações em `aws_ggd_config.h` para se conectar ao núcleo especificado do Greengrass.

### Como usar a API do Greengrass
<a name="freertos-lib-gg-api"></a>

Todas as opções de configuração padrão para a API do Greengrass são definidas em `aws_ggd_config_defaults.h`.

Se apenas um núcleo do Greengrass estiver presente, chame `GGD_GetGGCIPandCertificate` para solicitar o arquivo JSON com as informações de conectividade de núcleo do Greengrass. Quando `GGD_GetGGCIPandCertificate` é retornado, o parâmetro `pcBuffer` contém o texto do arquivo JSON. O parâmetro `pxHostAddressData` contém o endereço IP e a porta do núcleo do Greengrass aos quais você pode se conectar.

Para obter mais opções de personalização, como a alocação dinâmica de certificados, é necessário chamar as APIs a seguir:

**`GGD_JSONRequestStart`**  
Faz uma solicitação HTTP GET para a AWS IoT para iniciar a solicitação de descoberta para descobrir um núcleo do Greengrass. `GD_SecureConnect_Send` é usado para enviar a solicitação à AWS IoT.

**`GGD_JSONRequestGetSize`**  
Obtém o tamanho do arquivo JSON da resposta HTTP.

**`GGD_JSONRequestGetFile`**  
Obtém a string do objeto JSON. `GGD_JSONRequestGetSize` e `GGD_JSONRequestGetFile` usam `GGD_SecureConnect_Read` para obter os dados JSON do soquete. `GGD_JSONRequestStart`, `GGD_SecureConnect_Send` e `GGD_JSONRequestGetSize` devem ser chamados para receber os dados JSON da AWS IoT.

**`GGD_GetIPandCertificateFromJSON`**  
Extrai o endereço IP e o certificado de núcleo do Greengrass a partir dos dados JSON. Você pode ativar a seleção automática definindo `xAutoSelectFlag` como `True`. A seleção automática encontra o primeiro dispositivo de núcleo ao qual seu dispositivo FreeRTOS pode se conectar. Para conectar-se a um núcleo do Greengrass, chame a função `GGD_SecureConnect_Connect`, transmitindo o endereço IP, a porta e o certificado do dispositivo de núcleo. Para usar a seleção manual, defina os seguintes campos do parâmetro `HostParameters_t`:    
**`pcGroupName`**  
O ID do grupo do Greengrass ao qual o núcleo pertence. Você pode usar o comando `aws greengrass list-groups` da CLI para encontrar o ID dos grupos do Greengrass.  
**`pcCoreAddress`**  
O ARN do núcleo do Greengrass ao qual você está se conectando.