Skip to content

适用于嵌入式系统和 PC 等的便携式 MQTT C 客户端。

License

Notifications You must be signed in to change notification settings

yuanzhongqiao/MQTT-C

 
 

Repository files navigation


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.hMQTT-C 在和中提供透明的平台抽象层 (PAL) mqtt_pal.c。这些文件声明并实现 MQTT-C 所需的类型和调用。请参阅 @ref pal 了解 PAL 的完整文档。

贡献

请随时在此处提交问题和拉取请求。提交拉取请求时,请确保您已完整记录您的更改并添加了适当的单元测试。

执照

该项目根据MIT 许可证获得许可。请参阅该 "LICENSE"文件了解更多详细信息。

作者

MQTT-C 最初是萨斯喀彻温大学 CMPT 434(2018 年冬季学期)最终项目的开发者:

  • 利亚姆·宾德尔
  • 德米拉德·阿德耶

About

适用于嵌入式系统和 PC 等的便携式 MQTT C 客户端。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 95.2%
  • CMake 2.9%
  • Zig 1.3%
  • Makefile 0.6%