把 mosquitto 移植到开发板
在 Ubuntu 的/home/topeet/下创建一个 mqtt-arm 的文件夹,如下图所示:
我们进入我们安装的 mosquitto-1.5 目录下,作者这里是安装在了/opt/mosquitto-arm 下,如下图所示:
我们把当前路径下的/etc/mosquitto/下的 mosquitto.conf.example 文件拷贝到我们在/home/topeet/下创建一个 mqtt-arm 的文件夹,命令如下:
cp mosquitto.conf.example /home/topeet/mqtt-arm/
如下图所示
然后我们返回到 mosquitto 的安装目录,我们进到安装目录下 mosquitto-
1.5/usr/local/bin 下面,如下图所示:
我们把这个目录下所有文件拷贝到我们在/home/topeet/下创建一个 mqtt-arm 的文件夹,命令如下:
cp ./* /home/topeet/mqtt-arm/
如下图所示:
然后我们返回到 mosquitto 的安装目录,我们进到安装目录下 mosquitto-
1.5/usr/local/sbin 下面,如下图所示:
我们把这个目录下的 mosquitto 二进制文件拷贝到我们在/home/topeet/下创建一个mqtt-arm 的文件夹,命令如下:
然后我们返回到 mosquitto 的安装目录,把 libuuid-1.0.3 mosquitto-1.5 openssl 这个三个文件夹全部拷贝到我们在/home/topeet/下创建一个 mqtt-arm 的文件夹,命令如下:
cp -rf libuuid-1.0.3/ mosquitto-1.5/ openssl/ /home/topeet/mqtt-arm
如下图所示:
然后我们返回到/home/topeet/下面,使用 tar 命令打包我们创建的 mqtt-arm 文件,命令如下:
tar -czf mqtt-arm.tar.gz mqtt-arm/
我们把这个压缩包拷贝到开发板的根目录,这里以 4412 开发板为例,其他开发板操作一致
我们解压这个压缩包,并进入到解压生成的目录,如下图所示:
我们把开发板当前目录下 libuuid-1.0.3/ mosquitto-1.5/ openssl/三个文件下的 lib 下 的库全部放到开发板的/lib 下面,命令如下:
cp -rf libuuid-1.0.3/lib/* mosquitto-1.5/usr/local/lib/* openssl/lib/* /lib/
如下图所示:
我们把当前目录下 mosquitto.conf.example 复制一个和他一模一样名为
mosquitto.conf 的文件放在/etc 下面,命令如下:
cp mosquitto.conf.example /etc/mosquitto.conf
如下图所示:
然后我们把剩下的几个文件全部放在开发板的/bin 目录下,命令如下:
mv mosquitto mosquitto_* /bin
如下图所示:
然后我们返回到开发板的根目录,删掉我们 mqtt-arm.tar.gz 的压缩包和解压生成的mqtt-arm 文件夹就可以了。
使用命令在开发板上测试 mqtt
1.以开发板作为服务器,Ubuntu 开俩个终端作为订阅者和发布者进行
测试
我们打开/etc 下面的 mosquitto.conf 文件, 修改里面的第 40 行为 user root 并取消
注释。如下图所示:
使用以下命令启动开发板的 mosquitto 服务
mosquitto -d -c /etc/mosquitto.conf
如下图所示:
查询是否启动成功,命令如下:
ps -ef |grep mosquitto
如果成功入下图所示:
使用 ping 命令 ping 一下自己的 Ubuntu,这里一定要 ping 通,否则下面的步骤不成
功,命令如下,IP 为自己 Ubuntu 的 ip
ping 192.168.3.34 -c 3
成功 ping 通如下图所示:
在文档的第一步,我们就已经在 Ubuntu 上安装了 mosquitto,所示我们直接打开一个
终端,订阅主题,命令如下:
mosquitto_sub -h 192.168.3.28 -t "mqtt" -v
其中参数-h 是指定要连接的 MQTT 服务器,这里的 192.168.3.28 为开发板的 IP,大家
要根据自己的 IP 来设置,-t 订阅主题,此处为 mqtt,所以主题为 mqtt,-v 打印更多的调试
信息。
如下图所示:
在 Ubuntu 上打开另一个终端(注意这里又打开了一个终端),发布主题,命令如下:
mosquitto_pub -h 192.168.3.28 -t "mqtt" -m "Hello MQTT"
其中参数-h 是指定要连接的 MQTT 服务器,这里的 192.168.3.28 为开发板的 IP,大家要根据自己的 IP 来设置,-t 订阅主题,此处为 mqtt,-m 指定消息内容,这里发送的 Hello MQTT。
如下图所示:
通信成功以后,我们会在另一个终端看到我们通过开发板作为 mqtt 服务器转发来的Hello MQTT信息,如下图所示:
2.以开发板作为消息的发布者,Ubuntu 开俩个终端作为服务器和订阅者进行测试
在 Ubuntu 上开启 mosquitto 服务,命令如下: service mosquitto start
查看 mosquitto 是否启动成功,命令如下: ps -ef | grep mosquitto
启动成功如下图所示:
打开一个另外一个终端,订阅主题,命令如下:
mosquitto_sub -h 192.168.3.34 -t "mqtt" -v
其中参数-h 是指定要连接的 MQTT 服务器,这里的 IP 为自己 Ubuntu 的 IP,-t 订阅主题,此处为 mqtt,所以主题为 mqtt,-v 打印更多的调试信息。
如下图所示:
下面的操作在开发板上进行,使用 ping 命令 ping 一下自己的 Ubuntu,这里一定要ping 通,否则下面的步骤不成功,命令如下,IP 为自己 Ubuntu 的 ip ping 192.168.3.34 -c 3
成功 ping 通如下图所示:
在开发板的控制台,这里的 IP 为 Ubuntu 的 IP,输入以下命令:
mosquitto_pub -h 192.168.3.34 -t "mqtt" -m "Hello MQTT"
如下图所示:
通信成功以后,会在 Ubuntu 的订阅端收到开发板发来的 Hello MQTT,如下图所示:
3.以开发板作为消息的订阅者,Ubuntu 开俩个终端作为服务器和发布者进行测试
在 Ubuntu 上开启 mosquitto 服务,命令如下:
service mosquitto start
查看 mosquitto 是否启动成功,命令如下:
ps -ef | grep mosquitto
启动成功如下图所示:
下面的操作在开发板上进行,使用 ping 命令 ping 一下自己的 Ubuntu,这里一定要ping 通,否则下面的步骤不成功,命令如下,IP 为自己 Ubuntu 的 ip ping 192.168.3.34 -c 3
成功 ping 通如下图所示:
在开发板的控制台,这里的 IP 为 Ubuntu 的 IP,输入以下命令:
mosquitto_sub -h 192.168.3.34 -t "mqtt" -v
如下图所示:
打开一个另外一个终端,订阅主题,命令如下:
mosquitto_pub -h 192.168.3.34 -t "mqtt" -m "Hello MQTT"
其中参数-h 是指定要连接的 MQTT 服务器,这里的 IP 为自己 Ubuntu 的 IP,-t 订阅主题,此处为 mqtt,所以主题为 mqtt,-v 打印更多的调试信息。
如下图所示:
如果成功,则会在开发板收到来自发布者的信息,如下图所示:
五.使用代码在开发板上测试 mqtt
1.在开发板上测试订阅者的代码
把文档中的 mqtt_sub.c 拷贝到 Ubuntu,然后使用以下命令交叉编译这个代码,命令如下:
arm-none-linux-gnueabi-gcc mqtt_sub.c -o mqtt_sub -I /opt/mosquitto-arm/mosquitto-
1.5/usr/local/include/ -L /opt/mosquitto-arm/mosquitto-1.5/usr/local/lib/ -L /opt/mosquitto-
arm/libuuid-1.0.3/lib/ -L /opt/mosquitto-arm/openssl/lib/ -lmosquitto -lssl -lcrypto -luuid
这里需要手动连接我们之前编译的库和头文件,如果大家之前编译的库的安装路径和我的不一样,这里的路径要换成自己的。 编译成功入下图所示:
然后把生成的二进制文件拷贝到开发板,运行开发板的二进制程序之前,我们先启动Ubuntu 的 mqtt 服务器,命令如下:
service mosquitto start
查看 mosquitto 是否启动成功,命令如下:
ps -ef | grep mosquitto
启动成功如下图所示:
运行开发板的程序之前,我们要先保证开发板可以和 Ubuntu 成功 ping 通,这里一定要 ping 通,否则下面的步骤不成功,命令如下,IP 为自己 Ubuntu 的 ip ping 192.168.3.34 -c 3
成功 ping 通如下图所示:
输入以下命令运行开发板的程序,命令如下:其中 IP 为 Ubuntu 的 IP
./mqtt_sub 192.168.3.34 运行成功入下图所示:
然后打开 Ubuntu 的一个终端,输入以下命令:注意,这里的主题为 topeet。不要写错,发送的内容为 Hello MQTT mosquitto_pub -h 192.168.3.34 -t "topeet" -m "Hello MQTT" 如下图所示:
如果发送成功,超级终端会显示我们发送的信息,如下图所示:
2.在开发板上测试发布者的代码
把文档中的 mqtt_pub.c 拷贝到 Ubuntu,然后使用以下命令交叉编译这个代码,命令如下:
arm-none-linux-gnueabi-gcc mqtt_pub.c -o mqtt_pub -I /opt/mosquitto-arm/mosquitto-
1.5/usr/local/include/ -L /opt/mosquitto-arm/mosquitto-1.5/usr/local/lib/ -L /opt/mosquitto-
arm/libuuid-1.0.3/lib/ -L /opt/mosquitto-arm/openssl/lib/ -lmosquitto -lssl -lcrypto -luuid
这里需要手动连接我们之前编译的库和头文件,如果大家之前编译的库的安装路径和我的不一样,这里的路径要换成自己的。 编译成功入下图所示:
运行开发板的程序之前,我们要先保证开发板可以和 Ubuntu 成功 ping 通,这里一定要ping 通,否则下面的步骤不成功,命令如下,IP 为自己 Ubuntu 的 ip ping 192.168.3.34 -c 3 成功 ping 通如下图所示:
输入以下命令运行开发板的程序,命令如下:其中 IP 为 Ubuntu 的 IP
./mqtt_pub mqtt_192.168.3.34 运行成功入下图所示:
然后打开 Ubuntu 的一个终端,输入以下命令:注意,这里的主题为 topeet。不要写错。mosquitto_sub -h 192.168.3.34 -t "topeet" -v 如下图所示:
解决我们在超级终端上输入一些内容,比如 123456789,如果发送成功,会在 Ubuntu的终端上也收到 123456789,如下图所示;
来源:oschina
链接:https://my.oschina.net/u/4444582/blog/3191036