Python实现树莓派和Windows用MQTT协议的通信

本文介绍了如何使用MQTT协议在树莓派和Windows10之间建立通信。首先,通过Apollo搭建MQTT服务端,并在Windows上运行。接着,分别在Windows和树莓派上安装paho-mqtt库,配置客户端并编写代码实现数据的发送与接收。通过设置回调函数,实现了两端的实时通信。最后,确保设备在同一局域网内,验证了通信的可行性。
最近有接触到MQTT所以突然想尝试一下树莓派和我的Windws10通过MQTT协议来通信,记录一下过程和要点

MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。

MQTT服务端

我使用的MQTT中间件是Apollo,现在网上找不到了,我放了自己百度网盘的链接,自取
百度网盘Apollo1.71资源(提取码:zdyt)
下载
下载之后解压,最好是解压在没有中文字符的路径下吧,防止一些意外。
创建服务器实例
切换目录到apollo文件夹下的bin目录里,如我解压到了D:下面
cd D:\apache-apollo-1.7.1-windows-distro\apache-apollo-1.7.1\bin

然后执行创建服务器实例的命令

apollo.cmd create mytest    //mytest是你的服务器实例名,可以自己取

创建完成后,你会发现在bin目录下会多出来一个mytest文件夹

然后再次切换目录到mytest\bin目录下,运行代码启动服务

apollo-broker.cmd run

运行完成后如图所示

输入http://127.0.0.1:61680就可以进入后台管理系统了,默认账号:admin,默认密码:password

MQTT客户端

下载paho-mqtt
要实现MQTT的客户端,就得在客户端上下载paho-mqtt库,我要在树莓派和Windows上进行通讯所以树莓派和Windows就都是客户端,两者都要下载(Windows既是客户端也是服务端),要注意python要是python3以上的版本,在命令行运行以下代码即可下载:

pip install paho-mqtt (Windows)
sudo pip3 install paho-mqtt  (树莓派)

下载完成后将树莓派和Windows接入同一局域网下,查看两者的ip地址

ipconfig  (Windows查看ip命令)
ifconfig  (Raspberry查看ip命令)

先ping,看看能不能ping通,如果可以就可以继续下一步,开始编写代码实现通信了,如果不行,请关闭Windows和树莓派的防火墙。
实现通信

Windows

import paho.mqtt.client as mqtt
import time
import sys

def on_connect(client, userdata, flags, rc): #连接成功的回调函数
    print("Connected with result code " + str(rc)) 
def on_subscribe(client,userdata,mid,granted_qos): #发送成功的回调函数
    print("消息发送成功")
def on_message(client, userdata, msg):
    print(msg.topic + " " + str(msg.payload))
    time.sleep(5)

client = mqtt.Client(protocol=3) #创建客户端实例
client.username_pw_set("admin", "password") #登录的账号密码
client.on_connect = on_connect #将自定义的回调函数赋值给实例对象
client.on_subscribe = on_subscribe
client.on_message = on_message

client.connect(host="127.0.0.1", port = 61613, keepalive=60)  # 订阅频道
time.sleep(1)
sensor_data = "I'm Windows10 "
client.publish(topic="toRaspBerryPi", payload=sensor_data, qos=0)
client.subscribe("toWindows10",0)

Raspberry

import paho.mqtt.client as mqtt
import time
import sys

def on_connect(client, userdata, flags, rc): #连接成功的回调函数
    print("Connected with result code " + str(rc)) 
def on_subscribe(client,userdata,mid,granted_qos): #发送成功的回调函数
    print("消息发送成功")
def on_message(client, userdata, msg):
    print(msg.topic + " " + str(msg.payload))
    sensor_data = "I'm RaspBerryPi "
    client.publish(topic="toWindows10", payload=sensor_data, qos=0)
    time.sleep(5)

client = mqtt.Client(protocol=3) #创建客户端实例
client.username_pw_set("admin", "password") #登录的账号密码
client.on_connect = on_connect #将自定义的回调函数赋值给实例对象
client.on_subscribe = on_subscribe
client.on_message = on_message

client.connect(host="127.0.0.1", port = 61613, keepalive=60)  # 订阅频道
time.sleep(1)
client.subscribe("toRaspBerryPi",0)

在这里插入图片描述
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值