I am working to connect my server to the clients via an MQTT broker. The MQTT client gets connected. But after publishing a message, the subscribe code receives a connection acknowledgment. The on_message() function never gets called.
I am stuck here.
I have pasted the subscribe client code and the output.
import paho.mqtt.client as paho import time client = paho.Client("local_test") topic = "topic_1" def on_log(client, userdata, level, buff): # mqtt logs function print(buff) def on_connect(client, userdata, flags, rc): # connect to mqtt broker function if rc == 0: client.connected_flag = True # set flags print("Connected Info") else: print("Bad connection returned code = " + str(rc)) client.loop_stop() def on_disconnect(client, userdata, rc): # disconnect to mqtt broker function print("Client disconnected OK") def on_publish(client, userdata, mid): # publish to mqtt broker print("In on_pub callback mid=" + str(mid)) def on_subscribe(client, userdata, mid, granted_qos): # subscribe to mqtt broker print("Subscribed", userdata) def on_message(client, userdata, message): # get message from mqtt broker print("New message received: ", str(message.payload.decode("utf-8")), "Topic : %s ", message.topic, "Retained : %s", message.retain) def connectToMqtt(): # connect to MQTT broker main function print("Connecting to MQTT broker") client.username_pw_set(username=user, password=passwd) client.on_log = on_log client.on_connect = on_connect client.on_publish = on_publish client.on_subscribe = on_subscribe client.connect(broker, port, keepalive=600) ret = client.subscribe(topic, qos=0) print("Subscribed return = " + str(ret)) client.on_message = on_message connectToMqtt() # connect to mqtt broker client.loop_forever() And the output I get after publishing the message on the same topic is:
Connecting to MQTT broker Sending CONNECT (u1, p1, wr0, wq0, wf0, c1, k600) client_id=b'local_test' Sending SUBSCRIBE (d0) [(b'topic_1', 0)] Subscribed return = (0, 1) Received CONNACK (0, 0) Connected Info Received SUBACK Subscribed None Sending CONNECT (u1, p1, wr0, wq0, wf0, c1, k600) client_id=b'local_test' Received CONNACK (0, 0) Connected Info EDIT 1:
Also, I am seeing that my broker has sent the message from the publisher to the client, but the client isn't able to receive it.
on_messagecall back before connectingmqtt_start()function so we can see if it ever makes it to theclient.loop_forever()callon_messagecallback beforeon_connectdidn't make any difference.