• python接入EMQ公共broker


    python接入EMQ公共broker

    示例使用paho mqtt 模拟mqtt客户端接入EMQ公共broker

    消息发布代码

    # python 3.9.10
    
    import random
    import time
    
    from paho.mqtt import client as mqtt_client
    
    broker = 'broker-cn.emqx.io'
    port = 1883
    topic = "dapenson_topic_sub_01"
    # generate client ID with pub prefix randomly
    client_id = f'python-mqtt-{random.randint(0, 1000)}'
    username = "dapenson"
    password = "xxxxxxxx"
    
    
    def connect_mqtt():
    
        def on_connect(client, userdata, flags, rc):
            if rc == 0:
                print("Connected to MQTT Broker!")
            else:
                print("Failed to connect, return code %d\n", rc)
    
        client = mqtt_client.Client(client_id)
        client.username_pw_set(username, password)
    
        client.on_connect = on_connect
        client.connect(broker, port)
        return client
    
    
    def publish(client):
        msg_count = 0
        while True:
            time.sleep(1)
            msg = f"messages: {msg_count}"
            result = client.publish(topic, msg)
            # result: [0, 1]
            status = result[0]
            if status == 0:
                print(f"Send `{msg}` to topic `{topic}`")
            else:
                print(f"Failed to send message to topic {topic}")
            msg_count += 1
    
    
    def run():
        client = connect_mqtt()
        client.loop_start()
        publish(client)
    
    
    if __name__ == '__main__':
        run()
    
    

    消息订阅代码

    # python 3.9.10
    
    
    import random
    
    from paho.mqtt import client as mqtt_client
    
    broker = 'broker-cn.emqx.io'
    port = 1883
    topic = "dapenson/python/mqtt"
    # generate client ID with pub prefix randomly
    client_id = f'python-mqtt-{random.randint(0, 100)}'
    username = "dapenson"
    password = "xxxxxxxx"
    
    
    def connect_mqtt() -> mqtt_client:
    
        def on_connect(client, userdata, flags, rc):
            if rc == 0:
                print("Connected to MQTT Broker!")
            else:
                print("Failed to connect, return code %d\n", rc)
    
        client = mqtt_client.Client(client_id)
        client.username_pw_set(username, password)
        client.on_connect = on_connect
        client.connect(broker, port)
        return client
    
    
    def subscribe(client: mqtt_client):
    
        def on_message(client, userdata, msg):
            print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic")
    
        client.subscribe(topic)
        client.on_message = on_message
    
    
    def run():
        client = connect_mqtt()
        subscribe(client)
        client.loop_forever()
    
    
    if __name__ == '__main__':
        run()
    
    

    参考

    文章参考地址

  • 相关阅读:
    C++ 11 :override 关键字的使用
    vsphere部署说明
    Windows 下部署Subversion
    Centos 7 最小化部署zabbix
    在vmware中安装mac os
    如何将OS dmg文件制作成U盘启动
    HDU1518(dfs)java/ c++
    HDU1010(bfs)
    HDU1495(bfs)
    HD1285(拓扑排序)
  • 原文地址:https://www.cnblogs.com/dapenson/p/15899716.html
Copyright © 2020-2023  润新知