文档首页> 智能边缘平台 IEF> 最佳实践> 使用开源C语言库连接MQTT Broker
更新时间:2022-02-21 GMT+08:00

使用开源C语言库连接MQTT Broker

操作场景

MQTT是一种发布/订阅模式的消息协议,能够在硬件性能低下的远程设备以及网络状况糟糕的情况下工作。

本文介绍一种开源的C语言库Eclipse Paho C Client Library连接使用IEF的内置MQTT Broker。

操作步骤

  1. 准备一台Linux机器,下载源码。

    git clone https://github.com/eclipse/paho.mqtt.c.git

    或直接在https://github.com/eclipse/paho.mqtt.c页面下载zip包,然后解压。

  2. 安装编译依赖工具。

    Ubuntu系统执行如下命令。

    apt-get install build-essential gcc make cmake cmake-gui cmake-curses-gui

    apt-get install fakeroot fakeroot devscripts dh-make lsb-release

    apt-get install libssl-dev

    apt-get install ninja-build

    CentOS系统执行如下命令。

    yum install build-essential gcc make cmake cmake-gui cmake-curses-gui

    yum install fakeroot fakeroot devscripts dh-make lsb-release

    yum install openssl-devel

    yum install ninja-build

  3. 修改示例程序代码。

    在源码的“src/samples/ paho_cs_pub.c”文件中,增加如下行。

    ssl_opts.enableServerCertAuth =0;

    “src/samples/paho_cs_sub.c”文件中增加如下行。

  4. 编译示例程序。

    mkdir /tmp/build.paho

    cd /tmp/build.paho

    cmake -GNinja -DPAHO_BUILD_STATIC=TRUE -DPAHO_BUILD_SHARED=FALSE -DPAHO_WITH_SSL=TRUE -DPAHO_BUILD_SAMPLES=TRUE {paho.mqtt.c目录}

    ninja package

    其中 {paho.mqtt.c目录} 为paho.mqtt.c源码所在的目录,如“/root/work/paho.mqtt.c”

  5. 进入编译之后的目录,将编译生成的二进制文件“paho_cs_pub”“paho_cs_sub”拷贝至边缘节点上。

    cd /tmp/build.paho/src/samples/

  6. 下载边缘节点证书。

    1. 登录IEF控制台,在左侧选择“边缘资源 > 边缘节点”,在右侧单击边缘节点名称,进入边缘节点详情页。选择“证书”页签,单击“添加证书”
      图1 添加证书
    2. 在弹出的窗口中输入证书名称,单击“确定”
    3. 将下载好的证书,拷贝至边缘节点,并解压。

  7. 运行示例程序。

    以发布消息到指定topic为示例,查看“paho_cs_pub”命令指导。

    发布消息示例如下:

    ./paho_cs_pub -c ssl://127.0.0.1:8883 -q 0 -m "xxx" -t "aaa" --cert /root/mqtt_cert/xOEMIsYVpw_private_cert.crt --key /root/mqtt_cert/xOEMIsYVpw_private_cert.key

    这条命令向内置MQTT Broker名为“aaa”的Topic发送了内容为“xxx”的消息,其中“127.0.0.1:8883”为边缘节点内置MQTT Broker的地址,“/root/mqtt_cert/xOEMIsYVpw_private_cert.crt”“/root/mqtt_cert/xOEMIsYVpw_private_cert.key”为边缘节点证书。