zoukankan      html  css  js  c++  java
  • Python MQTT客户端实现

    1.安装paho-mqtt

    使用Python Package Index (PyPi)

    pip install paho-mqtt

    使用virtualenv

    virtualenv paho-mqtt
    source paho-mqtt/bin/activate
    pip install paho-mqtt

    或者编译源代码

    git clone https://github.com/eclipse/paho.mqtt.python

    使用源码安装

    cd paho.mqtt.python
    python setup.py install

    2. Demo

    发布数据

    # import paho.mqtt.client as mqtt
    import paho.mqtt.publish as publish
    import time
    
    HOST = "127.0.0.1"
    PORT = 61613
    def on_connect(client, userdata, flags, rc):
        print("Connected with result code "+str(rc))
        client.subscribe("test")
    
    def on_message(client, userdata, msg):
        print(msg.topic+" "+msg.payload.decode("utf-8"))
    
    if __name__ == '__main__':
        client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
        # client = mqtt.Client(client_id)    # ClientId不能重复,所以使用当前时间
        # client.username_pw_set("admin", "123456")  # 必须设置,否则会返回「Connected with result code 4」
        # client.on_connect = on_connect
        # client.on_message = on_message
        # client.connect(HOST, PORT, 60)
        # client.publish("test", "你好 MQTT", qos=0, retain=False)  # 发布消息
    
        publish.single("test", "你好 MQTT", qos = 1,hostname=HOST,port=PORT, client_id=client_id,auth = {'username':"admin", 'password':"123456"})
    

      

    接收数据

    import paho.mqtt.client as mqtt
    import time
    
    HOST = "127.0.0.1"
    PORT = 61613
    
    def client_loop():
        client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
        client = mqtt.Client(client_id)    # ClientId不能重复,所以使用当前时间
        client.username_pw_set("admin", "123456")  # 必须设置,否则会返回「Connected with result code 4」
        client.on_connect = on_connect
        client.on_message = on_message
        client.connect(HOST, PORT, 60)
        client.loop_forever()
    
    def on_connect(client, userdata, flags, rc):
        print("Connected with result code "+str(rc))
        client.subscribe("test")
    
    def on_message(client, userdata, msg):
        print(msg.topic+" "+msg.payload.decode("utf-8"))
    
    if __name__ == '__main__':
        client_loop()
    

      client_id是必须的,并且是唯一的。否则可能会出现如下错误:WinError 10054] 远程主机强迫关闭了一个现有的连接。

     
  • 相关阅读:
    修辞方法文章结构
    小学弟的随机字母
    kindeditor在JSP中的使用
    没有规矩,不成方圆
    在博客园安家啦
    Windows下,mysqlcc的安装及配置(Config MySQL Control Center)
    Windows下,MySql的安装及配置(Install and Config of MySQL in Windows)
    软件使用说明书
    Windows 8 Customer Preview使用心得
    How to Choose a secure password,Ubuntu tell you!
  • 原文地址:https://www.cnblogs.com/saryli/p/9719175.html
Copyright © 2011-2022 走看看