MTTQ Threaded receive
crankshaft last edited by
Hi, not sure if this is related to micropython or is a problem with my code.
I am using a thread to listen for messages, while in the main code I am looping every second and sending data.
The purpose is to continually send data but also be able to not miss and quickly respond to a request.
def recv_msg_callback(topic, msg): BUSY = True print(topic +"="+ msg) def listen(arg): while True: try: BUSY = False client.wait_msg() except NameError: pass client.set_callback(recv_msg_callback) client.subscribe('/lights') _thread.start_new_thread(listen,(None,)) while True: if(not BUSY): print("Sending ON") client.publish("/slights", "ON") time.sleep(1) print("Sending OFF") client.publish("/slights", "OFF") time.sleep(1)
But the problem is, the main loop is not executing independently of the thread and only fires after a message is received.
The received data (lights=xxxxx) is being transmitted every 5 seconds (just for dev/testing) so what I am expecting is for the main look to send on and off 4 times for every receive but it is not.
Sending OFF b'/lights=4639.61' Sending ON b'/lights=4644.02' Sending OFF b'/lights=4648.55' Sending ON b'/lights=4653.74'
What am I doing wrong ??