3.搭建消息服务器(流媒体服务器和开发板)
本来计划也是使用usrsctp来实现消息通信,但是mqtt更加轻量级,因此使用mqtt作为通信。
安装mqtt
git clone https://github.com/LiamBindle/MQTT-C.git
#修改makefile 屏蔽# MQTT_C_UNITTESTS = bin/tests
make all
安装mqtt broker转发协议代理
wget https://packages.emqx.io/emqx-ce/v5.1.6/emqx-5.1.6-ubuntu20.04-amd64.tar.gz
cp ~/samba/emqx-5.1.6-ubuntu20.04-amd64.tar.gz .
mkdir -p emqx && tar -zxvf emqx-5.1.6-ubuntu20.04-amd64.tar.gz -C emqx
sudo systemctl start emqx
./emqx/bin/emqx start
ubuntu下本地测试
subscriber端
publisher端
ubuntu与板子测试
重新编译mqtt为arm版本的
git clone https://github.com/LiamBindle/MQTT-C.git
## 修改点1:修改编译器,CC = aarch64-none-linux-gnu-gcc
## 修改点2: 只编译两个sample, MQTT_C_EXAMPLES = bin/simple_publisher bin/simple_subscriber
## 修改点3:屏蔽test, # MQTT_C_UNITTESTS = bin/tests
拷贝编译好的订阅和推送文件到板子上
板子端进行推送消息,需要注意的是,板子推送到服务器的地址,服务器是订阅自身的地址。
这样子才能通过mqtt broker转发消息给自己。
板子推送消息和ubuntu为接收消息
板子接收消息和服务器发送消息
所以服务器和板子可以相互通信,并且可以支持一对多和多对一。
下一步在流媒体服务器注册消息,实现流媒体服务器能够控制板子以及板子能否发送心跳数据包给媒体服务器