# Needs a running MQTT broker # update 2024-09-17 # https://www.emqx.io/blog/how-to-use-mqtt-in-python # mqtt_test_sub.py import random from paho.mqtt import client as mqtt_client broker = "localhost" port = 1883 topic = "python/mqtt" # generate client ID with pub prefix randomly # client_id = f'python-mqtt-{random.randint(0, 100)}' # username = 'emqx' # password = 'public' def connect_mqtt() -> mqtt_client: def on_connect(client, userdata, flags, rc, properties): if rc == 0: print("Connected to MQTT Broker!") else: print("Failed to connect, return code %d\n", rc) client = mqtt_client.Client(mqtt_client.CallbackAPIVersion.VERSION2) # 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()