树莓派上的MQTT环境搭建

前言最近实验室准备招新生,但现在可以拿出来演示诱拐新生的DEMO一个都没,于是老板要求我做一个房间定位的系统。原理和设备也很简单。一个Beacon收集器,和若干个beacon。通过Beacon收集器收集到的beacon的RSSI值判断是否在房间里面,也是就设定一个阈值,大于这个阈值在房间外面,小于这个阈值就在房间里面。Beacon收集器是用Wifi连接到路由器,使用MQTT协议传输数据,下面的MQTT的资料:MQTT定义MQTT是IBM开发的一个即时通讯协议。MQTT是面向M2M和物联网的连接协议,采用轻量级发布和订阅消息传输机制。Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用。MQTT特点【MQTT协议特点——相比于RESTful架构的物联网系统,MQTT协议借助消息推送功能,可以更好地实现远程控制。【MQTT协议角色】——在RESTful架构的物联网系统,包含两个角色客户端和服务器端,而在MQTT协议中包括发布者,代理器(服务器)和订阅者。【MQTT协议消息】——MQTT中的消息可理解为发布者和订阅者交换的内容(负载),这些消息包含具体的内容,可以被订阅者使用。【MQTT协议主题】——MQTT中的主题可理解为相同类型或相似类型的消息集合。MQTTServer的安装这里使用的系统是Kail Linux,Mosquitto虽然可以使用apt-get,但是我用apt-get下下来的没有mosquitto_和mosquitto_pub这两个程序,所以直接去官网找了源码包编译安装。安装前准备确保安装了libssl-dev,libc-ares-dev,uuid-dev,g++这些编译需要的库。sudo apt-get install libssl-dev libc-ares-dev uuid-dev g++安装libssl-dev的小插曲树莓派已经安装的版本太高会导致安装libssl-dev不成功解决方法:sudo apt-get install aptitudesudo aptitude install libssl-dev第一个解决方法选no第二选yes使用dpkg -l *libssl*显示当前版本如果接下来的包也遇到这种情况使用一样方法,全部都把他降级吧少年如果编译时碰到CJSON包没有安装cc db_dump.o print.o memory_mosq.o memory_public.o packet_datatypes.o packet_mosq.o persist_read.o persist_read_v234.o persist_read_v5.o property_mosq.o send_disconnect.o stubs.o time_mosq.o topic_tok.o utf8_mosq.o -o mosquitto_db_dump  make[2]: Leaving directory '/build/apps/db_dump'make[2]: Entering directory '/build/apps/mosquitto_ctrl'cc -I../mosquitto_passwd  -I. -I../../ -I../../include -I../../src -I../../lib -DWITH_TLS -Wall -ggdb -O2 -Wconversion -DVERSION=\""2.0.2\"" -c mosquitto_ctrl.c -o mosquitto_ctrl.oIn file included from mosquitto_ctrl.c:29:mosquitto_ctrl.h:21:10: fatal error: cjson/cJSON.h: No such file or directory   21 | #include <cjson/cJSON.h>      |          ^~~~~~~~~~~~~~~compilation terminated.make[2]: *** [Makefile:48: mosquitto_ctrl.o] Error 1make[2]: Leaving directory '/build/apps/mosquitto_ctrl'make[1]: *** [Makefile:9: all] Error 2make[1]: Leaving directory '/build/apps'make: *** [Makefile:66: mosquitto] Error 2make: Leaving directory '/build'

解决办法apt install libcjson1 libcjson-devAnd you'll probably need too those 2 too: apt install docbook-xsl docbook安装去官方网站找到最新的源码包:http://mosquitto.org/files/source/用wget下载源码包,xxx为最新的版本代号wget http://mosquitto.org/files/source/mosquitto-xxx.tar.gz解压tar zxfv mosquitto-*-tar.gz进入目录cd mosquitto*编译make安装sudo make install创建连接sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1更新动态链接库sudo ldconfig自此Mosquitto安装完成测试一个完整的MQTT示例包括一个总的MQTT代理服务器,一个发布端和一个订阅端。示例步骤:启动mosquitto服务。mosquitto -v-v:打印更多的调试信息订阅端通过mosquitto_sub订阅指定主题的消息.mosquitto_sub -v -t BBColle01-v:打印更多的调试信息-t:订阅的主题(title)发布者通过mosquitto_pub发布指定主题的消息。mosquitto_pub -v -t BBColle01 -m "{\"id\":\"Nekotter\"}"转发服务器把该主题的消息推送到订阅端。这里发布端,代理服务器,订阅端都为localhost。总结服务器是搭建好了,接下来还要干的事:使用paho-python模块接收beacon收集器发送到值,并用python处理数据。用Flask框架搭建网页,把整个系统的UI做出来。参考

(0)

相关推荐