MQTT-C 是用 C 语言编写的MQTT v3.1.1 客户端。MQTT 是一种基于发布者-订阅者的轻量级消息传递协议,通常用于需要高延迟和低数据速率链接的 IoT 和网络应用程序。MQTT-C 的目的是为嵌入式系统和 PC 等提供用 C 编写的便携式MQTT 客户端。MQTT-C 通过提供透明的平台抽象层 (PAL) 来实现这一点,这使得移植到新平台变得容易。MQTT-C 是完全线程安全的,但也可以在单线程系统上完美运行,这使得 MQTT-C 非常适合嵌入式系统和微控制器。最后,MQTT-C体积小;源文件只有两个,总共不到2000行。
很高兴听到所有使用 MQTT-C 的地方!请随时与我联系或在 GitHub 上提交问题!
要使用 MQTT-C,您首先实例化 astruct 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. */
此时客户端就可以使用了!例如,我们可以订阅这样的主题:
/* 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>
。
或者,您可以使用 CMake 或提供的 Makefile 构建 MQTT-C。提供这些是为了方便。
可以在此处找到预构建的文档: https: //liambindle.ca/MQTT-C。请务必也查看示例。
@ref api 文档包含应用程序程序员应该需要的所有文档。@ref pal 文档包含将 MQTT-C 移植到新平台所需的所有内容,其他模块包含面向 MQTT-C 开发人员的文档。
MQTT-C 单元测试使用cmocka 单元测试框架。因此,必须在您的计算机上安装cmocka 才能构建和运行单元测试。为了方便起见,包含了在类 UNIX 机器上构建单元测试和示例的简单方法。单元测试和示例可以按如下方式构建:"makefile"
$ make all
单元测试和示例将构建在该"bin/"
目录中。单元测试可以像这样运行:
$ ./bin/tests [address [port]]
请注意,\c 地址和 \c 端口参数都是可选的,用于指定用于测试的 MQTT 代理的位置。如果没有给出 \c 地址, 则将使用Mosquitto MQTT 测试服务器。如果没有给出 \c 端口,则将使用端口 1883。
mqtt_pal.h
MQTT-C 在和中提供透明的平台抽象层 (PAL) mqtt_pal.c
。这些文件声明并实现 MQTT-C 所需的类型和调用。请参阅 @ref pal 了解 PAL 的完整文档。
请随时在此处提交问题和拉取请求。提交拉取请求时,请确保您已完整记录您的更改并添加了适当的单元测试。
该项目根据MIT 许可证获得许可。请参阅该
"LICENSE"
文件了解更多详细信息。
MQTT-C 最初是萨斯喀彻温大学 CMPT 434(2018 年冬季学期)最终项目的开发者:
- 利亚姆·宾德尔
- 德米拉德·阿德耶