树莓派物联网应用基础(4):Python物联网MQTT聊天室
这实验是用一台Windows计算机和一台树莓派分别运行Python聊天室程序,在树莓派运行的程序加上有信息通讯小灯闪一下代码。程序使用的是古德微机器人的MQTT服务器"www.gdwrobot.top", 1883。
演示视频
MQTT物联网应用PythonMQTT聊天室.mp4
一、以下是Windows系统计算机运行的代码:
#Python物联网:聊天室 windows
#!/usr/bin/env python
# coding: utf-8
#!/usr/bin/python
import paho.mqtt.client as mqtt
import time
import threading #导入多线程库
def talk1(): #输入聊天内容自定义函数
while True:
time.sleep(0.1)
txt=input('>>>>')
client.publish('ospchatroom',txt) #向MQTT发布主题,消息
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("ospchatroom") ##订阅主题,主题名
def on_message(client, userdata, msg): #函数,获得主题返回消息
#txt=str(msg.payload,encoding=='utf8') #下面两行代码写法测试时没有返回信息
#print(txt)
print(msg.topic + ":" + str(msg.payload, encoding="utf8")) #用这行代码写法可以解决以上两条代码的问题
time.sleep(0.1)
#return msg.payload #这行代码不用不影响功能
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("www.gdwrobot.top", 1883, 60) # 60是keep alive的时间间隔
threading1=threading.Thread(target=talk1) #talk1模块加到多线程中
threading1.start()
client.loop_forever() # 保持连接
二、以下是树莓派运行的代码(加了代码:当接收到信息小灯闪一下):
#!/usr/bin/env python
# coding: utf-8
#!/usr/bin/python
import paho.mqtt.client as mqtt
import time
import RPi.GPIO as GPIO #导入树莓派BCM模块
import threading
GPIO.setmode(GPIO.BCM) #设置GPIO引脚为BCM编码模式
GPIO.setup(5,GPIO.OUT) #设置该端口为输出模式
def talk1():
while True:
time.sleep(0.1)
txt=input('>>>>')
client.publish( 'ospchatroom' , txt )
def on_connect(client, userdata, flags, rc): #连接MQTT函数
print("Connected with result code "+str(rc))
client.subscribe("ospchatroom") #订阅主题,同一主题名
def on_message(client, userdata, msg):
print(msg.topic + ":" + str(msg.payload, encoding="utf8"))
GPIO.output(5,GPIO.HIGH)
time.sleep(0.1)
GPIO.output(5,GPIO.LOW)
#return msg.payload #这行代码不用不影响功能
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("www.gdwrobot.top", 1883, 60)
threading1=threading.Thread(target=talk1)
threading1.start()
client.loop_forever()
参考:paho-mqtt·项目简介
https://pypi.org/project/paho-mqtt/
网友评论