Как прослушивать асинхронно mqtt python?
Я раньше работал с paho-mqtt. Сейчас стоит задача: ждать определенного топика, а уже после того,как он придет, отправлять данные в БД. Ожидается, что с устройства будут приходить параметры в разных темах. Чтобы не писать в базу по одному параметру, хочу собрать массив параметров и потом этот массив закинуть в базу. Структура темы такая:
nameDevice/
nameDevice/a : a=1
nameDevice/b : b=1
nameDevice/c : c=1
Т.е. мне нужно сначала запомнить все параметры(a,b,c), и как только пришел топик nameDevice/c - передать значения (a,b,c) в функцию main_call(a,b,c).
Есть код простой прослушки топика.
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print(f"Connected with result code {rc}")
client.subscribe("nameDevice/#")
def main_call(args):
print(args)
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
#wait msg.topic == 'nameDevice/c' and after call main_call()
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("localhost", 1883, 60)
client.loop_forever()