使用开源C语言库连接MQTT Broker
操作场景
MQTT是一种发布/订阅模式的消息协议,能够在硬件性能低下的远程设备以及网络状况糟糕的情况下工作。
本文介绍一种开源的C语言库Eclipse Paho C Client Library连接使用IEF的内置MQTT Broker。
操作步骤
- 准备一台Linux机器,下载源码。
git clone https://github.com/eclipse/paho.mqtt.c.git
或直接在https://github.com/eclipse/paho.mqtt.c页面下载zip包,然后解压。
- 安装编译依赖工具。
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
- 修改示例程序代码。
在源码的“src/samples/ paho_cs_pub.c”文件中,增加如下行。
ssl_opts.enableServerCertAuth =0;
在“src/samples/paho_cs_sub.c”文件中增加如下行。
- 编译示例程序。
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”。
- 进入编译之后的目录,将编译生成的二进制文件“paho_cs_pub”和“paho_cs_sub”拷贝至边缘节点上。
cd /tmp/build.paho/src/samples/
- 下载边缘节点证书。
- 登录IEF控制台,在左侧选择“边缘资源 > 边缘节点”,在右侧单击边缘节点名称,进入边缘节点详情页。选择“证书”页签,单击“添加证书”。
图1 添加证书
- 在弹出的窗口中输入证书名称,单击“确定”。
- 将下载好的证书,拷贝至边缘节点,并解压。
- 登录IEF控制台,在左侧选择“边缘资源 > 边缘节点”,在右侧单击边缘节点名称,进入边缘节点详情页。选择“证书”页签,单击“添加证书”。
- 运行示例程序。
以发布消息到指定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”为边缘节点证书。