美文网首页树莓派文章Python文章 Raspberrypi
树莓派物联网应用基础(4):Python物联网MQTT聊天室

树莓派物联网应用基础(4):Python物联网MQTT聊天室

作者: O少O | 来源:发表于2020-05-04 13:07 被阅读0次

    树莓派物联网应用基础(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/

    相关文章

      网友评论

        本文标题:树莓派物联网应用基础(4):Python物联网MQTT聊天室

        本文链接:https://www.haomeiwen.com/subject/idxmphtx.html