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

     
  • 相关阅读:
    如何使用wei-ui框架,wei-ui框架有哪些组件
    微信小程序tabbar如何配置
    如何使用promise封装wx.request()、
    微信有哪些小程序内置组件,目录结构
    uni-app生命周期
    vue任意关系组件通信与跨组件监听状态 vue-communication
    vue父子组件状态同步的最佳方式续章(v-model篇)
    webstorm中emmet展开a标签和行内元素不换行的解决办法
    深入理解 vue 中 scoped 样式作用域的规则
    javascript事件环微任务和宏任务队列原理
  • 原文地址:https://www.cnblogs.com/saryli/p/9719175.html
Copyright © 2011-2022 走看看