Я ПОЛНЫЙ новичок в python и имею очень базовые знания MQTT.
Я пытаюсь написать скрипт Python, который подписывается на тему с подстановочным знаком, а затем создает список тем под подстановочным знаком. Я понимаю, что протокол MQTT для этого не подходит, поэтому мне нужно сделать это через python. Я думал о размещении темы и сообщения в массиве.
У меня есть следующие темы:
/погода/текущая/температура
/погода/текущее/влажность
/погода/течение/давление
/погода/текущее/время
В моем скрипте Python я подписываюсь на /weather/current/#.
Например, я думаю, что массив будет примерно таким:
[/погода/текущая/температура,сообщение]
[/погода/текущая/влажность,сообщение]
[/погода/текущее/давление,сообщение]
[/погода/текущее/время,сообщение]
Мой сценарий в значительной степени представляет собой стандартный пример, в котором я попробовал несколько методов для достижения этого, но потерпел неудачу. Я думаю, что моя основная проблема заключается в непонимании функции on_message. Выполняется ли он один раз для всех тем или один раз для каждой темы?
def on_connect(mqttc, obj, rc):
print("rc: "+str(rc))
def on_message(mqttc, obj, msg,):
# print(msg.topic+" "+str(msg.payload))
payload = str(msg.payload)
print(msg.topic+" Payload -> "+payload)
def on_publish(mqttc, obj, mid):
print("mid: "+str(mid))
def on_subscribe(mqttc, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(mqttc, obj, level, string):
print(string)
try:
mqttc = mqtt.Client("Python-MQTT-Sub")
mqttc = mqtt.Client()
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
mqttc.on_subscribe = on_subscribe
# Uncomment to enable debug messages
#mqttc.on_log = on_log
mqttc.connect("localhost", 1883, 60)
mqttc.subscribe("/weather/current/#", 0)
mqttc.loop_forever()
except KeyboardInterrupt:
print("\ninterrupt received, exiting...")