
O MQTT-C é um cliente MQTT v3.1.1 escrito em C. mqtt é um protocolo de mensagens baseado em editores-escritores leves que é comumente usado em aplicativos de IoT e de rede, onde são esperados links de alta latência e baixa taxa de dados. O objetivo do MQTT-C é fornecer um cliente MQTT portátil , escrito em C , para sistemas incorporados e PC. O MQTT-C faz isso fornecendo uma camada transparente de abstração da plataforma (PAL), que facilita a porte para novas plataformas. O MQTT-C é completamente seguro para roscas, mas também pode funcionar perfeitamente em sistemas de thread único, tornando o MQTT-C bem adequado para sistemas e microcontroladores incorporados. Finalmente, o MQTT-C é pequeno; Existem apenas dois arquivos de origem, totalizando menos de 2000 linhas.
Foi ótimo ouvir sobre todos os lugares que MQTT-C está sendo usado! Por favor, não hesite em entrar em contato comigo ou enviar problemas no Github!
Para usar o MQTT-C, você primeiro instanciou um struct mqtt_client e inicializa ligando para @Ref MQTT_INIT.
struct mqtt_client client ; /* instantiate the client */
mqtt_init ( & client , ...); /* initialize the client */Depois que seu cliente for inicializado, você precisa se conectar a um corretor MQTT.
mqtt_connect ( & client , ...); /* send a connection request to the broker. */Neste ponto, o cliente está pronto para uso! Por exemplo, podemos assinar um tópico como assim:
/* subscribe to "toaster/temperature" with a max QoS level of 0 */
mqtt_subscribe ( & client , "toaster/temperature" , 0 );E podemos publicar em um tópico como assim:
/* publish coffee temperature with a QoS level of 1 */
int temperature = 67 ;
mqtt_publish ( & client , "coffee/temperature" , & temperature , sizeof ( int ), MQTT_PUBLISH_QOS_1 );Esses são o básico! A partir daqui, os exemplos e a documentação da API são bons lugares para começar.
Existem apenas dois arquivos de origem que precisam ser construídos, mqtt.c e mqtt_pal.c . Esses arquivos são compatíveis com ANSI C (C89) e devem compilar com qualquer compilador C.
Então, simplesmente #include <mqtt.h> .
Como alternativa, você pode criar o MQTT-C com o CMake ou o makefile fornecido. Estes são fornecidos por conveniência.
A documentação pré-criada pode ser encontrada aqui: https://lambindle.ca/mqtt-c. Não deixe de conferir os exemplos também.
A documentação da API @Ref contém todos os programadores de aplicativos de documentação devem precisar. A documentação @ref PAL contém tudo o que você precisa para transportar MQTT-C para uma nova plataforma, e os outros módulos contêm documentação para os desenvolvedores MQTT-C.
Os testes de unidade MQTT-C usam a estrutura de teste de unidade CMOCKA. Portanto, o cmocka deve ser instalado em sua máquina para construir e executar os testes de unidade. Por conveniência, um simples "makefile" é incluído para criar os testes e exemplos de unidade em máquinas do tipo Unix. Os testes e exemplos de unidade podem ser construídos da seguinte forma:
$ make all Os testes e exemplos de unidade serão incorporados no diretório "bin/" . Os testes de unidade podem ser executados assim:
$ ./bin/tests [address [port]]Observe que o endereço c e os argumentos da porta c são opcionais para especificar o local do corretor MQTT que deve ser usado para os testes. Se nenhum endereço c for fornecido, o servidor de teste MSquitto MQTT será usado. Se nenhuma porta c for fornecida, a porta 1883 será usada.
O MQTT-C fornece uma camada de abstração de plataforma transparente (PAL) em mqtt_pal.h e mqtt_pal.c . Esses arquivos declaram e implementam os tipos e chamadas que o MQTT-C exige. Consulte o @Ref PAL para obter a documentação completa do PAL.
Sinta-se à vontade para enviar questões e solicitações de puxar aqui. Ao enviar uma solicitação de tração, verifique se você documentou totalmente suas alterações e adicionou os testes de unidade apropriados.
Este projeto está licenciado sob a licença do MIT. Consulte o arquivo "LICENSE" para obter mais detalhes.
O MQTT-C foi desenvolvido inicialmente como um projeto final CMPT 434 (Winter Term, 2018) na Universidade de Saskatchewan por: