
MQTT-C es un cliente MQTT V3.1.1 escrito en C. MQTT es un protocolo de mensajería basado en el subcribe de editor-subscripe ligero que se usa comúnmente en IoT y aplicaciones de redes donde se esperan enlaces de alta latencia y bajos tasa de datos. El propósito de MQTT-C es proporcionar un cliente MQTT portátil , escrito en C , para sistemas integrados y PC por igual. MQTT-C hace esto al proporcionar una capa de abstracción de plataforma transparente (PAL) que facilita la portada a nuevas plataformas. MQTT-C es completamente seguro de subprocesos, pero también puede funcionar perfectamente bien en sistemas de subproceso único, lo que hace que MQTT-C sea adecuado para sistemas integrados y microcontroladores. Finalmente, MQTT-C es pequeño; Solo hay dos archivos fuente por un total de menos de 2000 líneas.
¡Ha sido genial escuchar sobre todos los lugares que se está utilizando MQTT-C! ¡No dude en ponerse en contacto conmigo o enviar problemas en GitHub!
Para usar MQTT-C, primero instancia una instancia de una struct mqtt_client e inicializarlo llamando a @ref mqtt_init.
struct mqtt_client client ; /* instantiate the client */
mqtt_init ( & client , ...); /* initialize the client */Una vez que se inicializa a su cliente, debe conectarse a un corredor MQTT.
mqtt_connect ( & client , ...); /* send a connection request to the broker. */¡En este punto, el cliente está listo para usar! Por ejemplo, podemos suscribirnos a un tema así:
/* subscribe to "toaster/temperature" with a max QoS level of 0 */
mqtt_subscribe ( & client , "toaster/temperature" , 0 );Y podemos publicar un tema como así:
/* publish coffee temperature with a QoS level of 1 */
int temperature = 67 ;
mqtt_publish ( & client , "coffee/temperature" , & temperature , sizeof ( int ), MQTT_PUBLISH_QOS_1 );¡Esos son lo básico! Desde aquí, los ejemplos y la documentación de la API son buenos lugares para comenzar.
Solo hay dos archivos fuente que deben construirse, mqtt.c y mqtt_pal.c . Estos archivos son compatibles con Ansi C (C89) y deben compilar con cualquier compilador C.
Entonces, simplemente #include <mqtt.h> .
Alternativamente, puede construir MQTT-C con CMake o el Makefile provisto. Estos se proporcionan por conveniencia.
La documentación previa a la construcción se puede encontrar aquí: https://liambindle.ca/mqtt-c. Asegúrese de consultar los ejemplos también.
La documentación de la API de @Ref contiene todas las aplicaciones de documentación que los programadores deben necesitar. La documentación de @Ref Pal contiene todo lo que debe necesitar para portar MQTT-C a una nueva plataforma, y los otros módulos contienen documentación para desarrolladores MQTT-C.
Las pruebas unitarias MQTT-C usan el marco de prueba de la unidad CMOCKA. Por lo tanto, se debe instalar CMOCKA en su máquina para construir y ejecutar las pruebas unitarias. Por conveniencia, se incluye un simple "makefile" para construir las pruebas y ejemplos unitarios en máquinas similares a Unix. Las pruebas y ejemplos unitarios se pueden construir de la siguiente manera:
$ make all Las pruebas y ejemplos unitarios se construirán en el directorio "bin/" . Las pruebas unitarias se pueden ejecutar así:
$ ./bin/tests [address [port]]Tenga en cuenta que la dirección c y los argumentos del puerto C son opcionales para especificar la ubicación del corredor MQTT que se utilizará para las pruebas. Si no se da una dirección c, se utilizará el servidor de prueba Mosquitto MQTT. Si no se proporciona el puerto c, se utilizará el puerto 1883.
MQTT-C proporciona una capa de abstracción de plataforma transparente (PAL) en mqtt_pal.h y mqtt_pal.c . Estos archivos declaran e implementan los tipos y llamadas que requiere MQTT-C. Consulte @Ref PAL para la documentación completa del PAL.
No dude en enviar problemas y solicitudes de extracción aquí. Al enviar una solicitud de extracción de extracción, asegúrese de haber documentado completamente sus cambios y agregar las pruebas unitarias apropiadas.
Este proyecto tiene licencia bajo la licencia MIT. Consulte el archivo "LICENSE" para obtener más detalles.
MQTT-C se desarrolló inicialmente como un proyecto final CMPT 434 (Winter Term, 2018) en la Universidad de Saskatchewan por: