本帖最后由 wateras1 于 2018-3-29 16:42 编辑
mtk7688之op mqtt应用篇
mtk7688本身就是一款路由器方案,不过我们也可以用来做物联网网关,虽然有点奢侈了(核心模块网上看了下五六十左右(FLASH 16M,DD 128M),价格还好,如果能做到三十块左右,那就完美了),不过做项目还是不错,毕竟上Linux,很多网络资源可以使用,性价比还是蛮高的。
在网上看了很多mqtt的方案,最终还是选择了mosquitto,毕竟这块资料也多些,不过都感觉比较乱,基于linux下,需要自己移植配置,其实openwrt要安装mosquitto还是比较方便的,可以在make menuconfig里面选择编译,也可以通过opkg安装。我选择的是opkg安装。
1.opkg update2.opkg install mosquitto mosquitto-client libmosquitto
就上面两步就可以在op上面实现mqtt功能我们要熟悉的就两个命令mqtt的发布和订阅,如果做代理服务器的时候还需要了解一个配置文件,其他不需要怎么了解。我先把网上的关于这两个命令的介绍粘贴下。
mosquitto_pub 命令参数说明
1. -d 打印debug信息
2. -f 将指定文件的内容作为发送消息的内容
3. -h 指定要连接的域名 默认为localhost
4. -i 指定要给哪个clientId的用户发送消息
5. -I 指定给哪个clientId前缀的用户发送消息
6. -m 消息内容
7. -n 发送一个空(null)消息
8. -p 连接端口号
9. -q 指定QoS的值(0,1,2)
10. -t 指定topic
11. -u 指定broker访问用户
12. -P 指定broker访问密码
13. -V 指定MQTT协议版本
14. --will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
15. --will-qos Will的QoS值。该参数需要与--will-topic一起使用
16. --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使用
17. --will-topic 用户发送Will消息的topic
mosquitto_sub 命令参数说明
1. -c 设定‘clean session’为无效状态,这样一直保持订阅状态,即便是已经失去连接,如果再次连接仍旧能够接收的断开期间发送的消息。
2. -d 打印debug信息
3. -h 指定要连接的域名 默认为localhost
4. -i 指定clientId
5. -I 指定clientId前缀
6. -k keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒。
7. -q 指定希望接收到QoS为什么的消息 默认QoS为0
8. -R 不显示陈旧的消息
9. -t 订阅topic
10. -v 打印消息
11. --will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
12. --will-qos Will的QoS值。该参数需要与--will-topic一起使用
13. --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使用
14. --will-topic 用户发送Will消息的topic1.OP配置的MQTT客户端连接外网服务器实验做这个实验,我们还需要一个代理服务器,其实也可以用op做服务器,只要指定路由器的IP就OK了,我也尝试了没问题,我做一个远程服务器测试,找一个免费的broker,域名api.easylink.io。做这个实验要确保op已经连接到了外网,命令使用上面已经说明了,我找了一个MQTT客户端软件来配合调试。
2.将OP作为broker,其他MQTT客户端内网交互
首先开五个MQTT客户端都连接OP上的broker,ip是路由器的IP,四个作为订阅,一个作为发布,具体个数不限制。
对于这个OP可以支持多少个mqtt客户端,可以用一个脚本简单测试,不过个人觉得几百个应该是没有问题(如果不存储数据的话),下一篇我搞个脚本简单测试下这个连接数,当然用来测试公司服务器连接数的,当时测试了公司服务器一百多万
。
=================================================================
刚用脚本测试了1K设备连接OP,之后一直发送数据,运行很稳定,查看broker CPU占有率才10%,ram才3%
此内容由EEWORLD论坛网友wateras1原创,如需转载或用于商业用途需征得作者同意并注明出处