1、首先需要搭建树莓派自己的mqtt服务器
1.1、安装需要的依赖(需要在有网的环境下进行)
sudo apt-get install libssl-dev
sudo apt-get install uuid-dev
sudo apt-get install cmake
1.2、下载mosquitto并进行解压
wget http://mosquitto.org/files/source/mosquitto-1.5.4.tar.gz
解压
tar zxfv mosquitto-1.5.4.tar.gz
进入mosquitto目录
cd mosquitto-1.5.4
编译
make
安装
sudo make install
启动
mosquitto -v
启动完成之后如下所示
1535473957: mosquitto version 1.5.4 starting
1535473957: Using default config.
1535473957: Opening ipv4 listen socket on port 1883.
1535473957: Opening ipv6 listen socket on port 1883.
可以看到监听的端口号是1883
关闭服务器需要先去查找服务器目前正在使用的id,
在终端输入
ps -A
回车进行查看,查询到正在使用的id
kill id
进行关闭mosquitto服务器
2、建立通讯
2.1、需要安装库paho-mqtt
sudo pip3 install paho-mqtt
2.2、代码演示
客户端
import paho.mqtt.client as mqtt
import time
import datetime
# 固定的回调函数
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc)) # 打印连接状态
client.subscribe("flowers") # 填写订阅的主题
# 固定的回调函数
def on_message(client, userdata, msg):
print(msg.topic+" " + ":" + str(msg.payload)) # 打印接受的消息
def on_publish(msg, rc): # 成功发布消息的操作
if rc == 0:
print("publish success, msg = " + msg)
client_id = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())) # 以当前时间作为client_id
client = mqtt.Client(client_id) # ClientId不能重复,所以使用当前时间
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.1.100", 1883, 60) # 1883为服务端口号,如果是安全认证,端口号需要修改为1884
# ip是当前树莓派的ip
client.loop_start() # 保持连接
msg = str(datetime.datetime.now())
rc, mid = client.publish("test", payload="hello world", qos=1) # qos发布消息 test是发布消息的主题 payload发布的消息
服务器端与客户端,只需要将客户端发布消息的主题改成订阅的主题,订阅的主题变成发布的消息的主题
自此两个树莓派之间就可以相互通讯了