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] 远程主机强迫关闭了一个现有的连接。

     
  • 相关阅读:
    MapInfo 文件格式说明
    一个经典编程面试题的“隐退”
    Polar 投影c#版本移植
    关于 tf.nn.softmax_cross_entropy_with_logits 及 tf.clip_by_value
    系列解读Dropout
    python删除所有的中文字符、非ASCII或非英文字符,检查字符串是否包含非ASCII
    Python使用split使用多个字符分隔字符串
    Convolutional Neural Networks for Visual Recognition
    【TensorFlow】tf.nn.conv2d是怎样实现卷积的?
    [TensorFlow] tf.nn.softmax_cross_entropy_with_logits的用法
  • 原文地址:https://www.cnblogs.com/saryli/p/9719175.html
Copyright © 2011-2022 走看看