

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

# Biblioteca coreMQTT
<a name="coremqtt"></a>

**nota**  <a name="out-of-date-message"></a>
O conteúdo desta página pode não ser up-to-date. 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.

## Introdução
<a name="coremqtt-introduction"></a>

A biblioteca coreMQTT é uma implementação de cliente do padrão [MQTT](https://en.wikipedia.org/wiki/MQTT) (Message Queue Telemetry Transport). O padrão MQTT fornece um protocolo leve publish/subscribe (ou [PubSub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)) de mensagens que é executado em cima TCP/IP e é frequentemente usado em casos de uso de máquina a máquina (M2M) e Internet das Coisas (IoT). 

A biblioteca coreMQTT é compatível com o padrão de protocolo [MQTT 3.1.1](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html). Essa biblioteca foi otimizada para ocupar pouco espaço de memória. O design dessa biblioteca abrange diferentes casos de uso, desde plataformas com recursos limitados usando somente mensagens MQTT PUBLISH de QoS 0 até plataformas repletas de recursos usando conexões MQTT PUBLISH de QoS 2 por meio do TLS (protocolo TLS). A biblioteca fornece um menu de funções combináveis, que podem ser escolhidas e combinadas para atender exatamente às necessidades de um caso de uso específico.

A biblioteca é escrita em **C** e criada para ser compatível com [ISO C90](https://en.wikipedia.org/wiki/ANSI_C#C90) e [MISRA C:2012](https://misra.org.uk/product/misra-c2012-third-edition-first-revision/). Essa biblioteca MQTT não depende de bibliotecas adicionais, exceto das seguintes:
+ A biblioteca C padrão
+ Uma interface de transporte de rede implementada pelo cliente
+ (Opcional) Uma função de horário da plataforma implementada pelo usuário

A biblioteca é desvinculada dos drivers de rede subjacentes por meio do fornecimento de uma especificação simples de interface de transporte de envio e recebimento. O autor da aplicação pode selecionar uma interface de transporte existente ou implementar a própria interface, conforme adequado para a sua aplicação.

A biblioteca fornece uma API de alto nível para se conectar a um agente MQTT, subscribe/unsubscribe a um tópico, publicar uma mensagem em um tópico e receber mensagens recebidas. Essa API usa a interface de transporte descrita acima como um parâmetro e a usa para enviar e receber mensagens de e para o agente MQTT.

A biblioteca também expõe a serializer/deserializer API de baixo nível. Essa API pode ser usada para criar uma aplicação do IoT simples que consiste apenas no subconjunto necessário da funcionalidade do MQTT, sem outras sobrecargas. A serializer/deserializer API pode ser usada em conjunto com qualquer API de camada de transporte disponível, como soquetes, para enviar e receber mensagens de e para o agente.

Ao usar conexões MQTT em aplicações do IoT, recomendamos usar uma interface de transporte segura, como a usada pelo protocolo TLS.

Essa biblioteca MQTT não tem dependências de plataforma, como threading ou sincronização. Essa biblioteca tem [provas](https://www.cprover.org/cbmc/) que demonstram o uso seguro da memória e a ausência de alocação de heap, o que a torna adequada para microcontroladores do IoT, mas também totalmente portável para outras plataformas. Ela pode ser usada gratuitamente e é distribuída sob a [licença de código aberto do MIT](https://freertos.org/a00114.html).


****  
<a name="coreMQTT-memory-estimate"></a>
<table>
<thead>
  <tr><th colspan="3">Tamanho de código de coreMQTT (exemplo gerado com GCC para ARM Cortex-M)</th></tr>
  <tr><th>Arquivo</th><th>Com otimização -O1</th><th>Com otimização: Os</th></tr>
</thead>
<tbody>
  <tr><td>core\_mqtt.c</td><td>4,0 K</td><td>3,4 K</td></tr>
  <tr><td>core\_mqtt\_state.c</td><td>1,7 K</td><td>1,3 K</td></tr>
  <tr><td>core\_mqtt\_serializer.c</td><td>2,8 K</td><td>2,2 K</td></tr>
  <tr><td>Estimativas totais</td><td>8,5 K</td><td>6,9 K</td></tr>
</tbody>
</table>
