
MQTT-C-это клиент MQTT v3.1.1, написанный на C. MQTT-это легкий протокол сообщений на основе издателя-субсипибера, который обычно используется в приложениях IoT и сетевых приложений, где ожидаются связи с высокой задержкой и низкой оценкой данных. Цель MQTT-C-предоставить портативный клиент MQTT, написанный в C , для встроенных систем и ПК. MQTT-C делает это, предоставляя прозрачный уровень абстракции платформы (PAL), который облегчает портирование на новые платформы. MQTT-C полностью безопасен для потока, но также может работать совершенно хорошо на однопоточных системах, что делает MQTT-C, хорошо подходящую для встроенных систем и микроконтроллеров. Наконец, MQTT-C маленький; Есть только два исходных файла в общей сложности менее 2000 строк.
Было здорово услышать обо всех местах, где используется MQTT-C! Пожалуйста, не стесняйтесь связаться со мной или отправить проблемы на GitHub!
Чтобы использовать MQTT-C, вы сначала создаете struct mqtt_client и инициализируйте его, вызывая @REF MQTT_INIT.
struct mqtt_client client ; /* instantiate the client */
mqtt_init ( & client , ...); /* initialize the client */После того, как ваш клиент будет инициализирован, вам нужно подключиться к брокеру MQTT.
mqtt_connect ( & client , ...); /* send a connection request to the broker. */На этом этапе клиент готов к использованию! Например, мы можем подписаться на такую тему, как SO:
/* subscribe to "toaster/temperature" with a max QoS level of 0 */
mqtt_subscribe ( & client , "toaster/temperature" , 0 );И мы можем опубликовать в такую тему:
/* publish coffee temperature with a QoS level of 1 */
int temperature = 67 ;
mqtt_publish ( & client , "coffee/temperature" , & temperature , sizeof ( int ), MQTT_PUBLISH_QOS_1 );Это основы! Отсюда примеры и документация API - это хорошие места для начала работы.
Есть только два исходных файла , которые необходимо создать, mqtt.c и mqtt_pal.c . Эти файлы совместимы с ANSI C (C89) и должны компилировать с любым компилятором C.
Затем просто #include <mqtt.h> .
В качестве альтернативы, вы можете построить MQTT-C с Cmake или предоставленным Makefile. Они предусмотрены для удобства.
Предварительно построенная документация можно найти здесь: https://liambindle.ca/mqtt-c. Обязательно ознакомьтесь с примерами.
Документация @REF API содержит все необходимые программисты приложения для документации. Документация @ref PAL содержит все, что вам нужно, чтобы портировать MQTT-C на новую платформу, а другие модули содержат документацию для разработчиков MQTT-C.
Модульные тесты MQTT-C Используют платформу модульного тестирования CMocka. Поэтому CMocka должен быть установлен на вашем компьютере для создания и запуска модульных тестов. Для удобства, простой "makefile" включен для создания модульных тестов и примеров на UNIX-подобных машинах. Модульные тесты и примеры могут быть построены следующим образом:
$ make all Модульные тесты и примеры будут построены в каталоге "bin/" . Модульные тесты можно запускать так:
$ ./bin/tests [address [port]]Обратите внимание, что аргументы порта c и порта C не являются необязательными, чтобы указать местоположение брокера MQTT, который должен использоваться для тестов. Если адрес c не указан, то будет использоваться тестовый сервер Mosquitto MQTT. Если порт c не будет предоставлен, будет использоваться порт 1883.
MQTT-C предоставляет прозрачный уровень абстракции платформы (PAL) в mqtt_pal.h и mqtt_pal.c . Эти файлы объявляют и реализуют типы и вызовы, которые требуют MQTT-C. Обратитесь к @ref Pal для полной документации PAL.
Пожалуйста, не стесняйтесь отправлять проблемы и запросы здесь. При отправке проведенного запроса убедитесь, что вы полностью задокументировали свои изменения и добавили соответствующие модульные тесты.
Этот проект лицензирован по лицензии MIT. См. Файл "LICENSE" для получения более подробной информации.
MQTT-C был первоначально разработан в качестве финального проекта CMPT 434 (Зимний семестр, 2018) в Университете Саскачевана By: